3BSD/usr/src/cmd/f77/gram.c
# 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 */
}