OperatorPrecedenceParse: CEDAR DEFINITIONS = BEGIN LORA: TYPE = LIST OF REF ANY; Parse: PROC [context: REF ANY, GetToken: TokenProc] RETURNS [ans: Arg]; TokenProc: TYPE = PROC [context: REF ANY, expectingArg: BOOLEAN] RETURNS [token: Token]; Reducer: TYPE = PROC [sr: SourceRange, context: REF ANY, ops: TokenList, args: ArgList] RETURNS [reduced: REF ANY]; Arg: TYPE = RECORD [sr: SourceRange, arg: REF ANY]; Token: TYPE = RECORD [sr: SourceRange, class: TokenClass, asArg: REF ANY _ NIL]; TokenClass: TYPE = REF TokenClassRep; TokenClassRep: TYPE = RECORD [ leftPrec, rightPrec: CARDINAL _ 0, --0 = don't want, >1 = want. Reduce: Reducer _ NIL, leftFix: Token _ [nullSR, NIL, NIL] ]; end: Token; argClass: TokenClass; SourceRange: TYPE = RECORD [first, last: INT] _ nullSR; nullSR: SourceRange = [-1, -1]; TokenList: TYPE = LIST OF Token; ArgList: TYPE = LIST OF Arg; CantReduce: SIGNAL [ops: TokenList, args: ArgList] RETURNS [use: REF ANY]; CantFix: SIGNAL [token: Token] RETURNS [fix: Token]; DoesntFix: ERROR [token: Token, expectingArg, willGetArg: BOOLEAN]; TerminateErr: ERROR [argStack: ArgList, opStack: TokenList]; LastReduceErr: ERROR [args: ArgList, ops: TokenList]; InvalidToken: ERROR [token: Token]; END. `OperatorPrecedenceParse.Mesa Last Edited by: Spreitzer, September 2, 1984 3:35:30 pm PDT Κ ˜J™J™;J˜Icode˜KšΠbxœΟkœž œ˜,K˜Kšž˜K˜Kš žœžœžœžœžœžœ˜K˜š Οnœžœ žœžœžœ ˜GK˜šŸ œžœžœ žœžœžœžœ˜XK˜KšŸœžœžœžœžœ!žœ žœžœ˜sK˜Kš œžœžœžœžœ˜3Kš œžœžœ-žœžœžœ˜PK˜Kšœ žœžœ˜%šœžœžœ˜KšœžœΟc˜?Kšœžœ˜Kšœžœžœ˜#Kšœ˜—K˜Kšœ ˜ Kšœ˜K˜Kšœ žœžœžœ ˜7K˜K˜Kšœ žœžœžœ˜ Kšœ žœžœžœ˜K˜—Kš œ žœ!žœžœžœ˜JK˜Kšœ žœžœ˜4K˜Kšœ žœ*žœ˜CK˜Kšœžœ)˜