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 .
Simple_graph = List( Vertex ).
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).