DIRECTORY IO USING [STREAM], ParseTable USING [ActionEntry, ProdDataRef, State, TSymbol], Rope USING [ROPE], Symbols USING [Name], Table USING [Index]; MimP1: DEFINITIONS = { OPEN ParseTable; Index: TYPE = INT; -- FileStream.FileByteIndex ValueStack: TYPE = REF ValueSeq; StateStack: TYPE = REF StateSeq; LinkStack: TYPE = REF LinkSeq; ActionStack: TYPE = REF ActionSeq; Value: TYPE = RECORD [ SELECT OVERLAID * FROM scalar => [sb: BOOL, sn: INTEGER], ref => [r: Table.Index] ENDCASE]; ValueSeq: TYPE = RECORD [SEQUENCE length: NAT OF MimP1.Value]; nullValue: MimP1.Value = [scalar[FALSE, 0]]; nullId: MimP1.Value = [ref[Table.Index.FIRST]]; StateSeq: TYPE = RECORD [SEQUENCE length: NAT OF ParseTable.State]; LinkSeq: TYPE = RECORD [SEQUENCE length: NAT OF MimP1.Index]; -- links to source text ActionSeq: TYPE = RECORD [SEQUENCE length: NAT OF ParseTable.ActionEntry]; Token: TYPE = RECORD [ class: ParseTable.TSymbol, -- the token class value: MimP1.Value, index: MimP1.Index]; -- source line index IdOfFirst: PROC RETURNS [Symbols.Name]; IdOfLock: PROC RETURNS [Symbols.Name]; IdOfRest: PROC RETURNS [Symbols.Name]; ErrorContext: PROC [to: IO.STREAM, message: Rope.ROPE, tokenIndex: MimP1.Index]; InstallScanTable: PROC; NextToken: PROC RETURNS [Token]; ResetScanIndex: PROC [MimP1.Index] RETURNS [success: BOOL]; ScanInit: PROC [source: IO.STREAM, logger: PROC [PROC [log: IO.STREAM]]]; ScanReset: PROC; ScanStats: PROC RETURNS [nTokens, nErrors: CARDINAL]; InputLoc: PROC RETURNS [MimP1.Index]; InstallParseTable: PROC; Parse: PROC [source: IO.STREAM, logger: PROC [PROC [log: IO.STREAM]], prefixOk: BOOL] RETURNS [complete: BOOL, nTokens, nErrors: CARDINAL]; AssignDescriptors: PROC [qd: ActionStack, vd: ValueStack, ld: LinkStack, pp: ParseTable.ProdDataRef]; ProcessQueue: PROC [qI, top: CARDINAL]; TokenValue: PROC [ParseTable.TSymbol] RETURNS [MimP1.Value]; }.  MimP1.mesa Copyright Σ 1985, 1987, 1988, 1991 by Xerox Corporation. All rights reserved. Satterthwaite, June 5, 1986 2:00:58 pm PDT Russ Atkinson (RRA) March 17, 1988 12:50:28 pm PST ref types record structures (LONG or REF does not occur past this point) type of the value stack implemented by Pass1 implemented by MimScanner implemented by MimParserImpl implemented by TreeBuild (Pass1T) ΚΖ•NewlineDelimiter –(cedarcode) style™codešœ ™ Kšœ ΟeœC™NKšΟy*™*K™2K™šΟk ˜ KšŸœŸœŸœ˜Kšœ Ÿœ,˜™>˜šœŸœŸœ˜Kšœ™šŸœŸœŸ˜KšœŸœŸœ˜"Kšœ˜KšŸœ˜ K˜——Kš œ ŸœŸœŸœ ŸœŸœ˜>K˜Kšœ!Ÿœ˜,Kšœ'Ÿœ˜/K˜Kš œ ŸœŸœŸœ ŸœŸœ˜CKš œ ŸœŸœŸœ ŸœŸœ‘˜WKš œ ŸœŸœŸœ ŸœŸœ˜JK˜K˜šœŸœŸœ˜Kšœ‘˜-Kšœ˜Kšœ‘˜*K˜——šœ™K˜Kš  œŸœŸœ˜'Kš œŸœŸœ˜&Kš œŸœŸœ˜&K˜—šœ™K˜Kš   œŸœŸœŸœŸœ˜PKš œŸœ˜Kš  œŸœŸœ ˜ Kš œŸœŸœ Ÿœ˜;Kš œŸœ ŸœŸœ ŸœŸœŸœŸœ˜IKš  œŸœ˜Kš  œŸœŸœŸœ˜5K˜—šœ™K˜Kš œŸœŸœ˜%Kš œŸœ˜Kš œŸœ ŸœŸœ ŸœŸœŸœŸœŸœŸœ ŸœŸœ˜‹K˜—Kšœ!™!˜Kš œŸœM˜eKš  œŸœ Ÿœ˜'Kš  œŸœŸœ˜