-- file PGS1.Mesa
-- last modified by Satterthwaite, July 14, 1980  2:52 PM

DIRECTORY
  ParseTable: FROM "PGSParseTable" USING [
    ActionEntry, Handle, Production, ProductionInfo, Symbol,  TSymbol];

PGS1: DEFINITIONS =
  BEGIN OPEN ParseTable;

  Token: TYPE = RECORD [
    class: TSymbol,		-- the token class
    value: UNSPECIFIED,
    index: CARDINAL];		-- source line index

 -- implemented by PGSControl
  Atom: PROC RETURNS [Token];
  ResetScanIndex: PROC [CARDINAL];
  ScanInit: PROC [ParseTable.Handle];
  ScanReset: PROC [pErrors:CARDINAL] RETURNS [nTokens, nErrors: CARDINAL];
  AssignDescriptors: PROC [
	qd: DESCRIPTOR FOR ARRAY OF ActionEntry,
	vd: DESCRIPTOR FOR ARRAY OF UNSPECIFIED,
	ld: DESCRIPTOR FOR ARRAY OF CARDINAL,
	pp: POINTER TO ARRAY Production OF ProductionInfo];
  ProcessQueue: PROC [qI, top: CARDINAL];
  TokenValue: PROC [TSymbol] RETURNS [UNSPECIFIED];

 -- implemented by PGSparse
  Parse: PROC [ParseTable.Handle]
    RETURNS [complete: BOOLEAN, nTokens, nErrors: CARDINAL];
  ParserID: PROC RETURNS [STRING];
  InputLoc: PROC RETURNS [CARDINAL];

 -- implemented by PGScon

  outeol: PROC [n:CARDINAL];
  outchar: PROC [c:CHARACTER, n:INTEGER];
  outstring: PROC [string:STRING];
  outtab: PROC;
  outnum: PROC[val:INTEGER, cols:CARDINAL];
  resetoutstream: PROC;

  ErrorContext: PROC [STRING,CARDINAL];
  locateindex: PROC [index:CARDINAL] RETURNS [CARDINAL];
  AllocateSegment: PROC [nwords:CARDINAL] RETURNS [POINTER];
  FreeSegment: PROC[base:POINTER];
  AllocateHeapNode: PROC [nwords:CARDINAL] RETURNS [POINTER];
  FreeHeapNode: PROC [base:POINTER];

 -- the global frames
  Scanner, Parser: PROGRAM;

  END.