File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / usr / src / usr.bin / sf77 / gram.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
Power 6/32 Unix version 1.2b

# 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 SNAMELIST 55
# define SOPEN 56
# define SPARAM 57
# define SPAUSE 58
# define SPRINT 59
# define SPROGRAM 60
# define SPUNCH 61
# define SREAD 62
# define SREAL 63
# define SRETURN 64
# define SREWIND 65
# define SSAVE 66
# define SSTATIC 67
# define SSTOP 68
# define SSUBROUTINE 69
# define STHEN 70
# define STO 71
# define SUNDEFINED 72
# define SWRITE 73
# define SLPAR 74
# define SRPAR 75
# define SEQUALS 76
# define SCOLON 77
# define SCOMMA 78
# define SCURRENCY 79
# define SPLUS 80
# define SMINUS 81
# define SSTAR 82
# define SSLASH 83
# define SPOWER 84
# define SCONCAT 85
# define SAND 86
# define SOR 87
# define SNEQV 88
# define SEQV 89
# define SNOT 90
# define SEQ 91
# define SLT 92
# define SGT 93
# define SLE 94
# define SGE 95
# define SNE 96

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

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

#	ifndef N_SO
#		include <stab.h>
#	endif
#endif

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

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


# line 137 "gram.in"
typedef union 	{
	int ival;
	char *charpval;
	chainp chval;
	tagptr tagval;
	expptr expval;
	struct Labelblock *labval;
	struct Nameblock *namval;
	struct Eqvchain *eqvval;
	struct Extsym *extval;
	} YYSTYPE;
#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
short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
-1, 20,
	1, 31,
	-2, 214,
-1, 24,
	1, 35,
	-2, 214,
-1, 148,
	1, 230,
	-2, 178,
-1, 168,
	1, 251,
	78, 251,
	-2, 178,
-1, 218,
	77, 164,
	-2, 130,
-1, 240,
	74, 214,
	-2, 211,
-1, 266,
	1, 272,
	-2, 134,
-1, 270,
	1, 281,
	78, 281,
	-2, 136,
-1, 315,
	77, 165,
	-2, 132,
-1, 345,
	1, 253,
	14, 253,
	74, 253,
	78, 253,
	-2, 179,
-1, 407,
	91, 0,
	92, 0,
	93, 0,
	94, 0,
	95, 0,
	96, 0,
	-2, 144,
-1, 424,
	1, 275,
	78, 275,
	-2, 134,
-1, 426,
	1, 277,
	78, 277,
	-2, 134,
-1, 428,
	1, 279,
	78, 279,
	-2, 134,
-1, 479,
	78, 275,
	-2, 134,
	};
# define YYNPROD 286
# define YYLAST 1293
short yyact[]={

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

-1000,  25, 461, 838,-1000,-1000,-1000,-1000,-1000,-1000,
 454,-1000,-1000,-1000,-1000,-1000,-1000,  92, 406, 205,
 202, 199, 198, 196, 100, 193, -25, 155,-1000,-1000,
-1000,-1000,1135,-1000,-1000,-1000,  -8,-1000,-1000,-1000,
-1000,-1000,-1000,-1000, 406,-1000,-1000,-1000,-1000,-1000,
 325,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,1086, 319,1210, 319, 190,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000, 406, 406, 406, 406,-1000, 406,-1000,
 291,-1000,-1000, 406, -43, 406, 406, 406, 309, 378,
-1000,-1000, 406, 173,-1000,-1000,-1000,-1000, 409, 312,
-1000,-1000,-1000, 310,-1000,-1000,-1000,-1000, 155, 406,
 406, 309, 378,-1000, 220, 307, 426,-1000, 305, 919,
1016,1016, 302, 421, 406, 296, 406,-1000,-1000,-1000,
-1000,1069,-1000,-1000, 278,1115,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,1069,  98, 171,-1000,-1000,
1028,1028,-1000,-1000,-1000,-1000,1132,-1000,-1000,-1000,
 291, 291, 406,-1000,-1000,  58, 290, 100,-1000, 290,
-1000,-1000,-1000, 406,-1000, 113,-1000,-1000, 378,-1000,
 295, 776, -36, 155, -37, 406, 421,1016,1045,-1000,
 406,-1000,-1000,-1000,-1000,-1000,1016,-1000,1016, 281,
-1000,1016,-1000, 189,-1000, 700, 421,-1000,1016,-1000,
-1000,-1000,1016,1016,-1000, 700,-1000,1016,-1000,-1000,
 100, 421,-1000, 440, 187,-1000,1115,-1000,-1000,-1000,
 839,-1000,1115,1115,1115,1115,1115, -41, 204, 125,
 375,-1000,-1000, 375, 375,-1000, 163, 159, 149, 700,
-1000,1028,-1000,-1000,-1000,-1000,-1000, 278,-1000,-1000,
-1000, 291, 290,-1000, 185,-1000,-1000,-1000,  -8,-1000,
 406,-1000, 170,-1000,-1000, 378, 141,-1000, 408,-1000,
 406,-1000,-1000, 168,-1000, 218,-1000, 679, 700,1005,
-1000, 700, 268,  36, 134, 700, 406, 657,-1000, 990,
1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 618, 133, -48,
 -31, 571, 277, 120,-1000,-1000,-1000,1069,  64, 700,
-1000,-1000, 104, -41, -41, -41, 420,-1000, 375, 125,
 129, 125,1028,1028,1028, 124, 119, 111,-1000,-1000,
-1000,  -8,-1000,  42,-1000,  85, 965,-1000,-1000, 406,
  -2, 609,-1000, 378,  76,-1000,  10,-1000, 101,-1000,
-1000, 406,1016, 406, 344,-1000, 262, 273,1016,1016,
-1000, 421,-1000,  -4, -48, -48, -48, 494,  35,  35,
 475, -31, -14,-1000,1016,-1000, 421, 421, 100,-1000,
 278,-1000,-1000, 375,-1000,-1000,-1000,-1000,-1000,-1000,
1028,1028,1028,-1000,-1000,-1000, 965,-1000,-1000,  15,
-1000,-1000,-1000, 609,-1000,-1000, -23, 587,-1000,-1000,
-1000,-1000,1016,-1000,-1000,-1000, 259,-1000, 217,-1000,
 408, 408, 406,-1000, 700,-1000,  17,-1000,-1000,-1000,
1016, 258, 700,  83, 240,  75,-1000,1016, 244, 240,
 238, 225, 223,-1000, 965,-1000, 609,-1000,-1000,1016,
-1000,-1000,-1000,-1000,-1000, 421,-1000,-1000, 700,-1000,
-1000,-1000,-1000,-1000, 700,-1000,-1000,  59, 700,  16,
1016, 421, 700,-1000 };
short yypgo[]={

   0, 629, 628,  15, 627,  10,  13,  18,  30, 624,
 613, 612,   4,   0, 611, 610, 609, 607,  14, 603,
 602, 596, 591, 590,  22, 589,  24, 586, 585,  71,
  29,  27,  21,  86,  17, 584,  55, 431,   1, 173,
  16, 388, 320,   9,   2,   6,  19,   3,  48, 582,
 581,  33,  38,  37, 580, 572, 563, 562, 553, 908,
  73, 552, 551, 550, 548, 547, 546, 545,  44, 543,
  20,  34,  39,   5,  32, 542,  35, 539, 533,   7,
  25,  26, 532, 531,  11,  12,  31, 526, 516, 514,
   8, 507, 428, 498, 497, 495, 488, 485, 484, 380,
 482, 481, 477, 475, 471, 467, 250, 464, 463,  23 };
short yyr1[]={

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

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

#
# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)

/*	parser for yacc output	*/

#ifdef YYDEBUG
int yydebug = 0; /* 1 for debugging */
#endif
YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
int yychar = -1; /* current input token number */
int yynerrs = 0;  /* number of errors */
short yyerrflag = 0;  /* error recovery flag */

yyparse() {

	short yys[YYMAXDEPTH];
	short yyj, yym;
	register YYSTYPE *yypvt;
	register short yystate, *yyps, yyn;
	register YYSTYPE *yypv;
	register short *yyxi;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyps= &yys[-1];
	yypv= &yyv[-1];

 yystack:    /* put a state and value onto the stack */

#ifdef YYDEBUG
	if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
#endif
		if( ++yyps> &yys[YYMAXDEPTH] ) { 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 182 "gram.in"
{ lastwasbranch = NO; } break;
case 5:
# line 185 "gram.in"
{ if(yypvt[-1].labval && (yypvt[-1].labval->labelno==dorange))
			enddo(yypvt[-1].labval->labelno);
		  if(lastwasbranch && thislabel==NULL)
			warn("statement cannot be reached");
		  lastwasbranch = thiswasbranch;
		  thiswasbranch = NO;
		  if(yypvt[-1].labval)
			{
			if(yypvt[-1].labval->labtype == LABFORMAT)
				err("label already that of a format");
			else
				yypvt[-1].labval->labtype = LABEXEC;
			}
		} break;
case 6:
# line 200 "gram.in"
{ doinclude( yypvt[-0].charpval ); } break;
case 7:
# line 202 "gram.in"
{ lastwasbranch = NO;  endproc(); } break;
case 8:
# line 204 "gram.in"
{ execerr("unclassifiable statement", CNULL);  flline(); } break;
case 9:
# line 206 "gram.in"
{ flline();  needkwd = NO;  inioctl = NO; 
		  yyerrok; yyclearin; } break;
case 10:
# line 211 "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.labval = thislabel =  mklabel(yystno);
			if( ! headerdone )
				puthead(CNULL, 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.labval = thislabel = NULL;
		} break;
case 11:
# line 250 "gram.in"
{startproc(yypvt[-0].extval, CLMAIN); } break;
case 12:
# line 252 "gram.in"
{ if(yypvt[-0].extval) NO66("named BLOCKDATA");
		  startproc(yypvt[-0].extval, CLBLOCK); } break;
case 13:
# line 255 "gram.in"
{ entrypt(CLPROC, TYSUBR, (ftnint) 0,  yypvt[-1].extval, yypvt[-0].chval); } break;
case 14:
# line 257 "gram.in"
{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval); } break;
case 15:
# line 259 "gram.in"
{ entrypt(CLPROC, yypvt[-4].ival, varleng, yypvt[-1].extval, yypvt[-0].chval); } break;
case 16:
# line 261 "gram.in"
{ if(parstate==OUTSIDE || procclass==CLMAIN
			|| procclass==CLBLOCK)
				execerr("misplaced entry statement", CNULL);
		  entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval);
		} break;
case 17:
# line 269 "gram.in"
{ newproc(); } break;
case 18:
# line 273 "gram.in"
{ yyval.extval = newentry(yypvt[-0].namval); } break;
case 19:
# line 277 "gram.in"
{ yyval.namval = mkname(toklen, token); } break;
case 20:
# line 280 "gram.in"
{ yyval.extval = NULL; } break;
case 22:
# line 285 "gram.in"
{ yyval.chval = 0; } break;
case 23:
# line 287 "gram.in"
{ NO66(" () argument list");
		  yyval.chval = 0; } break;
case 24:
# line 290 "gram.in"
{yyval.chval = yypvt[-1].chval; } break;
case 25:
# line 294 "gram.in"
{ yyval.chval = (yypvt[-0].namval ? mkchain(yypvt[-0].namval,CHNULL) : CHNULL ); } break;
case 26:
# line 296 "gram.in"
{ if(yypvt[-0].namval) yypvt[-2].chval = yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval,CHNULL)); } break;
case 27:
# line 300 "gram.in"
{ if(yypvt[-0].namval->vstg!=STGUNKNOWN && yypvt[-0].namval->vstg!=STGARG)
			dclerr("name declared as argument after use", yypvt[-0].namval);
		  yypvt[-0].namval->vstg = STGARG;
		} break;
case 28:
# line 305 "gram.in"
{ NO66("altenate return argument");
		  yyval.namval = 0;  substars = YES; } break;
case 29:
# line 312 "gram.in"
{
		char *s;
		s = copyn(toklen+1, token);
		s[toklen] = '\0';
		yyval.charpval = s;
		} break;
case 38:
# line 328 "gram.in"
{ NO66("SAVE statement");
		  saveall = YES; } break;
case 39:
# line 331 "gram.in"
{ NO66("SAVE statement"); } break;
case 40:
# line 333 "gram.in"
{ fmtstmt(thislabel); setfmt(thislabel); } break;
case 41:
# line 335 "gram.in"
{ NO66("PARAMETER statement"); } break;
case 42:
# line 339 "gram.in"
{ settype(yypvt[-3].namval, yypvt[-5].ival, yypvt[-0].ival);
		  if(ndim>0) setbound(yypvt[-3].namval,ndim,dims);
		} break;
case 43:
# line 343 "gram.in"
{ settype(yypvt[-2].namval, yypvt[-4].ival, yypvt[-0].ival);
		  if(ndim>0) setbound(yypvt[-2].namval,ndim,dims);
		} break;
case 44:
# line 349 "gram.in"
{ varleng = yypvt[-0].ival; } break;
case 45:
# line 353 "gram.in"
{ varleng = (yypvt[-0].ival<0 || yypvt[-0].ival==TYLONG ? 0 : typesize[yypvt[-0].ival]); } break;
case 46:
# line 356 "gram.in"
{ yyval.ival = TYLONG; } break;
case 47:
# line 357 "gram.in"
{ yyval.ival = TYREAL; } break;
case 48:
# line 358 "gram.in"
{ yyval.ival = TYCOMPLEX; } break;
case 49:
# line 359 "gram.in"
{ yyval.ival = TYDREAL; } break;
case 50:
# line 360 "gram.in"
{ NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; } break;
case 51:
# line 361 "gram.in"
{ yyval.ival = TYLOGICAL; } break;
case 52:
# line 362 "gram.in"
{ NO66("CHARACTER statement"); yyval.ival = TYCHAR; } break;
case 53:
# line 363 "gram.in"
{ yyval.ival = TYUNKNOWN; } break;
case 54:
# line 364 "gram.in"
{ yyval.ival = TYUNKNOWN; } break;
case 55:
# line 365 "gram.in"
{ NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; } break;
case 56:
# line 366 "gram.in"
{ NOEXT("STATIC statement"); yyval.ival = - STGBSS; } break;
case 57:
# line 370 "gram.in"
{ yyval.ival = varleng; } break;
case 58:
# line 372 "gram.in"
{
		expptr p;
		p = yypvt[-1].expval;
		NO66("length specification *n");
		if( ! ISICON(p) || p->constblock.const.ci<0 )
			{
			yyval.ival = 0;
			dclerr("length must be a positive integer constant",
				PNULL);
			}
		else yyval.ival = p->constblock.const.ci;
		} break;
case 59:
# line 385 "gram.in"
{ NO66("length specification *(*)"); yyval.ival = -1; } break;
case 60:
# line 389 "gram.in"
{ incomm( yyval.extval = comblock(0, CNULL) , yypvt[-0].namval ); } break;
case 61:
# line 391 "gram.in"
{ yyval.extval = yypvt[-1].extval;  incomm(yypvt[-1].extval, yypvt[-0].namval); } break;
case 62:
# line 393 "gram.in"
{ yyval.extval = yypvt[-2].extval;  incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
case 63:
# line 395 "gram.in"
{ incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
case 64:
# line 399 "gram.in"
{ yyval.extval = comblock(0, CNULL); } break;
case 65:
# line 401 "gram.in"
{ yyval.extval = comblock(toklen, token); } break;
case 66:
# line 405 "gram.in"
{ setext(yypvt[-0].namval); } break;
case 67:
# line 407 "gram.in"
{ setext(yypvt[-0].namval); } break;
case 68:
# line 411 "gram.in"
{ NO66("INTRINSIC statement"); setintr(yypvt[-0].namval); } break;
case 69:
# line 413 "gram.in"
{ setintr(yypvt[-0].namval); } break;
case 72:
# line 421 "gram.in"
{
		struct Equivblock *p;
		if(nequiv >= maxequiv)
			many("equivalences", 'q');
		p  =  & eqvclass[nequiv++];
		p->eqvinit = NO;
		p->eqvbottom = 0;
		p->eqvtop = 0;
		p->equivs = yypvt[-1].eqvval;
		} break;
case 73:
# line 434 "gram.in"
{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *)yypvt[-0].expval;
		} break;
case 74:
# line 438 "gram.in"
{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *) yypvt[-0].expval;
		  yyval.eqvval->eqvnextp = yypvt[-2].eqvval;
		} break;
case 77:
# line 449 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(PNULL, CLMAIN);
			}
		  if(parstate < INDATA)
			{
			enddcl();
			parstate = INDATA;
			}
		} break;
case 78:
# line 463 "gram.in"
{ ftnint junk;
		  if(nextdata(&junk,&junk) != NULL)
			{
			err("too few initializers");
			curdtp = NULL;
			}
		  frdata(yypvt[-3].chval);
		  frrpl();
		} break;
case 79:
# line 474 "gram.in"
{ toomanyinit = NO; } break;
case 82:
# line 479 "gram.in"
{ dataval(PNULL, yypvt[-0].expval); } break;
case 83:
# line 481 "gram.in"
{ dataval(yypvt[-2].expval, yypvt[-0].expval); } break;
case 85:
# line 486 "gram.in"
{ if( yypvt[-1].ival==OPMINUS && ISCONST(yypvt[-0].expval) )
			consnegop(yypvt[-0].expval);
		  yyval.expval = yypvt[-0].expval;
		} break;
case 90:
# line 499 "gram.in"
{ int k;
		  yypvt[-0].namval->vsave = YES;
		  k = yypvt[-0].namval->vstg;
		if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
			dclerr("can only save static variables", yypvt[-0].namval);
		} break;
case 91:
# line 506 "gram.in"
{ yypvt[-0].extval->extsave = 1; } break;
case 94:
# line 514 "gram.in"
{ if(yypvt[-2].namval->vclass == CLUNKNOWN)
			{ yypvt[-2].namval->vclass = CLPARAM;
			  ( (struct Paramblock *) (yypvt[-2].namval) )->paramval = yypvt[-0].expval;
			}
		  else dclerr("cannot make %s parameter", yypvt[-2].namval);
		} break;
case 95:
# line 523 "gram.in"
{ if(ndim>0) setbound(yypvt[-1].namval, ndim, dims); } break;
case 96:
# line 527 "gram.in"
{ Namep np;
		  np = ( (struct Primblock *) yypvt[-0].expval) -> namep;
		  vardcl(np);
		  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 && np->vstg!=STGBSS)
			dclerr("inconsistent storage classes", np);
		  yyval.chval = mkchain(yypvt[-0].expval, CHNULL);
		} break;
case 97:
# line 539 "gram.in"
{ chainp p; struct Impldoblock *q;
		q = ALLOC(Impldoblock);
		q->tag = TIMPLDO;
		q->varnp = (Namep) (yypvt[-1].chval->datap);
		p = yypvt[-1].chval->nextp;
		if(p)  { q->implb = (expptr)(p->datap); p = p->nextp; }
		if(p)  { q->impub = (expptr)(p->datap); p = p->nextp; }
		if(p)  { q->impstep = (expptr)(p->datap); p = p->nextp; }
		frchain( & (yypvt[-1].chval) );
		yyval.chval = mkchain(q, CHNULL);
		q->datalist = hookup(yypvt[-3].chval, yyval.chval);
		} break;
case 98:
# line 554 "gram.in"
{ curdtp = yypvt[-0].chval; curdtelt = 0; } break;
case 99:
# line 556 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
case 101:
# line 561 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
case 102:
# line 565 "gram.in"
{ ndim = 0; } break;
case 104:
# line 569 "gram.in"
{ ndim = 0; } break;
case 107:
# line 574 "gram.in"
{ if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = 0;
			  dims[ndim].ub = yypvt[-0].expval;
			}
		  ++ndim;
		} break;
case 108:
# line 583 "gram.in"
{ if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = yypvt[-2].expval;
			  dims[ndim].ub = yypvt[-0].expval;
			}
		  ++ndim;
		} break;
case 109:
# line 594 "gram.in"
{ yyval.expval = 0; } break;
case 111:
# line 599 "gram.in"
{ nstars = 1; labarray[0] = yypvt[-0].labval; } break;
case 112:
# line 601 "gram.in"
{ if(nstars < MAXLABLIST)  labarray[nstars++] = yypvt[-0].labval; } break;
case 113:
# line 605 "gram.in"
{ yyval.labval = execlab( convci(toklen, token) ); } break;
case 114:
# line 609 "gram.in"
{ NO66("IMPLICIT statement"); } break;
case 117:
# line 616 "gram.in"
{ needkwd = 1; } break;
case 118:
# line 617 "gram.in"
{ vartype = yypvt[-0].ival; } break;
case 121:
# line 625 "gram.in"
{ setimpl(vartype, varleng, yypvt[-0].ival, yypvt[-0].ival); } break;
case 122:
# line 627 "gram.in"
{ setimpl(vartype, varleng, yypvt[-2].ival, yypvt[-0].ival); } break;
case 123:
# line 631 "gram.in"
{ if(toklen!=1 || token[0]<'a' || token[0]>'z')
			{
			dclerr("implicit item must be single letter", PNULL);
			yyval.ival = 0;
			}
		  else yyval.ival = token[0];
		} break;
case 126:
# line 645 "gram.in"
{
		if(yypvt[-2].namval->vclass == CLUNKNOWN)
			{
			yypvt[-2].namval->vclass = CLNAMELIST;
			yypvt[-2].namval->vtype = TYINT;
			yypvt[-2].namval->vstg = STGINIT;
			yypvt[-2].namval->varxptr.namelist = yypvt[-0].chval;
			yypvt[-2].namval->vardesc.varno = ++lastvarno;
			}
		else dclerr("cannot be a namelist name", yypvt[-2].namval);
		} break;
case 127:
# line 659 "gram.in"
{ yyval.chval = mkchain(yypvt[-0].namval, CHNULL); } break;
case 128:
# line 661 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval, CHNULL)); } break;
case 129:
# line 665 "gram.in"
{ switch(parstate)	
			{
			case OUTSIDE:	newproc();
					startproc(PNULL, CLMAIN);
			case INSIDE:	parstate = INDCL;
			case INDCL:	break;

			default:
				dclerr("declaration among executables", PNULL);
			}
		} break;
case 130:
# line 678 "gram.in"
{ yyval.chval = 0; } break;
case 132:
# line 683 "gram.in"
{ yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
case 133:
# line 685 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL) ); } break;
case 135:
# line 690 "gram.in"
{ yyval.expval = yypvt[-1].expval; } break;
case 139:
# line 697 "gram.in"
{ yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
case 140:
# line 699 "gram.in"
{ yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
case 141:
# line 701 "gram.in"
{ yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
case 142:
# line 703 "gram.in"
{ yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
case 143:
# line 705 "gram.in"
{ if(yypvt[-1].ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
		  else 	yyval.expval = yypvt[-0].expval;
		} break;
case 144:
# line 710 "gram.in"
{ yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
case 145:
# line 712 "gram.in"
{ NO66(".EQV. operator");
		  yyval.expval = mkexpr(OPEQV, yypvt[-2].expval,yypvt[-0].expval); } break;
case 146:
# line 715 "gram.in"
{ NO66(".NEQV. operator");
		  yyval.expval = mkexpr(OPNEQV, yypvt[-2].expval, yypvt[-0].expval); } break;
case 147:
# line 718 "gram.in"
{ yyval.expval = mkexpr(OPOR, yypvt[-2].expval, yypvt[-0].expval); } break;
case 148:
# line 720 "gram.in"
{ yyval.expval = mkexpr(OPAND, yypvt[-2].expval, yypvt[-0].expval); } break;
case 149:
# line 722 "gram.in"
{ yyval.expval = mkexpr(OPNOT, yypvt[-0].expval, ENULL); } break;
case 150:
# line 724 "gram.in"
{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
case 151:
# line 728 "gram.in"
{ yyval.ival = OPPLUS; } break;
case 152:
# line 729 "gram.in"
{ yyval.ival = OPMINUS; } break;
case 153:
# line 732 "gram.in"
{ yyval.ival = OPEQ; } break;
case 154:
# line 733 "gram.in"
{ yyval.ival = OPGT; } break;
case 155:
# line 734 "gram.in"
{ yyval.ival = OPLT; } break;
case 156:
# line 735 "gram.in"
{ yyval.ival = OPGE; } break;
case 157:
# line 736 "gram.in"
{ yyval.ival = OPLE; } break;
case 158:
# line 737 "gram.in"
{ yyval.ival = OPNE; } break;
case 159:
# line 741 "gram.in"
{ yyval.expval = mkprim(yypvt[-0].namval, PNULL, CHNULL); } break;
case 160:
# line 743 "gram.in"
{ NO66("substring operator :");
		  yyval.expval = mkprim(yypvt[-1].namval, PNULL, yypvt[-0].chval); } break;
case 161:
# line 746 "gram.in"
{ yyval.expval = mkprim(yypvt[-3].namval, mklist(yypvt[-1].chval), CHNULL); } break;
case 162:
# line 748 "gram.in"
{ NO66("substring operator :");
		  yyval.expval = mkprim(yypvt[-4].namval, mklist(yypvt[-2].chval), yypvt[-0].chval); } break;
case 163:
# line 753 "gram.in"
{ yyval.chval = mkchain(yypvt[-3].expval, mkchain(yypvt[-1].expval,CHNULL)); } break;
case 164:
# line 757 "gram.in"
{ yyval.expval = 0; } break;
case 166:
# line 762 "gram.in"
{ if(yypvt[-0].namval->vclass == CLPARAM)
			yyval.expval = (expptr) cpexpr(
				( (struct Paramblock *) (yypvt[-0].namval) ) -> paramval);
		} break;
case 168:
# line 769 "gram.in"
{ yyval.expval = mklogcon(1); } break;
case 169:
# line 770 "gram.in"
{ yyval.expval = mklogcon(0); } break;
case 170:
# line 771 "gram.in"
{ yyval.expval = mkstrcon(toklen, token); } break;
case 171:
# line 772 "gram.in"
 { yyval.expval = mkintcon( convci(toklen, token) ); } break;
case 172:
# line 773 "gram.in"
 { yyval.expval = mkrealcon(TYREAL, convcd(toklen, token)); } break;
case 173:
# line 774 "gram.in"
 { yyval.expval = mkrealcon(TYDREAL, convcd(toklen, token)); } break;
case 174:
# line 778 "gram.in"
{ yyval.expval = mkcxcon(yypvt[-3].expval,yypvt[-1].expval); } break;
case 175:
# line 782 "gram.in"
{ NOEXT("hex constant");
		  yyval.expval = mkbitcon(4, toklen, token); } break;
case 176:
# line 785 "gram.in"
{ NOEXT("octal constant");
		  yyval.expval = mkbitcon(3, toklen, token); } break;
case 177:
# line 788 "gram.in"
{ NOEXT("binary constant");
		  yyval.expval = mkbitcon(1, toklen, token); } break;
case 179:
# line 794 "gram.in"
{ yyval.expval = yypvt[-1].expval; } break;
case 182:
# line 800 "gram.in"
{ yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
case 183:
# line 802 "gram.in"
{ yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
case 184:
# line 804 "gram.in"
{ yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
case 185:
# line 806 "gram.in"
{ yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
case 186:
# line 808 "gram.in"
{ if(yypvt[-1].ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
		  else	yyval.expval = yypvt[-0].expval;
		} break;
case 187:
# line 813 "gram.in"
{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
case 189:
# line 818 "gram.in"
{
		if(yypvt[-2].labval->labdefined)
			execerr("no backward DO loops", CNULL);
		yypvt[-2].labval->blklevel = blklevel+1;
		exdo(yypvt[-2].labval->labelno, yypvt[-0].chval);
		} break;
case 190:
# line 825 "gram.in"
{ exendif();  thiswasbranch = NO; } break;
case 192:
# line 828 "gram.in"
{ exelif(yypvt[-2].expval); lastwasbranch = NO; } break;
case 193:
# line 830 "gram.in"
{ exelse(); lastwasbranch = NO; } break;
case 194:
# line 832 "gram.in"
{ exendif(); lastwasbranch = NO; } break;
case 195:
# line 836 "gram.in"
{ exif(yypvt[-1].expval); } break;
case 196:
# line 840 "gram.in"
{ yyval.chval = mkchain(yypvt[-2].namval, yypvt[-0].chval); } break;
case 197:
# line 844 "gram.in"
{ exequals(yypvt[-2].expval, yypvt[-0].expval); } break;
case 198:
# line 846 "gram.in"
{ exassign(yypvt[-0].namval, yypvt[-2].labval); } break;
case 201:
# line 850 "gram.in"
{ inioctl = NO; } break;
case 202:
# line 852 "gram.in"
{ exarif(yypvt[-6].expval, yypvt[-4].labval, yypvt[-2].labval, yypvt[-0].labval);  thiswasbranch = YES; } break;
case 203:
# line 854 "gram.in"
{ excall(yypvt[-0].namval, PNULL, 0, labarray); } break;
case 204:
# line 856 "gram.in"
{ excall(yypvt[-2].namval, PNULL, 0, labarray); } break;
case 205:
# line 858 "gram.in"
{ if(nstars < MAXLABLIST)
			excall(yypvt[-3].namval, mklist(yypvt[-1].chval), nstars, labarray);
		  else
			err("too many alternate returns");
		} break;
case 206:
# line 864 "gram.in"
{ exreturn(yypvt[-0].expval);  thiswasbranch = YES; } break;
case 207:
# line 866 "gram.in"
{ exstop(yypvt[-2].ival, yypvt[-0].expval);  thiswasbranch = yypvt[-2].ival; } break;
case 208:
# line 870 "gram.in"
{ yyval.labval = mklabel( convci(toklen, token) ); } break;
case 209:
# line 874 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(PNULL, CLMAIN);
			}
		} break;
case 210:
# line 883 "gram.in"
{ exgoto(yypvt[-0].labval);  thiswasbranch = YES; } break;
case 211:
# line 885 "gram.in"
{ exasgoto(yypvt[-0].namval);  thiswasbranch = YES; } break;
case 212:
# line 887 "gram.in"
{ exasgoto(yypvt[-4].namval);  thiswasbranch = YES; } break;
case 213:
# line 889 "gram.in"
{ if(nstars < MAXLABLIST)
			putcmgo(fixtype(yypvt[-0].expval), nstars, labarray);
		  else
			err("computed GOTO list too long");
		} break;
case 216:
# line 901 "gram.in"
{ nstars = 0; yyval.namval = yypvt[-0].namval; } break;
case 217:
# line 905 "gram.in"
{ yyval.chval = (yypvt[-0].expval ? mkchain(yypvt[-0].expval,CHNULL) : CHNULL); } break;
case 218:
# line 907 "gram.in"
{ if(yypvt[-0].expval)
			if(yypvt[-2].chval) yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL));
			else yyval.chval = mkchain(yypvt[-0].expval,CHNULL);
		  else
			yyval.chval = yypvt[-2].chval;
		} break;
case 220:
# line 917 "gram.in"
{ if(nstars<MAXLABLIST) labarray[nstars++] = yypvt[-0].labval; yyval.expval = 0; } break;
case 221:
# line 921 "gram.in"
{ yyval.ival = 0; } break;
case 222:
# line 923 "gram.in"
{ yyval.ival = 1; } break;
case 223:
# line 927 "gram.in"
{ yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
case 224:
# line 929 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL) ); } break;
case 225:
# line 933 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(PNULL, CLMAIN);
			}
		  if(parstate < INDATA) enddcl();
		} break;
case 226:
# line 943 "gram.in"
{ intonly = YES; } break;
case 227:
# line 947 "gram.in"
{ intonly = NO; } break;
case 228:
# line 952 "gram.in"
{ endio(); } break;
case 230:
# line 957 "gram.in"
{ ioclause(IOSUNIT, yypvt[-0].expval); endioctl(); } break;
case 231:
# line 959 "gram.in"
{ ioclause(IOSUNIT, PNULL); endioctl(); } break;
case 232:
# line 961 "gram.in"
{ ioclause(IOSUNIT, IOSTDERR); endioctl(); } break;
case 234:
# line 964 "gram.in"
{ doio(PNULL); } break;
case 235:
# line 966 "gram.in"
{ doio(PNULL); } break;
case 236:
# line 968 "gram.in"
{ doio(yypvt[-0].chval); } break;
case 237:
# line 970 "gram.in"
{ doio(yypvt[-0].chval); } break;
case 238:
# line 972 "gram.in"
{ doio(yypvt[-0].chval); } break;
case 239:
# line 974 "gram.in"
{ doio(PNULL); } break;
case 240:
# line 976 "gram.in"
{ doio(yypvt[-0].chval); } break;
case 241:
# line 978 "gram.in"
{ doio(PNULL); } break;
case 242:
# line 980 "gram.in"
{ doio(yypvt[-0].chval); } break;
case 244:
# line 987 "gram.in"
{ iostmt = IOBACKSPACE; } break;
case 245:
# line 989 "gram.in"
{ iostmt = IOREWIND; } break;
case 246:
# line 991 "gram.in"
{ iostmt = IOENDFILE; } break;
case 248:
# line 998 "gram.in"
{ iostmt = IOINQUIRE; } break;
case 249:
# line 1000 "gram.in"
{ iostmt = IOOPEN; } break;
case 250:
# line 1002 "gram.in"
{ iostmt = IOCLOSE; } break;
case 251:
# line 1006 "gram.in"
{
		ioclause(IOSUNIT, PNULL);
		ioclause(IOSFMT, yypvt[-0].expval);
		endioctl();
		} break;
case 252:
# line 1012 "gram.in"
{
		ioclause(IOSUNIT, PNULL);
		ioclause(IOSFMT, PNULL);
		endioctl();
		} break;
case 253:
# line 1020 "gram.in"
{ if(yypvt[-1].expval->headblock.vtype == TYCHAR)
			{
			ioclause(IOSUNIT, PNULL);
			ioclause(IOSFMT, yypvt[-1].expval);
			}
		  else
			ioclause(IOSUNIT, yypvt[-1].expval);
		  endioctl();
		} break;
case 254:
# line 1030 "gram.in"
{ endioctl(); } break;
case 257:
# line 1038 "gram.in"
{ ioclause(IOSPOSITIONAL, yypvt[-0].expval); } break;
case 258:
# line 1040 "gram.in"
{ ioclause(IOSPOSITIONAL, PNULL); } break;
case 259:
# line 1042 "gram.in"
{ ioclause(IOSPOSITIONAL, IOSTDERR); } break;
case 260:
# line 1044 "gram.in"
{ ioclause(yypvt[-1].ival, yypvt[-0].expval); } break;
case 261:
# line 1046 "gram.in"
{ ioclause(yypvt[-1].ival, PNULL); } break;
case 262:
# line 1048 "gram.in"
{ ioclause(yypvt[-1].ival, IOSTDERR); } break;
case 263:
# line 1052 "gram.in"
{ yyval.ival = iocname(); } break;
case 264:
# line 1056 "gram.in"
{ iostmt = IOREAD; } break;
case 265:
# line 1060 "gram.in"
{ iostmt = IOWRITE; } break;
case 266:
# line 1064 "gram.in"
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, PNULL);
		ioclause(IOSFMT, yypvt[-1].expval);
		endioctl();
		} break;
case 267:
# line 1071 "gram.in"
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, PNULL);
		ioclause(IOSFMT, PNULL);
		endioctl();
		} break;
case 268:
# line 1080 "gram.in"
{ yyval.chval = mkchain(yypvt[-0].tagval, CHNULL); } break;
case 269:
# line 1082 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].tagval, CHNULL)); } break;
case 270:
# line 1086 "gram.in"
{ yyval.tagval = (tagptr) yypvt[-0].expval; } break;
case 271:
# line 1088 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval,yypvt[-3].chval); } break;
case 272:
# line 1092 "gram.in"
{ yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
case 273:
# line 1094 "gram.in"
{ yyval.chval = mkchain(yypvt[-0].tagval, CHNULL); } break;
case 275:
# line 1099 "gram.in"
{ yyval.chval = mkchain(yypvt[-2].expval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
case 276:
# line 1101 "gram.in"
{ yyval.chval = mkchain(yypvt[-2].expval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
case 277:
# line 1103 "gram.in"
{ yyval.chval = mkchain(yypvt[-2].tagval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
case 278:
# line 1105 "gram.in"
{ yyval.chval = mkchain(yypvt[-2].tagval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
case 279:
# line 1107 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
case 280:
# line 1109 "gram.in"
{ yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
case 281:
# line 1113 "gram.in"
{ yyval.tagval = (tagptr) yypvt[-0].expval; } break;
case 282:
# line 1115 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain(yypvt[-3].expval, CHNULL) ); } break;
case 283:
# line 1117 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain(yypvt[-3].tagval, CHNULL) ); } break;
case 284:
# line 1119 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, yypvt[-3].chval); } break;
case 285:
# line 1123 "gram.in"
{ startioctl(); } break;
		}
		goto yystack;  /* stack new state and value */

	}

unix.superglobalmegacorp.com

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