V8/usr/src/cmd/efl/gram.c

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

# define EOS 1
# define NEWLINE 2
# define LPAR 3
# define RPAR 4
# define LBRACK 5
# define RBRACK 6
# define COMMA 7
# define COLON 8
# define ASGNOP 9
# define REPOP 10
# define OR 11
# define AND 12
# define NOT 13
# define RELOP 14
# define ADDOP 15
# define MULTOP 16
# define POWER 17
# define DOUBLEADDOP 18
# define ARROW 19
# define QUALOP 20
# define NAME 21
# define OPTNAME 22
# define STRUCTNAME 23
# define COMNAME 24
# define CONST 25
# define COMMON 26
# define INTERNAL 27
# define EXTERNAL 28
# define AUTOMATIC 29
# define STATIC 30
# define VALUE 31
# define PROCEDURE 32
# define BLOCKDATA 33
# define OPTION 34
# define INCLUDE 35
# define DEFINE 36
# define END 37
# define INTEGER 38
# define REAL 39
# define COMPLEX 40
# define LOGICAL 41
# define CHARACTER 42
# define STRUCT 43
# define FIELD 44
# define ARRAY 45
# define DIMENSION 46
# define LONG 47
# define SHORT 48
# define INITIAL 49
# define EQUIVALENCE 50
# define IMPLICIT 51
# define DEBUG 52
# define IF 53
# define ELSE 54
# define WHILE 55
# define UNTIL 56
# define REPEAT 57
# define DO 58
# define FOR 59
# define SWITCH 60
# define CASE 61
# define DEFAULT 62
# define GO 63
# define GOTO 64
# define BREAK 65
# define EXIT 66
# define NEXT 67
# define RETURN 68
# define CONTINUE 69
# define CALL 70
# define DOUBLE 71
# define PRECISION 72
# define DOUBLEPRECISION 73
# define SIZEOF 74
# define LENGTHOF 75
# define LETTER 76
# define READ 77
# define WRITE 78
# define READBIN 79
# define WRITEBIN 80
# define TRUE 81
# define FALSE 82
# define ESCAPE 83

# line 85 "gram.in"
#include "defs"
ptr bgnexec(), addexec(), bgnproc(), mkvar(), mkcomm(), mkstruct(), mkarrow();
ptr mkiost(), mkioitem(), mkiogroup(), mkformat();
ptr funcinv(), extrfield(), typexpr(), strucelt(), mkfield();
ptr esizeof(), elenof(), mkilab();
ptr ifthen(), doloop();
struct varblock *subscript();

# line 95 "gram.in"
typedef union  { int ival; ptr pval; char *cval; } YYSTYPE;

# line 124 "gram.in"
extern int prevv;
extern YYSTYPE prevl;
ptr p;
ptr procattrs;
int i,n;
static int imptype;
static int ininit =NO;

#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

# line 1009 "gram.in"


setyydeb()
{
#ifdef YYDEBUG
	yydebug = 1;
#endif
}
short yyexca[] ={
-1, 0,
	0, 1,
	-2, 175,
-1, 1,
	0, -1,
	-2, 0,
-1, 80,
	9, 152,
	19, 152,
	20, 152,
	-2, 178,
-1, 165,
	19, 152,
	20, 152,
	-2, 179,
-1, 262,
	6, 191,
	-2, 14,
-1, 351,
	14, 0,
	-2, 144,
	};
# define YYNPROD 284
# define YYLAST 1451
short yyact[]={

 225, 247, 408, 431, 412, 124, 409, 337, 223, 197,
 157,  20, 258, 224, 185, 156,  19,   6, 140,   3,
  20, 155,  61, 139, 286,  19,  59, 314,   5, 131,
 297, 152, 212,  44, 182, 198,  37,  34,  36,  32,
  33,  35,  21,  22,  16, 191,  14, 135,  38,  39,
  40,  41,  26,  45,  27,  30,  31,  46,  47,  10,
  12,  11,  72, 227, 121,  77,  64,  17,  20, 446,
  66,  60, 413,  19, 179, 189, 425,  58, 195, 196,
 338,  42, 149,  43, 141,  65,  80,  73, 109, 129,
  78,  87,  71, 199, 400, 399, 170, 200, 172, 178,
 167, 175, 176, 177, 154, 211, 233, 305, 120, 315,
 203, 325, 218, 243, 326, 137,  62, 220, 218,  68,
 447, 148, 147, 356,  74, 209, 222, 242, 199, 123,
 204, 256, 200, 201, 202, 213, 229, 216, 215, 214,
 217, 213,  68, 216, 215, 214, 217, 134,  62,  73,
 169, 245, 165,  20, 164,  80, 166, 109,  19,  78,
  87, 278,  76, 132, 260, 133, 273, 161, 201, 202,
 144, 148, 147, 163, 382, 267, 250, 263, 160, 265,
 271, 272, 273, 148, 147, 259, 433, 280, 394, 282,
 148, 147, 228, 268, 269, 270, 239, 279,  69, 287,
 272, 273, 289, 235, 250, 127, 295, 296, 298, 298,
  58, 303, 240, 291, 292, 238, 262, 146, 128,  18,
  65, 252, 251, 344, 343, 449, 307, 148, 147,  55,
 310, 460, 429, 417, 253, 254, 434, 264, 283, 300,
 293,  20, 329,  20, 304, 173,  19,  20,  19, 319,
 322, 321,  19, 171, 372, 428, 316, 330, 429, 317,
 327, 323, 281, 141, 392, 377,   7, 393, 378, 367,
 342, 248, 348, 349, 350, 351, 352, 353, 354, 355,
 335, 364, 143, 154, 365, 357, 360, 234, 339, 363,
 462, 340, 333, 463, 287, 334, 277, 275, 276, 159,
 274, 271, 272, 273, 274, 271, 272, 273, 373, 376,
 255, 158, 375, 159, 380, 145, 302, 371, 366, 358,
 361, 276, 301, 274, 271, 272, 273, 379, 418, 389,
 423, 236, 396, 390, 420, 391, 237, 277, 275, 276,
 414, 274, 271, 272, 273, 398, 134, 416, 331, 397,
 415, 332, 451, 395, 277, 275, 276, 381, 274, 271,
 272, 273, 369, 259, 312, 277, 275, 276, 410, 274,
 271, 272, 273, 279, 445, 407, 279, 436, 465, 427,
 250, 150, 419, 250, 277, 275, 276, 421, 274, 271,
 272, 273, 125, 406,  20, 125, 403, 306, 285,  19,
 284, 424, 422, 308,  74, 122, 277, 275, 276, 249,
 274, 271, 272, 273, 219, 210, 207, 206, 435,  48,
 205, 439, 437,  50, 438,  52,  53, 162, 442, 126,
 410, 125, 441, 440, 444, 388, 443, 410, 448, 450,
 387, 386, 385, 383, 347, 453, 456, 345, 457, 458,
 150,  49, 414, 459,  51, 411, 142,   9, 461, 454,
 188, 370, 186, 208, 464, 187, 107, 192,  68,  99,
  44,  97, 180,  37,  34,  36,  32,  33,  35,  96,
 426,  95, 266, 174,  88,  38,  39,  40,  41,  26,
  45,  27,  30,  31,  46,  47, 455,  86,  84, 341,
 168, 452, 277, 275, 276, 116, 274, 271, 272, 273,
 277, 275, 276, 261, 274, 271, 272, 273,  42,  82,
  43, 193, 194, 150, 113, 114, 111, 112, 195, 196,
 384, 230, 328, 188, 221, 186, 226, 336, 187, 153,
 192,  68, 241,  44,  70, 180,  37,  34,  36,  32,
  33,  35, 151,  63, 136,  54,   8,  75,  38,  39,
  40,  41,  26,  45,  27,  30,  31,  46,  47, 430,
  13, 277, 275, 276, 404, 274, 271, 272, 273, 232,
 277, 275, 276, 231, 274, 271, 272, 273,   4,   2,
 102,  42, 432,  43, 193, 194, 110, 113, 114, 111,
 112, 195, 196, 150, 181,  29,  23, 288,  25, 294,
 299, 290, 346, 188,  85, 186,  15, 246, 187,  67,
 192,  68, 184,  44, 183, 180,  37,  34,  36,  32,
  33,  35,  28,  56, 309,  24, 318, 138,  38,  39,
  40,  41,  26,  45,  27,  30,  31,  46,  47, 401,
 130, 257, 320,   1,   0, 277, 275, 276,   0, 274,
 271, 272, 273,   0,   0,   0,   0,   0,   0,   0,
   0,  42,   0,  43, 193, 194,   0, 113, 114, 111,
 112, 195, 196,   0, 150, 244,   0,   0,   0,   0,
   0,   0,   0,   0, 188,   0, 186,   0,   0, 187,
   0, 192,  68, 190,  44,   0, 180,  37,  34,  36,
  32,  33,  35,   0,   0,   0,   0,   0,   0,  38,
  39,  40,  41,  26,  45,  27,  30,  31,  46,  47,
 374,   0,   0,   0,   0,   0, 277, 275, 276,   0,
 274, 271, 272, 273,   0,   0,   0,   0,   0,   0,
   0,   0,  42,   0,  43, 193, 194, 150, 113, 114,
 111, 112, 195, 196,   0,   0,   0, 188,   0, 186,
   0,   0, 187,   0, 192,  68, 190,  44,   0, 180,
  37,  34,  36,  32,  33,  35,   0,   0,   0,   0,
   0,   0,  38,  39,  40,  41,  26,  45,  27,  30,
  31,  46,  47, 368,   0,   0,   0,   0,   0, 277,
 275, 276,   0, 274, 271, 272, 273,   0,   0,   0,
   0,   0,   0,   0,   0,  42,   0,  43, 193, 194,
   0, 113, 114, 111, 112, 195, 196, 150,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 188,   0, 186,
   0,   0, 187,   0, 192,  68, 190,  44,   0, 180,
  37,  34,  36,  32,  33,  35,   0,   0,   0,   0,
   0,   0,  38,  39,  40,  41, 362,  45,  27,  30,
  31,  46,  47, 313,   0, 277, 275, 276, 311, 274,
 271, 272, 273,   0, 277, 275, 276,   0, 274, 271,
 272, 273,   0,   0,   0,  42,   0,  43, 193, 194,
   0, 113, 114, 111, 112, 195, 196,   0, 150,   0,
   0,   0,   0,   0,   0,   0,   0,   0, 188,   0,
 186,   0,   0, 187,   0, 192,  68, 190,  44,   0,
 180,  37,  34,  36,  32,  33,  35,   0,   0,   0,
   0,   0,   0,  38,  39,  40,  41, 359,  45,  27,
  30,  31,  46,  47,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  42,   0,  43, 193,
 194,   0, 113, 114, 111, 112, 195, 196,  44,   0,
   0,  37,  34,  36,  32,  33,  35,   0,   0,   0,
 190,  14,   0,  38,  39,  40,  41,  26,  45,  27,
  30,  31,  46,  47,  10,  12,  11,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  83,
  57,   0,   0,   0,   0,   0,  42,   0,  43,   0,
   0,   0,  79,   0,   0,  91,  62,   0,  44,  92,
   0,  37,  34,  36,  32,  33,  35,  21,  22,   0,
   0,   0,   0,  38,  39,  40,  41,  26,  45,  27,
  30,  31,  46,  47,   0,   0,  90, 104,   0, 106,
 190, 105, 116, 115, 108,  94,  93, 101, 100, 118,
 119, 117,  98, 103,  81,   0,  42,   0,  43,   0,
   0, 113, 114, 111, 112,   0,  62,  89,  44,   0,
   0,  37,  34,  36,  32,  33,  35,   0,   0,   0,
   0,   0,   0,  38,  39,  40,  41,  26,  45,  27,
  30,  31,  46,  47,  10,  12,  11,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  44,   0,   0,
  37,  34,  36,  32,  33,  35,  42,   0,  43,   0,
   0, 190,  38,  39,  40,  41,  26,  45,  27,  30,
  31,  46,  47,  10,  12,  11,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 150, 405,   0,
   0,   0,   0,   0,   0,  42,   0,  43,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  44,   0,   0,
  37,  34,  36,  32,  33,  35,   0,   0,   0,   0,
   0, 324,  38,  39,  40,  41,  26,  45,  27,  30,
  31,  46,  47,   0,   0,   0, 150, 402,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  42,  44,  43,   0,  37,
  34,  36,  32,  33,  35,   0,   0,   0,   0,   0,
   0,  38,  39,  40,  41,  26,  45,  27,  30,  31,
  46,  47,   0,   0,   0,   0,   0,  57,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  62,  42,  44,  43,   0,  37,  34,
  36,  32,  33,  35,   0,   0,   0,   0,   0,   0,
  38,  39,  40,  41,  26,  45,  27,  30,  31,  46,
  47,   0,   0,   0, 150,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  42,  44,  43,   0,  37,  34,  36,
  32,  33,  35,   0,   0,   0,   0,   0,   0,  38,
  39,  40,  41,  26,  45,  27,  30,  31,  46,  47,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  44,   0,   0,  37,  34,  36,  32,  33,  35,   0,
   0,   0,  42,   0,  43,  38,  39,  40,  41,  26,
  45,  27,  30,  31,  46,  47,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  42,   0,
  43 };
short yypact[]={

  10,-1000, 450, 450, 453, 450, 450,-1000,-1000,1035,
  98,-1000, 121, 141,-1000,1034,-1000,-1000,-1000, 402,
 402,-1000,-1000,-1000,-1000,-1000, 428, 426,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 202,-1000,-1000,
-1000,-1000,  17,-1000,-1000, 142,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,  93,-1000,-1000,1095,-1000, 275,
-1000, 402,-1000, 308,-1000, 208,-1000, 378,-1000,1377,
 304, 292,-1000, 171,  98, 424,-1000,-1000, 164,  98,
-1000,  98,-1000,-1000,1034,-1000,-1000,-1000,-1000,-1000,
-1000, 245,-1000, 237,-1000,-1000,-1000,-1000, 754,-1000,
 107, 109, 417,-1000, 414,-1000, 413,-1000, 412,-1000,
  80,-1000,-1000,-1000,-1000, 411, 754,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000, 754, 520,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,  69, 280, 194, 330,-1000,
-1000, 275,1292,  95, 187,  98,-1000, 106,  90,-1000,
 681, 264,-1000, 406,1377,-1000,-1000, 402, 401,  98,
  98, 306, 127, 754, 102,-1000, 102,-1000,-1000,-1000,
-1000,-1000, 229,-1000, 754,-1000,-1000,-1000, 355, 152,
-1000,-1000,1341,-1000,-1000,-1000, 754,  98, 754,-1000,
-1000,-1000,  -3, 397, 395,-1000,-1000,-1000, 600,-1000,
-1000, 754,-1000,  72, 107, 754, 754, 754, 754, 315,
 754,  86,  82,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
 396, 520, 884, 360,-1000, 875,-1000,  85,  85, 341,
1134,-1000, 975,-1000,-1000,  89,1095,-1000,-1000,-1000,
-1000, 754, 378,-1000,-1000, 344, 288,-1000,1377,   4,
-1000,-1000,-1000, 102, 102,-1000,-1000, 284,-1000,-1000,
 355,-1000,-1000,-1000,-1000,-1000, 216, 355, 446, 443,
-1000, 754, 754, 754, 754, 754, 754, 754, 754,-1000,
 149, 102, 290, 103, 915, 834,-1000, 355, 754, 355,
 277,-1000,-1000, 600, 262, 355, 799, 358, 355,-1000,
 247,-1000,-1000, 726,-1000,-1000,-1000,-1000, 754, 261,
-1000,-1000,-1000, 520, 353,-1000, 158,-1000, 442,-1000,
-1000, 441, 440, 439, 434,-1000,-1000,-1000, 754, 355,
-1000,-1000, 754,-1000, 754,-1000, 260,-1000, 173,-1000,
  95, 326,-1000,-1000, 754,  41,-1000,  38, 184, 149,
 149, 165, 309, 290, 355, 355,-1000, 645,1243, 392,
 570,1194, 389, 355,-1000,  72,-1000, 447,-1000,-1000,
-1000, 346,-1000, 226,-1000,-1000, 327,-1000, 520,-1000,
 355,-1000,-1000,1134, 324,-1000,-1000,-1000,-1000, 355,
 355, 355,-1000,   4,   0,-1000,-1000,-1000, 355,-1000,
 376,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 251,-1000,
 561,-1000, 228, 335,-1000,-1000,-1000,-1000,-1000,-1000,
 754,-1000,-1000, 432,-1000,-1000,-1000, 754,-1000, 447,
-1000,-1000, 371,  44,-1000, 217, 447, 348,-1000, 500,
-1000,-1000, 492,-1000,-1000, 754,-1000,-1000,-1000,-1000,
 225,-1000,-1000,-1000,-1000,-1000, 286,-1000,-1000,-1000,
-1000,-1000,-1000, 754, 374,-1000 };
short yypgo[]={

   0, 653,  18, 652,  17,  47, 219, 651,  12,  22,
  27, 650,  23, 637, 636,  34,  92, 456,  67, 635,
 108,  64, 634,   8,  13, 633,  26,  71,  21,  15,
 632,  29,   0,  74,  14,  75, 624, 622,  70, 619,
 617, 616, 614, 612, 611,  35,  24,  72,  30, 610,
 609,   2,   6,   4,   3, 608, 606, 605, 604,  45,
 596,  32, 592, 590,   9, 589, 419, 588, 583,  28,
 579, 570, 557, 556, 555, 554,   5, 553, 186, 552,
   1, 544,  66, 542,  31, 539, 537,   7,  62,  10,
 534, 532,  63, 531, 530,  65, 519, 513, 500, 499,
 498, 497, 484, 483, 482, 481, 480, 479, 471, 469,
 466, 463, 461, 377 };
short yyr1[]={

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

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

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

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

		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 */

			   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 1:
# line 138 "gram.in"
{ graal = PARSEOF; } break;
case 2:
# line 140 "gram.in"
{ graal = PARSOPT; } break;
case 3:
# line 142 "gram.in"
{ graal = PARSDCL; doinits(yypvt[-1].pval);  frchain( & yypvt[-1].pval); } break;
case 4:
# line 144 "gram.in"
{ endproc(); graal = PARSPROC; } break;
case 5:
# line 146 "gram.in"
{ graal = PARSDEF; } break;
case 6:
# line 148 "gram.in"
{ graal = PARSERR; } break;
case 7:
# line 150 "gram.in"
{ graal = PARSERR;
		  errmess("Syntax error", "", "");
		} break;
case 8:
# line 155 "gram.in"
{ eofneed = 1; } break;
case 9:
# line 158 "gram.in"
{ if(!dclsect)
			warn("declaration amid executables");
		    yyval.pval = bgnexec();
		   TEST fprintf(diagfile,"stat: dcl\n");
		  doinits(yypvt[-1].pval); frchain( & yypvt[-1].pval); } break;
case 10:
# line 164 "gram.in"
{ if(dclsect && yypvt[-1].pval->tag!=TSTFUNCT)
			dclsect = 0;
		    TEST fprintf(diagfile, "stat: exec\n"); } break;
case 11:
# line 168 "gram.in"
{ yyval.pval = bgnexec(); } break;
case 12:
# line 170 "gram.in"
{ yyerrok;
		  errmess("Syntax error", "", "");
		  yyval.pval = bgnexec();
		} break;
case 13:
# line 177 "gram.in"
{ yyval.pval = bgnexec(); } break;
case 14:
# line 178 "gram.in"
{ thisexec->copylab = 1; } break;
case 15:
# line 179 "gram.in"
{ yyval.pval = addexec(); thisexec->copylab = 0; } break;
case 16:
# line 183 "gram.in"
{ procname = 0; thisargs = 0;
		  if(procclass == 0) procclass = PRMAIN;
		  goto proctype;
		} break;
case 17:
# line 188 "gram.in"
{ thisargs = 0; goto proctype; } break;
case 18:
# line 190 "gram.in"
{ thisargs = 0; goto proctype; } break;
case 19:
# line 192 "gram.in"
{ thisargs = yypvt[-1].pval;
	proctype:
		if(procattrs)
			if(procname == 0)
				dclerr("attributes on unnamed procedure", "");
			else	{
				attvars(procattrs, mkchain(procname,CHNULL));
				procclass = PRFUNCT;
				}
		fprintf(diagfile, "Procedure %s:\n", procnm() );
		if(verbose)
			fprintf(diagfile, "    Pass 1\n");
		} break;
case 20:
# line 208 "gram.in"
{ procname = mkvar(yypvt[-0].pval);
		  extname(procname);
		} break;
case 21:
# line 214 "gram.in"
{ procattrs = 0; } break;
case 22:
# line 216 "gram.in"
{ procattrs = yypvt[-1].pval;
		  if(procclass == 0) procclass = PRFUNCT;
		} break;
case 23:
# line 222 "gram.in"
{ yyval.pval = bgnproc(); procclass = 0; } break;
case 24:
# line 224 "gram.in"
{ yyval.pval = bgnproc(); procclass = PRBLOCK; } break;
case 25:
# line 228 "gram.in"
{ yyval.pval = mkchain(yypvt[-0].pval,CHNULL); } break;
case 26:
# line 230 "gram.in"
{ hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL) ); } break;
case 27:
# line 234 "gram.in"
{ if(yypvt[-0].pval->vclass == CLUNDEFINED)
			yypvt[-0].pval->vclass = CLARG;
		  else dclerr("argument already used", yypvt[-0].pval->sthead->namep);
		} break;
case 28:
# line 240 "gram.in"
{ optneed = 0; } break;
case 29:
# line 244 "gram.in"
{ if(blklevel > 0)
			{
			execerr("Option statement inside procedure", "");
			execerr("procedure %s terminated prematurely", procnm());
			endproc();
			}
		  optneed = 1;
		  } break;
case 33:
# line 260 "gram.in"
{ setopt(yypvt[-0].pval,CNULL); cfree(yypvt[-0].pval); } break;
case 34:
# line 262 "gram.in"
{ setopt(yypvt[-2].pval,yypvt[-0].pval); cfree(yypvt[-2].pval); cfree(yypvt[-0].pval); } break;
case 35:
# line 264 "gram.in"
{ setopt(yypvt[-2].pval,yypvt[-0].pval->leftp); cfree(yypvt[-2].pval); cfree(yypvt[-0].pval); } break;
case 36:
# line 268 "gram.in"
{ defneed = 1; } break;
case 37:
# line 272 "gram.in"
{ if(thisctl->subtype != STPROC)
			execerr("control stack not empty upon END", "");
		  exnull();
		  popctl();
		} break;
case 38:
# line 280 "gram.in"
{ igeol=1; /* continue past newlines  */ } break;
case 41:
# line 285 "gram.in"
{ yyval.pval = hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
case 44:
# line 293 "gram.in"
{ attvars(yypvt[-1].pval,yypvt[-0].pval); yyval.pval = yypvt[-0].pval; } break;
case 45:
# line 295 "gram.in"
{ attvars(yypvt[-3].pval,yypvt[-1].pval); yyval.pval = yypvt[-1].pval; } break;
case 46:
# line 297 "gram.in"
{ yyval.pval = 0; } break;
case 47:
# line 299 "gram.in"
{ yyval.pval = 0; } break;
case 48:
# line 301 "gram.in"
{ yyval.pval = 0; } break;
case 49:
# line 303 "gram.in"
{ mkequiv(yypvt[-0].pval); yyval.pval = 0; } break;
case 52:
# line 309 "gram.in"
{ yyval.pval = hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
case 55:
# line 316 "gram.in"
{ininit = YES; } break;
case 56:
# line 317 "gram.in"
 { ininit = NO;  mkinit(yypvt[-3].pval,yypvt[-0].pval);  frexpr(yypvt[-3].pval); } break;
case 59:
# line 325 "gram.in"
{ setimpl(imptype, 'a', 'z'); } break;
case 61:
# line 330 "gram.in"
{ imptype = yypvt[-0].pval->attype; cfree(yypvt[-0].pval); } break;
case 64:
# line 338 "gram.in"
{ setimpl(imptype, yypvt[-0].ival, yypvt[-0].ival); } break;
case 65:
# line 340 "gram.in"
{ setimpl(imptype, yypvt[-2].ival, yypvt[-0].ival); } break;
case 68:
# line 348 "gram.in"
{ mkequiv(yypvt[-1].pval); } break;
case 69:
# line 352 "gram.in"
{ yyval.pval = mkchain(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break;
case 70:
# line 354 "gram.in"
{ yyval.pval = hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break;
case 72:
# line 358 "gram.in"
{ attatt(yypvt[-1].pval,yypvt[-0].pval); } break;
case 73:
# line 361 "gram.in"
{ yypvt[-1].pval->atdim = yypvt[-0].pval; } break;
case 74:
# line 362 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->atdim = yypvt[-0].pval; } break;
case 75:
# line 365 "gram.in"
{ yyval.pval = 0; } break;
case 77:
# line 369 "gram.in"
{ inbound = 1; } break;
case 78:
# line 370 "gram.in"
{ inbound = 0;  yyval.pval = arrays = mkchain(yypvt[-1].pval,arrays); } break;
case 80:
# line 374 "gram.in"
{ hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
case 81:
# line 378 "gram.in"
{
		yyval.pval = ALLOC(dimblock);
		yyval.pval->lowerb = 0;
		yyval.pval->upperb = yypvt[-0].pval;
		} break;
case 82:
# line 384 "gram.in"
{
		yyval.pval = ALLOC(dimblock);
		yyval.pval->lowerb = yypvt[-2].pval;
		yyval.pval->upperb = yypvt[-0].pval;
		} break;
case 84:
# line 392 "gram.in"
{ yyval.pval = 0; } break;
case 85:
# line 395 "gram.in"
{ yyval.pval = 0; } break;
case 88:
# line 400 "gram.in"
{ hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
case 89:
# line 404 "gram.in"
{
		if(yypvt[-0].pval!=0)
			if(yypvt[-1].pval->vdim==0)
				yypvt[-1].pval->vdim = yypvt[-0].pval;
			else if(!eqdim(yypvt[-0].pval,yypvt[-1].pval->vdim))
				dclerr("multiple dimension", yypvt[-1].pval->namep);
		yyval.pval = mkchain(yypvt[-1].pval,CHNULL);
		} break;
case 90:
# line 412 "gram.in"
{ ininit = YES; } break;
case 91:
# line 413 "gram.in"
{
		ininit = NO;
		if(yypvt[-2].ival!=OPASGN)
			dclerr("illegal initialization operator", yypvt[-4].pval->sthead->namep);
		if(yypvt[-3].pval!=0)
			if(yypvt[-4].pval->vdim==0)
				yypvt[-4].pval->vdim = yypvt[-3].pval;
			else if(!eqdim(yypvt[-3].pval,yypvt[-4].pval->vdim))
				dclerr("multiple dimension", yypvt[-4].pval->sthead->namep);
		if(yypvt[-0].pval!=0 && yypvt[-4].pval->vinit!=0)
			dclerr("multiple initialization", yypvt[-4].pval->sthead->namep);
		yypvt[-4].pval->vinit = yypvt[-0].pval;
		yyval.pval = mkchain(yypvt[-4].pval,CHNULL);
		} break;
case 92:
# line 430 "gram.in"
{ yyval.pval = mkvar(yypvt[-0].pval); } break;
case 94:
# line 435 "gram.in"
{ attatt(yypvt[-1].pval,yypvt[-0].pval); } break;
case 96:
# line 440 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->atdim = yypvt[-0].pval; } break;
case 97:
# line 444 "gram.in"
{
		yyval.pval = ALLOC(atblock);
		if(yypvt[-0].ival == CLEXT)
			yyval.pval->atext = 1;
		yyval.pval->atclass = yypvt[-0].ival;
		} break;
case 98:
# line 451 "gram.in"
{
		yyval.pval = ALLOC(atblock);
		yyval.pval->atclass = CLCOMMON;
		yyval.pval->atcommon = yypvt[-1].pval;
		} break;
case 99:
# line 457 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->attype = yypvt[-0].ival; } break;
case 100:
# line 459 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->attype = TYCHAR; yyval.pval->attypep = yypvt[-1].pval; } break;
case 101:
# line 461 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->attype = TYFIELD;
		  yyval.pval->attypep = mkfield(yypvt[-1].pval); } break;
case 102:
# line 464 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->attype = TYSTRUCT;
		  yyval.pval->attypep = yypvt[-0].pval; } break;
case 103:
# line 467 "gram.in"
{ yyval.pval = ALLOC(atblock); yyval.pval->atprec = yypvt[-0].ival; } break;
case 104:
# line 470 "gram.in"
{ yyval.ival = CLAUTO;
			  fprintf(diagfile,"AUTOMATIC not yet implemented\n"); } break;
case 105:
# line 472 "gram.in"
{ yyval.ival = CLSTAT; } break;
case 106:
# line 473 "gram.in"
{ yyval.ival = CLSTAT; } break;
case 107:
# line 474 "gram.in"
{ yyval.ival = CLVALUE;
			  fprintf(diagfile, "VALUE not yet implemented\n");  } break;
case 108:
# line 476 "gram.in"
{ yyval.ival = CLEXT; } break;
case 109:
# line 480 "gram.in"
{ yyval.pval = yypvt[-1].pval; } break;
case 110:
# line 482 "gram.in"
{ yyval.pval = yypvt[-1].pval; } break;
case 111:
# line 485 "gram.in"
{ comneed = 1; } break;
case 112:
# line 488 "gram.in"
{ yyval.pval = mkcomm(""); } break;
case 114:
# line 492 "gram.in"
{ yyval.ival = TYINT; } break;
case 115:
# line 493 "gram.in"
{ yyval.ival = TYREAL; } break;
case 116:
# line 494 "gram.in"
{ yyval.ival = TYCOMPLEX; } break;
case 117:
# line 495 "gram.in"
{ yyval.ival = TYLOG; } break;
case 118:
# line 497 "gram.in"
{ yyval.ival = TYLREAL; /* holdover from Fortran */ } break;
case 119:
# line 499 "gram.in"
{ yyval.ival = TYLREAL; /* holdover from Fortran */ } break;
case 120:
# line 503 "gram.in"
{ yyval.pval = yypvt[-0].pval->varp; } break;
case 121:
# line 505 "gram.in"
{ yyval.pval = mkstruct(yypvt[-2].pval,yypvt[-0].pval); } break;
case 122:
# line 507 "gram.in"
{ yyval.pval = mkstruct(PNULL,yypvt[-0].pval); } break;
case 123:
# line 511 "gram.in"
{ if(yypvt[-0].pval->varp && yypvt[-0].pval->varp->blklevel<blklevel)
			hide(yypvt[-0].pval);
		  yypvt[-0].pval->tag = TSTRUCT;
		} break;
case 124:
# line 516 "gram.in"
{ if(yypvt[-0].pval->varp)
			if(yypvt[-0].pval->varp->blklevel<blklevel)
				hide(yypvt[-0].pval);
			else dclerr("multiple declaration for type %s", yypvt[-0].pval->namep);
		} break;
case 125:
# line 523 "gram.in"
{ ++instruct; } break;
case 126:
# line 523 "gram.in"
{ --instruct; } break;
case 127:
# line 524 "gram.in"
{ yyval.pval = yypvt[-3].pval; prevv = -1; } break;
case 130:
# line 531 "gram.in"
{ yyval.ival = 1; } break;
case 131:
# line 532 "gram.in"
{ yyval.ival = 0; } break;
case 132:
# line 535 "gram.in"
{ if(yypvt[-0].pval->tag == TCALL)
			yypvt[-0].pval = funcinv(yypvt[-0].pval);
		  if(yypvt[-0].pval->vtype==TYUNDEFINED && yypvt[-0].pval->vext==0)
			impldecl(yypvt[-0].pval);
		  else if(yypvt[-0].pval->tag==TNAME && yypvt[-0].pval->vdcldone==0
			  && yypvt[-0].pval->vext==0 && !inbound)
				dclit(yypvt[-0].pval);
		  if(yypvt[-0].pval->vtype==TYFIELD)
			yyval.pval = extrfield(yypvt[-0].pval);
		} break;
case 134:
# line 547 "gram.in"
{ yyval.pval = mkconst(TYLOG, (yypvt[-0].ival == TRUE ? ".true." : ".false.") ); } break;
case 135:
# line 549 "gram.in"
{ yyval.pval = typexpr(yypvt[-1].pval,yypvt[-0].pval); } break;
case 138:
# line 553 "gram.in"
{ if( !ininit && yypvt[-0].pval->tag== TLIST)
			yyval.pval = compconst(yypvt[-0].pval); 
		  else yypvt[-0].pval->needpar = 1; } break;
case 139:
# line 557 "gram.in"
{ yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
case 140:
# line 559 "gram.in"
{ yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
case 141:
# line 561 "gram.in"
{ yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
case 142:
# line 563 "gram.in"
{ if(yypvt[-1].ival==OPMINUS)
			yyval.pval = mknode(TNEGOP,OPMINUS, yypvt[-0].pval, PNULL);
		  else	yyval.pval = yypvt[-0].pval;  } break;
case 143:
# line 567 "gram.in"
{ yyval.pval =  mknode(TASGNOP,yypvt[-1].ival,yypvt[-0].pval,mkint(1)); } break;
case 144:
# line 569 "gram.in"
{ yyval.pval = mknode(TRELOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
case 145:
# line 571 "gram.in"
{ yyval.pval = mknode(TLOGOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
case 146:
# line 573 "gram.in"
{ yyval.pval = mknode(TLOGOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
case 147:
# line 575 "gram.in"
{ yyval.pval = mknode(TNOTOP,yypvt[-1].ival,yypvt[-0].pval,PNULL); } break;
case 148:
# line 577 "gram.in"
{ if(yypvt[-2].pval->tag == TCALL)
			{
			exprerr("may not assign to a function", CNULL);
			yyval.pval = errnode();
			}
		  else
			yyval.pval = mknode(TASGNOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval);
		} break;
case 149:
# line 586 "gram.in"
{ yyval.pval = mknode(TREPOP,0,yypvt[-2].pval,yypvt[-0].pval); } break;
case 151:
# line 589 "gram.in"
{ yyval.pval = errnode(); } break;
case 152:
# line 593 "gram.in"
{ if(yypvt[-0].pval->tag==TNAME && yypvt[-0].pval->vdcldone==0 &&
			yypvt[-0].pval->vsubs==0 && yypvt[-0].pval->vext==0 && !inbound)
				dclit(yypvt[-0].pval);
		} break;
case 154:
# line 601 "gram.in"
{
		if(yypvt[-0].pval->tag!=TLIST)
			yypvt[-0].pval = mknode(TLIST,0, mkchain(yypvt[-0].pval,CHNULL), PNULL);
		if(yypvt[-1].pval->vdim)
			{
			if(yypvt[-1].pval->vdcldone==0 && yypvt[-1].pval->vext==0)
				dclit(yypvt[-1].pval);
			yyval.pval = subscript(yypvt[-1].pval,yypvt[-0].pval);
			}
		else	yyval.pval = mkcall(yypvt[-1].pval,yypvt[-0].pval);
		} break;
case 155:
# line 613 "gram.in"
{ yyval.pval = strucelt(yypvt[-2].pval,yypvt[-0].pval); } break;
case 156:
# line 615 "gram.in"
{ if(yypvt[-0].pval->tag != TLIST)
			yypvt[-0].pval = mknode(TLIST,0, mkchain(yypvt[-0].pval,CHNULL), PNULL);
		  yyval.pval = subscript(strucelt(yypvt[-3].pval,yypvt[-1].pval), yypvt[-0].pval);
		} break;
case 157:
# line 620 "gram.in"
{ yyval.pval = mkarrow(yypvt[-2].pval,yypvt[-0].pval); } break;
case 158:
# line 624 "gram.in"
{ if(yypvt[-0].pval->varp == 0) mkvar(yypvt[-0].pval);
		  if(inbound)
			  yypvt[-0].pval->varp->vadjdim = 1;
		  yyval.pval = cpexpr(yypvt[-0].pval->varp); } break;
case 159:
# line 631 "gram.in"
{ yyval.pval = mknode(TLIST, 0, PNULL, PNULL); } break;
case 160:
# line 633 "gram.in"
{ yyval.pval = yypvt[-1].pval; } break;
case 161:
# line 635 "gram.in"
{ yyval.pval = mknode(TLIST,0,yypvt[-1].pval,PNULL); } break;
case 162:
# line 639 "gram.in"
{ yyval.pval = mkchain(yypvt[-2].pval, mkchain(yypvt[-0].pval, CHNULL) ); } break;
case 163:
# line 641 "gram.in"
{ hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL) ); } break;
case 164:
# line 645 "gram.in"
{ yyval.pval = esizeof(yypvt[-1].pval->vtype, yypvt[-1].pval->vtypep, yypvt[-1].pval->vdim);
		  frexpr(yypvt[-1].pval); } break;
case 165:
# line 648 "gram.in"
{ if(yypvt[-1].pval->attype==TYREAL && yypvt[-1].pval->atprec)
			yypvt[-1].pval->attype = TYLREAL;
		  yyval.pval = esizeof(yypvt[-1].pval->attype, yypvt[-1].pval->attypep, yypvt[-1].pval->atdim);
		  cfree(yypvt[-1].pval);
		} break;
case 166:
# line 654 "gram.in"
{ yyval.pval = mkint(tailor.ftnsize[FTNINT]/tailor.ftnchwd); } break;
case 167:
# line 658 "gram.in"
{ yyval.pval = elenof(yypvt[-1].pval->vtype, yypvt[-1].pval->vtypep, yypvt[-1].pval->vdim);
		  frexpr(yypvt[-1].pval); } break;
case 168:
# line 661 "gram.in"
{ yyval.pval = elenof(yypvt[-1].pval->attype, yypvt[-1].pval->attypep, yypvt[-1].pval->atdim);
		  cfree(yypvt[-1].pval);
		} break;
case 169:
# line 665 "gram.in"
{ yyval.pval = mkint(1); } break;
case 171:
# line 670 "gram.in"
{ yyval.ival = yypvt[-1].ival; } break;
case 174:
# line 677 "gram.in"
{ TEST fprintf(diagfile, "exec done\n"); } break;
case 175:
# line 681 "gram.in"
{ yyval.pval = bgnexec();  if(ncases > 0) ncases = 0; } break;
case 176:
# line 685 "gram.in"
{
		if(yypvt[-2].pval->tag==TCALL)
			{
			dclerr("no statement functions in EFL",
				yypvt[-2].pval->sthead->namep);
			frexpr(yypvt[-2].pval);
			frexpr(yypvt[-0].pval);
			}
		else exasgn(yypvt[-2].pval,yypvt[-1].ival,yypvt[-0].pval);
		} break;
case 177:
# line 696 "gram.in"
{ exasgn(yypvt[-0].pval, yypvt[-1].ival, mkint(1) ); } break;
case 178:
# line 698 "gram.in"
{ excall(yypvt[-0].pval); } break;
case 179:
# line 700 "gram.in"
{ excall(yypvt[-0].pval); } break;
case 181:
# line 703 "gram.in"
{ TEST fprintf(diagfile, "exec: { stats }\n");
		  addexec(); } break;
case 182:
# line 706 "gram.in"
{ thisexec->labeled = 1; } break;
case 183:
# line 708 "gram.in"
{ thisexec->uniffable = 1;  popctl(); } break;
case 184:
# line 710 "gram.in"
{ thisexec->brnchend = 1; } break;
case 185:
# line 712 "gram.in"
{ exio(yypvt[-0].pval, 0); } break;
case 186:
# line 714 "gram.in"
{ exnull(); } break;
case 187:
# line 716 "gram.in"
{
		exnull();
		putsii(ICCOMMENT, yypvt[-0].pval);
		cfree(yypvt[-0].pval);
		exnull();
		} break;
case 188:
# line 725 "gram.in"
{ TEST fprintf(diagfile, "exec:empty\n"); } break;
case 189:
# line 727 "gram.in"
{ TEST fprintf(diagfile, "exec: continue\n"); } break;
case 190:
# line 731 "gram.in"
{
		thisexec->copylab = 1;
		++blklevel;
		dclsect = 1;
		ndecl[blklevel] = 0;
		nhid [blklevel] = 0;
		} break;
case 191:
# line 741 "gram.in"
{
		if(ndecl[blklevel]) unhide();
		--blklevel;
		dclsect = 0;
		} break;
case 192:
# line 749 "gram.in"
{ mklabel(yypvt[-2].pval,YES); } break;
case 193:
# line 751 "gram.in"
{ mklabel(mkilab(yypvt[-1].pval),YES); } break;
case 194:
# line 753 "gram.in"
{ mklabel(mkilab(yypvt[-3].pval),YES); } break;
case 195:
# line 755 "gram.in"
{ brkcase(); mkcase(PNULL,1); } break;
case 196:
# line 756 "gram.in"
{ brkcase(); } break;
case 198:
# line 760 "gram.in"
{ mkcase(yypvt[-0].pval,1); } break;
case 199:
# line 762 "gram.in"
{ mkcase(yypvt[-0].pval,1); } break;
case 200:
# line 766 "gram.in"
{ TEST fprintf(diagfile, "if-then-else\n");
		  i = yypvt[-5].pval->brnchend & yypvt[-0].pval->brnchend;
		  addexec();
		  yyval.pval = addexec();
		  thisexec->brnchend = i;
		  TEST fprintf(diagfile, "exec: if(expr) exec else exec\n"); } break;
case 201:
# line 773 "gram.in"
{ TEST fprintf(diagfile, "if-then\n");
		  pushlex = 1;
		  yyclearin;
		  yyval.pval = ifthen();
		  TEST fprintf(diagfile, "exec: if(expr) exec\n"); } break;
case 202:
# line 779 "gram.in"
{ TEST fprintf(diagfile, "repeat done\n"); } break;
case 203:
# line 781 "gram.in"
{ TEST fprintf(diagfile, "exec: control exec\n"); yyval.pval = addexec(); } break;
case 204:
# line 785 "gram.in"
{ pushctl(STIF,yypvt[-1].pval); } break;
case 205:
# line 789 "gram.in"
{
		if(thisctl->breaklab == 0)
			thisctl->breaklab = nextlab();
		/* if(thisexec->prevexec->brnchend == 0) */
			exgoto(thisctl->breaklab);
		exlab( indifs[thisctl->indifn] = nextlab() );
		} break;
case 206:
# line 799 "gram.in"
{ pushctl(STREPEAT, PNULL); } break;
case 207:
# line 803 "gram.in"
{ pushlex = 1;
		  yyclearin;
		  yyval.pval = addexec();
		  exgoto(thisctl->xlab);
		  TEST fprintf(diagfile, " no until\n"); } break;
case 208:
# line 809 "gram.in"
{ yyval.pval = addexec();
		  exnull();
		  exlab( indifs[thisctl->indifn] = nextlab() );
		  exifgo(mknode(TNOTOP,OPNOT,yypvt[-1].pval,PNULL), thisctl->xlab);
		  TEST fprintf(diagfile, "until\n");
		} break;
case 209:
# line 818 "gram.in"
{ exretn(PNULL); } break;
case 210:
# line 820 "gram.in"
{ exretn(yypvt[-0].pval); } break;
case 212:
# line 823 "gram.in"
{ exgoto(yypvt[-0].ival); } break;
case 213:
# line 825 "gram.in"
{ if( !equals(yypvt[-1].pval->namep, "to") )
			execerr("go %s ??\n", yypvt[-1].pval->namep);
		  else	 exgoto(yypvt[-0].ival);
		} break;
case 214:
# line 830 "gram.in"
{ excompgoto(yypvt[-1].pval, yypvt[-0].pval); } break;
case 215:
# line 832 "gram.in"
{ if(!equals(yypvt[-2].pval->namep, "to") )
			execerr("go %s ??\n", yypvt[-2].pval->namep);
		  else excompgoto(yypvt[-1].pval, yypvt[-0].pval);
		} break;
case 216:
# line 839 "gram.in"
{ yyval.pval = yypvt[-1].pval; } break;
case 217:
# line 844 "gram.in"
{ yyval.pval = mkchain(yypvt[-0].ival,CHNULL); } break;
case 218:
# line 846 "gram.in"
{ yyval.pval = hookup(yypvt[-2].pval, mkchain(yypvt[-0].ival,CHNULL) ); } break;
case 220:
# line 851 "gram.in"
{ yyval.pval = yypvt[-0].pval; } break;
case 221:
# line 856 "gram.in"
{ yyval.ival = mklabel(yypvt[-0].pval,NO); } break;
case 222:
# line 858 "gram.in"
{ yyval.ival = mklabel(mkilab(yypvt[-0].pval),NO); } break;
case 223:
# line 860 "gram.in"
{ yyval.ival = mkcase(yypvt[-0].pval,0); } break;
case 224:
# line 862 "gram.in"
{ yyval.ival = mkcase(PNULL,0); } break;
case 225:
# line 866 "gram.in"
{ exbrk(yypvt[-0].ival, PNULL, 0); } break;
case 226:
# line 868 "gram.in"
{ exbrk(yypvt[-1].ival, yypvt[-0].pval, 0); } break;
case 227:
# line 870 "gram.in"
{ exbrk(yypvt[-1].ival, PNULL, yypvt[-0].ival); } break;
case 228:
# line 872 "gram.in"
{ exbrk(yypvt[-2].ival,yypvt[-1].pval,yypvt[-0].ival); } break;
case 229:
# line 874 "gram.in"
{ exbrk(yypvt[-2].ival,yypvt[-0].pval,yypvt[-1].ival); } break;
case 230:
# line 877 "gram.in"
{ yyval.ival = 1; } break;
case 231:
# line 878 "gram.in"
{ yyval.ival = 0; } break;
case 232:
# line 879 "gram.in"
{ yyval.ival = 0; } break;
case 233:
# line 882 "gram.in"
{ yyval.ival = STWHILE; } break;
case 234:
# line 883 "gram.in"
{ yyval.ival = STFOR; } break;
case 235:
# line 884 "gram.in"
{ yyval.ival = STDO; } break;
case 236:
# line 885 "gram.in"
{ yyval.ival = STREPEAT; } break;
case 237:
# line 886 "gram.in"
{ yyval.ival = STSWITCH; } break;
case 238:
# line 887 "gram.in"
{ yyval.ival = STPROC; } break;
case 239:
# line 891 "gram.in"
{ pushctl(STWHILE, yypvt[-1].pval);
		    TEST fprintf(diagfile, "while(expr)\n"); } break;
case 240:
# line 894 "gram.in"
{ exlab(thisctl->xlab);
		  if(yypvt[-1].pval)
			exifgo(mknode(TNOTOP,OPNOT,yypvt[-1].pval,PNULL),
				thisctl->breaklab = nextlab() );
		  else exnull();
		  TEST fprintf(diagfile, "for (forlist)\n"); } break;
case 241:
# line 901 "gram.in"
{ pushctl(STSWITCH,  simple(LVAL,yypvt[-1].pval));
		  TEST fprintf(diagfile, "switch (expr)\n"); } break;
case 242:
# line 904 "gram.in"
{ pushctl(STDO, yypvt[-0].pval);
		  TEST fprintf(diagfile, "do loop\n"); } break;
case 243:
# line 909 "gram.in"
{ yyval.pval = doloop(yypvt[-2].pval, PNULL, PNULL); } break;
case 244:
# line 911 "gram.in"
{ yyval.pval = doloop(yypvt[-1].pval, PNULL, PNULL); } break;
case 245:
# line 913 "gram.in"
{ yyval.pval = doloop(yypvt[-4].pval, yypvt[-2].pval, PNULL); } break;
case 246:
# line 915 "gram.in"
{ yyval.pval = doloop(yypvt[-3].pval, yypvt[-1].pval, PNULL); } break;
case 247:
# line 917 "gram.in"
{ yyval.pval = doloop(yypvt[-6].pval,yypvt[-4].pval,yypvt[-2].pval); } break;
case 248:
# line 919 "gram.in"
{ yyval.pval = doloop(yypvt[-5].pval,yypvt[-3].pval,yypvt[-1].pval); } break;
case 249:
# line 923 "gram.in"
{ pushctl(STFOR, PNULL); } break;
case 250:
# line 927 "gram.in"
{ exgoto(thisctl->xlab);
		  exlab(thisctl->nextlab);
		  addexec();
		  } break;
case 251:
# line 932 "gram.in"
{ exgoto(thisctl->xlab);
		  exlab(thisctl->nextlab);
		  addexec();
		  } break;
case 253:
# line 942 "gram.in"
{ addexec(); } break;
case 254:
# line 944 "gram.in"
{ addexec(); } break;
case 255:
# line 947 "gram.in"
{ yyval.pval = 0; } break;
case 257:
# line 952 "gram.in"
{ if(dbgopt) ++dbglevel; } break;
case 258:
# line 956 "gram.in"
{ if(dbgopt) --dbglevel; } break;
case 259:
# line 960 "gram.in"
{ yyval.pval = mkiost(yypvt[-5].ival, yypvt[-3].pval, yypvt[-1].pval); } break;
case 260:
# line 963 "gram.in"
{ yyval.ival = 0; } break;
case 261:
# line 964 "gram.in"
{ yyval.ival = 1; } break;
case 262:
# line 965 "gram.in"
{ yyval.ival = 2; } break;
case 263:
# line 966 "gram.in"
{ yyval.ival = 3; } break;
case 265:
# line 970 "gram.in"
{ yyval.pval = NULL; } break;
case 266:
# line 973 "gram.in"
{ yyval.pval = mkchain(yypvt[-0].pval,CHNULL); } break;
case 267:
# line 974 "gram.in"
{ hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break;
case 268:
# line 977 "gram.in"
{ yyval.pval = mkioitem(yypvt[-0].pval,CNULL); } break;
case 269:
# line 978 "gram.in"
{ yyval.pval = mkioitem(yypvt[-2].pval,yypvt[-0].pval); } break;
case 270:
# line 979 "gram.in"
{ yyval.pval = mkioitem(PNULL,yypvt[-0].pval); } break;
case 271:
# line 980 "gram.in"
{ yyval.pval = mkiogroup(yypvt[-0].pval, CNULL, PNULL); } break;
case 272:
# line 981 "gram.in"
{ yyval.pval = mkiogroup(yypvt[-0].pval, CNULL, yypvt[-1].pval); } break;
case 273:
# line 982 "gram.in"
{ yyval.pval = mkiogroup(yypvt[-2].pval,yypvt[-0].pval,yypvt[-3].pval); } break;
case 274:
# line 983 "gram.in"
{ yyval.pval = mkiogroup(yypvt[-2].pval,yypvt[-0].pval,PNULL); } break;
case 275:
# line 986 "gram.in"
{ ++iobrlevel; } break;
case 276:
# line 987 "gram.in"
{ --iobrlevel;  yyval.pval = yypvt[-1].pval; } break;
case 277:
# line 991 "gram.in"
{ yyval.pval = mkformat(yypvt[-0].ival, PNULL, PNULL); } break;
case 278:
# line 993 "gram.in"
{ yyval.pval = mkformat(yypvt[-3].ival, yypvt[-1].pval, PNULL); } break;
case 279:
# line 995 "gram.in"
{ yyval.pval = mkformat(yypvt[-5].ival,yypvt[-3].pval,yypvt[-1].pval); } break;
case 280:
# line 997 "gram.in"
{ yyval.pval = yypvt[-1].pval->leftp; frexpblock(yypvt[-1].pval); } break;
case 281:
# line 1000 "gram.in"
{ yyval.ival = yypvt[-1].ival; } break;
case 282:
# line 1003 "gram.in"
{ lettneed = YES;} break;
case 283:
# line 1006 "gram.in"
{ lettneed = NO; } break;
		}
		goto yystack;  /* stack new state and value */

	}