DIRECTORY
MStream USING [Handle],
TreesDefs USING [TreeNode],
ParseInterface USING [ActionEntry, TableRef, ProductionInfo, TSymbol];
ParseDefs: DEFINITIONS = {
-- INTERFACE TYPES --
-- parse stack values (for use by semantics routines)
Value: TYPE = LONG STRING;
Value2: TYPE = LONG POINTER TO TreesDefs.TreeNode;
Token: TYPE = RECORD [
class: ParseInterface.TSymbol, -- the token class
value: Value,
location: CARDINAL ];
-- INTERFACE VARIABLES --
-- string to hold comment until they can be printed
commentString: LONG STRING;
-- PARSING --
-- basic parsing procedure (does its own initialization)
-- implemented by Parser.mesa
Parse: PROCEDURE [stream: MStream.Handle];
-- SCANNING --
-- gets the next token
-- implemented by scanner.mesa
Atom: PROCEDURE RETURNS [symbol: Token];
-- initializes the scanner (called by the parser initialization section)
ScanInit: PROCEDURE [inputStream: MStream.Handle, table: ParseInterface.TableRef];
-- Frees the buffer string in the scanner
ScanFinal: PROCEDURE [];
-- prints the recent context after a parse error
ErrorContext: PROCEDURE [];
-- SEMANTICS --
-- this is called whenever a production is reduced (does the semantic processing)
-- implemented by ParseDclsImpl.mesa
ProcessQueue: PROCEDURE [qI, top: CARDINAL];
-- allows the parse stack to be shared between the parser and the semantics
-- routine (ProcessQueue)
-- implemented by ParseDclsImpl.mesa
AssignDescriptors: PROCEDURE [
qd: LONG DESCRIPTOR FOR ARRAY OF ParseInterface.ActionEntry,
vd: LONG DESCRIPTOR FOR ARRAY OF Value,
v2d: LONG DESCRIPTOR FOR ARRAY OF Value2,
ld: LONG DESCRIPTOR FOR ARRAY OF CARDINAL,
pp: LONG DESCRIPTOR FOR ARRAY OF ParseInterface.ProductionInfo];
-- second section of semantics (called by ProcessQueue)
-- implemented by ParseStmtsImpl.mesa
ParseStmts: PROCEDURE [rule: CARDINAL, top: CARDINAL,
v: LONG DESCRIPTOR FOR ARRAY OF Value,
v2: LONG DESCRIPTOR FOR ARRAY OF Value2];
-- third section of semantics (called by ProcessQueue)
-- implemented by ParseExpr1Impl.mesa
ParseExpr1: PROCEDURE [rule: CARDINAL, top: CARDINAL,
v: LONG DESCRIPTOR FOR ARRAY OF Value,
v2: LONG DESCRIPTOR FOR ARRAY OF Value2];
-- fourth section of semantics (called by ProcessQueue)
-- implemented by ParseExpr2Impl.mesa
ParseExpr2: PROCEDURE [rule: CARDINAL, top: CARDINAL,
v: LONG DESCRIPTOR FOR ARRAY OF Value,
v2: LONG DESCRIPTOR FOR ARRAY OF Value2];
}.