-- PPP1.Mesa -- Russ Atkinson, August 6, 1982 11:10 am -- Paul Rovner, July 19, 1983 11:07 pm DIRECTORY IO USING [STREAM], PPParseTable USING [ActionEntry, Handle, ProdDataHandle, TSymbol], PPLeaves USING [HTIndex], Rope USING [ROPE]; PPP1: CEDAR DEFINITIONS = BEGIN OPEN PPParseTable, PPLeaves, Rope; Value: TYPE = RECORD [ -- type of the value stack s: UNSPECIFIED _ 0, -- scalars only r: REF ANY _ NIL]; ValueSeq: TYPE = RECORD [SEQUENCE length: NAT OF Value]; ValueStack: TYPE = REF ValueSeq; INTSeq: TYPE = RECORD [SEQUENCE length: CARDINAL OF INT]; ActionEntrySeq: TYPE = RECORD [SEQUENCE length: CARDINAL OF ActionEntry]; NullValue: Value = [s:0, r:NIL]; NullId: Value = NullValue; Token: TYPE = RECORD [ class: TSymbol, -- the token class value: Value, index: INT]; -- source line index -- implemented by Scanner Atom: PROC [errPut: IO.STREAM] RETURNS [Token]; ErrorContext: PROC [message: ROPE, tokenIndex: INT, put: IO.STREAM]; IdOfFirst: PROC RETURNS [HTIndex]; IdOfLock: PROC RETURNS [HTIndex]; IdOfRest: PROC RETURNS [HTIndex]; ResetScanIndex: PROC [INT] RETURNS [success: BOOL]; ScanInit: UNSAFE PROC [table: Handle, source: ROPE]; ScanReset: PROC RETURNS [nTokens, nErrors: CARDINAL]; -- implemented by Parser Parse: PROC [source: ROPE, pth: Handle, errPut: IO.STREAM] RETURNS [complete: BOOL, nTokens, nErrors: CARDINAL]; ParserID: PROC RETURNS [ROPE]; InputLoc: PROC RETURNS [INT]; -- implemented by Pass1T AssignDescriptors: UNSAFE PROC [ qd: REF ActionEntrySeq, vd: ValueStack, ld: REF INTSeq, pp: ProdDataHandle]; ProcessQueue: UNSAFE PROC [qI, top: CARDINAL]; TokenValue: UNSAFE PROC [TSymbol] RETURNS [Value]; -- the global frames Scanner, Parser, Pass1T: PROGRAM; END. Κϋ– "Mesa" style˜IprocšβΟc^œΟk œžœžœžœžœ<žœžœžœ žœž œžœžœ)žœžœœž œœžœžœžœžœžœžœ žœžœžœžœžœžœžœ žœžœžœžœžœžœ žœžœ-žœ*žœžœœžœœœΟnœžœ žœžœžœ Ÿ œžœ žœžœžœžœŸ œžœžœŸœžœžœŸœžœžœŸœžœžœžœ žœŸœžœžœžœŸ œžœžœžœœŸœžœ žœžœžœž œ žœžœŸœžœžœžœŸœžœžœžœœŸœžœžœžœ'žœ!Ÿ œžœžœ žœŸ œžœžœ žœ œžœžœ˜†—…—