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 [];
  
  }.