
#line	2	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
#include <u.h>
#include <libc.h>
#include <bio.h>
#include <mach.h>
#define Extern extern
#include "acid.h"

#line	10	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
typedef union 
{
	Node	*node;
	Lsym	*sym;
	u64int	ival;
	float	fval;
	String	*string;
} YYSTYPE;
extern	int	yyerrflag;
#ifndef	YYMAXDEPTH
#define	YYMAXDEPTH	150
#endif
YYSTYPE	yylval;
YYSTYPE	yyval;
#define	Tfmt	57346
#define	Toror	57347
#define	Tandand	57348
#define	Teq	57349
#define	Tneq	57350
#define	Tleq	57351
#define	Tgeq	57352
#define	Tlsh	57353
#define	Trsh	57354
#define	Tdec	57355
#define	Tinc	57356
#define	Tindir	57357
#define	Tid	57358
#define	Tconst	57359
#define	Tfconst	57360
#define	Tstring	57361
#define	Tif	57362
#define	Tdo	57363
#define	Tthen	57364
#define	Telse	57365
#define	Twhile	57366
#define	Tloop	57367
#define	Thead	57368
#define	Ttail	57369
#define	Tappend	57370
#define	Tfn	57371
#define	Tret	57372
#define	Tlocal	57373
#define	Tcomplex	57374
#define	Twhat	57375
#define	Tdelete	57376
#define	Teval	57377
#define	Tbuiltin	57378
#define YYEOFCODE 1
#define YYERRCODE 2
static	const	short	yyexca[] =
{-1, 1,
	1, -1,
	-2, 31,
};
#define	YYNPROD	88
#define	YYPRIVATE 57344
#define	YYLAST	707
static	const	short	yyact[] =
{
  44,  42,   3, 172,  15, 145, 144, 147, 133,   6,
  43,  37,  99,  31, 149, 146,  99,  45, 171,  39,
 139, 106, 138,  81,  83,  84,  85,  86,  87,  88,
  89,  90,  91,  92,  93,  94, 148, 178, 162, 160,
  99, 106, 106, 103, 149, 146,  96, 105, 106, 113,
  20,  21,  18, 181, 102,  22,  23, 101, 109, 169,
  16,  37,  33,  34,  35,   8, 148, 163, 176,  10,
   9,  24,  25,  26, 167,  11,  12,  46,  36,  27,
  30,  32, 149,   7, 189, 155,  19,  28,  29, 149,
 165,  37, 149, 146,  61,  62,  63,  64,  60,  59,
  57,  58,  54,  55,  56, 109, 140, 137, 136, 152,
 109, 143, 154, 142, 148, 107, 151,  98,  53,  40,
  38, 102,  67,  65,  66,  61,  62,  63,  64,  60,
  59,  57,  58,  54,  55,  56,  13, 141, 156, 100,
  95, 188, 186, 158, 159,  47,  49,  50,  51, 185,
 164, 109, 161,  75, 166, 168,  65,  66,  61,  62,
  63,  64,  60,  59,  57,  58,  54,  55,  56, 183,
 179, 180, 173, 175, 164, 177, 174, 182,  77,  80,
  79,  78,  76, 187, 184,  54,  55,  56, 103, 150,
  41, 114, 115, 116, 117, 118, 119, 120, 121, 122,
 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
   2,   1,  97, 135,  52,  20,  21,  18,  14,  75,
  22,  23,  17,   0,   0,  16,  37,  33,  34,  35,
   8,   0,   0,   0,  10,   9,  24,  25,  26,   0,
  11,  12,  46,  36,  27,  30,  32, 153,   7, 104,
   0,  19,  28,  29,  20,  21,  18,   0,   0,  22,
  23,   0,   0,   0,  16,  37,  33,  34,  35,   8,
   0,   0,   0,  10,   9,  24,  25,  26,   4,  11,
  12,   5,  36,  27,  30,  32,   0,   7,   0,   0,
  19,  28,  29,  20,  21,  18,   0,   0,  22,  23,
   0,   0,   0,  16,  37,  33,  34,  35,   8,   0,
   0,   0,  10,   9,  24,  25,  26,   0,  11,  12,
  46,  36,  27,  30,  32,   0,   7,   0,   0,  19,
  28,  29,  72,  73,  71,  70,  69,  68,  67,  65,
  66,  61,  62,  63,  64,  60,  59,  57,  58,  54,
  55,  56,  20,  21,  18,   0,   0,  22,  23,   0,
   0,   0,  16,  37,  33,  34,  35,  57,  58,  54,
  55,  56,   0,  24,  25,  26,   0,   0,   0,   0,
  36,  27,  30,  32,   0,  48, 157,   0,  19,  28,
  29,  20,  21,  18,   0,   0,  22,  23,   0,   0,
   0,  82,  37,  33,  34,  35,   0,   0,   0,   0,
   0,   0,  24,  25,  26,   0,   0,   0,   0,  36,
  27,  30,  32,   0,  48,   0,   0,  19,  28,  29,
  20,  21,  18,   0,   0,  22,  23,   0,   0,   0,
  16,  74,  33,  34,  35,   0,   0,   0,   0,   0,
   0,  24,  25,  26,   0,   0,   0,   0,  36,  27,
  30,  32,   0,  48,   0,   0,  19,  28,  29,  72,
  73,  71,  70,  69,  68,  67,  65,  66,  61,  62,
  63,  64,  60,  59,  57,  58,  54,  55,  56,  72,
  73,  71,  70,  69,  68,  67,  65,  66,  61,  62,
  63,  64,  60,  59,  57,  58,  54,  55,  56,  60,
  59,  57,  58,  54,  55,  56,   0,   0,   0, 110,
  69,  68,  67,  65,  66,  61,  62,  63,  64,  60,
  59,  57,  58,  54,  55,  56, 134,  72,  73,  71,
  70,  69,  68,  67,  65,  66,  61,  62,  63,  64,
  60,  59,  57,  58,  54,  55,  56,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0, 108,
  72,  73,  71,  70,  69,  68,  67,  65,  66,  61,
  62,  63,  64,  60,  59,  57,  58,  54,  55,  56,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 170,  72,  73,  71,  70,  69,  68,  67,  65,
  66,  61,  62,  63,  64,  60,  59,  57,  58,  54,
  55,  56,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0, 111, 112,  72,  73,  71,  70,  69,
  68,  67,  65,  66,  61,  62,  63,  64,  60,  59,
  57,  58,  54,  55,  56,  72,  73,  71,  70,  69,
  68,  67,  65,  66,  61,  62,  63,  64,  60,  59,
  57,  58,  54,  55,  56,  70,  69,  68,  67,  65,
  66,  61,  62,  63,  64,  60,  59,  57,  58,  54,
  55,  56,  68,  67,  65,  66,  61,  62,  63,  64,
  60,  59,  57,  58,  54,  55,  56
};
static	const	short	yypact[] =
{
-1000, 234,-1000,-1000,  89,  88, 186, 273, 332, 332,
 332, 332,  87, 650,-1000,-1000, 410, 153, 371, 371,
 371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
 371, 110,  60,-1000,-1000,-1000,  86, -48, 109,   4,
 -20,-1000, 195,  -7,-1000, 186,  84, 532, 332, 464,
 597, 630,  -6,-1000, 332, 332, 332, 332, 332, 332,
 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
 332, 332, 332,-1000, -44, 484, 332,-1000,  77,  76,
-1000,-1000, 332,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
 -33, -35,-1000,-1000,-1000, 332, 107,-1000,-1000,  60,
 332,  61, 185,-1000,-1000,-1000, 332,  60, 273,-1000,
 332, 273,-1000,  54,-1000,-1000,-1000, 163, 163, 347,
 347, 491, 491, 491, 491,  80,  80, 144, 111, 682,
 511, 667, 650, 371,-1000, 327,-1000,-1000, 371, 371,
 -13, 332,-1000, -14,  13,-1000,  58,  42,  61,-1000,
-1000,-1000,  21, 565,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, -34, 168, 172,-1000,  51,  36,  51, -17, 273,
 273,-1000,   0, 168,-1000, 165,  51, 145, 138,-1000,
-1000, 273,-1000,-1000, 137,-1000,-1000,  30,-1000,-1000
};
static	const	short	yypgo[] =
{
   0, 136,   4, 222,   0,  13,  10,   9,   1,   5,
   6,   7, 218, 214, 212, 211, 210,   3
};
static	const	short	yyr1[] =
{
   0,  15,  15,  16,  16,  16,  16,  17,  17,  10,
  10,  11,   9,   9,   9,   9,  14,  14,   8,   8,
   4,   4,   4,   4,   4,   4,   4,   4,   4,  13,
  13,   7,   7,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,  12,  12,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
   3,   3,   3,   3,   5,   5,   6,   6
};
static	const	short	yyr2[] =
{
   0,   0,   2,   1,   9,   2,   6,   0,   2,   1,
   2,   1,   4,   5,   4,   4,   0,   1,   1,   2,
   2,   3,   4,   6,   6,   4,   3,   2,   4,   1,
   3,   0,   1,   1,   3,   3,   3,   3,   3,   3,
   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
   3,   3,   3,   2,   1,   4,   1,   2,   2,   2,
   2,   2,   2,   2,   2,   4,   4,   2,   2,   2,
   3,   3,   4,   2,   3,   3,   2,   4,   5,   1,
   1,   1,   1,   2,   1,   3,   1,   3
};
static	const	short	yychk[] =
{
-1000, -15, -16,  -4,  44,  47,  -7,  53,  35,  40,
  39,  45,  46,  -1, -12,  -2,  30,  -3,  22,  56,
  20,  21,  25,  26,  41,  42,  43,  49,  57,  58,
  50,  -5,  51,  32,  33,  34,  48,  31,  31,  -5,
  31,   4,  -8,  -6,  -4,  -7,  47,  -1,  53,  -1,
  -1,  -1, -13,  31,  22,  23,  24,  20,  21,  19,
  18,  14,  15,  16,  17,  12,  13,  11,  10,   9,
   8,   7,   5,   6,  31,  -1,  29,  25,  28,  27,
  26,  -2,  30,  -2,  -2,  -2,  -2,  -2,  -2,  -2,
  -2,  -2,  -2,  -2,  -2,  30,  -5, -14,  31,  60,
  30,  53,  -5,  -4,  54,  54,  55,  31,  37,  -7,
  55,  36,   4,  55,  -1,  -1,  -1,  -1,  -1,  -1,
  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  -1,  -1,  -1,  52,  52,  -1,  31,  31,  55,  55,
  -6,  30,  -5,  -6, -10,  -9,  32, -11,  53,  31,
   4,  -7,  -4,  -1,  -4,  31,  -2,  59,  -2,  -2,
  52,  -6,  52,  54,  -9,  32, -11,  32, -10,  38,
  36,  52, -17,   4,   4, -11,  32, -11,  54,  -4,
  -4,  53, -17,   4, -11,   4,   4,  -8,   4,  54
};
static	const	short	yydef[] =
{
   1,  -2,   2,   3,   0,   0,   0,  31,   0,   0,
   0,   0,   0,  32,  33,  54,   0,  56,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  79,   0,  80,  81,  82,  16,  84,   5,   0,
  84,  20,  31,   0,  18,  86,   0,   0,  31,   0,
   0,   0,  27,  29,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  53,  84,   0,   0,  73,   0,   0,
  76,  57,   0,  58,  59,  60,  61,  62,  63,  64,
   0,   0,  67,  68,  69,  31,   0,  83,  17,   0,
  31,   0,   0,  19,  21,  71,  31,   0,  31,  86,
   0,  31,  26,   0,  34,  35,  36,  37,  38,  39,
  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,
  50,  51,  52,   0,  70,   0,  74,  75,   0,   0,
   0,  31,  85,   0,   0,   9,   0,   0,   0,  11,
  28,  87,  22,   0,  25,  30,  55,  72,  65,  66,
  77,   0,   7,   0,  10,   0,   0,   0,   0,  31,
  31,  78,   0,   7,   6,   0,   0,   0,   0,  23,
  24,  31,   8,  12,   0,  14,  15,  31,  13,   4
};
static	const	short	yytok1[] =
{
   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  57,   0,   0,   0,  24,  11,   0,
  30,  52,  22,  20,  55,  21,  28,  23,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  60,   4,
  14,   5,  15,   0,  56,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  29,   0,  59,  10,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  53,   9,  54,  58
};
static	const	short	yytok2[] =
{
   2,   3,   6,   7,   8,  12,  13,  16,  17,  18,
  19,  25,  26,  27,  31,  32,  33,  34,  35,  36,
  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,
  47,  48,  49,  50,  51
};
static	const	long	yytok3[] =
{
   0
};
#define YYFLAG 		-1000
#define YYERROR		goto yyerrlab
#define YYACCEPT	return(0)
#define YYABORT		return(1)
#define	yyclearin	yychar = -1
#define	yyerrok		yyerrflag = 0

#ifdef	yydebug
#include	"y.debug"
#else
#define	yydebug		0
static	const	char*	yytoknames[1];		/* for debugging */
static	const	char*	yystates[1];		/* for debugging */
#endif

/*	parser for yacc output	*/
#ifdef YYARG
#define	yynerrs		yyarg->yynerrs
#define	yyerrflag	yyarg->yyerrflag
#define yyval		yyarg->yyval
#define yylval		yyarg->yylval
#else
int	yynerrs = 0;		/* number of errors */
int	yyerrflag = 0;		/* error recovery flag */
#endif

extern	int	fprint(int, char*, ...);
extern	int	sprint(char*, char*, ...);

static const char*
yytokname(int yyc)
{
	static char x[10];

	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
	if(yytoknames[yyc-1])
		return yytoknames[yyc-1];
	sprint(x, "<%d>", yyc);
	return x;
}

static const char*
yystatname(int yys)
{
	static char x[10];

	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
	if(yystates[yys])
		return yystates[yys];
	sprint(x, "<%d>\n", yys);
	return x;
}

static long
#ifdef YYARG
yylex1(struct Yyarg *yyarg)
#else
yylex1(void)
#endif
{
	long yychar;
	const long *t3p;
	int c;

#ifdef YYARG	
	yychar = yylex(yyarg);
#else
	yychar = yylex();
#endif
	if(yychar <= 0) {
		c = yytok1[0];
		goto out;
	}
	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
		c = yytok1[yychar];
		goto out;
	}
	if(yychar >= YYPRIVATE)
		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
			c = yytok2[yychar-YYPRIVATE];
			goto out;
		}
	for(t3p=yytok3;; t3p+=2) {
		c = t3p[0];
		if(c == yychar) {
			c = t3p[1];
			goto out;
		}
		if(c == 0)
			break;
	}
	c = 0;

out:
	if(c == 0)
		c = yytok2[1];	/* unknown char */
	if(yydebug >= 3)
		fprint(2, "lex %.4lux %s\n", yychar, yytokname(c));
	return c;
}

int
#ifdef YYARG
yyparse(struct Yyarg *yyarg)
#else
yyparse(void)
#endif
{
	struct
	{
		YYSTYPE	yyv;
		int	yys;
	} yys[YYMAXDEPTH], *yyp, *yypt;
	const short *yyxi;
	int yyj, yym, yystate, yyn, yyg;
	long yychar;
#ifndef YYARG
	YYSTYPE save1, save2;
	int save3, save4;

	save1 = yylval;
	save2 = yyval;
	save3 = yynerrs;
	save4 = yyerrflag;
#endif

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyp = &yys[-1];
	goto yystack;

ret0:
	yyn = 0;
	goto ret;

ret1:
	yyn = 1;
	goto ret;

ret:
#ifndef YYARG
	yylval = save1;
	yyval = save2;
	yynerrs = save3;
	yyerrflag = save4;
#endif
	return yyn;

yystack:
	/* put a state and value onto the stack */
	if(yydebug >= 4)
		fprint(2, "char %s in %s", yytokname(yychar), yystatname(yystate));

	yyp++;
	if(yyp >= &yys[YYMAXDEPTH]) {
		yyerror("yacc stack overflow");
		goto ret1;
	}
	yyp->yys = yystate;
	yyp->yyv = yyval;

yynewstate:
	yyn = yypact[yystate];
	if(yyn <= YYFLAG)
		goto yydefault; /* simple state */
	if(yychar < 0)
#ifdef YYARG
		yychar = yylex1(yyarg);
#else
		yychar = yylex1();
#endif
	yyn += yychar;
	if(yyn < 0 || yyn >= YYLAST)
		goto yydefault;
	yyn = yyact[yyn];
	if(yychk[yyn] == yychar) { /* valid shift */
		yychar = -1;
		yyval = yylval;
		yystate = yyn;
		if(yyerrflag > 0)
			yyerrflag--;
		goto yystack;
	}

yydefault:
	/* default state action */
	yyn = yydef[yystate];
	if(yyn == -2) {
		if(yychar < 0)
#ifdef YYARG
		yychar = yylex1(yyarg);
#else
		yychar = yylex1();
#endif

		/* look through exception table */
		for(yyxi=yyexca;; yyxi+=2)
			if(yyxi[0] == -1 && yyxi[1] == yystate)
				break;
		for(yyxi += 2;; yyxi += 2) {
			yyn = yyxi[0];
			if(yyn < 0 || yyn == yychar)
				break;
		}
		yyn = yyxi[1];
		if(yyn < 0)
			goto ret0;
	}
	if(yyn == 0) {
		/* error ... attempt to resume parsing */
		switch(yyerrflag) {
		case 0:   /* brand new error */
			yyerror("syntax error");
			if(yydebug >= 1) {
				fprint(2, "%s", yystatname(yystate));
				fprint(2, "saw %s\n", yytokname(yychar));
			}
			goto yyerrlab;
		yyerrlab:
			yynerrs++;

		case 1:
		case 2: /* incompletely recovered error ... try again */
			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */
			while(yyp >= yys) {
				yyn = yypact[yyp->yys] + YYERRCODE;
				if(yyn >= 0 && yyn < YYLAST) {
					yystate = yyact[yyn];  /* simulate a shift of "error" */
					if(yychk[yystate] == YYERRCODE)
						goto yystack;
				}

				/* the current yyp has no shift onn "error", pop stack */
				if(yydebug >= 2)
					fprint(2, "error recovery pops state %d, uncovers %d\n",
						yyp->yys, (yyp-1)->yys );
				yyp--;
			}
			/* there is no state on the stack with an error shift ... abort */
			goto ret1;

		case 3:  /* no shift yet; clobber input char */
			if(yydebug >= 2)
				fprint(2, "error recovery discards %s\n", yytokname(yychar));
			if(yychar == YYEOFCODE)
				goto ret1;
			yychar = -1;
			goto yynewstate;   /* try again in the same state */
		}
	}

	/* reduction by production yyn */
	if(yydebug >= 2)
		fprint(2, "reduce %d in:\n\t%s", yyn, yystatname(yystate));

	yypt = yyp;
	yyp -= yyr2[yyn];
	yyval = (yyp+1)->yyv;
	yym = yyn;

	/* consult goto table to find next state */
	yyn = yyr1[yyn];
	yyg = yypgo[yyn];
	yyj = yyg + yyp->yys + 1;

	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
		yystate = yyact[yyg];
	switch(yym) {
		
case 3:
#line	52	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			/* hold on to current command for gc */
			mkvar("_thiscmd")->proc = yypt[-0].yyv.node;
			execute(yypt[-0].yyv.node);
			gc();
			if(interactive && nlcount){
				Bprint(bout, "acid; ");
				nlcount = 0;
			}
		} break;
case 4:
#line	63	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yypt[-7].yyv.sym->proc = an(OLIST, yypt[-5].yyv.node, yypt[-1].yyv.node);
		} break;
case 5:
#line	67	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yypt[-0].yyv.sym->proc = nil;
		} break;
case 6:
#line	71	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			defcomplex(yypt[-4].yyv.node, yypt[-2].yyv.node);
		} break;
case 10:
#line	81	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
		} break;
case 11:
#line	87	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ONAME, ZN, ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 12:
#line	94	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yypt[-1].yyv.node->store.u.ival = yypt[-2].yyv.ival;
			yypt[-1].yyv.node->store.fmt = yypt[-3].yyv.ival;
			yyval.node = yypt[-1].yyv.node;
		} break;
case 13:
#line	100	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yypt[-1].yyv.node->store.u.ival = yypt[-2].yyv.ival;
			yypt[-1].yyv.node->store.fmt = yypt[-4].yyv.ival;
			yypt[-1].yyv.node->right = yypt[-3].yyv.node;
			yyval.node = yypt[-1].yyv.node;
		} break;
case 14:
#line	107	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yypt[-1].yyv.node->store.u.ival = yypt[-2].yyv.ival;
			yypt[-1].yyv.node->left = yypt[-3].yyv.node;
			yyval.node = yypt[-1].yyv.node;
		} break;
case 15:
#line	113	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCTRUCT, yypt[-2].yyv.node, ZN);
		} break;
case 16:
#line	119	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{ yyval.sym = 0; } break;
case 19:
#line	125	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
		} break;
case 21:
#line	132	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = yypt[-1].yyv.node;
		} break;
case 22:
#line	136	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OIF, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 23:
#line	140	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OIF, yypt[-4].yyv.node, an(OELSE, yypt[-2].yyv.node, yypt[-0].yyv.node));
		} break;
case 24:
#line	144	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ODO, an(OLIST, yypt[-4].yyv.node, yypt[-2].yyv.node), yypt[-0].yyv.node);
		} break;
case 25:
#line	148	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OWHILE, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 26:
#line	152	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ORET, yypt[-1].yyv.node, ZN);
		} break;
case 27:
#line	156	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLOCAL, yypt[-0].yyv.node, ZN);
		} break;
case 28:
#line	160	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCOMPLEX, yypt[-1].yyv.node, ZN);
			yyval.node->sym = yypt[-2].yyv.sym;
		} break;
case 29:
#line	167	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ONAME, ZN, ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 30:
#line	172	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ONAME, yypt[-2].yyv.node, ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 31:
#line	179	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{ yyval.node = 0; } break;
case 34:
#line	185	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OMUL, yypt[-2].yyv.node, yypt[-0].yyv.node); 
		} break;
case 35:
#line	189	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ODIV, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 36:
#line	193	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OMOD, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 37:
#line	197	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OADD, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 38:
#line	201	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OSUB, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 39:
#line	205	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ORSH, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 40:
#line	209	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLSH, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 41:
#line	213	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLT, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 42:
#line	217	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OGT, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 43:
#line	221	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLEQ, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 44:
#line	225	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OGEQ, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 45:
#line	229	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OEQ, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 46:
#line	233	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ONEQ, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 47:
#line	237	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLAND, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 48:
#line	241	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OXOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 49:
#line	245	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 50:
#line	249	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCAND, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 51:
#line	253	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 52:
#line	257	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OASGN, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 53:
#line	261	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OFMT, yypt[-1].yyv.node, con(yypt[-0].yyv.ival));
		} break;
case 55:
#line	268	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCAST, yypt[-0].yyv.node, ZN);
			yyval.node->sym = yypt[-2].yyv.sym;
		} break;
case 57:
#line	276	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OINDM, yypt[-0].yyv.node, ZN);
		} break;
case 58:
#line	280	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OINDC, yypt[-0].yyv.node, ZN);
		} break;
case 59:
#line	284	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OUPLUS, yypt[-0].yyv.node, ZN);
		} break;
case 60:
#line	288	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = con(0);
			yyval.node = an(OSUB, yyval.node, yypt[-0].yyv.node);
		} break;
case 61:
#line	293	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OEDEC, yypt[-0].yyv.node, ZN);
		} break;
case 62:
#line	297	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OEINC, yypt[-0].yyv.node, ZN);
		} break;
case 63:
#line	301	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OHEAD, yypt[-0].yyv.node, ZN);
		} break;
case 64:
#line	305	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OTAIL, yypt[-0].yyv.node, ZN);
		} break;
case 65:
#line	309	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OAPPEND, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 66:
#line	313	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ODELETE, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
case 67:
#line	317	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ONOT, yypt[-0].yyv.node, ZN);
		} break;
case 68:
#line	321	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OXOR, yypt[-0].yyv.node, con(-1));
		} break;
case 69:
#line	325	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OEVAL, yypt[-0].yyv.node, ZN);	
		} break;
case 70:
#line	331	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = yypt[-1].yyv.node;
		} break;
case 71:
#line	335	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCTRUCT, yypt[-1].yyv.node, ZN);
		} break;
case 72:
#line	339	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OINDEX, yypt[-3].yyv.node, yypt[-1].yyv.node);
		} break;
case 73:
#line	343	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OPDEC, yypt[-1].yyv.node, ZN);
		} break;
case 74:
#line	347	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ODOT, yypt[-2].yyv.node, ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 75:
#line	352	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ODOT, an(OINDM, yypt[-2].yyv.node, ZN), ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 76:
#line	357	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OPINC, yypt[-1].yyv.node, ZN);
		} break;
case 77:
#line	361	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCALL, yypt[-3].yyv.node, yypt[-1].yyv.node);
		} break;
case 78:
#line	365	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCALL, yypt[-3].yyv.node, yypt[-1].yyv.node);
			yyval.node->builtin = 1;
		} break;
case 80:
#line	371	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = con(yypt[-0].yyv.ival);
		} break;
case 81:
#line	375	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCONST, ZN, ZN);
			yyval.node->type = TFLOAT;
			yyval.node->store.fmt = 'f';
			yyval.node->store.u.fval = yypt[-0].yyv.fval;
		} break;
case 82:
#line	382	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OCONST, ZN, ZN);
			yyval.node->type = TSTRING;
			yyval.node->store.u.string = yypt[-0].yyv.string;
			yyval.node->store.fmt = 's';
		} break;
case 83:
#line	389	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OWHAT, ZN, ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 84:
#line	396	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(ONAME, ZN, ZN);
			yyval.node->sym = yypt[-0].yyv.sym;
		} break;
case 85:
#line	401	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OFRAME, yypt[-0].yyv.node, ZN);
			yyval.node->sym = yypt[-2].yyv.sym;
		} break;
case 87:
#line	409	"/build/plan9port/src/plan9/src/cmd/acid/dbg.y"
{
			yyval.node = an(OLIST, yypt[-2].yyv.node, yypt[-0].yyv.node);
		} break;
	}
	goto yystack;  /* stack new state and value */
}
