DIRECTORY IO USING [STREAM], MPParseTable USING [ActionEntry, IndexTableRef, ProdDataRef, TSymbol, VocabularyRef], MPLeaves USING [HTIndex], Rope USING [ROPE]; MPP1: CEDAR DEFINITIONS = BEGIN Value: TYPE = RECORD [ -- type of the value stack sb: BOOL ¬ FALSE, sn: INTEGER ¬ 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 MPParseTable.ActionEntry]; nullValue: Value = []; nullId: Value = nullValue; nullToken: Token = [class: 0, value: nullValue, index:0]; Token: TYPE = RECORD [ class: MPParseTable.TSymbol, -- the token class value: Value, index: INT]; -- source line index Atom: PROC [errPut: IO.STREAM] RETURNS [Token]; ErrorContext: PROC [message: Rope.ROPE, tokenIndex: INT, put: IO.STREAM]; IdOfFirst: PROC RETURNS [MPLeaves.HTIndex]; IdOfLock: PROC RETURNS [MPLeaves.HTIndex]; IdOfRest: PROC RETURNS [MPLeaves.HTIndex]; ResetScanIndex: PROC [INT] RETURNS [success: BOOL]; ScanInit: UNSAFE PROC [source: Rope.ROPE] RETURNS [vIndex: MPParseTable.IndexTableRef, vBody: MPParseTable.VocabularyRef]; ScanReset: PROC RETURNS [nTokens, nErrors: CARDINAL]; Parse: PROC [source: Rope.ROPE, errPut: IO.STREAM] RETURNS [complete: BOOL, nTokens, nErrors: CARDINAL]; ParserID: PROC RETURNS [Rope.ROPE]; InputLoc: PROC RETURNS [INT]; AssignDescriptors: UNSAFE PROC [ qd: REF ActionEntrySeq, vd: ValueStack, ld: REF INTSeq, pp: MPParseTable.ProdDataRef]; ProcessQueue: UNSAFE PROC [qI, top: CARDINAL]; TokenValue: UNSAFE PROC [MPParseTable.TSymbol] RETURNS [Value]; END. ` MPP1.mesa Copyright Σ 1985, 1986, 1987, 1989, 1991 by Xerox Corporation. All rights reserved. Russ Atkinson (RRA) January 19, 1987 7:19:44 pm PST JKF August 4, 1989 2:19:20 pm PDT Michael Plass, September 5, 1991 9:06 pm PDT implemented by Scanner implemented by Parser implemented by Pass1T the global frames Scanner, Parser, Pass1T: PROGRAM; Κh•NewlineDelimiter –(cedarcode) style™codešΟkœ™ Kšœ ΟeœI™TKšœœ™3Kšœ™!K™,—K˜š ˜ Kšœœœ˜Kšœ œC˜UKšœ œ ˜Kšœœœ˜K˜—šœœ œœ˜ K˜šœœœΟc˜1KšœœœœŸ˜2Kšœœœ˜Kšœ˜—K˜Kš œ œœœ œœ˜8Kšœ œœ ˜ K˜Kš œœœœ œœœ˜9Kš œœœœ œœ˜VK˜Kšœ˜Kšœ˜K˜K˜:šœœœ˜KšœŸ˜0K˜ KšœœŸ˜"K˜—šœ™Kš Οnœœ œœœ ˜/Kš   œœœœœœ˜IKš  œœœ˜+Kš œœœ˜*Kš œœœ˜*Kš  œœœœ œ˜3Kš  œœœœœI˜zKš  œœœœ˜5K˜—šœ™š  œœœ œœ˜2Kšœ œœ˜5—Kš œœœœ˜#Kš œœœœ˜K˜—Kšœ™˜š œœœ˜ Kšœœ˜K˜Kšœœ˜K˜—Kš  œœœ œ˜.Kš  œœœœ ˜?K˜—šœ™Kšœ œœ™!K˜Kšœ˜K˜———…—’ Z