DIRECTORY EDIFAndCore, EDIFfing, IO, Rope; EDIFParsing2: CEDAR DEFINITIONS = {OPEN EDIFAndCore, EDIFfing; ParseError: ERROR [ parseStack: ParseStack, nonTerminal: ATOM, syntaxRule: SyntaxRule ]; ParseStack: TYPE = LIST OF ParseTreePlace; ParseTreePlace: TYPE = RECORD [list: REF list ParseTreePrivate, index: INT]; Register: PROC [ outerKey: ATOM _ NIL, key: ATOM, start: PROC [outerKey, key: ATOM, name: NameStuff, outerConv: REF ANY] RETURNS [conv: REF ANY] _ NIL, finish: PROC [conv: REF ANY] _ NIL, rule: SyntaxRule ]; SyntaxRuleList: TYPE = LIST OF SyntaxRule; SyntaxRule: TYPE = REF SyntaxRulePrivate; SyntaxRulePrivate: TYPE = RECORD [ variant: SELECT type: SyntaxRuleType FROM terminal => [vart: SELECT class: * FROM any => [], string => [], identifier => [], integer => [min, max: INT], keyword => [key: ROPE], ENDCASE], nonTerminal => [category: ATOM], choice => [choices: SyntaxRuleList], repeat => [r: SyntaxRule, atLeastOnce: BOOL], series => [elts: SyntaxRuleList], optional => [r: SyntaxRule], nest => [r: SyntaxRule], atMostOne => [r: SyntaxRule], cut => [], ENDCASE ]; SyntaxRuleType: TYPE = {terminal, nonTerminal, choice, repeat, series, optional, nest, atMostOne, cut}; }. EDIFParsing2.Mesa Spreitzer, February 22, 1986 7:07:41 pm PST Tells where you are in the parse tree. Tells where you are in the grammar. Κρ– "cedar" style˜code™K™+—K˜KšΟk œœ˜*K˜šΠbx œœ œœ˜>K˜šΠbl œœ˜˜K™&—šœ œ˜)K™#—K˜—K˜Kšœ œœœ˜*Kš œœœœœ˜LK˜šΟnœœ˜Kšœ œœ˜Kšœœ˜ Kšœœœœœœœœœ˜eKš œœœœœ˜#K˜K˜—K˜Kšœœœœ ˜*Kšœ œœ˜)šœœœ˜"šœ œ˜)šœœ ˜'K˜ K˜ K˜Kšœœ˜Kšœœ˜Kšœ˜ —Kšœœ˜ Kšœ$˜$Kšœ'œ˜-Kšœ!˜!K˜K˜K˜K˜ Kš˜—K˜—K˜KšœœS˜gK˜K˜——…—²3