536 lines
13 KiB
C
536 lines
13 KiB
C
|
|
||
|
# line 2 "griddle.y"
|
||
|
#include "griddleDefs.h"
|
||
|
# define Name 257
|
||
|
# define Number 258
|
||
|
# define String 259
|
||
|
# define BitString 260
|
||
|
# define Rawline 261
|
||
|
# define INCLUDE 262
|
||
|
# define DEFINE 263
|
||
|
# define ENDDEFINE 264
|
||
|
# define USE 265
|
||
|
# define AVAID 266
|
||
|
# define BIN15 267
|
||
|
# define BIN31 268
|
||
|
# define BIT 269
|
||
|
# define BYTE 270
|
||
|
# define CHARACTER 271
|
||
|
# define ENTITY 272
|
||
|
# define FATWORD 273
|
||
|
# define OBJID 274
|
||
|
# define REGID 275
|
||
|
# define VARSTRING 276
|
||
|
# define WORDS 277
|
||
|
# define A 278
|
||
|
# define O 279
|
||
|
# define R 280
|
||
|
# define OR 281
|
||
|
# define XOR 282
|
||
|
# define AND 283
|
||
|
# define ADD 284
|
||
|
# define SUB 285
|
||
|
# define MUL 286
|
||
|
# define DIV 287
|
||
|
# define MOD 288
|
||
|
# define UMINUS 289
|
||
|
# define NOT 290
|
||
|
#define yyclearin yychar = -1
|
||
|
#define yyerrok yyerrflag = 0
|
||
|
extern int yychar;
|
||
|
extern short yyerrflag;
|
||
|
#ifndef YYMAXDEPTH
|
||
|
#define YYMAXDEPTH 150
|
||
|
#endif
|
||
|
#ifndef YYSTYPE
|
||
|
#define YYSTYPE int
|
||
|
#endif
|
||
|
YYSTYPE yylval, yyval;
|
||
|
# define YYERRCODE 256
|
||
|
short yyexca[] ={
|
||
|
-1, 1,
|
||
|
0, -1,
|
||
|
-2, 0,
|
||
|
};
|
||
|
# define YYNPROD 60
|
||
|
# define YYLAST 287
|
||
|
short yyact[]={
|
||
|
|
||
|
21, 73, 29, 36, 37, 35, 30, 31, 32, 33,
|
||
|
34, 95, 37, 35, 30, 31, 32, 33, 34, 62,
|
||
|
32, 33, 34, 15, 36, 37, 35, 30, 31, 32,
|
||
|
33, 34, 35, 30, 31, 32, 33, 34, 30, 31,
|
||
|
32, 33, 34, 85, 79, 80, 81, 88, 78, 87,
|
||
|
86, 84, 83, 89, 82, 8, 52, 52, 96, 12,
|
||
|
9, 10, 74, 11, 67, 53, 27, 46, 102, 93,
|
||
|
77, 46, 65, 92, 94, 14, 99, 66, 76, 72,
|
||
|
16, 51, 50, 45, 28, 97, 2, 48, 13, 7,
|
||
|
6, 38, 39, 40, 41, 42, 43, 71, 5, 4,
|
||
|
54, 55, 56, 57, 58, 59, 60, 61, 3, 1,
|
||
|
0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 63, 47,
|
||
|
0, 69, 0, 47, 70, 0, 0, 0, 0, 0,
|
||
|
0, 0, 90, 75, 0, 0, 91, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
|
||
|
37, 35, 30, 31, 32, 33, 34, 100, 98, 75,
|
||
|
101, 0, 0, 0, 0, 0, 103, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
67, 0, 0, 0, 67, 0, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 17, 18, 19,
|
||
|
20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 24, 25,
|
||
|
26, 0, 0, 0, 0, 22, 0, 0, 0, 0,
|
||
|
23, 36, 37, 35, 30, 31, 32, 33, 34, 36,
|
||
|
37, 35, 30, 31, 32, 33, 34, 44, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 53, 53,
|
||
|
0, 0, 0, 0, 0, 68, 49 };
|
||
|
short yypact[]={
|
||
|
|
||
|
-202,-202,-1000,-1000,-1000,-1000,-1000,-1000, 14,-236,
|
||
|
-40,-191,-1000,-1000, -40,-1000,-257,-1000,-1000,-1000,
|
||
|
-1000, -40, -40, -40, -40, -40, -40, 10,-278, 22,
|
||
|
-40, -40, -40, -40, -40, -40, -40, -40, -22,-1000,
|
||
|
-1000,-278,-278,-278, 6,-1000, -40,-193, 21,-1000,
|
||
|
-1000,-1000,-192, 39,-266,-266,-1000,-1000,-1000,-246,
|
||
|
-270,-251,-1000,-1000,-122, -63,-1000, 20,-1000,-1000,
|
||
|
-1000,-223, -40,-193,-1000,-1000, -40, 13,-1000,-1000,
|
||
|
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
|
||
|
-30, -67, 41,-278, -40, 18,-1000, -40, 41,-223,
|
||
|
-278, 7, -40, 41 };
|
||
|
short yypgo[]={
|
||
|
|
||
|
0, 109, 86, 108, 99, 98, 90, 89, 69, 87,
|
||
|
82, 81, 70, 73, 83, 72, 77 };
|
||
|
short yyr1[]={
|
||
|
|
||
|
0, 1, 1, 2, 2, 2, 2, 2, 7, 3,
|
||
|
4, 5, 5, 9, 9, 10, 10, 11, 11, 11,
|
||
|
11, 12, 12, 12, 12, 12, 12, 12, 12, 12,
|
||
|
12, 12, 12, 6, 6, 14, 14, 15, 15, 16,
|
||
|
13, 13, 8, 8, 8, 8, 8, 8, 8, 8,
|
||
|
8, 8, 8, 8, 8, 8, 8, 8, 8, 8 };
|
||
|
short yyr2[]={
|
||
|
|
||
|
0, 1, 2, 1, 1, 1, 1, 1, 1, 3,
|
||
|
2, 5, 4, 1, 2, 1, 2, 3, 6, 5,
|
||
|
8, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
1, 1, 1, 4, 3, 5, 3, 1, 2, 3,
|
||
|
1, 3, 1, 1, 1, 1, 3, 2, 2, 2,
|
||
|
2, 2, 3, 3, 3, 3, 3, 3, 3, 3 };
|
||
|
short yychk[]={
|
||
|
|
||
|
-1000, -1, -2, -3, -4, -5, -6, -7, 257, 262,
|
||
|
263, 265, 261, -2, 61, 259, -8, 257, 258, 259,
|
||
|
260, 40, 285, 290, 278, 279, 280, 257, -8, 259,
|
||
|
284, 285, 286, 287, 288, 283, 281, 282, -8, -8,
|
||
|
-8, -8, -8, -8, 257, -14, 61, 123, -9, 264,
|
||
|
-10, -11, 35, 257, -8, -8, -8, -8, -8, -8,
|
||
|
-8, -8, 41, -14, -8, -15, -16, 257, 264, -10,
|
||
|
-11, 58, 40, 123, 125, -16, 58, -12, 271, 267,
|
||
|
268, 269, 277, 275, 274, 266, 273, 272, 270, 276,
|
||
|
-8, -15, -13, -8, 61, 41, 125, 44, -13, 58,
|
||
|
-8, -12, 61, -13 };
|
||
|
short yydef[]={
|
||
|
|
||
|
0, -2, 1, 3, 4, 5, 6, 7, 0, 0,
|
||
|
0, 0, 8, 2, 0, 10, 0, 42, 43, 44,
|
||
|
45, 0, 0, 0, 0, 0, 0, 0, 9, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
|
||
|
48, 49, 50, 51, 0, 34, 0, 0, 0, 12,
|
||
|
13, 15, 0, 0, 52, 53, 54, 55, 56, 57,
|
||
|
58, 59, 46, 33, 0, 0, 37, 0, 11, 14,
|
||
|
16, 0, 0, 0, 36, 38, 0, 17, 21, 22,
|
||
|
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
|
||
|
0, 0, 39, 40, 0, 0, 35, 0, 19, 0,
|
||
|
41, 18, 0, 20 };
|
||
|
#ifndef lint
|
||
|
static char yaccpar_sccsid[] = "@(#)yaccpar 1.1 83/07/20 SMI"; /* from UCB 4.1 83/02/11 */
|
||
|
#endif
|
||
|
|
||
|
#
|
||
|
# define YYFLAG -1000
|
||
|
# define YYERROR goto yyerrlab
|
||
|
# define YYACCEPT return(0)
|
||
|
# define YYABORT return(1)
|
||
|
|
||
|
/* parser for yacc output */
|
||
|
|
||
|
#ifdef YYDEBUG
|
||
|
int yydebug = 0; /* 1 for debugging */
|
||
|
#endif
|
||
|
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 */
|
||
|
|
||
|
#ifdef YYDEBUG
|
||
|
if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
|
||
|
#endif
|
||
|
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 */
|
||
|
|
||
|
while( *(yyxi+=2) >= 0 ){
|
||
|
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 */
|
||
|
|
||
|
#ifdef YYDEBUG
|
||
|
if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
|
||
|
#endif
|
||
|
--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 */
|
||
|
|
||
|
#ifdef YYDEBUG
|
||
|
if( yydebug ) printf( "error recovery discards char %d\n", yychar );
|
||
|
#endif
|
||
|
|
||
|
if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
|
||
|
yychar = -1;
|
||
|
goto yynewstate; /* try again in the same state */
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/* reduction by production yyn */
|
||
|
|
||
|
#ifdef YYDEBUG
|
||
|
if( yydebug ) printf("reduce %d\n",yyn);
|
||
|
#endif
|
||
|
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 8:
|
||
|
# line 35 "griddle.y"
|
||
|
{
|
||
|
executeRawline(yypvt[-0]);
|
||
|
} break;
|
||
|
case 9:
|
||
|
# line 42 "griddle.y"
|
||
|
{
|
||
|
executeAssignment(yypvt[-2], yypvt[-0]);
|
||
|
} break;
|
||
|
case 10:
|
||
|
# line 49 "griddle.y"
|
||
|
{
|
||
|
executeInclude(yypvt[-0]);
|
||
|
} break;
|
||
|
case 11:
|
||
|
# line 56 "griddle.y"
|
||
|
{
|
||
|
yyval = executeDefine(yypvt[-3], yypvt[-2], yypvt[-1]);
|
||
|
} break;
|
||
|
case 12:
|
||
|
# line 60 "griddle.y"
|
||
|
{
|
||
|
yyval = executeDefine(yypvt[-2], yypvt[-1], NULL);
|
||
|
} break;
|
||
|
case 13:
|
||
|
# line 67 "griddle.y"
|
||
|
{
|
||
|
yyval = buildFieldList(NULL, yypvt[-0]);
|
||
|
} break;
|
||
|
case 14:
|
||
|
# line 71 "griddle.y"
|
||
|
{
|
||
|
yyval = buildFieldList(yypvt[-1], yypvt[-0]);
|
||
|
} break;
|
||
|
case 15:
|
||
|
# line 78 "griddle.y"
|
||
|
{
|
||
|
yyval = yypvt[-0];
|
||
|
} break;
|
||
|
case 16:
|
||
|
# line 82 "griddle.y"
|
||
|
{
|
||
|
yyval = invisifyField(yypvt[-0]);
|
||
|
} break;
|
||
|
case 17:
|
||
|
# line 89 "griddle.y"
|
||
|
{
|
||
|
yyval = buildField(yypvt[-2], buildExpr(NUM_EXPR, 1), yypvt[-0], NULL);
|
||
|
} break;
|
||
|
case 18:
|
||
|
# line 93 "griddle.y"
|
||
|
{
|
||
|
yyval = buildField(yypvt[-5], yypvt[-3], yypvt[-0], NULL);
|
||
|
} break;
|
||
|
case 19:
|
||
|
# line 97 "griddle.y"
|
||
|
{
|
||
|
yyval = buildField(yypvt[-4], buildExpr(NUM_EXPR, 1), yypvt[-2], yypvt[-0]);
|
||
|
} break;
|
||
|
case 20:
|
||
|
# line 101 "griddle.y"
|
||
|
{
|
||
|
yyval = buildField(yypvt[-7], yypvt[-5], yypvt[-2], yypvt[-0]);
|
||
|
} break;
|
||
|
case 21:
|
||
|
# line 107 "griddle.y"
|
||
|
{ yyval = (int) FIELD_CHARACTER; } break;
|
||
|
case 22:
|
||
|
# line 108 "griddle.y"
|
||
|
{ yyval = (int) FIELD_BIN15; } break;
|
||
|
case 23:
|
||
|
# line 109 "griddle.y"
|
||
|
{ yyval = (int) FIELD_BIN31; } break;
|
||
|
case 24:
|
||
|
# line 110 "griddle.y"
|
||
|
{ yyval = (int) FIELD_BIT; } break;
|
||
|
case 25:
|
||
|
# line 111 "griddle.y"
|
||
|
{ yyval = (int) FIELD_WORDS; } break;
|
||
|
case 26:
|
||
|
# line 112 "griddle.y"
|
||
|
{ yyval = (int) FIELD_REGID; } break;
|
||
|
case 27:
|
||
|
# line 113 "griddle.y"
|
||
|
{ yyval = (int) FIELD_OBJID; } break;
|
||
|
case 28:
|
||
|
# line 114 "griddle.y"
|
||
|
{ yyval = (int) FIELD_AVAID; } break;
|
||
|
case 29:
|
||
|
# line 115 "griddle.y"
|
||
|
{ yyval = (int) FIELD_FATWORD; } break;
|
||
|
case 30:
|
||
|
# line 116 "griddle.y"
|
||
|
{ yyval = (int) FIELD_ENTITY; } break;
|
||
|
case 31:
|
||
|
# line 117 "griddle.y"
|
||
|
{ yyval = (int) FIELD_BYTE; } break;
|
||
|
case 32:
|
||
|
# line 118 "griddle.y"
|
||
|
{ yyval = (int) FIELD_VARSTRING; } break;
|
||
|
case 33:
|
||
|
# line 123 "griddle.y"
|
||
|
{
|
||
|
executeUse(yypvt[-2], yypvt[-1], yypvt[-0]);
|
||
|
} break;
|
||
|
case 34:
|
||
|
# line 127 "griddle.y"
|
||
|
{
|
||
|
executeUse(yypvt[-1], NULL, yypvt[-0]);
|
||
|
} break;
|
||
|
case 35:
|
||
|
# line 134 "griddle.y"
|
||
|
{
|
||
|
yyval = buildObjectTail(yypvt[-3], yypvt[-1]);
|
||
|
} break;
|
||
|
case 36:
|
||
|
# line 138 "griddle.y"
|
||
|
{
|
||
|
yyval = buildObjectTail(NULL, yypvt[-1]);
|
||
|
} break;
|
||
|
case 37:
|
||
|
# line 145 "griddle.y"
|
||
|
{
|
||
|
yyval = buildPropertyList(NULL, yypvt[-0]);
|
||
|
} break;
|
||
|
case 38:
|
||
|
# line 149 "griddle.y"
|
||
|
{
|
||
|
yyval = buildPropertyList(yypvt[-1], yypvt[-0]);
|
||
|
} break;
|
||
|
case 39:
|
||
|
# line 156 "griddle.y"
|
||
|
{
|
||
|
yyval = buildProperty(yypvt[-2], yypvt[-0]);
|
||
|
} break;
|
||
|
case 40:
|
||
|
# line 163 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExprList(NULL, yypvt[-0]);
|
||
|
} break;
|
||
|
case 41:
|
||
|
# line 167 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExprList(yypvt[-2], yypvt[-0]);
|
||
|
} break;
|
||
|
case 42:
|
||
|
# line 174 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(ID_EXPR, yypvt[-0]);
|
||
|
} break;
|
||
|
case 43:
|
||
|
# line 178 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(NUM_EXPR, yypvt[-0]);
|
||
|
} break;
|
||
|
case 44:
|
||
|
# line 182 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(STRING_EXPR, yypvt[-0]);
|
||
|
} break;
|
||
|
case 45:
|
||
|
# line 186 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BITSTRING_EXPR, yypvt[-0]);
|
||
|
} break;
|
||
|
case 46:
|
||
|
# line 190 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(EXPR_EXPR, yypvt[-1]);
|
||
|
} break;
|
||
|
case 47:
|
||
|
# line 194 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(UNOP_EXPR, UMINUS, yypvt[-0]);
|
||
|
} break;
|
||
|
case 48:
|
||
|
# line 198 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(UNOP_EXPR, NOT, yypvt[-0]);
|
||
|
} break;
|
||
|
case 49:
|
||
|
# line 202 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(UNOP_EXPR, A, yypvt[-0]);
|
||
|
} break;
|
||
|
case 50:
|
||
|
# line 206 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(UNOP_EXPR, O, yypvt[-0]);
|
||
|
} break;
|
||
|
case 51:
|
||
|
# line 210 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(UNOP_EXPR, R, yypvt[-0]);
|
||
|
} break;
|
||
|
case 52:
|
||
|
# line 214 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], ADD, yypvt[-0]);
|
||
|
} break;
|
||
|
case 53:
|
||
|
# line 218 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], SUB, yypvt[-0]);
|
||
|
} break;
|
||
|
case 54:
|
||
|
# line 222 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], MUL, yypvt[-0]);
|
||
|
} break;
|
||
|
case 55:
|
||
|
# line 226 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], DIV, yypvt[-0]);
|
||
|
} break;
|
||
|
case 56:
|
||
|
# line 230 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], MOD, yypvt[-0]);
|
||
|
} break;
|
||
|
case 57:
|
||
|
# line 234 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], AND, yypvt[-0]);
|
||
|
} break;
|
||
|
case 58:
|
||
|
# line 238 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], OR, yypvt[-0]);
|
||
|
} break;
|
||
|
case 59:
|
||
|
# line 242 "griddle.y"
|
||
|
{
|
||
|
yyval = buildExpr(BIN_EXPR, yypvt[-2], XOR, yypvt[-0]);
|
||
|
} break;
|
||
|
}
|
||
|
goto yystack; /* stack new state and value */
|
||
|
|
||
|
}
|