
<base-name
required-bases = { base-name,... };
types = { type-desc,... };
viewpoints = { view-name,... };
concepts =
{
<concept-name
key = {
<keyslot-name
type = concept or type;
nature = propriete or composant or lien;
constructor = un or liste or ensemble;
>,
...
};
fields =
{
<field-name
type = concept or type;
nature = propriete or composant or lien;
constructor = un or liste or ensemble;
>,
...
};
viewpoints =
{
<conceptview-name
root-class =
<class-name
fields =
{
<field-name descriptor = desc-value;... >,
...
};
>;
classes =
{
<class-name
super-class = class-name;
fields =
{
<field-name descriptor = desc-value;... >,
...
};
>,
...
};
>,
...
};
bridges =
{
< bridge-name
source = { class-name@conceptview-name,... };
destination = class-name@conceptview-name;
>,
...
};
>,
...
};
methods = { method-signature,... };
instance-files = { file-name,... };
lexicons = { file-name,... };
talk-modules = { file-name,... };
>
{
<concept-name
is-in = { class-name@conceptview-name,... };
fied-name = value;
...
>,...
}#<<concept keyvalues*>>
<base> ::= '<' base-name
required-bases '=' '{' l-file-name '}' ';'
types '=' '{' l-desc-type '}' ';'
viewpoints '=' '{' l-viewpoint-name '}' ';'
concepts '=' '{' l-<concept> '}' ';'
methods '=' '{' l-<signature> '}' ';'
instance-files '=' '{' l-file-name '}' ';'
lexicons '=' '{' l-file-name '}' ';'
talk-modules '=' '{' l-file-name '}' ';' '>'
<desc-type> ::= typefile-name
<concept> ::= '<' concept-name
key '=' '{' l-<conceptslot> '}' ';'
fields '=' '{' l-<conceptslot> '}' ';'
viewpoints '=' '{' l-<conceptview> '}' ';'
bridges '=' '{' l-<bridge> '}' ';' '>'
<concept-slot> ::= '<' conceptslot-name
type '=' <concept> | <type> ';'
nature '=' propriete | composant | lien ';'
constructor '=' un | liste-de | ensemble-de ';' '>'
<viewpoint> ::= '<' viewpoint-name
root-class '=' <root-class> ';'
classes '=' '{' l-<class> '}' ';' '>'
<root-class > ::= '<' class-name
fields '=' '{' l-<classslot> '}' ';' '>'
<filter> ::= <class>
<class> ::= '<' class-name
super-class '=' class-name ';'
fields '=' '{' l-<classslot> '}' ';' '>'
<classslot> ::= '<' classslot-name <descriptor>* '>'
<descriptor> ::= type '=' '{' l-<exp-class> '}' ';'
| domain '=' <domain> ';'
| intervals '=' '{' <interval>+ '}' ';'
| except '=' <domain> ';'
| card '=' <integer> | <interval> ';'
| default '=' <value> ';'
| assign '=' '(' l-<path> ')' ';'
| filters '=' '(' l-<filter> ')' ';'
| methods '=' '(' l-<method> ')' ';'
<bridge> ::= '<' bridge-name
source '=' '{' l-<class-ref> '}' ';'
destination '=' <class-ref> ';' '>'
<object> ::= '<' is-in '=' '{' l-<class-ref> '}' ';'
<field-value>-l '>'
<signature> ::= method-name ':' l-<mtype> '->' <mtype>
<mtype> ::= <constructeur> <type> | <constructeur> <concept>-name
<constraint> ::= constraint-name '(' l-<constraint-term> ')'
<constraint-term> ::= <argument> | <constraint-operator> '(' l-<constraint-term> ')'
<field-value> ::= field-name '=' <value> ';'
<method> ::= method-name '(' l-<argument> ')'
<argument> ::= <value> | <path>
<path> ::= '!' | <path> '.' field-name | <path> ':' field-name
<domain> ::= <single-domain> | <collector-domain>
<single-domain> ::= '{' l-<single-value> '}'
<collector-domain> ::= 'P' '(' <collector-value> ')' | '{' l-<collector-value> '}'
<interval> ::= <bound> <single-value> <single-value> <boound>
<value> ::= <collector-value> | <single-value>
<collector-value> ::= <set-value> | <list-value>
<list-value> ::= '(' l-<single-value> ')'
<set-value> ::= '{' l-<single-value> '}'
<single-value> ::= '|' <anything> '|' | <object-ref>
<class-ref> ::= class-name '@' conceptview-name
<object-ref> ::= '#<<' concept-name l-<value> '>>'
<boolean> ::= true | false
<bound> ::= '[' | ']'|
[
and ]
|
interval
delimiters
|
|
<
and >
|
structure
delimiters
|
|
{
and }
|
set
delimiters
|
|
(
and )
|
list
delimiters
|
|
,
|
set
element separator
|
|
=
|
structure
item assignment
|
|
;
|
structure
item separator
|
|
#<<
and >>
|
object
reference delimiters
|
|
!
|
path
initiator
|
|
.
|
path
constructor
|
|
:
|
path
constructor with concatenation
|
|
->
|
method
functor
|
|
==,
<>
|
equality
comparators
|
|
<,
>, >=, <=
|
ordered
types comparators
|
|
/*
*/
|
comments
|
|
type
|
regular
expression
|
meaning
|
|
identifiers
|
[A-Za-z][-_A-Za-z0-9]*
|
|
|
external
value
|
\|[^|]*\|
|
anything
between | and |
|
|
string
|
\"[^"]*\"
|
anything
between " and "
|
|
comments
|
/*.**/
|
anything
between /* and */
|
|
integers
|
{+-}[0-9]+
|
|
|
reals
|
{S}{D}+"."{D}*((e|E){S}{D}+)? {S}"."{D}+((e|E){S}{D}+)?
|
|
|
boolean
|
vrai|faux
(resp. true|false)
|
|
|
infinite
bounds
|
[+-]inf
|
-[infinity]
or +[infinity]
|
|
base
|
base
|
|
concepts
|
concepts
|
|
attributs
|
fields
|
|
nature
|
nature
|
|
card
|
card
|
|
sauf
|
except
|
|
defaut
|
default
|
|
chemin
|
assign
|
|
methodes
|
methods
|
|
filtres
|
filters
|
|
classes
|
classes
|
|
sorte-de
|
superclass
|
|
classes-depart
|
sources
|
|
est-dans
|
is-in
|
|
points-de-vue
|
viewpoints
|
|
clef
|
key
|
|
dans
|
type
|
|
const
|
constructor
|
|
domaine
|
domain
|
|
intervalles
|
intervals
|
|
condition
|
condition
|
|
classe-racine
|
root-class
|
|
passerelles
|
bridges
|
|
classe-arrivee
|
destination
|