DIRECTORY IO USING [STREAM], MobParseTable USING [ActionEntry, ProdDataRef, State, TSymbol], Rope USING [ROPE]; MobP1: DEFINITIONS ~ { Index: TYPE~CARDINAL; ValueStack: TYPE~REF ValueSeq; StateStack: TYPE~REF StateSeq; LinkStack: TYPE~REF LinkSeq; ActionStack: TYPE~REF ActionSeq; Value: TYPE~RECORD [ -- type of the value stack SELECT OVERLAID * FROM scalar => [s: LONG UNSPECIFIED], ref => [r: LONG UNSPECIFIED], short => [a, fill: UNSPECIFIED], ENDCASE]; ValueSeq: TYPE~RECORD[SEQUENCE length: NAT OF Value]; nullValue: Value~[scalar[0]]; nullId: Value~[ref[0]]; StateSeq: TYPE~RECORD [SEQUENCE length: NAT OF MobParseTable.State]; LinkSeq: TYPE~RECORD [SEQUENCE length: NAT OF Index]; -- links to source text ActionSeq: TYPE~RECORD [SEQUENCE length: NAT OF MobParseTable.ActionEntry]; Token: TYPE~RECORD [ class: MobParseTable.TSymbol, -- the token class value: Value, index: Index]; -- source line index ErrorContext: PROC[to: IO.STREAM, message: Rope.ROPE, tokenIndex: Index]; InstallScanTable: PROC[]; NextToken: PROC RETURNS[Token]; ResetScanIndex: PROC[Index] RETURNS[success: BOOL]; ScanInit: PROC[ source: IO.STREAM, logger: PROC[PROC[log: IO.STREAM]]]; ScanReset: PROC; ScanStats: PROC RETURNS[nTokens, nErrors: CARDINAL]; TypeSym: PROC[log: IO.STREAM, sym: MobParseTable.TSymbol]; InputLoc: PROC RETURNS [Index]; InstallMobParseTable: PROC []; Parse: PROC[ source: IO.STREAM, logger: PROC[PROC[log: IO.STREAM]], prefixOk: BOOL] RETURNS[complete: BOOL, nTokens, nErrors: CARDINAL]; ParserID: PROC RETURNS[Rope.ROPE]; AssignDescriptors: PROC [ qd: ActionStack, vd: ValueStack, ld: LinkStack, pp: MobParseTable.ProdDataRef]; ProcessQueue: PROC [qI, top: CARDINAL]; TokenValue: PROC [MobParseTable.TSymbol] RETURNS [Value]; }.  MobP1.mesa Copyright Σ 1985, 1989, 1991 by Xerox Corporation. All rights reserved. Satterthwaite on February 4, 1986 2:18:31 pm PST Maxwell, August 3, 1983 11:33 am Paul Rovner, September 22, 1983 10:37 pm Russ Atkinson (RRA) March 7, 1985 0:03:14 am PST Andy Litman March 18, 1988 9:33:21 pm PST JKF July 22, 1989 3:48:29 pm PDT pointer types record structures (LONG does not occur past this point) implemented by scanner (see ProtoScanner.mesa) implemented by parser (see ProtoParser.mesa) implemented by interpreter ΚΉ–(cedarcode) style•NewlineDelimiter ™šœ ™ Icodešœ Οeœ=™HJšΟy0™0Jšž ™ Jšž(™(K™0Kšž)™)K™ J™—šΟk ˜ KšŸœŸœŸœ˜KšœŸœ,˜?KšœŸœŸœ˜K˜—šœŸ œ˜K˜KšœŸœŸ ˜K˜Jšœ ™ ˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ˜ K˜—Jšœ7™7˜šœŸœŸœΟc˜/šŸœŸœŸ˜KšœŸœ˜ Kšœ Ÿœ˜KšœŸ œ˜ KšŸœ˜ K˜——Kš œ ŸœŸœŸœ ŸœŸœ˜5K˜K˜K˜K˜Kš œ ŸœŸœŸœ ŸœŸœ˜DKš œ ŸœŸœŸœ ŸœŸœ  ˜MKš œ ŸœŸœŸœ ŸœŸœ˜KK˜K˜šœŸœŸœ˜Kšœ ˜1K˜ Kšœ ˜'K˜——šœ.™.Kš Οn œŸœŸœŸœŸœ˜IKš‘œŸœ˜Kš‘ œŸœŸœ˜Kš‘œŸœŸœ Ÿœ˜3š‘œŸœ˜KšœŸœŸœ˜Kš œŸœŸœŸœŸœ˜$—Kš‘ œŸœ˜Kš‘ œŸœŸœŸœ˜4Kš‘œŸœŸœŸœ˜:K˜—šœ,™,Kš‘œŸœŸœ ˜Kš‘œŸœ˜š‘œŸœ˜ Kšœ ŸœŸœ˜Kš œ ŸœŸœŸœŸœ˜%Kšœ Ÿœ˜KšŸœ ŸœŸœ˜4—Kš‘œŸœŸœŸœ˜"K˜—šœ™š‘œŸœ˜K˜O—Kš‘ œŸœ Ÿœ˜'Kš‘ œŸœŸœ ˜9K˜—˜K˜———…—δ ­