Demeter_in = Input.
Input :
Cd_graph
*common*.
Cd_graph = < adjacencies > nlist(Adjacency)
["*terminal_sets*" comma_list(Vertex) "."]
.
Adjacency =
< source > Vertex
["(" < parameters> comma_list(Vertex) ")"]
< ns > Neighbors
"." .
Neighbors :
Neighbors_wc |
Repetit_n
*common*.
Neighbors_wc :
Construct_ns |
Alternat_ns
*common* < construct_ns > list(Any_vertex).
Construct_ns = "=".
Alternat_ns = ":"
< alternat_ns > bar_list(Term) [ Common].
Common = "*common*".
Repetit_n = "~" Sandwich(Kernel).
Kernel = [ Term ]
"{" Sandwich(Term) "}".
Any_vertex :
Opt_labeled_term
| Optional_term
| Syntax_vertex
| Inherit_term
*common*.
Vertex = < vertex_name > DemIdent .
Syntax_vertex :
Regular_syntax
| Print_command
*common*.
Regular_syntax = < string > DemString .
Print_command :
Print_indent | Print_unindent | Print_skip | Print_space *common*.
Print_indent = "+" .
Print_unindent = "-" .
Print_skip = "*l" .
Print_space = "*s" .
Opt_labeled_term :
Labeled
| Regular
*common* [StaticSpec] [AccessorSpec] Term.
StaticSpec = "*static*" .
AccessorSpec : ReadOnlyAcc | PrivateAcc *common* .
ReadOnlyAcc = "*read-only*" .
PrivateAcc = "*private*" .
Regular = .
Labeled = "<" < label_name > DemIdent ">" .
Inherit_term = "*inherit*" comma_list(Term).
Term :
Normal | CppTerm
*common* Vertex
TermRef
["(" comma_list(Term) ")" ] .
CppTerm = "$" .
TermRef : LocalRef | ModuleRef.
ModuleRef : CompRef | LibRef *common* DemIdent.
LocalRef = .
CompRef = "@".
LibRef = "@@".
Normal = .
Optional_term = "[" Sandwich(Opt_labeled_term) "]".
list(S) ~ {S}.
nlist(S) ~ S {S}.
bar_list(S) ~ S {"|" S}.
comma_list(S) ~ S {"," S}.
Sandwich(S) =
list(Syntax_vertex) S
list(Syntax_vertex).
Lc = < labelname > DemIdent
< classname > DemIdent.
Item_set = < item > Lc
DemNumber
list( DemIdent ).
Set_of_item_sets =
< biggestcardinallity > DemNumber
< itemsets > list ( Item_set ).
Belongs_to_set =
< classname > DemIdent
< cardinality > DemNumber
< belogsto > list(Lc).
Set_of_belongs_to_sets =
< belongstosets > list( Belongs_to_set ).
Tree_structure =
< item > Lc
< contains > Lc
< iscontained > Lc .
Set_of_tree_structures =
< treestructures > list( Tree_structure ).
Inheritanceentry =
DemIdent
DemNumber
list(Term).
Inheritancereport =
list(Inheritanceentry).