File:  [Research Unix] / researchv9 / jtools / src / pi / gram.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:59 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)


#include "gram.h"
#include "expr.pub"
#include "bpts.pub"
#include <ctype.h>
int LexIndex;
int LexGoal;
struct Expr *CurrentExpr;
char *LexString;
char *yyerr;		/* yacc doesn't use this */
long yyres;
char Token[128];
int DotDot;
Expr *E_IConst(long), *E_DConst(double);

typedef union  {
	char		cc;
	long		ll;
	char		ss[32];
	struct Expr	*ee;
	double		dd;
} YYSTYPE;
# define G_EXPR 257
# define G_DOTEQ_CONEX 258
# define G_DOLEQ_CONEX 259
# define G_CONEX 260
# define G_DOTDOT 261
# define ICONST 262
# define ID 263
# define PCENT 264
# define EQUAL 265
# define SLASH 266
# define DOLLAR 267
# define SIZEOF 268
# define TYPEOF 269
# define QMARK 270
# define SEMI 271
# define UNOP 272
# define STAR 273
# define PLUS 274
# define MINUS 275
# define AMPER 276
# define ARROW 277
# define DOT 278
# define LB 279
# define LP 280
# define COMMA 281
# define ERROR 282
# define RB 283
# define RP 284
# define PLUSPLUS 285
# define MINUSMINUS 286
# define EQUALEQUAL 287
# define GREATER 288
# define LESS 289
# define BAR 290
# define BARBAR 291
# define AMPERAMPER 292
# define HAT 293
# define TILDE 294
# define GREATEREQUAL 295
# define LESSEQUAL 296
# define FABS 297
# define GREATERGREATER 298
# define LESSLESS 299
# define BANG 300
# define BANGEQUAL 301
# define DCONST 302
# define LC 303
# define RC 304
# define DOTDOT 305
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern short yyerrflag;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
YYSTYPE yylval, yyval;
# define YYERRCODE 256



#define LOOK (LexString[LexIndex ])
#define TAKE (AddToken(), LexString[LexIndex++])
#define MORE (LexString[LexIndex+1])
#define yc (yylval.cc)
#define yd (yylval.dd)
#define yl (yylval.ll)
#define ys (yylval.ss)
#define ishex(x) (isdigit(x) || (x>='a'&&x<='f') || (x>='A'&&x<='F'))
#define isoct(x) ( x>='0' && x<='7' )
int doyylex();
int yyerror(char*);

yylex()
{
	int token = doyylex();

	return token;
}

void AddToken()
{
	int l = strlen(Token);

	if( l < 64 ){
		Token[l] = LOOK;
		Token[l+1] = '\0';
	}
}

doyylex()
{
	double atof(char*);

	if( LexIndex < 0 ){
		LexIndex = 0;
		return LexGoal;
	}
	while( isspace(LOOK) ) TAKE;
	Token[0] = '\0';
	if( isalpha(LOOK) || LOOK=='_' || LOOK=='$' ){
		TAKE;
		while( isalnum(LOOK) || LOOK=='_' ) TAKE;
		strcpy( ys, Token );
		if( !strcmp(ys,"sizeof") ) return SIZEOF;
		if( !strcmp(ys,"typeof") ) return TYPEOF;
		if( !strcmp(ys,"fabs") ) return FABS;
		if( !strcmp(ys,"$") ) return DOLLAR;
		return ID;
	}
	if( LOOK == '\'' ){
		TAKE;
		if( LOOK == '\\' ){
			TAKE;
			if( MORE != '\'' ) return 0;
			char *trans = "bnftv", *late = "\b\n\f\t\v";
			yl = LOOK;
			for( int i = 0; trans[i]; ++i )
				if( LOOK == trans[i] ) yl = late[i];
			TAKE; TAKE; return ICONST;
		}
		if( MORE != '\'' ) return 0;
		yl = TAKE;
		TAKE;
		return ICONST;
	}
	if( LOOK=='0' && (MORE=='x' || MORE=='X') ){
		TAKE; TAKE;
		if( !ishex(LOOK) ) return 0;
		for( yl = 0; ishex(LOOK); TAKE )
		    yl = (yl<<4) + (isalpha(LOOK) ? (LOOK|' ')+10-'a' : LOOK-'0');
		return ICONST;
	}
	if( LOOK=='0' ){
		for( TAKE, yl = 0; isoct(LOOK); TAKE ) yl = (yl<<3) + LOOK - '0';
		goto IorD;
	}
	if( isdigit(LOOK) ){
		for( yl = 0; isdigit(LOOK); TAKE ) yl = yl*10 + LOOK - '0';
		goto IorD;
	}
	if( LOOK == '.' && isdigit(MORE) ) goto Point;
#define EAT2(x) {TAKE; TAKE; return x;}
	if( LOOK=='.' && MORE=='.' ) EAT2(DOTDOT)
	if( LOOK=='-' && MORE=='>' ) EAT2(ARROW)
	if( LOOK=='-' && MORE=='-' ) EAT2(MINUSMINUS)
	if( LOOK=='+' && MORE=='+' ) EAT2(PLUSPLUS)
	if( LOOK=='=' && MORE=='=' ) EAT2(EQUALEQUAL)
	if( LOOK=='!' && MORE=='=' ) EAT2(BANGEQUAL)
	if( LOOK==':' && MORE=='=' ) EAT2(EQUAL)
	if( LOOK=='>' && MORE=='=' ) EAT2(GREATEREQUAL)
	if( LOOK=='<' && MORE=='=' ) EAT2(LESSEQUAL)
	if( LOOK=='&' && MORE=='&' ) EAT2(AMPERAMPER)
	if( LOOK=='|' && MORE=='|' ) EAT2(BARBAR)
	if( LOOK=='>' && MORE=='>' ) EAT2(GREATERGREATER)
	if( LOOK=='<' && MORE=='<' ) EAT2(LESSLESS)
	switch( TAKE ){
		case '>' : return GREATER;
		case '<' : return LESS;
		case '/' : return SLASH;
		case '*' : return STAR;
		case '+' : return PLUS;
		case '-' : return MINUS;
		case '.' : return DOT;
		case '(' : return LP;
		case ')' : return RP;
		case '[' : return LB;
		case ']' : return RB;
		case '&' : return AMPER;
		case ',' : return COMMA;
		case '%' : return PCENT;
		case '=' : return EQUAL;
		case ';' : return SEMI;
		case '|' : return BAR;
		case '^' : return HAT;
		case '~' : return TILDE;
		case '!' : return BANG;
		case '{' : return LC;
		case '}' : return RC;
		default  : return 0;
	}
IorD:
	if( LOOK=='l' || LOOK=='L' ) return TAKE, ICONST;
	if( LOOK=='.' && MORE=='.' ) return ICONST;
	if( LOOK=='.' ) goto Point;
	if( LOOK=='e' || LOOK=='E' ) goto Exp;
	return ICONST;
Point:
	for( TAKE; isdigit(LOOK); TAKE) {}
	if( LOOK!='e' && LOOK!='E' ) goto Double;
Exp:
	TAKE;
	if( LOOK=='+' || LOOK=='-' ) TAKE;
	if( !isdigit(LOOK) ) return 0;
	while( isdigit(LOOK) ) TAKE;
Double:
	yd = atof(Token);
	return DCONST;	

}
short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
	};
# define YYNPROD 62
# define YYLAST 800
short yyact[]={

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

-177,-1000,-1000,-1000,-270,-251,  49, 270, 270,-246,
-247, 414,-1000,-1000,-1000,  49,  49,  49, -70,-1000,
 270,-275,-1000,-1000, 270, 270, 270, 270, 270, 270,
 270, 270,-276,-108,  49,  49,-1000,  49,  49,  49,
  49,  49,  49,-272,-272, 278,-1000, 270,-233, 270,
 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
 270, 270, 270, 270, 270,-241, 270, 270, 270, 270,
 270,-150, 228,-235, 302,-235,-235,-235,-235,-235,
-188, 270,-1000, 402, 390,  98,-272,-272,-272,  98,
 356,-1000,   6,-1000,  44,  44,  80, 116, 152, 302,
 188, 338, 338, 236, 236, 236, 236, 374, 374, 215,
-1000,-235,-235,-235, 215,-226,-242,-278,-1000, -32,
-1000,-264,-1000,-1000,-1000,-1000,-1000,-1000, 270,-1000,
 -32 };
short yypgo[]={

   0, 670,  46, 742,  45,  36,  33 };
short yyr1[]={

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

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

-1000,  -4, 257, 261, 258, 259, 260,  -5,  -6, 278,
 267,  -3, 267, 263, 262, 276, 275, 280,  -1, 267,
 303, 263, 302, 262, 273, 276, 268, 269, 300, 275,
 294, 280, 297,  -1, 265, 265, 271, 275, 264, 273,
 266, 274, 279,  -3,  -3,  -3, 271, 305, 278, 281,
 265, 291, 292, 290, 276, 293, 287, 301, 289, 288,
 296, 295, 298, 299, 275, 277, 264, 273, 266, 274,
 279,  -1, 280,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  -1, 280, 271,  -3,  -3,  -3,  -3,  -3,  -3,  -3,
  -3, 284,  -1, 263,  -1,  -1,  -1,  -1,  -1,  -1,
  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
 263,  -1,  -1,  -1,  -1,  -1, 304,  -2, 284,  -1,
 284,  -1, 271, 271, 283, 283, 263, 284, 281, 284,
  -1 };
short yydef[]={

   0,  -2,   1,   3,   0,   0,   0,   0,   0,   0,
   0,   0,  48,  49,  50,   0,   0,   0,   0,   8,
   0,  10,  11,  12,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   7,   0,   0,   0,
   0,   0,   0,  51,  52,   0,   2,   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,  13,  14,  15,  16,  17,  18,  19,
   0,   0,   4,   0,   0,  53,  54,  55,  56,  57,
   0,  59,  20,  21,  22,  23,  24,  25,  26,  27,
  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,
  38,  39,  40,  41,  42,   0,   0,   0,  45,  60,
  46,   0,   5,   6,  58,  43,   9,  44,   0,  47,
  61 };
#ifndef lint
static	char yaccpar_sccsid[] = "@(#)yaccpar 1.2 86/07/18 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 1:
{ DotDot=0; } break;
case 2:
{ yyres = (long) yypvt[-1].ee;  } break;
case 3:
{ DotDot=1; } break;
case 4:
{ yyres = (long) yypvt[-1].ee;  } break;
case 5:
{ yyres = (long) yypvt[-1].ee; } break;
case 6:
{ yyres = (long) yypvt[-1].ee; } break;
case 7:
{ yyres = (long) yypvt[-1].ee; } break;
case 8:
{ if( !CurrentExpr){
					yyerror("$ cannot be used here");
					YYACCEPT;
				  }
				  yyval.ee = CurrentExpr;
				} break;
case 9:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_ENV, E_Id(yypvt[-0].ss) ); } break;
case 10:
{ yyval.ee = E_Id( yypvt[-0].ss ); } break;
case 11:
{ yyval.ee = E_DConst( yypvt[-0].dd ); } break;
case 12:
{ yyval.ee = E_IConst( yypvt[-0].ll ); } break;
case 13:
{ yyval.ee = E_Unary( O_DEREF, yypvt[-0].ee ); } break;
case 14:
{ yyval.ee = E_Unary( O_REF, yypvt[-0].ee ); } break;
case 15:
{ yyval.ee = E_Unary( O_SIZEOF, yypvt[-0].ee ); } break;
case 16:
{ yyval.ee = E_Unary( O_TYPEOF, yypvt[-0].ee ); } break;
case 17:
{ yyval.ee = E_Unary( O_LOGNOT, yypvt[-0].ee ); } break;
case 18:
{ yyval.ee = E_Unary( O_MINUS, yypvt[-0].ee ); } break;
case 19:
{ yyval.ee = E_Unary( O_1SCOMP, yypvt[-0].ee ); } break;
case 20:
{ if( !DotDot ){
					yyerror(".. cannot be used here");
					YYACCEPT;
				  }
				  yyval.ee = E_Binary( yypvt[-2].ee, O_RANGE, yypvt[-0].ee );} break;
case 21:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_DOT, E_Id(yypvt[-0].ss)); } break;
case 22:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_COMMA, yypvt[-0].ee ); } break;
case 23:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_ASSIGN, yypvt[-0].ee ); } break;
case 24:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_LOGOR, yypvt[-0].ee ); } break;
case 25:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_LOGAND, yypvt[-0].ee ); } break;
case 26:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_BITOR, yypvt[-0].ee ); } break;
case 27:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_BITAND, yypvt[-0].ee ); } break;
case 28:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_BITXOR, yypvt[-0].ee ); } break;
case 29:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_EQ, yypvt[-0].ee ); } break;
case 30:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_NE, yypvt[-0].ee ); } break;
case 31:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_LT, yypvt[-0].ee ); } break;
case 32:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_GT, yypvt[-0].ee ); } break;
case 33:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_LE, yypvt[-0].ee ); } break;
case 34:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_GE, yypvt[-0].ee ); } break;
case 35:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_RSHIFT, yypvt[-0].ee ); } break;
case 36:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_LSHIFT, yypvt[-0].ee ); } break;
case 37:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_MINUS, yypvt[-0].ee ); } break;
case 38:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_ARROW, E_Id(yypvt[-0].ss)); } break;
case 39:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_MOD, yypvt[-0].ee ); } break;
case 40:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_MULT, yypvt[-0].ee ); } break;
case 41:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_DIV, yypvt[-0].ee ); } break;
case 42:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_PLUS, yypvt[-0].ee ); } break;
case 43:
{ yyval.ee = E_Binary( yypvt[-3].ee, O_INDEX, yypvt[-1].ee );} break;
case 44:
{ yyval.ee = E_Binary( E_Id(yypvt[-3].ss), O_CALL, yypvt[-1].ee ); } break;
case 45:
{ yyval.ee = E_Binary( E_Id(yypvt[-2].ss), O_CALL, 0 ); } break;
case 46:
{ yyval.ee = yypvt[-1].ee; } break;
case 47:
{ yyval.ee = E_Unary( O_FABS, yypvt[-1].ee ); } break;
case 48:
{ if( !CurrentExpr){
					yyerror("no current expression for $");
					YYACCEPT;
				  }
				  yyval.ee = CurrentExpr;
				} break;
case 49:
{ yyval.ee = E_Id( yypvt[-0].ss ); } break;
case 50:
{ yyval.ee = E_IConst( yypvt[-0].ll ); } break;
case 51:
{ yyval.ee = E_Unary( O_REF, yypvt[-0].ee ); } break;
case 52:
{ yyval.ee = E_Unary( O_MINUS, yypvt[-0].ee ); } break;
case 53:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_MINUS, yypvt[-0].ee ); } break;
case 54:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_MOD, yypvt[-0].ee ); } break;
case 55:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_MULT, yypvt[-0].ee ); } break;
case 56:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_DIV, yypvt[-0].ee ); } break;
case 57:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_PLUS, yypvt[-0].ee ); } break;
case 58:
{ yyval.ee = E_Binary( yypvt[-3].ee, O_INDEX, yypvt[-1].ee );} break;
case 59:
{ yyval.ee = yypvt[-1].ee; } break;
case 60:
{ yyval.ee = yypvt[-0].ee; } break;
case 61:
{ yyval.ee = E_Binary( yypvt[-2].ee, O_COMMA, yypvt[-0].ee ); } break;
		}
		goto yystack;  /* stack new state and value */

	}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.