perm filename EADD2.2[EAL,HE]2 blob sn#704729 filedate 1983-04-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	{$NOMAIN	Editor: aux routines for addStmnt }
C00005 00003	procedure addst2 (nextLinep: cursorpp sp: statementp) external
C00009 ENDMK
C⊗;
{$NOMAIN	Editor: aux routines for addStmnt }

%include eedit.hdr;

{ Externally defined routines from elsewhere: }

	(* XX From EEXTRA XX *)
procedure setUpNewStmnt(sp: statementp; ind: integer);		external;
procedure waitParse(sp: statementp);				external;
procedure wristParse(sp: statementp);				external;
procedure armmagicParse(sp: statementp);			external;

	(* From EAUX1B *)
function checkArg(n: nodep; d: datatypes): nodep;		external;

	(* From EAUX1C *)
procedure errPrnt;						external;
function evalOrder(what,last: nodep; pcons: boolean): nodep;	external;
procedure relExpr(n: nodep);					external;

	(* From ETOKEN *)
procedure dimCheck(n,d: nodep);				external;

	(* From EPUTST *)
procedure putstmnt(s: statementp; indent, plevel: integer);	external;

	(* From EEXPAR *)
function exprParse: nodep;					external;
procedure getArgs(opn: nodep);					external;

	(* From EPAR3A *)
procedure forParse(st: statementp);				external;
procedure affixParse(st: statementp);				external;
procedure assignParse(st: statementp);				external;
procedure unfixParse(st: statementp);				external;
procedure enableParse(st: statementp);				external;

	(* From EPAR3F *)
procedure moveParse(st: statementp; bp: boolean);		external;
procedure stopParse(st: statementp);				external;

	(* From PP *)
procedure ppLine; 						external;
procedure ppOutNow; 						external;
procedure ppChar(ch: ascii); 					external;
procedure pp5(ch: c5str; length: integer); 			external;
procedure pp10(ch: cstring; length: integer); 			external;
procedure pp10L(ch: cstring; length: integer);			external;
procedure pp20(ch: c20str; length: integer); 			external;
procedure pp20L(ch: c20str; length: integer); 			external;

procedure addst2 (nextLinep: cursorpp; sp: statementp); external;
procedure addst2 ;
 var b: boolean;

 begin
 with curToken, sp↑ do 
  case stmnt of
pausetype:	begin
		ptime := checkArg(exprParse,svaltype);
		dimCheck(ptime,timedim↑.dim);	(* right dimension? *)
		exprs := evalOrder(ptime,nil,true);
		end;
printtype,
prompttype,
aborttype,
saytype:	begin
		pnode↑.arg2 := nil;
		getArgs(pnode);		(* pretend we just saw a queryop *)
		plist := pnode↑.arg2;	(* store away pointer to print list *)
		if plist <> nil then
		  begin
		  exprs := evalOrder(plist,nil,false);
		  setUpNewStmnt(sp,nextLinep↑.ind);
		  end;
		debugLev := 0;		(* for abort *)
		end;
assigntype:	begin				(* shouldn't get here *)
		backUp := true;
		assignParse(sp);
		end;
signaltype,
waittype:	waitParse(sp);
enabletype,
disabletype:	begin
		enableParse(sp);
		end;
affixtype:	begin
		fieldNum := 1;
		affixParse(sp);
		setUpNewStmnt(sp,nextLinep↑.ind);
		end;
unfixtype:	begin
		unfixParse(sp);
		end;
movetype,
opentype,
closetype,
centertype,
floattype,
operatetype:	begin
		clauses := nil;
		moveParse(sp,true);
		end;
setbasetype,
stoptype:	begin
		stopParse(sp);
		end;
retrytype:	begin
		(* *** need to check in the body of an error handler *** *)
		(* *** also need to set .olevel *** *)
		end;
wristtype:	begin
		wristParse(sp);
		end;
armmagictype:	begin
		armmagicParse(sp);
		end;
(* *** for now we're ignoring: requiretype, definetype & dimdeftype *** *)
otherwise {do nothing};
  end;
end;