|
|
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 */
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.