<> <> EDIFGrammar: CEDAR DEFINITIONS = { LORA: TYPE = LIST OF REF ANY; ATOMList: TYPE = LIST OF ATOM; Level: TYPE = INTEGER [0 .. 2]; RuleList: TYPE = LIST OF Rule; Rule: TYPE = REF RulePrivate; RulePrivate: TYPE = RECORD [ variant: SELECT class: * FROM list => [keyword: ATOM, elts: RuleList, cutAfterFirst: BOOL _ TRUE], <> <> <> repeat => [sub: Rule, zero, moreThanOne: BOOL], choice => [choices: RuleList], levelGuard => [r: Rule, min, max: Level], nonTerminal => [category: ATOM, onceOnly: BOOL _ FALSE], terminal => [category: TerminalClass, value: REF ANY _ NIL, defsName: BOOL _ FALSE], ENDCASE ]; <> TerminalClass: TYPE = {String, Integer, Identifier, Form}; GetRuleDef: PROC [category: ATOM] RETURNS [r: Rule]; MakeRule: PROC [category: ATOM] RETURNS [r: Rule]; GetCategory: PROC [r: Rule] RETURNS [category: ATOM]; DL--Def List--: PROC [category: ATOM, rest: LORA, min: Level _ 0, max: Level _ 2] RETURNS [a: ATOM]; DL2--Def List with explicit keyword--: PROC [category: ATOM, rest: LORA, min: Level _ 0, max: Level _ 2] RETURNS [a: ATOM]; DBL2--Def backtracking List with explicit keyword--: PROC [category: ATOM, rest: LORA, min: Level _ 0, max: Level _ 2, cutAfterFirst: BOOL _ FALSE] RETURNS [a: ATOM]; DLU--Def List with unconstrained keyword--: PROC [category: ATOM, rest: LORA, min: Level _ 0, max: Level _ 2] RETURNS [a: ATOM]; DC--Def Choice--: PROC [category: ATOM, choices: LORA, min: Level _ 0, max: Level _ 2] RETURNS [a: ATOM]; DQ--Def Queer--: PROC [category: ATOM, list: LORA, other: REF ANY, min: Level _ 0, max: Level _ 2] RETURNS [a: ATOM]; NameDef: PROC RETURNS [Rule]; NameRef: PROC RETURNS [Rule]; Ch--oice--: PROC [choices: LORA] RETURNS [Rule]; Star: PROC [rule: REF ANY] RETURNS [Rule]; Plus: PROC [rule: REF ANY] RETURNS [Rule]; Limit: PROC [rule: REF ANY, min: Level _ 0, max: Level _ 2] RETURNS [Rule]; Opt: PROC [rule: REF ANY] RETURNS [Rule]; StarCh: PROC [choices: LORA] RETURNS [Rule]; Oo: PROC [category: ATOM] RETURNS [Rule]; LR: PROC [rules: LORA, cutAfterFirst: BOOL _ FALSE] RETURNS [Rule]; JdC--Jot dot Cat--: PROC [left, right: ATOMList] RETURNS [crossed: LORA]; }.