/*
 * logo.y -> y.tab.c + plus edits here
 */
# define LOWPREC 257
# define UNARY 258
# define TWOOP 259
# define ONEOP 260
# define NOOP 261
# define ONECOM 262
# define CSTRING 263
# define UINT 264
# define LTO 265
# define IFCOM 266
# define LEDIT 267
# define LIFTF 268
# define LTRACE 269
# define LPROC 270
# define LPEND 271
# define LAEND 272
# define LGO 273
# define CLIST 274
# define TWOCOM 275
# define NOCOM 276
# define RUNCOM 277
# define RNEND 278
# define REPCOM 279
# define THREECOM 280

# line 14
 
#include "logo.h"

char popname[NAMELEN+1];
int multnum;
struct object *multarg = 0;
#include <setjmp.h>
extern jmp_buf runret;
jmp_buf yerrbuf;
int catching = 0;
int flagquit = 0;
extern struct runblock *thisrun;
#ifndef NOTURTLE
extern int turtdes;
extern struct display *mydpy;
#endif
int errtold = 0;
int yyline =0;
char ibuf[IBUFSIZ] ={0};
char *ibufptr =NULL;
char *getbpt =0;
char titlebuf[100] ={0};
char *titleptr =NULL;
extern char *cpystr();
int letflag =0;
int topf =0;
int pflag =0;
char charib =0;
int endflag =0, rendflag = 0;
int traceflag =0;
int currtest = 0;
int argno =(-1);
int *stkbase =NULL;
int stkbi =0;
struct stkframe *fbr =NULL;
struct plist *proclist =NULL;
#ifdef PAUSE
int pauselev = 0;
extern int psigflag,errpause;
#endif

struct object *add(), *sub(), *mult(), *div(), *rem(), *and(), *or();
struct object *greatp(), *lessp(), *lmax(), *lmin(), *lis();
struct object *worcat(), *sencat(), *equal(), *lemp(), *comp();
struct object *lnump(), *lsentp(), *lwordp(), *length(), *zerop();
struct object *first(), *butfir(), *last(), *butlas(), *alllk();
struct object *lnamep(), *lrandd(), *rnd(), *sq(), *lpow(), *lsin();
struct object *lcos(), *latan(), *ltime(), *request(), *readlist();
struct object *cmprint(), *cmtype(), *cmoutput(), *lsleep(), *lbreak();
struct object *cmlocal(), *assign(), *cmedit(), *lstop(), *show(), *erase();
struct object *help(), *describe(), *ltrace(), *luntrace(), *lbyecom();
struct object *sometrace();
#ifndef NOTURTLE
struct object *getturtle(), *forward(), *back();
struct object *left(), *right(), *penup(), *cmpendown(), *clearscreen();
struct object *fullscreen(), *splitscreen(), *showturtle();
struct object *hideturtle(), *textscreen(), *cmpenerase(), *pencolor();
struct object *wipeclean(), *penmode(), *penreverse(), *shownp(), *towardsxy();
struct object *setcolor(), *setxy(), *setheading();
struct object *xcor(), *ycor(), *heading(), *getpen();
struct object *scrunch(), *setscrunch();
#endif
struct object *ltopl(), *cmfprint(), *cmftype(), *pots(), *fput(), *lput();
struct object *list(), *loread(), *lowrite(), *fileclose(), *cbreak();
struct object *lfread(), *lfword(), *fileprint(), *filefprint();
struct object *filetype(), *fileftype(), *callunix(), *repcount();
#ifdef AMIGA
struct object *chdir();
#endif
#ifdef DEBUG
struct object *setdebquit(), *setmemtrace(), *setyaccdebug();
#endif
struct object *readchar(), *keyp(), *intpart(), *round(), *toascii();
struct object *tochar(), *loflush(), *settest(), *memberp(), *item();
#ifdef PAUSE
struct object *unpause(), *dopause(), *setipause(), *setqpause(); /* PAUSE */
struct object *seterrpause(), *clrerrpause();
#endif
#ifdef FLOOR
struct object *hitoot(), *lotoot(), *lampon(), *lampoff();
struct object *ftouch(), *btouch(), *ltouch(), *rtouch();
#endif
#ifndef SMALL
struct object *gprop(), *plist(), *pps(), *remprop();
#endif
#ifdef SETCURSOR
struct object *clrtxt(), *setcur();
#endif

struct lexstruct keywords[] =
{
	"sum",TWOOP,add,NULL,
	"difference",TWOOP,sub,"diff",
	"product",TWOOP,mult,NULL,
	"quotient",TWOOP,div,NULL,
	"remainder",TWOOP,rem,"mod",
	"both",TWOOP,and,"and",
	"either",TWOOP,or,"or",
	"greaterp",TWOOP,greatp,NULL,
	"lessp",TWOOP,lessp,NULL,
	"maximum",TWOOP,lmax,"max",
	"minimum",TWOOP,lmin,"min",
	"is",TWOOP,lis,NULL,
	"word",TWOOP,worcat,NULL,
	"sentence",TWOOP,sencat,"se",
	"equalp",TWOOP,equal,NULL,
	"emptyp",ONEOP,lemp,NULL,
	"not",ONEOP,comp,NULL,
	"numberp",ONEOP,lnump,NULL,
	"sentencep",ONEOP,lsentp,NULL,
	"wordp",ONEOP,lwordp,NULL,
	"count",ONEOP,length,NULL,
	"zerop",ONEOP,zerop,NULL,
	"first",ONEOP,first,NULL,
	"butfirst",ONEOP,butfir,"bf",
	"last",ONEOP,last,NULL,
	"butlast",ONEOP,butlas,"bl",
	"thing",ONEOP,alllk,NULL,
	"namep",ONEOP,lnamep,NULL,
	"random",ONEOP,rnd,"rnd",
	"sqrt",ONEOP,sq,NULL,
	"pow",TWOOP,lpow,NULL,
	"sin",ONEOP,lsin,NULL,
	"cos",ONEOP,lcos,NULL,
	"arctan",ONEOP,latan,"atan",
	"time",NOOP,ltime,NULL,
	"request",NOOP,request,NULL,
	"readlist",NOOP,readlist,"rl",
	"print",ONECOM,cmprint,"pr",
	"type",ONECOM,cmtype,NULL,
	"output",ONECOM,cmoutput,"op",
	"wait",ONECOM,lsleep,NULL,
	"local",ONECOM,cmlocal,NULL,
	"make",TWOCOM,assign,NULL,
	"if",IFCOM,0,NULL,
	"to",LTO,0,NULL,
	"end",LPEND,0,NULL,
	"stop",NOCOM,lstop,NULL,
	"break",NOCOM,lbreak,NULL,
	"edit",LEDIT,cmedit,"ed",
	"go",LGO,0,NULL,
	"show",ONECOM,show,"po",
	"erase",ONECOM,erase,"er",
	"help",NOCOM,help,NULL,
	"describe",ONECOM,describe,NULL,
	"trace",LTRACE,sometrace,NULL,
	"untrace",NOCOM,luntrace,NULL,
	"goodbye",NOCOM,lbyecom,"bye",
#ifndef NOTURTLE
	"turtle",ONECOM,getturtle,"tur",
	"forward",ONECOM,forward,"fd",
	"back",ONECOM,back,"bk",
	"left",ONECOM,left,"lt",
	"right",ONECOM,right,"rt",
#ifdef FLOOR
	"hitoot",ONECOM,hitoot,"hit",
	"lotoot",ONECOM,lotoot,"lot",
	"lampon",NOCOM,lampon,"lon",
	"lampoff",NOCOM,lampoff,"loff",
#endif
	"penup",NOCOM,penup,"pu",
	"pendown",NOCOM,cmpendown,"pd",
	"clearscreen",NOCOM,clearscreen,"cs",
	"fullscreen",NOCOM,fullscreen,"full",
	"splitscreen",NOCOM,splitscreen,"split",
	"showturtle",NOCOM,showturtle,"st",
	"hideturtle",NOCOM,hideturtle,"ht",
	"textscreen",NOCOM,textscreen,"text",
	"penerase",NOCOM,cmpenerase,"pe",
	"pencolor",ONECOM,pencolor,"penc",
	"setcolor",TWOCOM,setcolor,"setc",
	"setxy",TWOCOM,setxy,NULL,
	"setheading",ONECOM,setheading,"seth",
	"wipeclean",NOCOM,wipeclean,"clean",
	"penmode",NOOP,penmode,NULL,
	"penreverse",NOCOM,penreverse,"px",
	"shownp",NOOP,shownp,NULL,
	"towardsxy",TWOOP,towardsxy,NULL,
#ifdef FLOOR
	"ftouch",NOOP,ftouch,"fto",
	"btouch",NOOP,btouch,"bto",
	"ltouch",NOOP,ltouch,"lto",
	"rtouch",NOOP,rtouch,"rto",
#endif
	"xcor",NOOP,xcor,NULL,
	"ycor",NOOP,ycor,NULL,
	"heading",NOOP,heading,NULL,
	"getpen",NOOP,getpen,NULL,
	"scrunch",NOOP,scrunch,NULL,
	"setscrunch",ONECOM,setscrunch,"setscrun",
#endif
	"toplevel",NOCOM,ltopl,NULL,
	"fprint",ONECOM,cmfprint,"fp",
	"ftype",ONECOM,cmftype,"fty",
	"pots",NOCOM,pots,NULL,
	"fput",TWOOP,fput,NULL,
	"lput",TWOOP,lput,NULL,
	"list",TWOOP,list,NULL,
	"openread",ONEOP,loread,"openr",
	"openwrite",ONEOP,lowrite,"openw",
	"close",ONECOM,fileclose,NULL,
	"fileread",ONEOP,lfread,"fird",
	"fileword",ONEOP,lfword,"fiwd",
	"fileprint",TWOCOM,fileprint,"fip",
	"filefprint",TWOCOM,filefprint,"fifp",
	"filetype",TWOCOM,filetype,"fity",
	"fileftype",TWOCOM,fileftype,"fifty",
#ifdef AMIGA
	"chdir",ONECOM,chdir,"cd",
	"dos",ONECOM,callunix,"unix",
#else
	"unix",ONECOM,callunix,NULL,
#endif
	"run",RUNCOM,0,NULL,
	"repeat",REPCOM,0,NULL,
	"repcount",NOOP,repcount,NULL,
#ifdef DEBUG
	"debquit",NOCOM,setdebquit,NULL,
	"memtrace",NOCOM,setmemtrace,NULL,
	"yaccdebug",NOCOM,setyaccdebug,NULL,
#endif
	"cbreak",ONECOM,cbreak,NULL,
	"readchar",NOOP,readchar,"rc",
	"keyp",NOOP,keyp,NULL,
	"int",ONEOP,intpart,NULL,
	"round",ONEOP,round,NULL,
	"ascii",ONEOP,toascii,NULL,
	"char",ONEOP,tochar,NULL,
	"oflush",NOCOM,loflush,NULL,
#ifndef SMALL
	"gprop",TWOOP,gprop,NULL,
	"plist",ONEOP,plist,NULL,
	"pprop",THREECOM,0,NULL,
	"pps",NOCOM,pps,NULL,
	"remprop",TWOCOM,remprop,NULL,
#endif
	"test",ONECOM,settest,NULL,
	"iftrue",LIFTF,(struct object *(*)())1,"ift",
	"iffalse",LIFTF,0,"iff",
	"memberp",TWOOP,memberp,NULL,
	"item",TWOOP,item,"nth",
#ifdef PAUSE
	"continue",NOCOM,unpause,"co",
	"pause",NOCOM,dopause,NULL,
	"setipause",NOCOM,setipause,NULL,
	"setqpause",NOCOM,setqpause,NULL,
	"errpause",NOCOM,seterrpause,NULL,
	"errquit",NOCOM,clrerrpause,NULL,
#endif
#ifdef SETCURSOR
	"cleartext",NOCOM,clrtxt,"ct",
	"setcursorxy",TWOCOM,setcur,"setcxy",
#endif
	NULL,NULL,NULL,NULL,
};

#define uperror {errtold++;YYERROR;}

#ifdef PAUSE
#define catch(X) {if(!setjmp(yerrbuf)){if(flagquit)errhand();catching++;X;catching=0;}else{catching=0;uperror}}
#else
#define catch(X) {X;}
#endif
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
#ifndef YYSTYPE
#define YYSTYPE int
#endif
YYSTYPE yylval;
YYSTYPE yyval;
# define YYERRCODE 256

#line 650


extern struct object *makelist();

#ifdef PAUSE
yylex1()
#else
yylex()
#endif
{
	extern short yyerrflag;
	register char *str;
	char s[100];
	char c;
	register pc;
	register i;
	NUMBER dubl;
	int floatflag;
	FIXNUM fixn;

	if (yyerrflag) return(1);
	else if (argno==0 && pflag!=1) {
		if (fbr->oldyyc==-2) fbr->oldyyc= -1;
		return(LAEND);
	} else if (endflag==1 && pflag>1) {
		endflag=0;
		return(LPEND);
	}
	else if (pflag==2) {
		pc= *(stkbase+stkbi++);
		if (stkbi==PSTKSIZ-1) {
			stkbase= (int *)(*(stkbase+PSTKSIZ-1));
			stkbi=1;
		}
		yylval= *(stkbase+stkbi++);
		if (pc==LPROC || pc==CSTRING || pc==UINT || pc==CLIST) {
			yylval=(int)localize((struct object *)yylval);
		}
		if (stkbi==PSTKSIZ-1) {
			stkbase= (int *)(*(stkbase+PSTKSIZ-1));
			stkbi=1;
		}
		if (pc== -1) return(0);
		else return(pc);
	} else if (letflag==1) {
		str=s;
		while (!index(" \t\n[](){}\";",(c = getchar()))) {
			if (c == '\\') c = getchar() /* |0200 */ ;
			else if (c == '%') c = ' ' /* |0200 */ ;
			*str++ = c;
		}
		charib=c;
		*str='\0';
		yylval=(int)localize(objcpstr(s));
		letflag=0;
		return(CSTRING);
	} else if (letflag==2) {
		str = s;
		while (( (c=getchar())>='a' && c<='z' )
				|| (c>='A' && c<='Z') || (c>='0' && c<='9')
				|| (c=='.') || (c=='_') ) {
			if (c>='A' && c<='Z') c += 040;
			*str++ = c;
		}
		charib = c;
		*str = '\0';
		letflag = 0;
		yylval = (int)localize(objcpstr(s));
		return(CSTRING);
	}
	else if (letflag==3) {
		yylval = (int)makelist();
		letflag = 4;
		return(CLIST);
	}
	else if (letflag==4) {
		letflag = 0;
		return(yylval = getchar());
	}
	while ((c=getchar())==' ' || c=='\t')
		;
	if (rendflag) {
		getbpt = 0;
		if (rendflag < 3)
			--rendflag;
		else if (!thisrun || thisrun->svpflag)
			rendflag = 0;
		return(RNEND);
	}

	if (c == '!')	/* comment feature */
		while ((c=getchar()) && (c != '\n')) ;

	if ((c<'a' || c>'z') && (c<'A' || c>'Z')
			&& (c<'0' || c>'9') && c!='.') {
		yylval=c;
		if (c=='\"') letflag=1;
		if (c==':') letflag=2;
		if (c=='[') letflag=3;
		return(c);
	}
	else if ((c>='0' && c<='9')|| c=='.') {
		floatflag = (c=='.');
		str=s;
		while ((c>='0' && c<='9')||(c=='E')||(c=='e')||(c=='.')) {
			*str++=c;
			if (c=='.') floatflag++;
			if ((c=='e')||(c=='E')) {
				floatflag++;
				c = getchar();
				if ((c=='+')||(c=='-')) {
					*str++ = c;
					c = getchar();
				}
			} else c=getchar();
		}
		charib=c;
		*str='\0';
		if (floatflag) {
			sscanf(s,EFMT,&dubl);
			yylval=(int)localize(objdub(dubl));
		} else {
			sscanf(s,FIXFMT,&fixn);
			yylval=(int)localize(objint(fixn));
		}
		return(UINT);
	} else {
		if (c < 'a') c += 040;
		yylval=(int)(str=s);
		*str++=c;
		c=getchar();
		if (c >= 'A' && c <= 'Z') c += 040;
		while ((c>='a' && c<='z') || (c>='0' && c<='9')
				|| (c=='.') || (c=='_')) {
			*str++=c;
			c=getchar();
			if (c >= 'A' && c <= 'Z') c += 040;
		}
		charib=c;
		*str='\0';
		for (i=0; keywords[i].word; i++) {
			if (!strcmp(yylval,keywords[i].word) ||
 			    (keywords[i].abbr && 
 			     !strcmp(yylval,keywords[i].abbr))) {
				yylval=i;
				return(keywords[i].lexret);
			}
		}
		yylval=(int)localize(objcpstr(s));
		return(LPROC);
	}
}

#ifdef PAUSE
yylex() {
	int x;
#ifdef AMIGA
	extern int quitsig;

	if (quitsig) {
		quitsig = 0;
		sigquit();
	}
#endif

	if (catching) return(yylex1());
	if (!setjmp(yerrbuf)) {
		if (flagquit) errhand();
		catching++;
		x = yylex1();
		catching=0;
		return(x);
	} else {
		catching=0;
		return(12345);	/* This should cause an error up there */
	}
}
#endif

int isuint(x)
int x;
{
	return(x == UINT);
}

int isstored(x)
int x;
{
	return(x==UINT || x==LPROC || x==CSTRING || x==CLIST);
}

yyprompt(clear) {
	register int i;

	if (!ibufptr && !getbpt && !pflag) {
		flagquit = 0;
#ifdef PAUSE
		if (pauselev > 0) {
			for (i=pauselev; --i >=0; )
				putchar('-');
		}
#endif
		putchar('?');
#ifndef NOTURTLE
		if ((turtdes<0) && clear)
			(*mydpy->state)('*');
#endif
		fflush(stdout);
	}
}

short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
-1, 20,
	60, 22,
	62, 22,
	61, 22,
	43, 22,
	45, 22,
	42, 22,
	47, 22,
	92, 22,
	94, 22,
	-2, 25,
-1, 21,
	60, 23,
	62, 23,
	61, 23,
	43, 23,
	45, 23,
	42, 23,
	47, 23,
	92, 23,
	94, 23,
	-2, 26,
-1, 153,
	60, 0,
	62, 0,
	61, 0,
	-2, 53,
-1, 155,
	60, 0,
	62, 0,
	61, 0,
	-2, 55,
-1, 157,
	60, 0,
	62, 0,
	61, 0,
	-2, 57,
-1, 175,
	0, 43,
	42, 43,
	47, 43,
	92, 43,
	94, 43,
	262, 43,
	265, 43,
	267, 43,
	268, 43,
	269, 43,
	271, 43,
	272, 43,
	273, 43,
	275, 43,
	276, 43,
	278, 43,
	280, 43,
	-2, 41,
-1, 176,
	0, 44,
	262, 44,
	265, 44,
	267, 44,
	268, 44,
	269, 44,
	271, 44,
	272, 44,
	273, 44,
	275, 44,
	276, 44,
	278, 44,
	280, 44,
	-2, 42,
-1, 192,
	256, 35,
	60, 35,
	62, 35,
	61, 35,
	43, 35,
	42, 35,
	47, 35,
	92, 35,
	94, 35,
	-2, 24,
	};
# define YYNPROD 128
# define YYLAST 1326
short yyact[]={

  16,  97, 167,  63, 135,  98,  96, 110, 163, 128,
 182,   2,  64, 165, 130,   9, 132, 101, 140,  70,
  48,  49,  16, 102,  31,  18,  45,  60, 103,  68,
  37,  53,  44,  21,  16,  35, 102,  99,  43, 100,
  52, 103,  20,  41,  16,  40,  31,  39,  33,  17,
 115, 187,  37, 185, 106, 105, 107,  35, 102,  99,
  66, 100, 166, 103,  71, 113,  16,  38,  31,  76,
  33,  17,  67, 104,  37, 101,  61,  71,  19,  35,
  26,  32,  25,  17, 188,  14, 104, 134, 101,  13,
  31,  12,  33,  17,  16,  62,  37, 164,  21,   6,
   1,  35,   0,  32, 117, 118, 119,  20, 104,   0,
 101,   0,   0,  36,  33,  17,   0,   0,  31,   0,
   0, 159, 162,   0,  37,  32, 102,  99,   0, 125,
   0, 103, 169, 170, 171,  36,   0,   0,   0,   0,
   0,   0,  33,  17, 106, 105, 107,  32,   0,  21,
  21,  21, 180,   0,   0,   0,  31,  36,  20,  20,
  20,   0,  37,   0, 102,  99,   0, 125, 181, 103,
   0, 184,   0,   0,   0,  32, 104,   0, 101,  36,
  33,   0, 106, 105, 107,  79,  78,  77,  81,   0,
   0,  85,  84,  86,  87, 189,  75,  91, 193,  88,
   0,  82,  80,  89,   0,  90,  83,  36,   0,   0,
   0,   0,   0,  32, 104,   0, 101,  21,   0,   0,
  21,   0,   0,   0,   0,   0,  20,   0,   0,  20,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  36, 190,   0,   0,  27,
  28,  29,  15,   0, 192,  24,  22,   4,  23,   5,
  42, 191, 133,  11,   0,   7,  10,  46, 129,  47,
   8,  27,  28,  29,  15,  69,  30,  24,  22,   4,
  23,   5,  42,   0,   0,  11,   0,   7,  10,  46,
 131,  47,   8,  27,  28,  29,  15,   0,  30,  24,
  22,   4,  23,   5,  42, 194,   0,  11,   0,   7,
  10,  46,   3,  47,   8,  27,  28,  29,  15,   0,
  30,  24,  22,   4,  23,   5,  42,   0,   0,  11,
   0,   7,  10,  46,  59,  47,   8,   0,   0,   0,
   0,   0,   0,  27,  28,  29,   0,  31,  30,  65,
  54,   0,   0,  37,  42, 102,  99,   0, 125,   0,
 103,  46,   0,  47,   0,   0,   0,   0,   0,   0,
   0,  33,   0, 106, 105, 107,   0,   0, 139,   0,
   0,  27,  28,  29,  31, 122,  30,   0,  54,   0,
  37,   0,  42,   0,   0,  35,   0,   0,   0,  46,
   0,  47,   0,   0,  32, 104,  31, 101,  33, 137,
   0,   0,  37,   0,   0,   0,   0,  35,  31,   0,
   0,   0,   0,   0,  37,   0,   0,   0,   0,  35,
  33,   0,   0, 165, 102,  99,  36, 100,   0, 103,
  31,  32,  33,   0,   0,   0,  37,   0,   0,   0,
   0,  35, 106, 105, 107,   0,   0,   0,   0, 174,
   0,   0, 178,  32,  33,  31,   0,   0,   0,   0,
   0,  37,   0,  36,   0,  32,  35,  31,   0,   0,
   0,   0,   0,  37, 104,   0, 101,   0,  35,  33,
   0,   0,   0,   0,   0,  36,   0,  32,   0,  31,
   0,  33,   0,   0,   0,  37,   0,  36,   0,   0,
  35,   0, 186,   0,   0,   0,   0, 164,   0,   0,
   0,   0,  32,  33,  31,   0,   0,   0,   0,  36,
  37,   0,   0,   0,  32,  35,  31,   0,   0,   0,
   0,   0,  37,   0,   0,   0,   0,  35,  33,   0,
   0,   0,   0,   0,  36,   0,  32,   0,  31,   0,
  33,   0,   0,   0,  37,   0,  36,   0,   0,  35,
   0,   0,  27,  28,  29,   0,   0,  30,   0,  54,
  31,  32,  33,  42,   0,   0,  37,   0,  36,   0,
  46,  35,  47,  32,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  33,   0, 176,   0,   0,  27,
  28,  29,   0,  36,  30,  32,  54,   0,   0,   0,
  42,   0,   0,   0,   0,  36,   0,  46,  93,  47,
   0,  27,  28,  29,   0,   0,  30,  32,  54,   0,
 158,   0,  42,  27,  28,  29,   0,  36,  30,  46,
  54,  47,   0,   0,  42,   0,   0,   0,   0,   0,
   0,  46, 156,  47,   0,  27,  28,  29,   0,  36,
  30,   0,  54,   0,   0,   0,  42,   0,   0,   0,
   0,   0,  31,  46,   0,  47,   0, 154,  37,   0,
  27,  28,  29,  35,   0,  30,   0,  54,   0, 152,
   0,  42,  27,  28,  29,   0,  33,  30,  46,  54,
  47,   0,   0,  42,   0,   0,   0,   0,   0,   0,
  46, 150,  47,   0,  27,  28,  29,   0,   0,  30,
   0,  54,   0,   0,   0,  42,   0,   0,   0,  32,
   0,  31,  46,   0,  47,   0, 148,  37,   0,  27,
  28,  29,  35,   0,  30,   0,  54,   0, 146,   0,
  42,  27,  28,  29,   0,  33,  30,  46,  54,  47,
   0,  36,  42,   0,   0,   0,  31,   0,   0,  46,
 144,  47,  37,  27,  28,  29,   0,  35,  30,   0,
  54,   0,   0,   0,  42,   0,   0,   0,  32,   0,
  33,  46, 142,  47,   0,  27,  28,  29,   0,   0,
  30,  31,  54,   0,   0,   0,  42,  37,   0,   0,
   0,   0,  35,  46,   0,  47,   0,   0,   0,   0,
  36,   0,   0,  32,   0,  33,   0,  31,   0,   0,
   0,   0,   0,  37,   0,   0,   0,   0,  35,  31,
   0,   0,   0,   0,   0,  37,   0,   0,   0,   0,
  35,  33,   0,   0,   0,  36,   0,   0,  32,   0,
   0,  31,   0,  33,   0,   0,   0,  37,   0,   0,
   0,   0,  35,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  31,   0,  32,  33,   0,   0,  37,   0,
  36,   0,   0,  35,  73,   0,  32,  27,  28,  29,
   0,   0,  30,   0,  54,   0,  33,   0,  42,   0,
   0,   0,   0,   0,   0,  46,  36,  47,  32,   0,
   0,  31,   0,   0,   0,   0,   0,  37,  36,   0,
   0,   0,  35,  60,   0,   0,   0,   0,   0,  32,
   0,   0,   0,   0,   0,  33,   0,   0,   0,   0,
  36,   0,   0, 114,   0,   0,  27,  28,  29,   0,
   0,  30,   0,  54,   0, 102,  99,  42, 100,   0,
 103,  36,   0,   0,  46,   0,  47,   0,  32,   0,
   0,   0,  61, 106, 105, 107,   0,   0, 109,   0,
   0,  27,  28,  29,   0,   0,  30,   0,  54,   0,
   0,   0,  42,   0,   0,   0,   0,   0,   0,  46,
  36,  47,   0,   0,   0, 104,   0, 101,   0,   0,
   0,   0,   0,  95,   0,   0,  27,  28,  29,   0,
   0,  30,   0,  54,   0,   0,   0,  42,   0,   0,
   0,   0,   0,   0,  46,   0,  47,   0,   0,  58,
   0,   0,  27,  28,  29,   0,   0,  30,   0,  54,
   0,  56,   0,  42,  27,  28,  29,   0,   0,  30,
  46,  54,  47,   0,   0,  42,   0,   0,   0,   0,
   0,   0,  46,  51,  47,   0,  27,  28,  29,   0,
   0,  30,   0,  54,   0,   0,   0,  42,   0,   0,
   0,   0,   0,   0,  46,   0,  47,  27,  28,  29,
   0,   0,  30,   0,  54,   0,   0,   0,  42,   0,
   0,   0,   0,   0,   0,  46,   0,  47,   0,   0,
   0,  34,   0,   0,   0,   0,   0,   0,  50,  55,
  57,   0,   0,   0,   0,   0, 111,  28,  29,   0,
   0,  30,   0,  54,  72,  74,   0,  42,   0,  92,
  94,   0,   0,   0,  46,   0,  47, 108,   0, 112,
 116,   0,   0,   0,   0,   0,   0,   0, 120, 121,
   0,   0,   0,   0,   0,   0, 123, 124,   0, 126,
   0,   0,   0,   0, 127,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 136,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 138,   0,   0,   0,   0,   0,
   0, 141, 143, 145, 147, 149, 151, 153, 155, 157,
   0,   0, 160, 161,   0,   0,   0, 168,   0,   0,
   0,   0,   0, 172,   0, 173,   0, 175, 177,   0,
   0,   0,   0,   0,   0,   0,   0,   0, 179,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 160, 183,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0, 179,   0,   0,   0,   0,
   0,   0,   0,   0,   0, 160 };
short yypact[]={

-1000,  56,-1000,-1000,  24,  24, 837, 815, 803,-1000,
  17,-253,-1000,-1000,  17,-1000,-1000,-1000,-1000,  19,
-1000,-1000, 648, 858, -74,-1000,-1000, 372, 777,-1000,
-1000,-257,-273,-258,  -6, 742,-252, 897, 707,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 858, 858,-1000,-1000,
 933,-1000,-1000,-1000, 648, 313,-1000, 313,-1000,-1000,
-1000,-1000, 858,-1000,-1000,-1000,  12,   6,-1000,-1000,
-1000,-259, 313,-1000, 933,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 122,-1000,  -6,-1000,-1000, -75,-1000, 546,
 524, 502, 490, 465, 443, 431, 406, 384,-1000,-1000,
 858, 372, 392,-270,-1000, 858,  -6,  12,  12,  12,
  -6, 313,-1000, 313, 933, 350, 313, 933,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,  84,-1000,  -6,-1000,
-1000, -19,-1000, -19,-1000,-1000,-1000, -77,-1000, -77,
-1000, -77,-1000,  16,-1000,  16,-1000,  16,-1000, -28,
 313, 122, -28,-1000,-1000,-1000,-1000,-1000,  -6,-1000,
-1000,-1000,  -6, 313,-1000,-1000,-1000, 933,-1000,  -6,
-1000,-1000,-1000, 313,-1000, -10,-1000,-1000,  34,-1000,
-1000,-1000,-1000,-1000,-1000 };
short yypgo[]={

   0, 100,   9,  15,  99,1141, 334,  95,  91,  89,
  85,  40,  31,  84,  82,  80,  10,   8,  78,  72,
  69,  19,  67,  65,  62,  53,  51,  50,  60,  47,
  45,  43,  38,  14,  32,  26,  25 };
short yyr1[]={

   0,   1,   1,   1,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   4,
   4,   4,   5,   5,  13,  10,  10,  11,  11,  12,
  12,  12,  12,  12,  12,  12,  12,  12,  12,  12,
  12,  12,  12,  12,  12,  12,  12,  12,  12,  12,
  12,  12,  12,  12,  12,  12,  12,  12,  12,  12,
  12,  12,  16,  16,   9,   9,   9,   9,  18,  18,
  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,
  20,  20,  20,  20,  20,  19,  19,  21,  14,  14,
  23,  23,  27,  27,  24,  25,  25,  25,  25,  26,
  26,  22,  28,  28,  28,  15,  15,  15,  29,  30,
  31,  32,  34,  35,  35,  33,   8,  36,  36,   7,
   7,  17,  17,   6,   6,   6,   3,   3 };
short yyr2[]={

   0,   0,   2,   2,   2,   2,   3,   2,   4,   2,
   5,   2,   1,   2,   4,   2,   1,   1,   2,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   3,
   3,   2,   2,   2,   1,   1,   2,   3,   2,   3,
   3,   3,   3,   2,   2,   3,   3,   3,   3,   3,
   3,   3,   3,   3,   3,   3,   3,   3,   3,   4,
   4,   3,   1,   2,   3,   2,   3,   2,   2,   2,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   2,   2,   5,   2,
   0,   1,   1,   2,   1,   0,   3,   2,   2,   1,
   2,   1,   0,   2,   2,   1,   1,   1,   3,   3,
   3,   2,   3,   4,   2,   1,   3,   4,   3,   0,
   1,   1,   1,   1,   1,   0,   1,   1 };
short yychk[]={

-1000,  -1,  -2, 256, 267, 269,  -4, 275, 280,  -3,
 276, 273,  -8,  -9, -10, 262,  10,  59, -36, -18,
 -11, -12, 266, 268, 265, -14, -15, 259, 260, 261,
 264,  34,  91,  58,  -5,  45, 123,  40, -22, -29,
 -30, -31, 270, -32, -34, -35, 277, 279,  -3,  -3,
  -5, 256, -11, -12, 266,  -5, 256,  -5, 256,  -6,
  10,  59,  -7, 256, 265,  -6, -28, -19,  10, 256,
 -21,  58,  -5, 256,  -5, 270, -20, 261, 260, 259,
 276, 262, 275, 280, 266, 265, 267, 268, 273, 277,
 279, 271,  -5, 256,  -5, 256, 263, 274, 263,  43,
  45,  94,  42,  47,  92,  61,  60,  62,  -5, 256,
 259, 259,  -5, -23, 256, -27,  -5, -28, -28, -28,
  -5,  -5,  -6,  -5,  -5,  45,  -5,  -5,  -2, 256,
 -33, 278,  10, 256, -21, 263,  -5,  -6,  -5, 256,
  93,  -5, 256,  -5, 256,  -5, 256,  -5, 256,  -5,
 256,  -5, 256,  -5, 256,  -5, 256,  -5, 256, -16,
  -5,  -5, -16, -17, 125,  41, -24, 272,  -5, -33,
 -33, -33,  -5,  -5,  -6,  -5, 256,  -5,  -6,  -5,
  -3, -17, -16,  -5, -17, -25,  -6, -26, -13,  -2,
 256, 271, 264,  -2, 271 };
short yydef[]={

   1,  -2,   2,   3,  20,  21,   0,   0,   0,  12,
 125, 119,  16,  17, 125,  19, 126, 127, 102,   0,
  -2,  -2,   0,   0,   0,  27,  28,   0,   0,  34,
  35,   0,   0,   0,   0,   0,   0,   0,  90, 105,
 106, 107, 101, 102, 102, 102,   0,   0,   4,   5,
 125,   7,  22,  23,   0,   0,   9,   0,  11,  13,
 123, 124,   0,  15, 120,  18,   0,   0,  65,  67,
  85,   0,   0, 114, 125,  68,  69,  70,  71,  72,
  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,
  83,  84,   0,  31,  32,  33,  36,   0,  38,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  43,  44,
   0,   0,   0,   0,  89,  91,  92,   0,   0,   0,
 111,   0,   6,   0, 125,   0,   0, 125, 103, 104,
 116, 115,  64,  66,  86,  87,   0, 118,  29,  30,
  37,  39,  40,  41,  42,  45,  46,  47,  48,  49,
  50,  51,  52,  -2,  54,  -2,  56,  -2,  58,   0,
  62,  62,   0,  61, 121, 122,  95,  94,  93, 108,
 109, 110, 112,   0,   8,  -2,  -2, 125,  14, 113,
 117,  59,  63,  29,  60,   0,  10,  88,   0,  97,
  98,  99,  -2,  96, 100 };
# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)

/*	   parser for yacc output  */

int	yydebug = 0; /* 1 for debugging */
YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
int	yychar = -1; /* current input token number */
int	yynerrs = 0;  /* number of errors */
short	yyerrflag = 0;	/* error recovery flag */

yyparse()
{

	short	yys[YYMAXDEPTH];
	short	yyj, yym;
	register YYSTYPE *yypvt;
	register short	yystate, *yyps, yyn;
	register YYSTYPE *yypv;
	register short	*yyxi;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyps = &yys[-1];
	yypv = &yyv[-1];

yystack:    /* put a state and value onto the stack */

	if ( yydebug  )
		printf( "state %d, char 0%o\n", yystate, yychar );
	if ( ++yyps > &yys[YYMAXDEPTH] ) {
		yyerror( "yacc stack overflow" );
		return(1);
	}
	*yyps = yystate;
	++yypv;
	*yypv = yyval;
yynewstate:

	yyn = yypact[yystate];

	if ( yyn <= YYFLAG )
		goto yydefault; /* simple state */

	if ( yychar < 0 )
		if ( (yychar = yylex()) < 0 )
			yychar = 0;
	if ( (yyn += yychar) < 0 || yyn >= YYLAST )
		goto yydefault;

	if ( yychk[ yyn=yyact[ yyn ] ] == yychar ) {
		/* valid shift */
		yychar = -1;
		yyval = yylval;
		yystate = yyn;
		if ( yyerrflag > 0 )
			--yyerrflag;
		goto yystack;
	}
yydefault:
	/* default state action */

	if ( (yyn = yydef[yystate]) == -2 ) {
		if ( yychar < 0 )
			if ( (yychar = yylex()) < 0 )
				yychar = 0;
		/* look through exception table */

		for ( yyxi = yyexca; (*yyxi != (-1)) || (yyxi[1] != yystate) ; yyxi += 2 )
			; /* VOID */

		for (yyxi += 2; *yyxi >= 0; yyxi += 2) {
			if ( *yyxi == yychar )
				break;
		}
		if ( (yyn = yyxi[1]) < 0 )
			return(0);   /* accept */
	}

	if ( yyn == 0 ) {
		/* error */
		/* error ... attempt to resume parsing */

		switch ( yyerrflag ) {

		case 0:   /* brand new error */

			yyerror( "syntax error" );
yyerrlab:
			++yynerrs;

		case 1:
		case 2: /* incompletely recovered error ... try again */

			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */

			while ( yyps >= yys ) {
				yyn = yypact[*yyps] + YYERRCODE;
				if ( yyn >= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ) {
					yystate = yyact[yyn];  /* simulate a shift of "error" */
					goto yystack;
				}
				yyn = yypact[*yyps];

				/* the current yyps has no shift onn "error", pop stack */

				if ( yydebug )
					printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
				--yyps;
				--yypv;
			}

			/* there is no state on the stack with an error shift ... abort */

yyabort:
			return(1);


		case 3:  /* no shift yet; clobber input char */
			if ( yydebug )
				printf( "error recovery discards char %d\n", yychar );

			if ( yychar == 0 )
				goto yyabort; /* don't discard EOF, quit */
			yychar = -1;
			goto yynewstate;   /* try again in the same state */

		}

	}

	/* reduction by production yyn */

	if ( yydebug )
		printf("reduce %d\n", yyn);
	yyps -= yyr2[yyn];
	yypvt = yypv;
	yypv -= yyr2[yyn];
	yyval = yypv[1];
	yym = yyn;
	/* consult goto table to find next state */
	yyn = yyr1[yyn];
	yyj = yypgo[yyn] + *yyps + 1;
	if ( yyj >= YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn )
		yystate = yyact[yypgo[yyn]];
	switch (yym) {
		
case 2:
# line 272
{
		popname[0] = '\0';
#ifdef PAUSE
		if (psigflag) dopause();
#endif
		yyprompt(1);
	} break;
case 3:
# line 279
{
		popname[0] = '\0';
		if (!errtold) {
			logoyerror();
		}
		errtold = 0;
		errwhere();
#ifdef PAUSE
		if ((!errpause&&!pauselev) || !fbr)
#endif
			errzap();
		yyerrok;yyclearin;
		yyprompt(0);
	} break;
case 4:
# line 294
{
		catch(doedit(););
		yyval = -1;
	} break;
case 5:
# line 298
{
		catch(ltrace(););
		yyval = -1;
	} break;
case 6:
# line 302
{
		catch(yyval=(int)(*keywords[yypvt[-2]].lexval)(yypvt[-1]););} break;
case 7:
# line 304
{notenf(yypvt[-1]);uperror;} break;
case 8:
# line 305
{
		catch((*keywords[yypvt[-3]].lexval)(yypvt[-2],yypvt[-1]);); yyval = -1;} break;
case 9:
# line 307
{notenf(yypvt[-1]);uperror;} break;
case 10:
# line 308
{
#ifndef SMALL
		catch(pprop(yypvt[-3],yypvt[-2],yypvt[-1]););
#endif
		yyval = -1;
	} break;
case 11:
# line 314
{
		if (!errtold) {
			puts("Not enough inputs to pprop.");
		}
		uperror;
	} break;
case 12:
# line 320
{ yyval= -1; } break;
case 13:
# line 321
{
		catch((*keywords[yypvt[-1]].lexval)();); yyval= -1;} break;
case 14:
# line 323
{
		catch(go(yypvt[-1]););
		yyval= -1;
		} break;
case 15:
# line 327
{notenf(yypvt[-1]);uperror;} break;
case 16:
# line 328
{
		if ((yypvt[-0] != -1) && !endflag) {
			if (!errtold)
				pf1("You don't say what to do with %l.\n",yypvt[-0]);
			uperror;
		}
		yyval = yypvt[-0];
	} break;
case 17:
# line 336
{
		if (yypvt[-0]== -1)
			uperror
		else
			catch(proccreate(yypvt[-0]););
			yyval = -1;
	} break;
case 18:
# line 343
{
		if (thisrun && !pflag) {
			yyval = yypvt[-1];
		} else {
			if((yypvt[-1] != -1) && !endflag) {
				if (!errtold)
					pf1("You don't say what to do with %l\n",yypvt[-1]);
				uperror;
			}
		}
	} break;
case 22:
# line 357
{
			if (yypvt[-0] == -1) {
				if (!errtold) {
					printf("%s didn't output.\n",
						popname);
				}
				uperror;
			}
		} break;
case 24:
# line 368
{ yyline=((struct object *)yypvt[-0])->obint; mfree(yypvt[-0]); yyval = 0;} break;
case 29:
# line 375
{
		catch(yyval=(int)(*keywords[yypvt[-2]].lexval)(yypvt[-1],yypvt[-0]););
	} break;
case 30:
# line 378
{op2er1(yypvt[-2],yypvt[-1]);uperror;} break;
case 31:
# line 379
{notenf(yypvt[-1]);uperror;} break;
case 32:
# line 380
{
		catch(yyval=(int)(*keywords[yypvt[-1]].lexval)(yypvt[-0]););
	} break;
case 33:
# line 383
{notenf(yypvt[-1]);uperror;} break;
case 34:
# line 384
{
		catch(yyval=(int)(*keywords[yypvt[-0]].lexval)(););
	} break;
case 36:
# line 388
{ yyval=yypvt[-0]; } break;
case 37:
# line 389
{ yyval=yypvt[-1]; } break;
case 38:
# line 390
{
		catch(yyval=(int)alllk(yypvt[-0]););
		} break;
case 39:
# line 393
{
		catch(yyval=(int)add(yypvt[-2],yypvt[-0]););
	} break;
case 40:
# line 396
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 41:
# line 397
{
		catch(yyval=(int)sub(yypvt[-2],yypvt[-0]););
	} break;
case 42:
# line 400
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 43:
# line 401
{
		catch(yyval=(int)opp(yypvt[-0]););
	} break;
case 44:
# line 404
{unerr('-');uperror;} break;
case 45:
# line 405
{
		catch(yyval=(int)lpow(yypvt[-2],yypvt[-0]););
	} break;
case 46:
# line 408
{ inferr(yypvt[-2],yypvt[-1]);uperror; } break;
case 47:
# line 409
{
		catch(yyval=(int)mult(yypvt[-2],yypvt[-0]););
	} break;
case 48:
# line 412
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 49:
# line 413
{
		catch(yyval=(int)div(yypvt[-2],yypvt[-0]););
	} break;
case 50:
# line 416
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 51:
# line 417
{
		catch(yyval=(int)rem(yypvt[-2],yypvt[-0]););
	} break;
case 52:
# line 420
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 53:
# line 421
{
		catch(yyval=(int)equal(yypvt[-2],yypvt[-0]);)
	} break;
case 54:
# line 424
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 55:
# line 425
{
		catch(yyval=(int)lessp(yypvt[-2],yypvt[-0]););
	} break;
case 56:
# line 428
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 57:
# line 429
{
		catch(yyval=(int)greatp(yypvt[-2],yypvt[-0]););
	} break;
case 58:
# line 432
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 59:
# line 433
{
		catch(yyval=multiop(yypvt[-2],globcopy(multarg)););
		lfree(multarg);
		multarg = 0;
	} break;
case 60:
# line 438
{
		catch(yyval=multiop(yypvt[-2],globcopy(multarg)););
		lfree(multarg);
		multarg = 0;
	} break;
case 61:
# line 443
{yyval=yypvt[-1];} break;
case 62:
# line 445
{
		catch(multarg = globcons(yypvt[-0],0););
		mfree(yypvt[-0]);
		multnum = 1;
	} break;
case 63:
# line 450
{
		catch(multarg = globcons(yypvt[-1],multarg););
		mfree(yypvt[-1]);
		multnum++;
	} break;
case 64:
# line 455
{
		strcpy(titleptr,"\n");
		yyval=yypvt[-2];
	} break;
case 65:
# line 459
{
		strcpy(titleptr,"\n");
		yyval=yypvt[-1];
	} break;
case 66:
# line 463
{
		mfree(yypvt[-2]);
		terr();
		yyval= -1;
	} break;
case 67:
# line 468
{
		mfree(yypvt[-1]);
		terr();
		yyval= -1;
	} break;
case 68:
# line 473
{
		titleptr=cpystr(titlebuf,"to ",
			((struct object *)(yypvt[-0]))->obstr,NULL);
		yyval=yypvt[-0];
	} break;
case 69:
# line 478
{
		if (!errtold) printf("Can't redefine primitive %s\n",
			keywords[yypvt[-0]].word);
		uperror;
	} break;
case 85:
# line 486
{titleptr=cpystr(titleptr," :",
			((struct object *)(yypvt[-0]))->obstr,NULL);
		mfree(yypvt[-0]);
	} break;
case 86:
# line 490
{titleptr=cpystr(titleptr," :",
			((struct object *)(yypvt[-0]))->obstr,NULL);
		mfree(yypvt[-0]);
	} break;
case 87:
# line 494
{yyval=yypvt[-0];} break;
case 88:
# line 495
{
		yyval=yypvt[-1];
		frmpop(yypvt[-1]);
	} break;
case 89:
# line 499
{
		if (!errtold) printf("Not enough inputs to %s\n",
			proclist->procname->obstr);
		uperror;
	} break;
case 92:
# line 505
{
		catch(argassign(yypvt[-0]););
	} break;
case 93:
# line 508
{
		catch(argassign(yypvt[-0]););
	} break;
case 94:
# line 511
{procprep();} break;
case 95:
# line 512
{yyline=1; yyval = -1;} break;
case 96:
# line 513
{
		popname[0] = '\0';
#ifdef PAUSE
		if (psigflag) dopause();
		if (thisrun && thisrun->str == (struct object *)(-1))
			yyprompt(1);
#endif
		yyval=yypvt[-0];
	} break;
case 97:
# line 522
{
		popname[0] = '\0';
		if (pflag) yyline++;
#ifdef PAUSE
		if (psigflag) dopause();
		if (thisrun && thisrun->str == (struct object *)(-1))
			yyprompt(1);
#endif
		yyval=yypvt[-0];
	} break;
case 98:
# line 532
{
		popname[0] = '\0';
#ifdef PAUSE
		if ((!errpause&&!pauselev) || !fbr)
#endif
			uperror;
#ifdef PAUSE
		if (!errtold) {
			logoyerror();
		}
		errtold = 0;
		errwhere();
		yyerrok;yyclearin;
		if (thisrun && thisrun->str == (struct object *)(-1))
			yyprompt(0);
#endif
	} break;
case 101:
# line 551
{
		catch(newproc(yypvt[-0]););
	} break;
case 102:
# line 554
{yyval = -1;} break;
case 103:
# line 555
{
		popname[0] = '\0';
#ifdef PAUSE
		if (psigflag) dopause();
		if (thisrun && thisrun->str == (struct object *)(-1))
			yyprompt(1);
#endif
		yyval=yypvt[-0];
	} break;
case 104:
# line 564
{
		popname[0] = '\0';
#ifdef PAUSE
		if ((!errpause&&!pauselev) || !fbr)
#endif
			uperror;
#ifdef PAUSE
		if (!errtold) {
			logoyerror();
		}
		errtold = 0;
		errwhere();
		yyerrok;yyclearin;
		if (thisrun && thisrun->str == (struct object *)(-1))
			yyprompt(0);
#endif
	} break;
case 108:
# line 582
{
		unrun();
		yyval = yypvt[-1];
		strcpy(popname,"run");
	} break;
case 109:
# line 587
{
		unrun();
		yyval = yypvt[-1];
		strcpy(popname,"repeat");
	} break;
case 110:
# line 592
{
		unrun();
		yyval = yypvt[-1];
		strcpy(popname,"if");
	} break;
case 111:
# line 597
{
		catch(dorun(yypvt[-0],(FIXNUM)0););
	} break;
case 112:
# line 600
{
		catch(dorep(yypvt[-1],yypvt[-0]););
	} break;
case 113:
# line 603
{
		{
			int i;

			catch(i = truth(yypvt[-2]););
			if (i) {
				catch(dorun(yypvt[-1],(FIXNUM)0););
				mfree(yypvt[-0]);
			} else {
				catch(dorun(yypvt[-0],(FIXNUM)0););
				mfree(yypvt[-1]);
			}
		}
	} break;
case 114:
# line 617
{
		if (!errtold) printf("Not enough inputs to if.\n");
		uperror;
	} break;
case 116:
# line 622
{
		unrun();
		yyval = yypvt[-1];
	} break;
case 117:
# line 626
{
		{
			int i;

			catch(i = truth(yypvt[-2]););
			if (i) {catch(dorun(yypvt[-1],(FIXNUM)0););}
			else {
				catch(dorun(0,(FIXNUM)0););
				mfree(yypvt[-1]);
			}
		}
	} break;
case 118:
# line 638
{
		if ((int)keywords[yypvt[-2]].lexval==currtest) {
			catch(dorun(yypvt[-1],(FIXNUM)0););
		} else {
			catch(dorun(0,(FIXNUM)0););
			mfree(yypvt[-1]);
		}
	} break;/* End of actions */
	}
	goto yystack;  /* stack new state and value */

}

