4.3BSD/usr/contrib/icon/tran/parse.c

Compare this file to the similar file:
Show the results in this format:

# define CSETLIT 257
# define EOFX 258
# define IDENT 259
# define INTLIT 260
# define REALLIT 261
# define STRINGLIT 262
# define BREAK 263
# define BY 264
# define CASE 265
# define CREATE 266
# define DEFAULT 267
# define DO 268
# define DYNAMIC 269
# define ELSE 270
# define END 271
# define EVERY 272
# define FAIL 273
# define GLOBAL 274
# define IF 275
# define INITIAL 276
# define LINK 277
# define LOCAL 278
# define NEXT 279
# define NOT 280
# define OF 281
# define PROCEDURE 282
# define RECORD 283
# define REPEAT 284
# define RETURN 285
# define STATIC 286
# define SUSPEND 287
# define THEN 288
# define TO 289
# define UNTIL 290
# define WHILE 291
# define ASSIGN 292
# define AT 293
# define AUGACT 294
# define AUGAND 295
# define AUGEQ 296
# define AUGEQV 297
# define AUGGE 298
# define AUGGT 299
# define AUGLE 300
# define AUGLT 301
# define AUGNE 302
# define AUGNEQV 303
# define AUGSEQ 304
# define AUGSGE 305
# define AUGSGT 306
# define AUGSLE 307
# define AUGSLT 308
# define AUGSNE 309
# define BACKSLASH 310
# define BANG 311
# define BAR 312
# define CARET 313
# define CARETASGN 314
# define COLON 315
# define COMMA 316
# define CONCAT 317
# define CONCATASGN 318
# define CONJUNC 319
# define DIFF 320
# define DIFFASGN 321
# define DOT 322
# define EQUIV 323
# define INTER 324
# define INTERASGN 325
# define LBRACE 326
# define LBRACK 327
# define LCONCAT 328
# define LCONCATASGN 329
# define LEXEQ 330
# define LEXGE 331
# define LEXGT 332
# define LEXLE 333
# define LEXLT 334
# define LEXNE 335
# define LPAREN 336
# define MCOLON 337
# define MINUS 338
# define MINUSASGN 339
# define MOD 340
# define MODASGN 341
# define NOTEQUIV 342
# define NUMEQ 343
# define NUMGE 344
# define NUMGT 345
# define NUMLE 346
# define NUMLT 347
# define NUMNE 348
# define PCOLON 349
# define PLUS 350
# define PLUSASGN 351
# define QMARK 352
# define RBRACE 353
# define RBRACK 354
# define REVASSIGN 355
# define REVSWAP 356
# define RPAREN 357
# define SCANASGN 358
# define SEMICOL 359
# define SLASH 360
# define SLASHASGN 361
# define STAR 362
# define STARASGN 363
# define SWAP 364
# define TILDE 365
# define UNION 366
# define UNIONASGN 367

# line 123 "icon.g"
#include "itran.h"
#include "sym.h"
#include "tree.h"
#include "../h/keyword.h"
#define YYSTYPE nodeptr
#define YYMAXDEPTH 500
#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;

# line 134 "icon.g"
int argcnt;
int idflag;
int i;
#ifdef XPX
int cstack[50];			/* context stack expression lists */
int stacktop = 0;		/* stack top */
nodeptr cswitch();
#endif XPX
# define YYERRCODE 256

# line 469 "icon.g"


#ifdef XPX
pushcs(val)
int val;
{
	stacktop = stacktop + 1;
	cstack[stacktop] = val;
}

popcs()
{
	stacktop = stacktop - 1;
}

nodeptr cswitch(x,y)
	nodeptr x, y;
	{
	if (cstack[stacktop]) return(CREATENODE(y,x));
	else return(x);
}
#endif XPX
short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
-1, 21,
	359, 32,
	-2, 30,
-1, 104,
	359, 32,
	-2, 30,
-1, 111,
	359, 32,
	-2, 30,
	};
# define YYNPROD 204
# define YYLAST 642
short yyact[]={

  32,  89, 170,  60,  86,  87,  88,  62, 207,  94,
  59, 281, 287, 112, 175, 240,  97,  90, 288,  93,
 172,  21, 111,  61,  45, 285, 275, 270,  98,  91,
 177,  92, 169, 249,  96,  95, 284,  44, 112, 277,
 254, 239, 233, 256, 208, 113, 103, 112, 171, 166,
 176, 251, 174, 252,  85,  68,  46,  73, 290, 266,
 167,  47, 112,  66,  69, 258,  67,  81,  74, 243,
  64,  65,  48, 283,  79, 246, 278, 257, 245,  80,
  63, 244,  76, 112, 184, 262,  84,  77, 182, 181,
 207, 242,  78,  25,  70, 289,  83, 250, 183, 110,
 253, 280, 100, 247,  72, 198,  71, 112, 236,  75,
  82,  32,  89, 101,  60,  86,  87,  88,  62, 197,
  94,  59, 112,  26,  20, 112, 112,  97,  90, 112,
  93,   3, 112, 180,  61,  45, 194,  40,  17,  98,
  91,  18,  92, 209,  38,  96,  95, 109,  44,  31,
 179,  37,  28, 178, 106,  39, 107, 210,  16,  35,
 255, 279, 274, 235, 108,  85,  68,  46,  73, 273,
  24, 234,  47,  30,  66,  69, 264,  67,  81,  74,
  99,  64,  65,  48, 102,  79,  12, 196,   2,   9,
  80,  63,  14,  76,  13,  10, 237,  84,  77, 261,
 193,  58,  57,  78,  56,  70,  55,  83,  54,  53,
  52,  51,  50,  49,  43,  72,  41,  71, 173, 168,
  75,  82,  89, 165,  60,  86,  87,  88,  62, 150,
  94,  59,  36, 191, 115,   4, 114,  97,  90,  34,
  93, 105,  23, 104,  61,  45,  27,  11,  19,  98,
  91,  12,  92,  22,   9,  96,  95, 211,  44,  13,
  10,  15, 215, 212, 214,   8,   7, 201, 202, 203,
 204, 205, 206,  42,   6,  85,  68,  46,  73, 222,
 213,   5,  47,   1,  66,  69,   0,  67,  81,  74,
   0,  64,  65,  48,   0,  79,   0,   0,   0,   0,
  80,  63, 224,  76,   0,   0,   0,  84,  77, 223,
 225, 227,   0,  78,   0,  70, 228,  83, 185, 186,
 187, 188, 189, 190, 226,  72,   0,  71,   0, 119,
  75,  82, 121,   0, 118, 117, 135, 136, 137, 138,
 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
   0,   0, 248, 149, 134, 232,   0,   0, 124,  33,
   0, 126,   0,   0, 163, 131,   0,   0,   0, 125,
   0, 151, 152, 153, 154, 155, 156, 263, 238, 129,
   0, 133,   0, 164, 157, 158, 159, 160, 161, 162,
 291, 128,   0, 241,   0, 123, 122,   0, 116,   0,
  29, 132,   0, 130, 120,   0,   0, 127,   0,   0,
   0,   0,   0, 271,   0,   0, 265,   0, 267, 268,
 269,   0,   0,   0,   0,   0,   0,   0,   0, 272,
   0, 259, 260,   0,   0,   0,   0,   0,   0,   0,
 282, 192,   0, 195,   0,   0,   0,   0,   0,   0,
   0,   0, 286, 229, 230,   0,   0,   0,   0,   0,
   0,   0, 282, 292, 293,   0,   0,   0,   0,   0,
 199, 200,   0, 216, 217, 218, 219, 220, 221,   0,
   0,   0,   0,  29,   0,   0,   0,   0,   0,   0,
  29,   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,   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,   0,   0,   0,   0,   0,
 231,   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,   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, 195,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 276 };
short yypact[]={

-125,-1000, -23,-1000,-1000,-1000,-1000,-1000,-1000,-121,
-1000,-235,-1000,-1000, -88,-223,-1000,-1000,-1000,-136,
-1000,-145,-157,-146,-1000,-121,-290,-122,-172,-337,
-236,-307,-1000,-1000,  40,-1000,  41,-268,-318,-310,
-1000,-160,-1000,-238, -35, -35, -35, -35, -35, -35,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-145,
-1000,-1000,-145,-1000,-145,-1000,-154,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-145,-145,-145,-145,-145,-145,-145,-145,-226,
-1000,-292,-1000,-157,-145,-157,-145,-1000,-1000,-1000,
-1000,-145, -35, -35, -35, -35, -35, -35, -35, -35,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -35,
 -35,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000, -35,-1000,-1000, -35,-1000,
-1000,-1000,-1000, -35,-1000,-1000,-1000,-1000, -35, -35,
 -35,-145,-311,-1000,-151,-1000,-1000,-1000,-1000,-1000,
-1000,-236,-1000,-145,-312,-344,-145,-1000,-1000,-1000,
-1000,-197,-212,-187,-190,-193,-236,-156,-157,-324,
-226,-174,-308,-306,-1000,-307,-1000,-1000,-1000,-1000,
-1000,-1000,-164,-1000,-268,-318,-310,-1000,-1000,-1000,
-1000,-314,-272,-1000,-145,-145,-1000,-231,-1000,-1000,
-145,-231,-145,-267,-145,-145,-145,-1000,-330,-1000,
-1000,-1000,-1000, -35,-1000,-145,-1000,-1000,-1000,-231,
-231,-331,-145,-1000,-315,-194,-256,-236,-236,-236,
-1000,-1000,-281,-317,-332,-1000,-1000,-1000,-145,-341,
-1000,-220,-257,-1000,-1000,-1000,-236,-1000,-256,-145,
-145,-1000,-236,-236 };
short yypgo[]={

   0, 283, 188, 281, 274, 266, 265, 261, 158, 253,
 157, 248, 143, 247, 246, 243, 152, 242, 241, 173,
 378, 149, 359, 239, 236, 234, 159, 232, 151, 229,
 144, 223, 155, 219, 137, 218, 216, 273, 214, 213,
 212, 211, 210, 209, 208, 206, 204, 202, 201, 200,
 196, 199, 136, 187, 176, 171, 169, 163, 162, 161,
 101, 160 };
short yyr1[]={

   0,   1,   2,   2,   3,   3,   3,   3,   7,   7,
   8,   8,   9,   6,  11,   4,   5,  17,  13,  12,
  12,  10,  10,  14,  14,  18,  18,  18,  15,  15,
  16,  16,  20,  20,  19,  19,  21,  21,  22,  22,
  22,  22,  22,  22,  24,  24,  24,  24,  25,  25,
  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
  25,  25,  25,  23,  23,  23,  26,  26,  27,  27,
  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
  29,  29,  29,  29,  28,  28,  31,  31,  30,  30,
  33,  33,  33,  33,  32,  32,  35,  35,  35,  35,
  34,  34,  36,  36,  36,  37,  37,  37,  37,  37,
  37,  37,  39,  39,  39,  39,  39,  39,  39,  39,
  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
  39,  38,  38,  38,  38,  38,  38,  38,  38,  38,
  38,  38,  38,  38,  49,  51,  38,  38,  53,  54,
  38,  38,  38,  55,  56,  38,  57,  58,  38,  38,
  38,  38,  45,  45,  46,  46,  47,  47,  48,  42,
  42,  42,  43,  43,  44,  59,  59,  60,  60,  50,
  50,  40,  40,  40,  40,  41,  61,  61,  61,  52,
  52,   1,   5,  19 };
short yyr2[]={

   0,   2,   0,   2,   1,   1,   1,   2,   1,   3,
   1,   1,   0,   3,   0,   6,   6,   0,   6,   0,
   1,   1,   3,   0,   4,   1,   1,   1,   0,   3,
   0,   3,   0,   1,   1,   3,   1,   3,   1,   3,
   3,   3,   3,   3,   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,   5,   1,   3,   1,   3,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   3,   1,   1,   1,   3,
   1,   1,   1,   1,   1,   3,   1,   1,   1,   1,
   1,   3,   1,   3,   3,   1,   2,   2,   2,   2,
   2,   2,   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,
   2,   1,   1,   2,   0,   0,   5,   3,   0,   0,
   5,   4,   3,   0,   0,   6,   0,   0,   6,   3,
   2,   2,   2,   4,   2,   4,   2,   4,   2,   1,
   2,   2,   4,   6,   6,   1,   3,   3,   3,   1,
   3,   1,   1,   1,   1,   6,   1,   1,   1,   1,
   3,   3,   4,   1 };
short yychk[]={

-1000,  -1,  -2, 256, 258,  -3,  -4,  -5,  -6, 277,
 283, -13, 274, 282,  -2,  -7,  -8, 259, 262, -11,
 359, 256,  -9, -17, 258, 316, 259, -14, -16, -20,
 -19, -21, 256, -22, -23, -26, -27, -28, -30, -32,
 -34, -36, -37, -38, 293, 280, 312, 317, 328, -39,
 -40, -41, -42, -43, -44, -45, -46, -47, -48, 266,
 259, 279, 263, 336, 326, 327, 319, 322, 311, 320,
 350, 362, 360, 313, 324, 365, 338, 343, 348, 330,
 335, 323, 366, 352, 342, 310, 260, 261, 262, 257,
 273, 285, 287, 275, 265, 291, 290, 272, 284, -10,
 259, 259,  -8, 336, -15, -18, 276, 278, 286, 269,
 271, 359, 319, 352, -24, -25, 358, 295, 294, 289,
 364, 292, 356, 355, 318, 329, 321, 367, 351, 339,
 363, 325, 361, 341, 314, 296, 297, 298, 299, 300,
 301, 302, 303, 304, 305, 306, 307, 308, 309, 312,
 -29, 330, 331, 332, 333, 334, 335, 343, 344, 345,
 346, 347, 348, 323, 342, -31, 317, 328, -33, 350,
 320, 366, 338, -35, 362, 324, 360, 340, 313, 310,
 293, 327, 326, 336, 322, -37, -37, -37, -37, -37,
 -37, -19, -20, -49, -52, -20, -53, 273, 259, -20,
 -20, -19, -19, -19, -19, -19, -19, 316, 336, -12,
 -10, -16, -10, -19, -16, -21, -22, -22, -22, -22,
 -22, -22, -26, -26, -28, -30, -32, -34, -34, -37,
 -37, -20, -19, 353, -55, -57, 259, -50, -20, 353,
 359, -50, 288, 281, 268, 268, 268, 259, -12, 357,
 271, 359, 359, 264, 354, -61, 315, 349, 337, -50,
 -50, -51, 316, -52, -54, -19, 326, -19, -19, -19,
 357, -26, -19, -56, -58, 357, -20, 354, 270, -59,
 -60, 267, -19, 354, 353, 357, -19, 353, 359, 315,
 315, -60, -19, -19 };
short yydef[]={

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

#
# 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] ) { syserr( "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( yychar, yylval, yystate );
		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:
# line 144 "icon.g"
{gout(globfile);} break;
case 4:
# line 149 "icon.g"
{
		if (!nocode)
			rout(globfile, STR0(yypvt[-0]));
		nocode = 0;
		loc_init();
		} break;
case 5:
# line 155 "icon.g"
{
		if (!nocode)
			codegen(yypvt[-0]);
		nocode = 0;
		treeinit();
		loc_init();
		} break;
case 10:
# line 168 "icon.g"
{addlfile(STR0(yypvt[-0]));} break;
case 11:
# line 169 "icon.g"
{addlfile(STR0(yypvt[-0]));} break;
case 12:
# line 171 "icon.g"
{idflag = F_GLOBAL;} break;
case 14:
# line 173 "icon.g"
{idflag = F_ARGUMENT;} break;
case 15:
# line 173 "icon.g"
{
		install(STR0(yypvt[-3]),F_RECORD|F_GLOBAL,(int)yypvt[-1]);
		yyval = yypvt[-3];
		} break;
case 16:
# line 178 "icon.g"
{
		yyval = (nodeptr)PROCNODE(yypvt[-5],yypvt[-2],yypvt[-1],yypvt[-0]);
		} break;
case 17:
# line 182 "icon.g"
{idflag = F_ARGUMENT;} break;
case 18:
# line 182 "icon.g"
{
		yyval = yypvt[-3];
		install(STR0(yypvt[-3]),F_PROC|F_GLOBAL,(int)yypvt[-1]);
		} break;
case 19:
# line 187 "icon.g"
{yyval = (int)0;} break;
case 20:
# line 188 "icon.g"
{yyval = (nodeptr)yypvt[-0];} break;
case 21:
# line 191 "icon.g"
{
		install(STR0(yypvt[-0]),idflag,0);
		yyval = (nodeptr)1;
		} break;
case 22:
# line 195 "icon.g"
{
		install(STR0(yypvt[-0]),idflag,0);
		yyval = (nodeptr)((int)yypvt[-2] + 1);
		} break;
case 25:
# line 203 "icon.g"
{idflag = F_DYNAMIC;} break;
case 26:
# line 204 "icon.g"
{idflag = F_STATIC;} break;
case 27:
# line 205 "icon.g"
{idflag = F_DYNAMIC;} break;
case 28:
# line 207 "icon.g"
{yyval = EMPTYNODE;} break;
case 29:
# line 208 "icon.g"
{yyval = yypvt[-1];} break;
case 30:
# line 210 "icon.g"
{yyval = EMPTYNODE;} break;
case 31:
# line 211 "icon.g"
{yyval = SLISTNODE(yypvt[-1], yypvt[-2], yypvt[-0]);} break;
case 32:
# line 213 "icon.g"
{yyval = EMPTYNODE;} break;
case 35:
# line 217 "icon.g"
{yyval = CONJNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 37:
# line 220 "icon.g"
{yyval = SCANNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 39:
# line 223 "icon.g"
{binop: yyval = BINOPNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 40:
# line 224 "icon.g"
{yyval = AUGOPNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 41:
# line 225 "icon.g"
{yyval = SCANNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 42:
# line 226 "icon.g"
{yyval = CONJNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 43:
# line 227 "icon.g"
{yyval = ACTIVNODE(yypvt[-1],yypvt[-0],yypvt[-2]);} break;
case 74:
# line 261 "icon.g"
{yyval = TONODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 75:
# line 262 "icon.g"
{yyval = TOBYNODE(yypvt[-3],yypvt[-4],yypvt[-2],yypvt[-0]);} break;
case 77:
# line 265 "icon.g"
{yyval = ALTNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 79:
# line 268 "icon.g"
{goto binop;} break;
case 95:
# line 286 "icon.g"
{goto binop;} break;
case 99:
# line 292 "icon.g"
{goto binop;} break;
case 105:
# line 300 "icon.g"
{goto binop;} break;
case 111:
# line 308 "icon.g"
{goto binop;} break;
case 113:
# line 311 "icon.g"
{yyval = LIMITNODE(yypvt[-2],yypvt[-0]);} break;
case 114:
# line 312 "icon.g"
{yyval = ACTIVNODE(yypvt[-1], yypvt[-0], yypvt[-2]);} break;
case 116:
# line 315 "icon.g"
{yyval = ACTIVNODE(yypvt[-1], yypvt[-0], EMPTYNODE);} break;
case 117:
# line 316 "icon.g"
{yyval = NOTNODE(yypvt[-0]);} break;
case 118:
# line 317 "icon.g"
{yyval = BARNODE(yypvt[-0]);} break;
case 119:
# line 318 "icon.g"
{yyval = BARNODE(yypvt[-0]);} break;
case 120:
# line 319 "icon.g"
{yyval = BARNODE(yypvt[-0]);} break;
case 121:
# line 320 "icon.g"
{yyval = UNOPNODE(yypvt[-1],yypvt[-0]);} break;
case 150:
# line 351 "icon.g"
{yyval = CREATENODE(yypvt[-1],yypvt[-0]);} break;
case 151:
# line 352 "icon.g"
{VAL0(yypvt[-0]) = putloc(STR0(yypvt[-0]),0);} break;
case 152:
# line 353 "icon.g"
{yyval = NEXTNODE(yypvt[-0]);} break;
case 153:
# line 354 "icon.g"
{yyval = BREAKNODE(yypvt[-1],yypvt[-0]);} break;
case 154:
# line 355 "icon.g"
{
#ifdef XPX
		pushcs(0);
#endif XPX
		} break;
case 155:
# line 359 "icon.g"
{
#ifdef XPX
		popcs();
#endif XPX
		} break;
case 156:
# line 363 "icon.g"
{
			if ((yypvt[-2])->n_type == N_ELIST)
			yyval = INVOKNODE(yypvt[-4],EMPTYNODE,yypvt[-2]);
			else
			yyval = yypvt[-2]; } break;
case 157:
# line 368 "icon.g"
{yyval = yypvt[-1];} break;
case 158:
# line 369 "icon.g"
{
#ifdef XPX
		pushcs(0);
#endif XPX
		} break;
case 159:
# line 373 "icon.g"
{
#ifdef XPX
		popcs();
#endif XPX
		} break;
case 160:
# line 377 "icon.g"
{
		yyval = LISTNODE(yypvt[-4],yypvt[-2]);} break;
case 161:
# line 379 "icon.g"
{yyval = BINOPNODE(yypvt[-2],yypvt[-3],yypvt[-1]);} break;
case 162:
# line 380 "icon.g"
{yyval = INVOKNODE(yypvt[-1],yypvt[-2],LISTNODE(yypvt[-1],EMPTYNODE));} break;
case 163:
# line 381 "icon.g"
{
#ifdef XPX
		pushcs(1);
#endif XPX
		} break;
case 164:
# line 385 "icon.g"
{
#ifdef XPX
		popcs();
#else XPX
                 err("missing semicolon or operator", 0);
#endif XPX
		} break;
case 165:
# line 391 "icon.g"
{
		yyval = INVOKNODE(yypvt[-4],yypvt[-5],LISTNODE(yypvt[-4],yypvt[-2]));
		} break;
case 166:
# line 394 "icon.g"
{
#ifdef XPX
		pushcs(0);
#endif XPX
		} break;
case 167:
# line 398 "icon.g"
{
#ifdef XPX
		popcs();
#endif XPX
		} break;
case 168:
# line 402 "icon.g"
{
		yyval = INVOKNODE(yypvt[-4],yypvt[-5],yypvt[-2]);
		} break;
case 169:
# line 405 "icon.g"
{yyval = FIELDNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 170:
# line 406 "icon.g"
{yyval = KEYNODE(yypvt[-1], K_FAIL);} break;
case 171:
# line 407 "icon.g"
{
		if ((i = klocate(STR0(yypvt[-0]))) == NULL)
			err("invalid keyword",STR0(yypvt[-0]));
		yyval = KEYNODE(yypvt[-1], i);
		} break;
case 172:
# line 413 "icon.g"
{yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
case 173:
# line 414 "icon.g"
{yyval = LOOPNODE(yypvt[-3],yypvt[-2],yypvt[-0]);} break;
case 174:
# line 416 "icon.g"
{yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
case 175:
# line 417 "icon.g"
{yyval = LOOPNODE(yypvt[-3],yypvt[-2],yypvt[-0]);} break;
case 176:
# line 419 "icon.g"
{yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
case 177:
# line 420 "icon.g"
{yyval = LOOPNODE(yypvt[-3],yypvt[-2],yypvt[-0]);} break;
case 178:
# line 422 "icon.g"
{yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
case 179:
# line 424 "icon.g"
{yyval = RETNODE(yypvt[-0],EMPTYNODE);} break;
case 180:
# line 425 "icon.g"
{yyval = RETNODE(yypvt[-1],yypvt[-0]);} break;
case 181:
# line 426 "icon.g"
{yyval = SUSPNODE(yypvt[-1],yypvt[-0]);} break;
case 182:
# line 428 "icon.g"
{yyval = IFNODE(yypvt[-3],yypvt[-2],yypvt[-0],EMPTYNODE);} break;
case 183:
# line 429 "icon.g"
{yyval = IFNODE(yypvt[-5],yypvt[-4],yypvt[-2],yypvt[-0]);} break;
case 184:
# line 431 "icon.g"
{yyval = CASENODE(yypvt[-5],yypvt[-4],yypvt[-1]);} break;
case 186:
# line 434 "icon.g"
{yyval = CLISTNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 187:
# line 436 "icon.g"
{yyval = CCLSNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 188:
# line 437 "icon.g"
{yyval = CCLSNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
case 189:
# line 439 "icon.g"
{
#ifdef XPX
		yyval = cswitch(yypvt[-0],yypvt[-0]);
#endif XPX
		} break;
case 190:
# line 444 "icon.g"
{
#ifdef XPX
		yyval = ELISTNODE(yypvt[-1],yypvt[-2],cswitch(yypvt[-0],yypvt[-1]));
#else XPX
                yyval = ELISTNODE(yypvt[-1],yypvt[-2],yypvt[-0]);
#endif XPX
		} break;
case 191:
# line 452 "icon.g"
{VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_INTLIT,0);} break;
case 192:
# line 453 "icon.g"
{VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_REALLIT,0);} break;
case 193:
# line 454 "icon.g"
{VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_STRLIT,VAL1(yypvt[-0]));} break;
case 194:
# line 455 "icon.g"
{VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_CSETLIT,VAL1(yypvt[-0]));} break;
case 195:
# line 457 "icon.g"
{yyval = (nodeptr)SECTNODE(yypvt[-2],yypvt[-5],yypvt[-3],yypvt[-1]);} break;
case 200:
# line 464 "icon.g"
{yyval = SLISTNODE(yypvt[-1], yypvt[-2], yypvt[-0]);} break;
		}
		goto yystack;  /* stack new state and value */

	}