Classes
class-description::= class: idf-composant [class-descriptor]+
class-descriptor ::= super-class: [idf-composant]
| variables: [variable-description]+
| documentation: string
variables ::= [variable]+
variable ::= variable: idf-objet
[variable-descriptors]
variable-descriptors ::= [variable-descriptor]+
variable-descriptor ::= type: type
| domain: domain
| cardinality: variable-cardinality
| documentation: string
| default: value
variable-cardinality ::= min-bound max-bound
min-bound ::= | min: entier
max-bound ::= | max: entier
| max: *
type ::= base-type | [set-of: | list-of: ] base-type
domain ::= domain-set | domain-interval
domain-interval ::= [value..value]
domain-set ::= {values}
values ::= value | values,value
Associations
association ::= association: idf-composant
[super-association-descriptor] [association-descriptors]
roles: [roles] [association-variables]
super-association-descriptor::= super-association: idf-objet
association-descriptors ::= [association-descriptor]+
association-descriptor ::= documentation: string
association-variables ::= variables: [variables]
roles ::= [role: idf-objet [role-descriptors] ]+
role-descriptors ::= [role-descriptor+]
role-descriptor ::= type: idf-objet
| domain: domain-role
| multiplicity: role-multiplicity
| documentation: string
domain-role ::= { instance-values }
instance-values ::= idf-objet
| instance-values , idf-objet
role-multiplicity ::= min-bound max-bound
Instances
instance ::= instance: idf-objet
is-a: idf-objet
[instance-descriptors]
instance-descriptors ::= [instance-descriptor]+
instance-descriptor ::= idf-composant = value
| documentation: string
Tuples
tuple ::= tuple:
is-a: idf-objet
[tuple-descriptors]
tuple-descriptors ::= [tuple-descriptor]+
tuple-descriptor ::= idf-composant = value
| documentation: string
base-type::= integer | float | string | boolean | idf-objet
value ::= constant
| { constant [,constant]* }
| [ constant [, constant]*]
constant ::= string | integer | real | idf-objet | boolean
integer ::= [chiffre]+
real ::= integer.integer [(e|E) integer]
string ::= "[car]*"
boolean ::= true | false
idf-objet::= [lettre-maj lettre-min][car-idf-composant]*
car-idf-composant ::= lettre-maj | chiffre | _
lettre-maj::= A | ... | Z
lettre-min::= a | ... | z
chiffre ::= 0 | ... | 9