perm filename PROOT.2[EAL,HE] blob sn#674770 filedate 1982-09-27 generic text, type C, neo UTF8
C00001 00001
C00002 00002	{$NOMAIN	"Root" part of the parser }
C00008 00003	(* Routines to take care of inter-overlay calling *)
C00015 ENDMK
{$NOMAIN	"Root" part of the parser }
{	This contains routines necessary for inter-overlay calls	}
{	for routines inside PARSE.  For example, when POV1 calls PEXPR. }

%include palhdr.pas;

{ Externally defined routines from elsewhere: }

	(* From PEXPR *)
function exprParse: nodep;					external;
procedure getargs(opn: nodep);					external;

	(* From PCLAUS *)
function thencode(evp: boolean): statementp;			external;
function clauseParse(absSeen: boolean): nodep;			external;

	(* From PCMON *)
function cmonParse(st: statementp; deferred: boolean): boolean;	external;

	(* From PMAIN *)
function stmntParse: statementp;				external;

	(* Routines used only to call in overlays *)
procedure pBlGet;						external;
procedure pOv1Get;						external;
procedure pOv2Get;						external;
procedure pOv3Get;						external;
procedure pClauseGet;						external;
procedure pCmonGet;						external;
procedure pMoveGet;						external;

(* Routines to take care of inter-overlay calling *)

function blStmntParse: statementp; external;
function blStmntParse;				
 blStmntParse := stmntParse; 	{ Call the parser; may swap out PBLOCK }
 pBlGet; 			{ Make sure PBLOCK is there to return to }

function clStmntParse: statementp; external;
function clStmntParse;
 begin clStmntParse := stmntParse; pClauseGet; end;

function cmStmntParse: statementp; external;
function cmStmntParse;
 begin cmStmntParse := stmntParse; pCmonGet; end;

function ov1StmntParse: statementp; external;
function ov1StmntParse;				
 begin ov1StmntParse := stmntParse; pov1Get; end;

function blExprParse: nodep; external;
function blExprParse;					
 begin blExprParse := exprParse; pBlGet; end;

function clExprParse: nodep; external;
function clExprParse;					
 begin clExprParse := exprParse; pClauseGet; end;

function cmExprParse: nodep; external;
function cmExprParse;					
 begin cmExprParse := exprParse; pCmonGet; end;

function mvExprParse: nodep; external;
function mvExprParse;					
 begin mvExprParse := exprParse; pMoveGet; end;

function ov1ExprParse: nodep; external;
function ov1ExprParse;					
 begin ov1ExprParse := exprParse; pov1Get; end;

function ov2ExprParse: nodep; external;
function ov2ExprParse;					
 begin ov2ExprParse := exprParse; pov2Get; end;

procedure ov2GetArgs(opn: nodep); external;
procedure ov2GetArgs;
 begin getArgs(opn); pov2Get end;

function ov3ExprParse: nodep; external;
function ov3ExprParse;					
 begin ov3ExprParse := exprParse; pov3Get; end;

function cmClauseParse(absSeen: boolean): nodep; external;
function cmClauseParse;
 begin cmClauseParse := clauseParse(absSeen); pCmonGet; end;

function mvThencode(evp: boolean): statementp; external;
function mvThencode;
 begin mvThencode := thencode(evp); pMoveGet; end;

function mvClauseParse(absSeen: boolean): nodep; external;
function mvClauseParse;
 begin mvClauseParse := clauseParse(absSeen); pMoveGet; end;

function mvCmonParse(st: statementp; deferred: boolean): boolean;  external;
function mvCmonParse;
 begin mvCmonParse := cmonParse(st,deferred); pMoveGet; end;