-- P1.mesa last edit, Bruce August 5, 1980 4:57 PM DIRECTORY Ascii USING [NUL, CR, ControlZ], ParseTable, MachineDefs USING [SHandle], Tree USING [NodeName]; P1: DEFINITIONS = BEGIN NUL: CHARACTER = Ascii.NUL; CR: CHARACTER = Ascii.CR; ControlZ: CHARACTER = Ascii.ControlZ; -- Parsing lastntstate: ParseTable.State = LAST[ParseTable.NTState]; DefaultMarker: ParseTable.TSymbol = FIRST[ParseTable.TSymbol]; Token: TYPE = RECORD [ class: ParseTable.TSymbol, -- the token class value: UNSPECIFIED, index: CARDINAL]; -- source line index InputLoc: PROCEDURE RETURNS [CARDINAL]; DParse: PROCEDURE [STRING] RETURNS [BOOLEAN]; Parse: PROC [ -- for Pass1 sourceStream, messageStream: MachineDefs.SHandle, table: ParseTable.Handle] RETURNS [complete: BOOLEAN, nTokens, nErrors: CARDINAL]; -- Scanning hashval: ParseTable.HashIndex = LAST[ParseTable.HashIndex]; Atom: PROCEDURE RETURNS [symbol: Token]; ScanInit: PROCEDURE [string: STRING, table: ParseTable.Handle]; ScanReset: PROCEDURE RETURNS [BOOLEAN]; -- Interpreting QueueProcessor: TYPE = PROCEDURE [qI, top: CARDINAL]; AssignDescriptors: PROCEDURE [ lq: DESCRIPTOR FOR ARRAY OF ParseTable.ActionEntry, lv: DESCRIPTOR FOR ARRAY OF UNSPECIFIED, ll: DESCRIPTOR FOR ARRAY OF CARDINAL, lproddata: DESCRIPTOR FOR ARRAY OF ParseTable.ProductionInfo]; ProcessQueue: QueueProcessor; -- the global frames Scanner, Parser, Pass1T: PROGRAM; PrefillSymbols: PROC; PrintNodeName: PROC [Tree.NodeName]; END.