SymbolTableDefs: DEFINITIONS = {
SymbolType: TYPE = {unused, none, short, long, pointer, array,
arrayArray, structure, boolean, real, double, enumeration, union};
echoSymbolTables: BOOLEAN; -- echo symbol tables to executive
-- at the end of each block
SymbolEntry: TYPE = RECORD [
type: SymbolType,
baseType: SymbolType,
name: LONG STRING,
typeName: LONG STRING,
pointerCount: CARDINAL,
blockLevel: CARDINAL
];
InitializeSymbolTable: PROCEDURE [];
EnterBlock: PROCEDURE [];
ExitBlock: PROCEDURE [];
EnterSymbol: PROCEDURE [symName: LONG STRING, symType: SymbolType,
symBaseType: SymbolType, symTypeName: LONG STRING,
symPointerCount: CARDINAL, blockHeader: BOOLEAN ← FALSE];
LookUpSymbol: PROCEDURE[symName: LONG STRING]
RETURNS [symType: SymbolType, symBaseType: SymbolType,
symTypeName: LONG STRING, symPointerCount: CARDINAL];
PrintSymbolTable: PROCEDURE [];
FinalizeSymbolTable: PROCEDURE [];
}.