// CSP raw materials for your robots type RawMaterial product ConstraintList end type ConstraintList sum NECL | ECL end type NECL product Constraint ConstraintList end type ECL product end type Constraint product Weight ":" RelationNr VarList end type Weight product int end type RelationNr product int end type VarList sum NVL | EVL end type NVL product end type EVL product end // ... // DemeterF model type Program product //2 TypeDefList Exp end type TypeDef product //2 TypeName Type end type Type sum CompoundType | SimpleType end type CompoundType sum Product | Sum end type SimpleType sum Bool | OtherType end type Bool sum true1 | false1 end type OtherType sum int | TypeName end type Product product "product" PartList end type Product sum Zero | More end type Zero product end //0 type More sum One | Two end type One product //1 Part end type Two product //2 Part Part end type Part product TypeName end type Sum product "sum" TypeName "|" TypeName end type TypeName product ident end // DemeterF programming type Exp sum CompoundExp | SimpleExp end type CompoundExp sum TraversalExp | Application end type TraversalExp product Exp FunctionSet end type FunctionSet product // combine methods FunctionList end type Function product TypeNameList ArgumentList Exp end /* Cd_graph = Adj Adj_list. Adj = Vertex Neighbors ".". Neighbors: Construct | Alternat. Construct = "=" Any_vertex_list. Alternat = ":" Vertex "|" Vertex. Any_vertex : Labeled_vertex | Syntax_vertex. Syntax_vertex = String. Labeled_vertex = "<" ident ">" Vertex. Adj_list: Cd_graph | Empty_cd_graph . Any_vertex_list: Nany_vertex_list | Empty_vl. Nany_vertex_list = Any_vertex Any_vertex_list. Empty_vl = . Empty_cd_graph = . Vertex = ident. */