<<>> <> <> <> <> <> DIRECTORY IO USING [STREAM], MPParseTable USING [ActionEntry, IndexTableRef, ProdDataRef, TSymbol, VocabularyRef], MPLeaves USING [HTIndex], Rope USING [ROPE]; MPP1: CEDAR DEFINITIONS = BEGIN Value: TYPE = RECORD [ -- type of the value stack sb: BOOL ¬ FALSE, sn: INTEGER ¬ 0, -- scalars only r: REF ANY ¬ NIL ]; ValueSeq: TYPE = RECORD [SEQUENCE length: NAT OF Value]; ValueStack: TYPE = REF ValueSeq; INTSeq: TYPE = RECORD [SEQUENCE length: CARDINAL OF INT]; ActionEntrySeq: TYPE = RECORD [SEQUENCE length: CARDINAL OF MPParseTable.ActionEntry]; nullValue: Value = []; nullId: Value = nullValue; nullToken: Token = [class: 0, value: nullValue, index:0]; Token: TYPE = RECORD [ class: MPParseTable.TSymbol, -- the token class value: Value, index: INT]; -- source line index <> Atom: PROC [errPut: IO.STREAM] RETURNS [Token]; ErrorContext: PROC [message: Rope.ROPE, tokenIndex: INT, put: IO.STREAM]; IdOfFirst: PROC RETURNS [MPLeaves.HTIndex]; IdOfLock: PROC RETURNS [MPLeaves.HTIndex]; IdOfRest: PROC RETURNS [MPLeaves.HTIndex]; ResetScanIndex: PROC [INT] RETURNS [success: BOOL]; ScanInit: UNSAFE PROC [source: Rope.ROPE] RETURNS [vIndex: MPParseTable.IndexTableRef, vBody: MPParseTable.VocabularyRef]; ScanReset: PROC RETURNS [nTokens, nErrors: CARDINAL]; <> Parse: PROC [source: Rope.ROPE, errPut: IO.STREAM] RETURNS [complete: BOOL, nTokens, nErrors: CARDINAL]; ParserID: PROC RETURNS [Rope.ROPE]; InputLoc: PROC RETURNS [INT]; <> AssignDescriptors: UNSAFE PROC [ qd: REF ActionEntrySeq, vd: ValueStack, ld: REF INTSeq, pp: MPParseTable.ProdDataRef]; ProcessQueue: UNSAFE PROC [qI, top: CARDINAL]; TokenValue: UNSAFE PROC [MPParseTable.TSymbol] RETURNS [Value]; <> <> END.