DIRECTORY IO: TYPE USING [STREAM], ParseTable: TYPE USING [ActionEntry, ProdDataRef, State, TableRef, TSymbol], Rope: TYPE USING [ROPE], Symbols: TYPE USING [Name]; P1: 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[ -- type of the value stack SELECT OVERLAID * FROM scalar => [s: UNSPECIFIED], ref => [r: UNSPECIFIED] ENDCASE]; ValueSeq: TYPE = RECORD[SEQUENCE length: NAT OF P1.Value]; nullValue: P1.Value = [scalar[0]]; nullId: P1.Value = [ref[0]]; StateSeq: TYPE = RECORD[SEQUENCE length: NAT OF ParseTable.State]; LinkSeq: TYPE = RECORD[SEQUENCE length: NAT OF P1.Index]; -- links to source text ActionSeq: TYPE = RECORD[SEQUENCE length: NAT OF ParseTable.ActionEntry]; Token: TYPE = RECORD[ class: ParseTable.TSymbol, -- the token class value: P1.Value, index: P1.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: P1.Index]; InstallScanTable: PROC[ParseTable.TableRef]; NextToken: PROC RETURNS[Token]; ResetScanIndex: PROC[P1.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[P1.Index]; InstallParseTable: PROC[ParseTable.TableRef]; 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[P1.Value]; }. ’P1.Mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Satterthwaite, January 21, 1986 3:03:07 pm PST Maxwell, August 11, 1983 1:57 pm Paul Rovner, September 7, 1983 3:21 pm Russ Atkinson (RRA) March 6, 1985 10:13:49 pm PST ref types record structures (LONG or REF does not occur past this point) implemented by Pass1 implemented by Scanner implemented by Parser implemented by TreeBuild (Pass1T) Κ΄˜codešœ™Kšœ Οmœ1™™>˜šœžœžœŸ˜0šžœžœž˜Kšœž œ˜Kšœ ž œ˜Kšžœ˜ K˜——Kš œ žœžœžœ žœžœ ˜:K˜K˜"K˜K˜Kš œ žœžœžœ žœžœ˜BKš œ žœžœžœ žœžœŸ˜SKš œ žœžœžœ žœžœ˜IK˜K˜šœžœžœ˜KšœŸ˜-K˜KšœŸ˜'K˜K˜——šœ™KšΟn œžœžœ˜&Kš œžœžœ˜%Kš œžœžœ˜%K˜—šœ™Kš   œžœžœžœžœ˜LKš œžœ˜,Kš  œžœžœ˜Kš œžœ žœ žœ˜6š œžœ˜Kšœžœžœ˜Kš œžœžœžœžœ˜$—Kš  œžœ˜Kš  œžœžœžœ˜4K˜—šœ™Kš œžœžœ ˜!Kš œžœ˜-š œžœ˜ Kšœ žœžœ˜Kš œ žœžœžœžœ˜&Kšœ žœ˜Kšžœ žœžœ˜4—K˜—Kšœ!™!˜š œžœ˜K˜L—Kš  œžœ žœ˜&Kš  œžœžœ ˜7K˜K˜K˜———…—l Β