DIRECTORY IO USING [STREAM], NPGSParseTable USING [ActionEntry, ProdDataRef, State, TSymbol], Rope USING [ROPE]; NPGS1: CEDAR 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: UNSPECIFIED], ref => [r: 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 NPGSParseTable.State]; LinkSeq: TYPE~RECORD [SEQUENCE length: NAT OF Index]; -- links to source text ActionSeq: TYPE~RECORD [SEQUENCE length: NAT OF NPGSParseTable.ActionEntry]; Token: TYPE~RECORD [ class: NPGSParseTable.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]; InputLoc: PROC RETURNS [Index]; InstallParseTable: PROC; Parse: PROC[ source: IO.STREAM, logger: PROC [PROC [log: IO.STREAM]], prefixOk: BOOL, cusp: BOOL] RETURNS [complete: BOOL, nTokens, nErrors: CARDINAL]; ParserID: PROC RETURNS [Rope.ROPE]; AssignDescriptors: PROC [ qd: ActionStack, vd: ValueStack, ld: LinkStack, pp: NPGSParseTable.ProdDataRef]; ProcessQueue: PROC [qI, top: CARDINAL, cusp: BOOL]; TokenValue: PROC [NPGSParseTable.TSymbol] RETURNS [Value]; }. ˜ NPGS1.mesa Copyright Σ 1985, 1988, 1992 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 25, 1988 7:38:27 pm PST JKF February 6, 1989 12:15:52 pm PST pointer types record structures implemented by NPGSScan implemented by NPGSParser implemented by NPGSScan Κ –"cedarcode" style•NewlineDelimiter ™codešœ ™ Kšœ Οeœ=™HKšΟy0™0Kšž ™ Kšž(™(K™1K™$K™—šΟk ˜ KšŸœŸœŸœ˜KšœŸœ,˜@KšœŸœŸœ˜K˜—šŸœŸœ˜K˜KšœŸœŸ ˜K˜Kšœ ™ ˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ˜ K˜—Kšœ™˜šœŸœŸœΟc˜/šŸœŸœŸ˜KšœŸ œ˜Kšœ Ÿ œ˜KšŸœ˜ K˜——Kš œ ŸœŸœŸœ ŸœŸœ˜6K˜K˜K˜K˜Kš œ ŸœŸœŸœ ŸœŸœ˜EKš œ ŸœŸœŸœ ŸœŸœ  ˜MKš œ ŸœŸœŸœ ŸœŸœ˜LK˜K˜šœŸœŸœ˜Kšœ ˜1K˜ Kšœ ˜#K˜——šœ™Kš Οn œŸœŸœŸœŸœ˜JKš‘œŸœ˜Kš‘ œŸœŸœ˜ Kš‘œŸœŸœ Ÿœ˜5š‘œŸœ˜KšœŸœŸœ˜Kš œŸœŸœŸœŸœ˜&—Kš‘ œŸœ˜Kš‘ œŸœŸœŸœ˜5K˜—šœ™Kš‘œŸœŸœ ˜Kš‘œŸœ˜š‘œŸœ˜ Kšœ ŸœŸœ˜Kš œ ŸœŸœŸœŸœ˜'Kšœ ŸœŸœ˜KšŸœ ŸœŸœ˜5—Kš‘œŸœŸœŸœ˜#K˜—šœ™š‘œŸœ˜KšœP˜P—Kš‘ œŸœ ŸœŸœ˜3Kš‘ œŸœŸœ ˜:K˜—˜K˜———…—  Ψ