// Copyright (C) 1991 Northeastern University. // Permission is granted to any individual or institution to use, copy, modify, // and distribute this class dictionary, provided that this complete copyright // and permission notice is maintained, intact, in all copies and supporting // documentation. // intermediate notation: used for programming language code generation Demeter_in = Input. Input : Cd_graph *common*. Cd_graph = < adjacencies > Nlist(Adjacency) ["*terminal_sets*" Comma_list(Vertex) "."] . Adjacency = < source > Vertex < ns > Neighbors ["*inherits_from*" Comma_list(Term)] "." . Neighbors : Intermediate_ns *common*. Intermediate_ns : Repetit | Non_repetit *common* . Non_repetit : Instantiable | Abstract *common* List(Int_part). Instantiable = "instantiable=". Repetit = "repetition=" Term [ Non_empty]. Non_empty = "*non_empty*". Abstract = "abstract=". Int_part : Required_int_part | Optional_int_part *common* Labeled. Required_int_part = "*required*". Optional_int_part = "*optional*". Vertex = < vertex_name > DemIdent . Labeled = "<" < label_name > DemIdent ">" . Term : Normal *common* Vertex. Normal = . List(S) ~ {S}. Nlist(S) ~ S {S}. Comma_list(S) ~ S {"," S}.