3BSD/usr/src/cmd/f77/gram.c

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

# define SEOS 1
# define SCOMMENT 2
# define SLABEL 3
# define SUNKNOWN 4
# define SHOLLERITH 5
# define SICON 6
# define SRCON 7
# define SDCON 8
# define SBITCON 9
# define SOCTCON 10
# define SHEXCON 11
# define STRUE 12
# define SFALSE 13
# define SNAME 14
# define SNAMEEQ 15
# define SFIELD 16
# define SSCALE 17
# define SINCLUDE 18
# define SLET 19
# define SASSIGN 20
# define SAUTOMATIC 21
# define SBACKSPACE 22
# define SBLOCK 23
# define SCALL 24
# define SCHARACTER 25
# define SCLOSE 26
# define SCOMMON 27
# define SCOMPLEX 28
# define SCONTINUE 29
# define SDATA 30
# define SDCOMPLEX 31
# define SDIMENSION 32
# define SDO 33
# define SDOUBLE 34
# define SELSE 35
# define SELSEIF 36
# define SEND 37
# define SENDFILE 38
# define SENDIF 39
# define SENTRY 40
# define SEQUIV 41
# define SEXTERNAL 42
# define SFORMAT 43
# define SFUNCTION 44
# define SGOTO 45
# define SASGOTO 46
# define SCOMPGOTO 47
# define SARITHIF 48
# define SLOGIF 49
# define SIMPLICIT 50
# define SINQUIRE 51
# define SINTEGER 52
# define SINTRINSIC 53
# define SLOGICAL 54
# define SOPEN 55
# define SPARAM 56
# define SPAUSE 57
# define SPRINT 58
# define SPROGRAM 59
# define SPUNCH 60
# define SREAD 61
# define SREAL 62
# define SRETURN 63
# define SREWIND 64
# define SSAVE 65
# define SSTATIC 66
# define SSTOP 67
# define SSUBROUTINE 68
# define STHEN 69
# define STO 70
# define SUNDEFINED 71
# define SWRITE 72
# define SLPAR 73
# define SRPAR 74
# define SEQUALS 75
# define SCOLON 76
# define SCOMMA 77
# define SCURRENCY 78
# define SPLUS 79
# define SMINUS 80
# define SSTAR 81
# define SSLASH 82
# define SPOWER 83
# define SCONCAT 84
# define SAND 85
# define SOR 86
# define SNEQV 87
# define SEQV 88
# define SNOT 89
# define SEQ 90
# define SLT 91
# define SGT 92
# define SLE 93
# define SGE 94
# define SNE 95

# line 97 "gram.in"
#	include "defs"

#ifdef SDB
#	include <a.out.h>
char *stabline();
#	ifdef UCBVAXASM
		char *stabdline();
#	endif
#endif

static int nstars;
static int ndim;
static int vartype;
static ftnint varleng;
static struct { ptr lb, ub; } dims[MAXDIM+1];
static struct Labelblock *labarray[MAXLABLIST];
static int lastwasbranch = NO;
static int thiswasbranch = NO;
extern ftnint yystno;

ftnint convci();
double convcd();
struct Addrblock *nextdata(), *mkbitcon();
struct Constblock *mklogcon(), *mkaddcon(), *mkrealcon();
struct Constblock *mkstrcon(), *mkcxcon();
struct Listblock *mklist();
struct Listblock *mklist();
struct Impldoblock *mkiodo();
struct Extsym *comblock();

#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern short yyerrflag;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
#ifndef YYSTYPE
#define YYSTYPE int
#endif
YYSTYPE yylval, yyval;
# define YYERRCODE 256
short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
-1, 20,
	1, 31,
	-2, 205,
-1, 24,
	1, 35,
	-2, 205,
-1, 144,
	1, 219,
	-2, 170,
-1, 162,
	1, 238,
	77, 238,
	-2, 170,
-1, 219,
	76, 156,
	-2, 123,
-1, 233,
	73, 205,
	-2, 202,
-1, 258,
	1, 257,
	-2, 127,
-1, 262,
	1, 266,
	77, 266,
	-2, 129,
-1, 324,
	76, 157,
	-2, 125,
-1, 335,
	1, 240,
	14, 240,
	73, 240,
	77, 240,
	-2, 171,
-1, 386,
	90, 0,
	91, 0,
	92, 0,
	93, 0,
	94, 0,
	95, 0,
	-2, 137,
-1, 410,
	1, 260,
	77, 260,
	-2, 127,
-1, 412,
	1, 262,
	77, 262,
	-2, 127,
-1, 414,
	1, 264,
	77, 264,
	-2, 127,
-1, 461,
	77, 260,
	-2, 127,
	};
# define YYNPROD 271
# define YYLAST 1253
short yyact[]={

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

-1000,  23, 421, 900,-1000,-1000,-1000,-1000,-1000,-1000,
 412,-1000,-1000,-1000,-1000,-1000,-1000,  93, 396, 194,
 192, 191, 184, 181,  84, 179,  32,-1000,-1000,-1000,
-1000,1101,-1000,-1000,-1000,   6,-1000,-1000,-1000,-1000,
-1000,-1000, 396,-1000,-1000,-1000,-1000,-1000, 262,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,1172, 261,1102, 261, 178,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, 396, 396, 396, 396,-1000, 396,-1000, 240,-1000,
-1000, 396, -47, 396, 396, 396, 257, 335,-1000, 175,
-1000,-1000,-1000,-1000, 402, 260, 389,-1000,-1000, 258,
-1000,-1000,-1000,1039,  32, 396, 396, 257, 335,-1000,
 201, 256, 389,-1000, 254, 114, 970, 970, 248, 389,
 396, 245, 396,-1000,-1000, 834,-1000,-1000, 659,1071,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 834,
 128, 167,-1000,-1000,1015,1015,-1000,-1000,-1000,-1000,
 678,-1000,-1000,-1000, 240, 240, 396,-1000,-1000, 138,
 238,  84,-1000, 238,-1000,-1000,-1000, 396,-1000,  -6,
-1000,-1000, 335,-1000, 241,1166,  32, -35, 396, 396,
-1000,-1000, 970,  18, 819,-1000,-1000,-1000,-1000, 970,
 970,-1000, 396,-1000,-1000,-1000,-1000,-1000, 970, 970,
 280, 970,-1000, 162,-1000,  18, 389, 970,-1000,  18,
-1000, 970,-1000,  84, 389,-1000, 286, 161,-1000,1071,
-1000,-1000, 585,-1000,1071,1071,1071,1071,1071, -42,
  94, 106, 327,-1000,-1000, 327, 327,-1000, 166, 165,
 164,  18,-1000,1015,-1000,-1000,-1000,-1000,-1000, 659,
-1000,-1000,-1000, 240, 238,-1000, 157,-1000,-1000,-1000,
   6,-1000, 396,-1000, 155,-1000,-1000, 335, 148, 347,
-1000,-1000,-1000, 150,-1000, 198,-1000, 116, 777, 970,
 970, 970, 970, 970, 970, 970, 970, 970, 970,-1000,
-1000,-1000,-1000,-1000,-1000, 233, 706, 143, -45, 725,
-1000,  18, 196, 232,  18, 139, 396, 622,-1000, 565,
-1000, 539, 237, 140,-1000,-1000,-1000, 834,  74,  18,
-1000, -22, -42, -42, -42, 440,-1000, 327, 106, 125,
 106,1015,1015,1015, 104, 102,  95,-1000,-1000,-1000,
   6,-1000,  34,-1000, 115,  50,-1000,-1000, 396, -37,
1056,-1000, 335,  85,-1000,  15,-1000,-1000, 396, 970,
 970, 288, -30, -45, -45, -45, 689, 474, 474, 642,
 725, 381,-1000,-1000, 970, 970, 235, 970,-1000, 389,
-1000,-1000, 389, 389,  84,-1000, 659,-1000,-1000, 327,
-1000,-1000,-1000,-1000,-1000,-1000,1015,1015,1015,-1000,
-1000,-1000,  50,-1000,-1000,  -2,-1000,-1000,-1000,1056,
-1000,-1000, -12, 876,-1000,-1000,-1000,-1000, 970,-1000,
-1000,-1000, 231, 220,-1000, 347, 347,-1000,  18,  67,
  18,-1000, 224, 228, 970,  18,  66,  61,-1000, 970,
 227, 224, 223, 210, 206,-1000,  50,-1000,1056,-1000,
-1000,-1000,-1000, 970,-1000,-1000,  75, 389,-1000,  18,
-1000,-1000,-1000,-1000,-1000,  18,-1000,-1000,  18, 970,
  19, 141, 389,-1000,-1000 };
short yypgo[]={

   0, 585, 583, 575, 574, 561, 552, 551, 960, 117,
  43,  30,  22,  27, 404, 549,  19, 548, 544, 543,
 542, 540, 538, 536, 535,  28, 534,  29,  15,  42,
 533, 528,  72,  20,  44,  39, 526, 507, 525,  36,
  25, 517, 516,   5,   4,   3,   0,  94, 515,  24,
  14,  21,  23, 514, 505,   9,   7,   6,   1,  31,
  33, 503, 502, 500,  12,   8, 493, 491, 254, 107,
 490,   2, 166, 324, 418, 488, 487, 485, 484, 483,
 481, 477, 476,  18, 475, 471, 190, 467, 466, 454,
  32, 444,  34, 443, 439,  16, 436, 425,  13, 424,
  11,  10,  17 };
short yyr1[]={

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

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

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

   1,  -2,   0,   0,   9,  10,   2,   3,   4,   5,
   0, 216,   8,  17,  17,  17,  17, 205,   0,  30,
  -2,  32,  33,  34,  -2,  36,  37,  39, 122, 180,
 216,   0, 216, 216, 216,  56, 122, 122, 122, 122,
  76, 122,   0, 216, 216, 192, 193, 216, 195, 216,
 216, 216,  44, 200, 216, 216, 216, 217, 216, 212,
 213,  45,  46,  47,  48,  49,  50,  51,  52,  53,
  54,  55,   0,   0,   0,   0, 228, 216, 216, 216,
 216, 216, 231, 232, 233, 235, 236, 237,   6,  29,
   7,  20,  20,   0,   0,  17,   0, 206,  22,  18,
  19,   0,   0, 206,   0,   0,   0,   0, 115,  38,
  87,  89,  90,  63,   0,   0,   0, 182, 183,   0,
 185, 186,  43,   0,   0,   0,   0,   0,   0, 115,
   0, 152,   0, 191,   0,   0, 156, 156,   0,   0,
   0,   0,   0, 218,  -2,   0, 172, 173,   0,   0,
 160, 161, 162, 163, 164, 165, 144, 145, 220,   0,
 221, 222,  -2, 239, 226,   0, 270, 270, 270, 270,
   0,  11,  21,  12,  22,  22,   0, 122,  16,   0,
  99, 205,  62,  99,  66,  68,  70,   0,  75,   0,
  97,  95,   0, 113,   0,   0,   0,   0,   0,   0,
 110, 111,   0,  57,   0, 127, 129, 130, 131,   0,
   0,  59,   0,  65,  67,  69,  74, 112,   0,  -2,
   0,   0, 196,   0, 208, 210,   0,   0, 198, 157,
 199,   0, 201,  -2,   0, 207, 244,   0, 170,   0,
 242, 245,   0, 248,   0,   0,   0,   0,   0, 178,
 244, 223,   0, 253, 255,   0,   0, 227,  -2, 258,
 259,   0,  -2,   0, 229, 230, 234, 249, 250, 270,
 270,  13,  14,  22,  99,  23,   0,  25,  27,  28,
  56, 101,   0,  94,   0,  72,  78,   0,   0,   0,
 116,  88,  64,   0,  91,   0, 181,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0, 146,
 147, 148, 149, 150, 151,   0,   0, 127, 136, 142,
  60, 189,   0,   0,  -2, 124,   0,   0, 197,   0,
 211,   0,   0,   0, 108,  -2, 241,   0,   0, 246,
 247, 174, 175, 176, 177, 179, 240,   0, 225,   0,
 224,   0,   0,   0, 127,   0,   0, 251, 252,  15,
  56,  24,   0,  42,   0,   0,  61,  71,   0,   0,
   0,  98,   0,   0, 117, 119, 121,  40,   0,   0,
   0,   0, 132, 133, 134, 135,  -2, 138, 139, 140,
 141, 143,  58, 128,   0, 156, 154,   0, 190,   0,
 209, 187,   0,   0, 205, 243, 244, 171, 254,   0,
  -2, 261,  -2, 263,  -2, 265,   0,   0,   0,  41,
  26, 100,   0, 102, 104, 107, 106,  73,  77,   0,
  79,  81,  83,   0,  85,  86, 158, 159,   0, 167,
 168, 169,   0, 152, 114,   0,   0,  92,  93, 188,
 214, 184, 127,   0, 156, 126,   0,   0, 109,   0,
   0,  -2,   0,   0,   0, 103,   0,  80,   0,  84,
  96, 118, 120,   0, 166, 153,   0,   0, 203, 204,
 256, 267, 268, 269, 105, 107,  82,  83, 215, 156,
   0,   0,   0, 155, 194 };
#
# 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 3:
# line 151 "gram.in"
{ lastwasbranch = NO; } break;
case 5:
# line 154 "gram.in"
{ if(yypvt[-1] && (yypvt[-1]->labelno==dorange))
			enddo(yypvt[-1]->labelno);
		  if(lastwasbranch && thislabel==NULL)
			warn("statement cannot be reached");
		  lastwasbranch = thiswasbranch;
		  thiswasbranch = NO;
		  if(yypvt[-1])
			{
			if(yypvt[-1]->labtype == LABFORMAT)
				err("label already that of a format");
			else
				yypvt[-1]->labtype = LABEXEC;
			}
		} break;
case 6:
# line 169 "gram.in"
{ doinclude( yypvt[-0] ); } break;
case 7:
# line 171 "gram.in"
{ lastwasbranch = NO;  endproc(); } break;
case 8:
# line 173 "gram.in"
{ execerr("unclassifiable statement", 0);  flline(); } break;
case 9:
# line 175 "gram.in"
{ flline();  needkwd = NO;  inioctl = NO; 
		  yyerrok; yyclearin; } break;
case 10:
# line 180 "gram.in"
{
#ifdef SDB
		char buff[10];
		if( sdbflag )
			{
#	ifdef UCBVAXASM
			p2pass( stabdline(N_SLINE, lineno) );
#	else
			sprintf(buff,"LL%d", ++dbglabel);
			p2pass( stabline(0, N_SLINE, lineno, buff) );
			p2pi("LL%d:\n", dbglabel);
#	endif
			}
#endif

		if(yystno != 0)
			{
			yyval = thislabel =  mklabel(yystno);
			if( ! headerdone )
				puthead(NULL, procclass);
			if(thislabel->labdefined)
				execerr("label %s already defined",
					convic(thislabel->stateno) );
			else	{
				if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
				    && thislabel->labtype!=LABFORMAT)
					warn1("there is a branch to label %s from outside block",
					      convic( (ftnint) (thislabel->stateno) ) );
				thislabel->blklevel = blklevel;
				thislabel->labdefined = YES;
				if(thislabel->labtype != LABFORMAT)
					putlabel(thislabel->labelno);
				}
			}
		else    yyval = thislabel = NULL;
		} break;
case 11:
# line 219 "gram.in"
{startproc(yypvt[-0], CLMAIN); } break;
case 12:
# line 221 "gram.in"
{ if(yypvt[-0]) NO66("named BLOCKDATA");
		  startproc(yypvt[-0], CLBLOCK); } break;
case 13:
# line 224 "gram.in"
{ entrypt(CLPROC, TYSUBR, (ftnint) 0,  yypvt[-1], yypvt[-0]); } break;
case 14:
# line 226 "gram.in"
{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1], yypvt[-0]); } break;
case 15:
# line 228 "gram.in"
{ entrypt(CLPROC, yypvt[-4], varleng, yypvt[-1], yypvt[-0]); } break;
case 16:
# line 230 "gram.in"
{ if(parstate==OUTSIDE || procclass==CLMAIN
			|| procclass==CLBLOCK)
				execerr("misplaced entry statement", 0);
		  entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1], yypvt[-0]);
		} break;
case 17:
# line 238 "gram.in"
{ newproc(); } break;
case 18:
# line 242 "gram.in"
{ yyval = newentry(yypvt[-0]); } break;
case 19:
# line 246 "gram.in"
{ yyval = mkname(toklen, token); } break;
case 20:
# line 249 "gram.in"
{ yyval = NULL; } break;
case 22:
# line 254 "gram.in"
{ yyval = 0; } break;
case 23:
# line 256 "gram.in"
{ NO66(" () argument list");
		  yyval = 0; } break;
case 24:
# line 259 "gram.in"
{yyval = yypvt[-1]; } break;
case 25:
# line 263 "gram.in"
{ yyval = (yypvt[-0] ? mkchain(yypvt[-0],0) : 0 ); } break;
case 26:
# line 265 "gram.in"
{ if(yypvt[-0]) yypvt[-2] = yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0)); } break;
case 27:
# line 269 "gram.in"
{ if(yypvt[-0]->vstg!=STGUNKNOWN && yypvt[-0]->vstg!=STGARG)
			dclerr("name declared as argument after use", yypvt[-0]);
		  yypvt[-0]->vstg = STGARG;
		} break;
case 28:
# line 274 "gram.in"
{ NO66("altenate return argument");
		  yyval = 0;  substars = YES; } break;
case 29:
# line 281 "gram.in"
{
		char *s;
		s = copyn(toklen+1, token);
		s[toklen] = '\0';
		yyval = s;
		} break;
case 37:
# line 296 "gram.in"
{ NO66("SAVE statement");
		  saveall = YES; } break;
case 38:
# line 299 "gram.in"
{ NO66("SAVE statement"); } break;
case 39:
# line 301 "gram.in"
{ fmtstmt(thislabel); setfmt(thislabel); } break;
case 40:
# line 303 "gram.in"
{ NO66("PARAMETER statement"); } break;
case 41:
# line 307 "gram.in"
{ settype(yypvt[-3], yypvt[-5], yypvt[-0]);
		  if(ndim>0) setbound(yypvt[-3],ndim,dims);
		} break;
case 42:
# line 311 "gram.in"
{ settype(yypvt[-2], yypvt[-4], yypvt[-0]);
		  if(ndim>0) setbound(yypvt[-2],ndim,dims);
		} break;
case 43:
# line 317 "gram.in"
{ varleng = yypvt[-0]; } break;
case 44:
# line 321 "gram.in"
{ varleng = (yypvt[-0]<0 || yypvt[-0]==TYLONG ? 0 : typesize[yypvt[-0]]); } break;
case 45:
# line 324 "gram.in"
{ yyval = TYLONG; } break;
case 46:
# line 325 "gram.in"
{ yyval = TYREAL; } break;
case 47:
# line 326 "gram.in"
{ yyval = TYCOMPLEX; } break;
case 48:
# line 327 "gram.in"
{ yyval = TYDREAL; } break;
case 49:
# line 328 "gram.in"
{ NOEXT("DOUBLE COMPLEX statement"); yyval = TYDCOMPLEX; } break;
case 50:
# line 329 "gram.in"
{ yyval = TYLOGICAL; } break;
case 51:
# line 330 "gram.in"
{ NO66("CHARACTER statement"); yyval = TYCHAR; } break;
case 52:
# line 331 "gram.in"
{ yyval = TYUNKNOWN; } break;
case 53:
# line 332 "gram.in"
{ yyval = TYUNKNOWN; } break;
case 54:
# line 333 "gram.in"
{ NOEXT("AUTOMATIC statement"); yyval = - STGAUTO; } break;
case 55:
# line 334 "gram.in"
{ NOEXT("STATIC statement"); yyval = - STGBSS; } break;
case 56:
# line 338 "gram.in"
{ yyval = varleng; } break;
case 57:
# line 340 "gram.in"
{
		  NO66("length specification *n");
		  if( ! ISICON(yypvt[-0]) )
			{
			yyval = 0;
			dclerr("length must be an integer constant", 0);
			}
		  else yyval = yypvt[-0]->const.ci;
		} break;
case 58:
# line 350 "gram.in"
{  NO66("length specification *(*)"); yyval = 0; } break;
case 59:
# line 354 "gram.in"
{ incomm( yyval = comblock(0, 0) , yypvt[-0] ); } break;
case 60:
# line 356 "gram.in"
{ yyval = yypvt[-1];  incomm(yypvt[-1], yypvt[-0]); } break;
case 61:
# line 358 "gram.in"
{ yyval = yypvt[-2];  incomm(yypvt[-2], yypvt[-0]); } break;
case 62:
# line 360 "gram.in"
{ incomm(yypvt[-2], yypvt[-0]); } break;
case 63:
# line 364 "gram.in"
{ yyval = comblock(0, 0); } break;
case 64:
# line 366 "gram.in"
{ yyval = comblock(toklen, token); } break;
case 65:
# line 370 "gram.in"
{ setext(yypvt[-0]); } break;
case 66:
# line 372 "gram.in"
{ setext(yypvt[-0]); } break;
case 67:
# line 376 "gram.in"
{ NO66("INTRINSIC statement"); setintr(yypvt[-0]); } break;
case 68:
# line 378 "gram.in"
{ setintr(yypvt[-0]); } break;
case 71:
# line 386 "gram.in"
{
		struct Equivblock *p;
		if(nequiv >= MAXEQUIV)
			many("equivalences", 'q');
		p  =  & eqvclass[nequiv++];
		p->eqvinit = 0;
		p->eqvbottom = 0;
		p->eqvtop = 0;
		p->equivs = yypvt[-1];
		} break;
case 72:
# line 399 "gram.in"
{ yyval = ALLOC(Eqvchain); yyval->eqvitem = yypvt[-0]; } break;
case 73:
# line 401 "gram.in"
{ yyval = ALLOC(Eqvchain); yyval->eqvitem = yypvt[-0]; yyval->nextp = yypvt[-2]; } break;
case 76:
# line 409 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(0, CLMAIN);
			}
		  if(parstate < INDATA)
			{
			enddcl();
			parstate = INDATA;
			}
		} break;
case 77:
# line 423 "gram.in"
{ ftnint junk;
		  if(nextdata(&junk,&junk) != NULL)
			{
			err("too few initializers");
			curdtp = NULL;
			}
		  frdata(yypvt[-3]);
		  frrpl();
		} break;
case 78:
# line 434 "gram.in"
{ toomanyinit = NO; } break;
case 81:
# line 439 "gram.in"
{ dataval(NULL, yypvt[-0]); } break;
case 82:
# line 441 "gram.in"
{ dataval(yypvt[-2], yypvt[-0]); } break;
case 84:
# line 446 "gram.in"
{ if( yypvt[-1]==OPMINUS && ISCONST(yypvt[-0]) )
			consnegop(yypvt[-0]);
		  yyval = yypvt[-0];
		} break;
case 89:
# line 459 "gram.in"
{ int k;
		  yypvt[-0]->vsave = 1;
		  k = yypvt[-0]->vstg;
		if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
			dclerr("can only save static variables", yypvt[-0]);
		} break;
case 90:
# line 466 "gram.in"
{ yypvt[-0]->extsave = 1; } break;
case 93:
# line 474 "gram.in"
{ if(yypvt[-2]->vclass == CLUNKNOWN)
			{ yypvt[-2]->vclass = CLPARAM;
			  yypvt[-2]->paramval = yypvt[-0];
			}
		  else dclerr("cannot make %s parameter", yypvt[-2]);
		} break;
case 94:
# line 483 "gram.in"
{ if(ndim>0) setbounds(yypvt[-1], ndim, dims); } break;
case 95:
# line 487 "gram.in"
{ ptr np;
		  vardcl(np = yypvt[-0]->namep);
		  if(np->vstg == STGBSS)
			np->vstg = STGINIT;
		  else if(np->vstg == STGCOMMON)
			extsymtab[np->vardesc.varno].extinit = YES;
		  else if(np->vstg==STGEQUIV)
			eqvclass[np->vardesc.varno].eqvinit = YES;
		  else if(np->vstg != STGINIT)
			dclerr("inconsistent storage classes", np);
		  yyval = mkchain(yypvt[-0], 0);
		} break;
case 96:
# line 500 "gram.in"
{ chainp p; struct Impldoblock *q;
		q = ALLOC(Impldoblock);
		q->tag = TIMPLDO;
		q->varnp = yypvt[-1]->datap;
		p = yypvt[-1]->nextp;
		if(p)  { q->implb = p->datap; p = p->nextp; }
		if(p)  { q->impub = p->datap; p = p->nextp; }
		if(p)  { q->impstep = p->datap; p = p->nextp; }
		frchain( & (yypvt[-1]) );
		yyval = mkchain(q, 0);
		q->datalist = hookup(yypvt[-3], yyval);
		} break;
case 97:
# line 515 "gram.in"
{ curdtp = yypvt[-0]; curdtelt = 0; } break;
case 98:
# line 517 "gram.in"
{ yyval = hookup(yypvt[-2], yypvt[-0]); } break;
case 99:
# line 521 "gram.in"
{ ndim = 0; } break;
case 101:
# line 525 "gram.in"
{ ndim = 0; } break;
case 104:
# line 530 "gram.in"
{ if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = 0;
			  dims[ndim].ub = yypvt[-0];
			}
		  ++ndim;
		} break;
case 105:
# line 539 "gram.in"
{ if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = yypvt[-2];
			  dims[ndim].ub = yypvt[-0];
			}
		  ++ndim;
		} break;
case 106:
# line 550 "gram.in"
{ yyval = 0; } break;
case 108:
# line 555 "gram.in"
{ nstars = 1; labarray[0] = yypvt[-0]; } break;
case 109:
# line 557 "gram.in"
{ if(nstars < MAXLABLIST)  labarray[nstars++] = yypvt[-0]; } break;
case 110:
# line 561 "gram.in"
{
		if(yypvt[-0] == 0)
			execerr("illegal label", 0);
		else	{
			if(yypvt[-0]->labinacc)
				warn1("illegal branch to inner block, statement %s",
					convic( (ftnint) (yypvt[-0]->stateno) ));
			else if(yypvt[-0]->labdefined == NO)
				yypvt[-0]->blklevel = blklevel;
			yypvt[-0]->labused = YES;
			if(yypvt[-0]->labtype == LABFORMAT)
				err("may not branch to a format");
			else
				yypvt[-0]->labtype = LABEXEC;
			}
		} break;
case 111:
# line 580 "gram.in"
{ yyval = mklabel( convci(toklen, token) ); } break;
case 112:
# line 584 "gram.in"
{ NO66("IMPLICIT statement"); } break;
case 115:
# line 591 "gram.in"
{ needkwd = 1; } break;
case 116:
# line 592 "gram.in"
{ vartype = yypvt[-0]; } break;
case 119:
# line 600 "gram.in"
{ setimpl(vartype, varleng, yypvt[-0], yypvt[-0]); } break;
case 120:
# line 602 "gram.in"
{ setimpl(vartype, varleng, yypvt[-2], yypvt[-0]); } break;
case 121:
# line 606 "gram.in"
{ if(toklen!=1 || token[0]<'a' || token[0]>'z')
			{
			dclerr("implicit item must be single letter", 0);
			yyval = 0;
			}
		  else yyval = token[0];
		} break;
case 122:
# line 616 "gram.in"
{ switch(parstate)	
			{
			case OUTSIDE:	newproc();
					startproc(0, CLMAIN);
			case INSIDE:	parstate = INDCL;
			case INDCL:	break;

			default:
				dclerr("declaration among executables", 0);
			}
		} break;
case 123:
# line 629 "gram.in"
{ yyval = 0; } break;
case 125:
# line 634 "gram.in"
{ yyval = mkchain(yypvt[-0], 0); } break;
case 126:
# line 636 "gram.in"
{ yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0) ); } break;
case 128:
# line 641 "gram.in"
{ yyval = yypvt[-1]; } break;
case 132:
# line 648 "gram.in"
{ yyval = mkexpr(yypvt[-1], yypvt[-2], yypvt[-0]); } break;
case 133:
# line 650 "gram.in"
{ yyval = mkexpr(OPSTAR, yypvt[-2], yypvt[-0]); } break;
case 134:
# line 652 "gram.in"
{ yyval = mkexpr(OPSLASH, yypvt[-2], yypvt[-0]); } break;
case 135:
# line 654 "gram.in"
{ yyval = mkexpr(OPPOWER, yypvt[-2], yypvt[-0]); } break;
case 136:
# line 656 "gram.in"
{ if(yypvt[-1] == OPMINUS)
			yyval = mkexpr(OPNEG, yypvt[-0], 0);
		  else 	yyval = yypvt[-0];
		} break;
case 137:
# line 661 "gram.in"
{ yyval = mkexpr(yypvt[-1], yypvt[-2], yypvt[-0]); } break;
case 138:
# line 663 "gram.in"
{ NO66(".EQV. operator");
		  yyval = mkexpr(OPEQV, yypvt[-2],yypvt[-0]); } break;
case 139:
# line 666 "gram.in"
{ NO66(".NEQV. operator");
		  yyval = mkexpr(OPNEQV, yypvt[-2], yypvt[-0]); } break;
case 140:
# line 669 "gram.in"
{ yyval = mkexpr(OPOR, yypvt[-2], yypvt[-0]); } break;
case 141:
# line 671 "gram.in"
{ yyval = mkexpr(OPAND, yypvt[-2], yypvt[-0]); } break;
case 142:
# line 673 "gram.in"
{ yyval = mkexpr(OPNOT, yypvt[-0], 0); } break;
case 143:
# line 675 "gram.in"
{ NO66("concatenation operator //");
		  yyval = mkexpr(OPCONCAT, yypvt[-2], yypvt[-0]); } break;
case 144:
# line 679 "gram.in"
{ yyval = OPPLUS; } break;
case 145:
# line 680 "gram.in"
{ yyval = OPMINUS; } break;
case 146:
# line 683 "gram.in"
{ yyval = OPEQ; } break;
case 147:
# line 684 "gram.in"
{ yyval = OPGT; } break;
case 148:
# line 685 "gram.in"
{ yyval = OPLT; } break;
case 149:
# line 686 "gram.in"
{ yyval = OPGE; } break;
case 150:
# line 687 "gram.in"
{ yyval = OPLE; } break;
case 151:
# line 688 "gram.in"
{ yyval = OPNE; } break;
case 152:
# line 692 "gram.in"
{ yyval = mkprim(yypvt[-0], 0, 0, 0); } break;
case 153:
# line 694 "gram.in"
{ NO66("substring operator :");
		  yyval = mkprim(yypvt[-5], 0, yypvt[-3], yypvt[-1]); } break;
case 154:
# line 697 "gram.in"
{ yyval = mkprim(yypvt[-3], mklist(yypvt[-1]), 0, 0); } break;
case 155:
# line 699 "gram.in"
{ NO66("substring operator :");
		  yyval = mkprim(yypvt[-8], mklist(yypvt[-6]), yypvt[-3], yypvt[-1]); } break;
case 156:
# line 704 "gram.in"
{ yyval = 0; } break;
case 158:
# line 709 "gram.in"
{ if(yypvt[-0]->vclass == CLPARAM)
			yyval = cpexpr(yypvt[-0]->paramval);
		} break;
case 160:
# line 715 "gram.in"
{ yyval = mklogcon(1); } break;
case 161:
# line 716 "gram.in"
{ yyval = mklogcon(0); } break;
case 162:
# line 717 "gram.in"
{ yyval = mkstrcon(toklen, token); } break;
case 163:
# line 718 "gram.in"
 { yyval = mkintcon( convci(toklen, token) ); } break;
case 164:
# line 719 "gram.in"
 { yyval = mkrealcon(TYREAL, convcd(toklen, token)); } break;
case 165:
# line 720 "gram.in"
 { yyval = mkrealcon(TYDREAL, convcd(toklen, token)); } break;
case 166:
# line 724 "gram.in"
{ yyval = mkcxcon(yypvt[-3],yypvt[-1]); } break;
case 167:
# line 728 "gram.in"
{ NOEXT("hex constant");
		  yyval = mkbitcon(4, toklen, token); } break;
case 168:
# line 731 "gram.in"
{ NOEXT("octal constant");
		  yyval = mkbitcon(3, toklen, token); } break;
case 169:
# line 734 "gram.in"
{ NOEXT("binary constant");
		  yyval = mkbitcon(1, toklen, token); } break;
case 171:
# line 740 "gram.in"
{ yyval = yypvt[-1]; } break;
case 174:
# line 746 "gram.in"
{ yyval = mkexpr(yypvt[-1], yypvt[-2], yypvt[-0]); } break;
case 175:
# line 748 "gram.in"
{ yyval = mkexpr(OPSTAR, yypvt[-2], yypvt[-0]); } break;
case 176:
# line 750 "gram.in"
{ yyval = mkexpr(OPSLASH, yypvt[-2], yypvt[-0]); } break;
case 177:
# line 752 "gram.in"
{ yyval = mkexpr(OPPOWER, yypvt[-2], yypvt[-0]); } break;
case 178:
# line 754 "gram.in"
{ if(yypvt[-1] == OPMINUS)
			yyval = mkexpr(OPNEG, yypvt[-0], 0);
		  else	yyval = yypvt[-0];
		} break;
case 179:
# line 759 "gram.in"
{ NO66("concatenation operator //");
		  yyval = mkexpr(OPCONCAT, yypvt[-2], yypvt[-0]); } break;
case 181:
# line 764 "gram.in"
{
		if(yypvt[-1]->labdefined)
			execerr("no backward DO loops", 0);
		yypvt[-1]->blklevel = blklevel+1;
		exdo(yypvt[-1]->labelno, yypvt[-0]);
		} break;
case 182:
# line 771 "gram.in"
{ exendif();  thiswasbranch = NO; } break;
case 184:
# line 774 "gram.in"
{ exelif(yypvt[-2]); lastwasbranch = NO; } break;
case 185:
# line 776 "gram.in"
{ exelse(); lastwasbranch = NO; } break;
case 186:
# line 778 "gram.in"
{ exendif(); lastwasbranch = NO; } break;
case 187:
# line 782 "gram.in"
{ exif(yypvt[-1]); } break;
case 188:
# line 786 "gram.in"
{ yyval = mkchain(yypvt[-2], yypvt[-0]); } break;
case 189:
# line 790 "gram.in"
{ exequals(yypvt[-2], yypvt[-0]); } break;
case 190:
# line 792 "gram.in"
{ exassign(yypvt[-0], yypvt[-2]); } break;
case 193:
# line 796 "gram.in"
{ inioctl = NO; } break;
case 194:
# line 798 "gram.in"
{ exarif(yypvt[-6], yypvt[-4], yypvt[-2], yypvt[-0]);  thiswasbranch = YES; } break;
case 195:
# line 800 "gram.in"
{ excall(yypvt[-0], 0, 0, labarray); } break;
case 196:
# line 802 "gram.in"
{ excall(yypvt[-2], 0, 0, labarray); } break;
case 197:
# line 804 "gram.in"
{ if(nstars < MAXLABLIST)
			excall(yypvt[-3], mklist(yypvt[-1]), nstars, labarray);
		  else
			err("too many alternate returns");
		} break;
case 198:
# line 810 "gram.in"
{ exreturn(yypvt[-0]);  thiswasbranch = YES; } break;
case 199:
# line 812 "gram.in"
{ exstop(yypvt[-2], yypvt[-0]);  thiswasbranch = yypvt[-2]; } break;
case 200:
# line 816 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(0, CLMAIN);
			}
		} break;
case 201:
# line 825 "gram.in"
{ exgoto(yypvt[-0]);  thiswasbranch = YES; } break;
case 202:
# line 827 "gram.in"
{ exasgoto(yypvt[-0]);  thiswasbranch = YES; } break;
case 203:
# line 829 "gram.in"
{ exasgoto(yypvt[-4]);  thiswasbranch = YES; } break;
case 204:
# line 831 "gram.in"
{ if(nstars < MAXLABLIST)
			putcmgo(fixtype(yypvt[-0]), nstars, labarray);
		  else
			err("computed GOTO list too long");
		} break;
case 207:
# line 843 "gram.in"
{ nstars = 0; yyval = yypvt[-0]; } break;
case 208:
# line 847 "gram.in"
{ yyval = (yypvt[-0] ? mkchain(yypvt[-0],0) : 0); } break;
case 209:
# line 849 "gram.in"
{ if(yypvt[-0])
			if(yypvt[-2]) yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0));
			else yyval = mkchain(yypvt[-0],0);
		} break;
case 211:
# line 857 "gram.in"
{ if(nstars<MAXLABLIST) labarray[nstars++] = yypvt[-0]; yyval = 0; } break;
case 212:
# line 861 "gram.in"
{ yyval = 0; } break;
case 213:
# line 863 "gram.in"
{ yyval = 1; } break;
case 214:
# line 867 "gram.in"
{ yyval = mkchain(yypvt[-0], 0); } break;
case 215:
# line 869 "gram.in"
{ yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0) ); } break;
case 216:
# line 873 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(0, CLMAIN);
			}
		  if(parstate < INDATA) enddcl();
		} break;
case 217:
# line 884 "gram.in"
{ endio(); } break;
case 219:
# line 889 "gram.in"
{ ioclause(IOSUNIT, yypvt[-0]); endioctl(); } break;
case 221:
# line 892 "gram.in"
{ doio(NULL); } break;
case 222:
# line 894 "gram.in"
{ doio(NULL); } break;
case 223:
# line 896 "gram.in"
{ doio(yypvt[-0]); } break;
case 224:
# line 898 "gram.in"
{ doio(yypvt[-0]); } break;
case 225:
# line 900 "gram.in"
{ doio(yypvt[-0]); } break;
case 226:
# line 902 "gram.in"
{ doio(NULL); } break;
case 227:
# line 904 "gram.in"
{ doio(yypvt[-0]); } break;
case 228:
# line 906 "gram.in"
{ doio(NULL); } break;
case 229:
# line 908 "gram.in"
{ doio(yypvt[-0]); } break;
case 231:
# line 915 "gram.in"
{ iostmt = IOBACKSPACE; } break;
case 232:
# line 917 "gram.in"
{ iostmt = IOREWIND; } break;
case 233:
# line 919 "gram.in"
{ iostmt = IOENDFILE; } break;
case 235:
# line 926 "gram.in"
{ iostmt = IOINQUIRE; } break;
case 236:
# line 928 "gram.in"
{ iostmt = IOOPEN; } break;
case 237:
# line 930 "gram.in"
{ iostmt = IOCLOSE; } break;
case 238:
# line 934 "gram.in"
{
		ioclause(IOSUNIT, NULL);
		ioclause(IOSFMT, yypvt[-0]);
		endioctl();
		} break;
case 239:
# line 940 "gram.in"
{
		ioclause(IOSUNIT, NULL);
		ioclause(IOSFMT, NULL);
		endioctl();
		} break;
case 240:
# line 948 "gram.in"
{ if(yypvt[-1]->vtype == TYCHAR)
			{
			ioclause(IOSUNIT, NULL);
			ioclause(IOSFMT, yypvt[-1]);
			}
		  else
			ioclause(IOSUNIT, yypvt[-1]);
		  endioctl();
		} break;
case 241:
# line 958 "gram.in"
{ endioctl(); } break;
case 244:
# line 966 "gram.in"
{ ioclause(IOSPOSITIONAL, yypvt[-0]); } break;
case 245:
# line 968 "gram.in"
{ ioclause(IOSPOSITIONAL, NULL); } break;
case 246:
# line 970 "gram.in"
{ ioclause(yypvt[-1], yypvt[-0]); } break;
case 247:
# line 972 "gram.in"
{ ioclause(yypvt[-1], NULL); } break;
case 248:
# line 976 "gram.in"
{ yyval = iocname(); } break;
case 249:
# line 980 "gram.in"
{ iostmt = IOREAD; } break;
case 250:
# line 984 "gram.in"
{ iostmt = IOWRITE; } break;
case 251:
# line 988 "gram.in"
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, NULL);
		ioclause(IOSFMT, yypvt[-1]);
		endioctl();
		} break;
case 252:
# line 995 "gram.in"
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, NULL);
		ioclause(IOSFMT, NULL);
		endioctl();
		} break;
case 253:
# line 1004 "gram.in"
{ yyval = mkchain(yypvt[-0],0); } break;
case 254:
# line 1006 "gram.in"
{ yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0)); } break;
case 256:
# line 1011 "gram.in"
{ yyval = mkiodo(yypvt[-1],yypvt[-3]); } break;
case 257:
# line 1015 "gram.in"
{ yyval = mkchain(yypvt[-0], 0); } break;
case 258:
# line 1017 "gram.in"
{ yyval = mkchain(yypvt[-0], 0); } break;
case 260:
# line 1022 "gram.in"
{ yyval = mkchain(yypvt[-2], mkchain(yypvt[-0], 0) ); } break;
case 261:
# line 1024 "gram.in"
{ yyval = mkchain(yypvt[-2], mkchain(yypvt[-0], 0) ); } break;
case 262:
# line 1026 "gram.in"
{ yyval = mkchain(yypvt[-2], mkchain(yypvt[-0], 0) ); } break;
case 263:
# line 1028 "gram.in"
{ yyval = mkchain(yypvt[-2], mkchain(yypvt[-0], 0) ); } break;
case 264:
# line 1030 "gram.in"
{ yyval = hookup(yypvt[-2], mkchain(yypvt[-0], 0) ); } break;
case 265:
# line 1032 "gram.in"
{ yyval = hookup(yypvt[-2], mkchain(yypvt[-0], 0) ); } break;
case 267:
# line 1037 "gram.in"
{ yyval = mkiodo(yypvt[-1], mkchain(yypvt[-3], 0) ); } break;
case 268:
# line 1039 "gram.in"
{ yyval = mkiodo(yypvt[-1], mkchain(yypvt[-3], 0) ); } break;
case 269:
# line 1041 "gram.in"
{ yyval = mkiodo(yypvt[-1], yypvt[-3]); } break;
case 270:
# line 1045 "gram.in"
{ startioctl(); } break;
		}
		goto yystack;  /* stack new state and value */

	}