-- PackParseDefs.mesa
-- Last edited by Lewis on  2-Apr-81 17:53:26

DIRECTORY
  ParseTable USING [
    ActionEntry, Production, ProductionInfo, TableRef, TSymbol],
  Streams USING [Handle];

P1: DEFINITIONS =
  BEGIN  OPEN ParseTable;

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

 -- implemented by PackScanner

  Atom: PROC RETURNS [Token];
  ErrorContext: PROC [STRING, CARDINAL];
  ResetScanIndex: PROC [CARDINAL];
  ScanInit: PROC [
	sourceStream, messageStream: Streams.Handle,
	table: ParseTable.TableRef];
  ScanReset: PROC RETURNS [nTokens, nErrors: CARDINAL];

 -- implemented by PackParser

  Parse: PROC [
	sourceStream, messageStream: Streams.Handle,
	table: ParseTable.TableRef]
      RETURNS [complete: BOOLEAN, nTokens, nErrors: CARDINAL];
  ParserID: PROC RETURNS [STRING];
  InputLoc: PROC RETURNS [CARDINAL];

 -- implemented by PackTreeBuild

  AssignDescriptors: PROC [
	qd: DESCRIPTOR FOR ARRAY OF ActionEntry,
	vd: DESCRIPTOR FOR ARRAY OF UNSPECIFIED,
	ld: DESCRIPTOR FOR ARRAY OF CARDINAL,
	pp: LONG POINTER TO ARRAY Production OF ProductionInfo];
  ProcessQueue: PROC [qI, top: CARDINAL];
  TokenValue: PROC [TSymbol] RETURNS [UNSPECIFIED];

  END.