#include <sys/cdefs.h>
#ifndef lint
#if 0
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
#else
__IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
#endif
#endif
#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 125 "gram.in"
#include "defs.h"
#include "p1defs.h"
static int nstars; /* Number of labels in an
alternate return CALL */
static int datagripe;
static int ndim;
static int vartype;
int new_dcl;
static ftnint varleng;
static struct Dims dims[MAXDIM+1];
extern struct Labelblock **labarray; /* Labels in an alternate
return CALL */
extern int maxlablist;
/* The next two variables are used to verify that each statement might be reached
during runtime. lastwasbranch is tested only in the defintion of the
stat: nonterminal. */
int lastwasbranch = NO;
static int thiswasbranch = NO;
extern ftnint yystno;
extern flag intonly;
static chainp datastack;
extern long laststfcn, thisstno;
extern int can_include; /* for netlib */
extern struct Primblock *primchk Argdcl((expptr));
#define ESNULL (Extsym *)0
#define NPNULL (Namep)0
#define LBNULL (struct Listblock *)0
static void
pop_datastack(Void) {
chainp d0 = datastack;
if (d0->datap)
curdtp = (chainp)d0->datap;
datastack = d0->nextp;
d0->nextp = 0;
frchain(&d0);
}
#line 171 "gram.in"
typedef union {
int ival;
ftnint lval;
char *charpval;
chainp chval;
tagptr tagval;
expptr expval;
struct Labelblock *labval;
struct Nameblock *namval;
struct Eqvchain *eqvval;
Extsym *extval;
} YYSTYPE;
#line 76 "y.tab.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 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
#define SENDDO 97
#define SWHILE 98
#define SSLASHD 99
#define SBYTE 100
#define YYERRCODE 256
short yylhs[] = { -1,
0, 0, 54, 54, 54, 54, 54, 54, 54, 1,
55, 55, 55, 55, 55, 55, 55, 59, 51, 32,
52, 52, 60, 60, 61, 61, 62, 62, 25, 25,
25, 26, 26, 33, 33, 16, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56, 9, 9,
9, 73, 6, 7, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 15, 15, 15, 49,
49, 49, 49, 50, 50, 63, 63, 64, 64, 65,
65, 79, 53, 53, 66, 66, 80, 81, 75, 82,
84, 76, 76, 83, 83, 44, 44, 44, 69, 69,
85, 85, 71, 71, 86, 35, 17, 17, 18, 18,
74, 74, 89, 87, 87, 88, 88, 42, 42, 90,
90, 2, 67, 67, 91, 91, 94, 92, 93, 93,
95, 95, 10, 68, 68, 96, 19, 19, 70, 20,
20, 21, 21, 37, 37, 37, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
11, 11, 12, 12, 12, 12, 12, 12, 36, 36,
36, 36, 31, 39, 39, 43, 43, 47, 47, 47,
47, 47, 47, 47, 46, 48, 48, 48, 40, 40,
41, 41, 41, 41, 41, 41, 41, 41, 57, 57,
57, 57, 57, 57, 57, 57, 57, 98, 22, 23,
23, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 3, 99, 100, 100, 100, 100, 72, 72,
34, 24, 24, 45, 45, 13, 13, 27, 27, 58,
77, 78, 101, 102, 102, 102, 102, 102, 102, 102,
102, 102, 102, 102, 102, 102, 102, 103, 110, 110,
110, 105, 112, 112, 112, 107, 107, 104, 104, 113,
113, 114, 114, 114, 114, 114, 114, 14, 106, 108,
109, 109, 28, 28, 5, 5, 29, 29, 29, 30,
30, 30, 30, 30, 30, 4, 4, 4, 4, 4,
111,
};
short yylen[] = { 2,
0, 3, 2, 2, 2, 3, 3, 2, 1, 1,
3, 4, 3, 4, 4, 5, 3, 0, 1, 1,
0, 1, 2, 3, 1, 3, 1, 3, 0, 2,
3, 1, 3, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 1, 5, 7, 5,
5, 0, 2, 1, 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, 6, 0, 0,
0, 2, 3, 1, 3, 1, 2, 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, 3, 3, 4, 1, 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, 1, 5, 1, 1, 1, 1, 3,
1, 1, 3, 3, 3, 3, 2, 3, 1, 7,
4, 1, 2, 2, 6, 2, 2, 5, 3, 1,
4, 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, 3, 5, 5, 5,
0,
};
short yydefred[] = { 1,
0, 9, 10, 0, 0, 8, 0, 224, 240, 64,
259, 18, 240, 61, 265, 139, 57, 240, 87, 59,
63, 240, 58, 240, 240, 240, 261, 240, 0, 139,
139, 47, 18, 240, 240, 240, 240, 240, 139, 263,
55, 139, 60, 134, 264, 139, 236, 240, 18, 240,
56, 240, 260, 0, 65, 237, 18, 62, 240, 202,
66, 0, 0, 54, 0, 240, 0, 0, 3, 4,
5, 0, 0, 0, 0, 0, 0, 199, 0, 0,
215, 216, 243, 0, 0, 0, 0, 0, 240, 240,
2, 36, 6, 0, 0, 0, 0, 214, 89, 0,
206, 0, 7, 207, 20, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 127, 0, 0, 0, 0,
301, 0, 0, 74, 101, 102, 0, 99, 0, 301,
18, 230, 0, 241, 53, 0, 89, 0, 0, 0,
0, 0, 0, 0, 89, 127, 0, 135, 204, 203,
0, 0, 180, 181, 182, 183, 188, 187, 186, 178,
179, 0, 161, 162, 246, 247, 0, 191, 0, 0,
192, 184, 244, 0, 248, 267, 0, 0, 0, 0,
0, 301, 301, 223, 0, 22, 13, 231, 0, 70,
0, 0, 85, 0, 0, 0, 0, 17, 0, 80,
76, 0, 122, 225, 0, 0, 0, 0, 123, 0,
0, 78, 0, 0, 301, 0, 189, 0, 279, 0,
0, 0, 147, 0, 144, 221, 146, 148, 0, 0,
0, 280, 0, 139, 0, 0, 91, 222, 219, 0,
0, 0, 232, 73, 0, 77, 79, 81, 86, 124,
0, 0, 170, 0, 278, 273, 274, 0, 0, 0,
270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283, 0, 285, 0, 0, 0, 255, 0, 0, 0,
0, 257, 258, 262, 0, 113, 106, 71, 0, 109,
0, 107, 0, 210, 201, 0, 242, 0, 30, 35,
0, 34, 32, 83, 0, 15, 0, 120, 0, 0,
0, 0, 128, 0, 0, 103, 0, 282, 281, 0,
12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 163, 165, 164, 167, 166, 168, 0,
0, 75, 100, 14, 0, 52, 0, 0, 0, 0,
0, 235, 220, 0, 0, 0, 0, 0, 0, 0,
0, 276, 277, 0, 0, 269, 0, 0, 0, 0,
0, 0, 268, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 213, 0, 0, 0, 0, 90,
0, 0, 0, 0, 31, 0, 82, 0, 0, 0,
0, 0, 208, 133, 0, 0, 129, 0, 48, 0,
190, 0, 23, 0, 25, 145, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
68, 50, 0, 51, 0, 0, 176, 0, 94, 98,
177, 92, 233, 72, 0, 137, 0, 0, 0, 0,
271, 0, 284, 0, 0, 0, 0, 293, 0, 295,
0, 291, 0, 112, 0, 118, 0, 116, 114, 0,
110, 91, 0, 0, 0, 0, 205, 33, 84, 0,
0, 121, 0, 0, 125, 0, 0, 104, 0, 24,
0, 0, 0, 242, 93, 97, 0, 0, 0, 172,
0, 0, 0, 0, 0, 0, 0, 0, 115, 0,
0, 0, 211, 0, 200, 227, 0, 0, 132, 130,
28, 26, 185, 49, 69, 96, 95, 138, 173, 286,
299, 300, 298, 0, 117, 108, 88, 0, 0, 0,
217,
};
short yydgoto[] = { 1,
4, 308, 185, 276, 271, 62, 63, 64, 65, 405,
222, 341, 66, 258, 135, 93, 290, 291, 445, 357,
358, 294, 295, 241, 198, 301, 474, 272, 277, 278,
253, 151, 303, 67, 190, 223, 279, 225, 360, 169,
217, 468, 438, 439, 243, 227, 228, 172, 68, 126,
186, 187, 305, 5, 69, 70, 71, 94, 95, 321,
414, 415, 72, 73, 74, 75, 76, 77, 127, 97,
315, 133, 429, 287, 192, 350, 195, 393, 200, 99,
193, 472, 442, 351, 128, 316, 386, 469, 387, 309,
209, 210, 406, 211, 407, 148, 78, 79, 80, 81,
82, 83, 84, 173, 85, 86, 179, 87, 88, 89,
219, 90, 260, 261,
};
short yysindex[] = { 0,
5, 0, 0, 978, 18, 0, 89, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 169, 0, 0, 0, 0, 0, 0,
0, -4, -7, 0, 98, 0, 128, 93, 0, 0,
0, 112, 164, 171, 186, 196, 203, 0, 1649, 22,
0, 0, 0, 1435, 226, 1562, 226, 223, 0, 0,
0, 0, 0, 314, 22, 22, 169, 0, 0, 186,
0, 247, 0, 0, 0, 0, 259, 260, 22, 22,
346, 22, 283, 285, 294, 0, 22, 304, 1572, 22,
0, 1298, 370, 0, 0, 0, 307, 0, 22, 0,
0, 0, 22, 0, 0, 22, 0, 1298, 721, 22,
-34, 22, 22, 260, 0, 0, 22, 0, 0, 0,
322, 329, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1424, 0, 0, 0, 0, 1586, 0, 471, 0,
0, 0, 0, 1424, 0, 0, 0, 129, 332, 1327,
1327, 0, 0, 0, 363, 0, 0, 0, 372, 0,
22, 118, 0, 27, 346, 1298, 175, 0, 22, 0,
0, 259, 0, 0, 186, 346, 1298, 1298, 0, 393,
1037, 0, 22, 1586, 0, 471, 0, 414, 0, 1298,
1298, 1298, 0, 1812, 0, 0, 0, 0, 361, 169,
259, 0, 22, 0, 1384, 372, 0, 0, 0, 346,
4, 1812, 0, 0, 186, 0, 0, 0, 0, 0,
383, 1298, 0, 1298, 0, 0, 0, 1190, 1244, 166,
0, 406, 1586, 1586, 1586, 1586, 1586, 1300, 146, 146,
0, 416, 0, 146, 1327, 424, 0, 425, 1812, 430,
0, 0, 0, 0, 22, 0, 0, 0, 118, 0,
116, 0, 418, 0, 0, 423, 0, 1643, 0, 0,
185, 0, 0, 0, 201, 0, 437, 0, 250, 1665,
1687, 499, 0, 444, 268, 0, 1329, 0, 0, 9,
0, 1709, 445, 620, 442, 1298, 1298, 1298, 1298, 1298,
1298, 1298, 1298, 0, 0, 0, 0, 0, 0, 1298,
1298, 0, 0, 0, 259, 0, 1241, 1812, -7, 107,
1596, 0, 0, 1276, 22, 22, 456, 463, 1812, 457,
1812, 0, 0, 1812, 0, 0, 1424, 406, 406, 406,
289, 396, 0, 464, 416, 146, 416, 465, 467, 1731,
469, 1327, 1327, 1327, 0, 269, 1287, 480, 118, 0,
1298, 1298, 186, 479, 0, 59, 0, 22, 346, 186,
346, 346, 0, 0, 478, 276, 0, 1298, 0, 22,
0, 492, 0, 286, 0, 0, 1298, 442, 442, 442,
356, 620, 783, 1001, 1001, 402, 509, 0, 372, 487,
0, 0, 1596, 0, 1298, 1470, 0, 494, 0, 0,
0, 0, 0, 0, 508, 0, 513, 1298, 1298, 471,
0, 146, 0, 1327, 1327, 0, 1327, 0, 0, 0,
0, 0, 0, 0, 1287, 0, 1795, 0, 0, 118,
0, 0, 1753, 518, 1812, 27, 0, 0, 0, 305,
1298, 0, 520, 499, 0, 499, 1812, 0, 595, 0,
596, 536, -7, 0, 0, 0, 1596, 22, 1298, 0,
1812, 537, 539, -14, 542, 544, 555, 536, 0, 1287,
571, 151, 0, 1298, 0, 0, 1812, 346, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1812, 0, 0, 0, 1812, 575, 346,
0,
};
short yyrindex[] = { 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, 653, 0, 0, 0, 0, 0, 0,
0, 370, 415, 0, 655, 0, 658, 38, 0, 0,
0, 662, 663, 672, 172, 679, 688, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 691, 0, 0,
0, 0, 0, 0, 693, 0, 0, 0, 0, 28,
0, 0, 0, 0, 0, 0, 695, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 696, 0, 0, 0, 0, 697, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 696, 0, 168,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 392,
0, 0, 0, 0, 0, 0, 187, 698, 706, 707,
0, 0, 0, 0, 0, 0, 0, 0, 44, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 695, 0, 0, 101, 0, 0, 0, 0, 25,
0, 0, 0, 0, 0, 85, 0, 708, 0, 0,
0, 0, 0, 97, 0, 0, 0, 0, 0, 0,
695, 0, 0, 0, 0, 17, 0, 0, 0, 0,
0, 311, 0, 0, 370, 0, 0, 0, 0, 0,
0, 232, 0, 0, 0, 0, 0, 0, 639, 0,
0, 434, 0, 0, 0, 0, 0, 639, 0, 0,
0, 717, 0, 0, 0, 718, 0, 719, 0, 1149,
1038, 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, 1775, 92, 763, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 695, 0, 0, 34, 32, 0,
0, 0, 0, 0, 0, 0, 0, 646, 210, 0,
724, 0, 0, 316, 234, 0, 0, 543, 664, 680,
137, 136, 0, 0, 736, 0, 737, 0, 0, 0,
1775, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 41, 0, 0, 0, 0, 0, 0, 1413,
0, 0, 0, 0, 337, 0, 0, 0, 0, 0,
0, 342, 0, 0, 0, 0, 0, 846, 869, 892,
583, 288, 344, 261, 447, 486, 692, 0, 17, 0,
0, 0, 0, 0, 0, 0, 0, -22, 0, 0,
0, 0, 0, 0, 51, 0, 740, 0, 647, 349,
0, 0, 0, 0, 0, 1060, 0, 0, 1079, 0,
1098, 0, 1127, 0, 0, 0, 367, 0, 0, 0,
0, 0, 0, 69, 70, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 385, 0, 0, 0,
0, 1829, 32, 0, 0, 0, 0, 0, 666, 0,
387, 0, 0, 1536, 0, 0, 0, 816, 0, 0,
0, 0, 0, 0, 0, 0, 747, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 367, 0, 0, 0, 71, 0, 0,
0,
};
short yygindex[] = { 0,
0, -110, 0, -231, -333, 540, 0, 0, 0, 266,
31, 0, 0, 0, -332, 0, -342, 468, 0, 0,
0, -227, 277, 0, -181, 0, 0, 8, 578, 477,
321, -29, 375, 0, -137, 421, 275, -151, -118, -109,
227, 262, -408, 278, 419, -174, -27, 0, 0, -65,
-20, 656, 0, 0, 0, 0, 0, 1500, -11, 0,
0, 291, 0, 0, 0, 0, 0, 0, 0, -15,
0, -63, 0, -234, 649, 315, 659, -335, 648, 0,
638, 0, 357, 0, 564, 388, 0, 334, 0, 401,
660, 0, 0, 0, 318, 0, 726, 0, 0, 0,
0, 0, 0, 452, 0, 0, 0, 0, 0, 0,
-119, 0, 0, 441,
};
#define YYTABLESIZE 1925
short yytable[] = { 106,
204, 349, 244, 226, 141, 281, 281, 3, 107, 216,
232, 145, 431, 21, 108, 109, 432, 111, 91, 238,
306, 110, 412, 116, 125, 126, 117, 496, 280, 280,
118, 191, 67, 241, 242, 105, 194, 120, 38, 131,
105, 229, 453, 378, 111, 129, 471, 242, 123, 344,
124, 136, 259, 288, 229, 96, 171, 262, 171, 252,
96, 392, 283, 284, 268, 106, 188, 189, 323, 209,
238, 239, 105, 132, 134, 245, 96, 242, 353, 201,
106, 354, 205, 413, 297, 301, 21, 212, 526, 202,
106, 171, 159, 92, 111, 318, 319, 175, 111, 106,
281, 226, 126, 234, 317, 159, 236, 242, 231, 67,
189, 242, 246, 247, 167, 111, 167, 251, 453, 233,
229, 111, 229, 381, 293, 229, 111, 471, 111, 352,
67, 105, 242, 136, 171, 159, 193, 198, 229, 171,
300, 307, 105, 209, 238, 239, 171, 238, 239, 167,
458, 460, 462, 368, 369, 370, 371, 372, 525, 105,
524, 189, 301, 428, 296, 159, 159, 302, 159, 159,
140, 175, 42, 175, 229, 136, 440, 159, 159, 159,
159, 355, 105, 314, 433, 229, 171, 266, 105, 142,
159, 289, 167, 389, 493, 323, 137, 167, 390, 267,
125, 139, 269, 106, 167, 434, 270, 281, 281, 281,
193, 198, 345, 193, 198, 193, 193, 444, 346, 269,
193, 198, 458, 460, 503, 462, 505, 506, 433, 507,
459, 461, 463, 537, 268, 171, 171, 171, 171, 171,
366, 143, 511, 367, 167, 229, 267, 268, 144, 299,
230, 123, 230, 124, 340, 385, 300, 450, 440, 395,
2, 156, 396, 132, 266, 492, 189, 189, 189, 189,
189, 189, 340, 146, 156, 397, 374, 375, 398, 281,
281, 377, 281, 323, 142, 147, 175, 142, 158, 267,
482, 483, 267, 167, 167, 167, 167, 167, 267, 174,
181, 158, 459, 461, 156, 508, 140, 268, 174, 340,
170, 268, 177, 190, 190, 190, 190, 190, 190, 184,
196, 437, 440, 441, 400, 189, 446, 401, 340, 476,
502, 158, 197, 199, 156, 156, 481, 156, 156, 171,
340, 340, 409, 464, 157, 410, 465, 267, 156, 156,
485, 203, 340, 486, 340, 340, 206, 157, 207, 156,
490, 158, 158, 491, 158, 158, 302, 208, 163, 164,
263, 264, 265, 158, 158, 158, 158, 213, 340, 516,
314, 436, 401, 229, 230, 234, 158, 157, 234, 340,
275, 340, 245, 275, 340, 252, 224, 167, 267, 267,
267, 267, 267, 437, 254, 441, 437, 539, 441, 274,
340, 131, 224, 242, 131, 67, 27, 157, 157, 27,
157, 157, 504, 272, 504, 504, 272, 504, 67, 541,
157, 157, 157, 285, 197, 163, 164, 326, 327, 328,
504, 119, 157, 342, 119, 286, 296, 155, 340, 340,
340, 340, 340, 340, 340, 340, 340, 340, 67, 105,
155, 143, 105, 436, 143, 356, 312, 437, 528, 441,
298, 189, 189, 189, 189, 189, 189, 263, 264, 265,
267, 310, 311, 326, 327, 328, 149, 320, 67, 265,
155, 391, 67, 376, 322, 324, 325, 340, 392, 149,
152, 382, 383, 340, 168, 340, 168, 384, 197, 348,
399, 197, 404, 197, 197, 197, 197, 340, 197, 408,
155, 155, 417, 155, 155, 328, 359, 436, 361, 149,
447, 340, 364, 449, 155, 155, 175, 178, 180, 168,
448, 452, 454, 194, 455, 155, 457, 340, 477, 380,
163, 164, 263, 264, 265, 266, 169, 470, 484, 149,
149, 494, 149, 149, 340, 149, 149, 489, 340, 169,
149, 149, 149, 149, 149, 497, 149, 149, 149, 149,
149, 149, 168, 160, 149, 498, 499, 168, 163, 164,
326, 327, 328, 329, 168, 514, 160, 518, 273, 169,
418, 419, 420, 421, 422, 423, 424, 425, 521, 412,
523, 529, 292, 530, 426, 427, 531, 194, 532, 304,
194, 322, 194, 194, 194, 194, 160, 194, 242, 533,
169, 169, 169, 169, 168, 169, 169, 169, 169, 169,
169, 169, 169, 169, 169, 536, 169, 169, 169, 169,
169, 169, 540, 45, 169, 37, 160, 160, 218, 160,
160, 467, 39, 40, 195, 473, 475, 160, 160, 160,
160, 160, 41, 160, 160, 160, 160, 160, 160, 43,
196, 160, 487, 168, 168, 168, 168, 168, 44, 273,
273, 256, 154, 21, 273, 29, 174, 46, 249, 163,
164, 326, 327, 328, 329, 154, 250, 254, 11, 292,
334, 335, 336, 337, 338, 339, 272, 251, 288, 289,
141, 174, 501, 224, 212, 153, 154, 155, 156, 157,
158, 159, 160, 161, 105, 154, 253, 252, 195, 467,
171, 195, 174, 195, 195, 195, 195, 228, 195, 519,
313, 379, 515, 171, 196, 517, 388, 196, 282, 196,
196, 196, 196, 153, 196, 154, 154, 500, 154, 154,
478, 535, 443, 224, 527, 218, 153, 154, 154, 154,
154, 522, 249, 171, 534, 237, 512, 168, 538, 495,
154, 248, 235, 343, 220, 239, 273, 488, 509, 480,
163, 164, 240, 520, 150, 250, 153, 451, 0, 292,
221, 0, 0, 0, 171, 171, 171, 171, 479, 171,
171, 171, 171, 171, 171, 171, 171, 171, 171, 0,
171, 171, 171, 171, 171, 171, 153, 153, 171, 153,
153, 0, 153, 153, 153, 153, 150, 153, 153, 153,
153, 153, 0, 153, 153, 153, 153, 153, 153, 150,
0, 153, 163, 164, 326, 327, 328, 329, 330, 151,
0, 0, 273, 334, 335, 336, 337, 338, 339, 0,
0, 0, 151, 0, 0, 0, 0, 0, 0, 150,
292, 0, 152, 290, 0, 144, 144, 144, 144, 144,
144, 144, 144, 144, 144, 152, 144, 144, 144, 144,
144, 144, 151, 0, 0, 0, 0, 0, 0, 150,
150, 0, 150, 150, 0, 150, 150, 150, 150, 0,
150, 150, 150, 150, 150, 152, 150, 150, 150, 150,
150, 150, 151, 151, 150, 151, 151, 0, 151, 151,
151, 151, 0, 151, 151, 151, 151, 151, 0, 151,
151, 151, 151, 151, 151, 152, 152, 151, 152, 152,
0, 152, 152, 152, 152, 0, 152, 152, 152, 152,
152, 6, 152, 152, 152, 152, 152, 152, 0, 0,
152, 0, 0, 0, 0, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 296, 50,
51, 52, 53, 54, 55, 56, 57, 0, 0, 58,
59, 0, 0, 0, 0, 0, 0, 10, 0, 0,
297, 14, 0, 0, 17, 0, 0, 20, 21, 0,
23, 0, 0, 0, 60, 0, 0, 61, 0, 292,
163, 164, 326, 327, 328, 329, 330, 331, 41, 0,
43, 334, 335, 336, 337, 338, 339, 0, 294, 51,
0, 0, 0, 55, 0, 0, 0, 0, 58, 0,
0, 0, 146, 0, 0, 296, 0, 146, 146, 146,
146, 146, 146, 146, 146, 146, 146, 290, 146, 146,
146, 146, 146, 146, 145, 0, 61, 297, 0, 145,
145, 145, 145, 145, 145, 145, 145, 145, 145, 287,
145, 145, 145, 145, 145, 145, 292, 0, 144, 144,
144, 144, 144, 144, 144, 144, 144, 144, 0, 144,
144, 144, 144, 144, 144, 294, 0, 144, 144, 144,
144, 144, 144, 144, 144, 144, 144, 0, 144, 144,
144, 144, 144, 144, 153, 154, 155, 156, 157, 158,
159, 160, 161, 105, 290, 0, 144, 144, 144, 144,
144, 144, 144, 144, 144, 144, 0, 144, 144, 144,
144, 144, 144, 0, 0, 0, 0, 0, 144, 144,
144, 144, 144, 144, 144, 144, 144, 144, 0, 144,
144, 144, 144, 144, 144, 153, 154, 155, 156, 157,
158, 159, 160, 161, 105, 0, 0, 0, 0, 0,
0, 0, 0, 220, 0, 0, 0, 0, 0, 163,
164, 362, 0, 363, 0, 0, 0, 0, 0, 221,
153, 154, 155, 156, 157, 158, 159, 160, 161, 105,
0, 153, 154, 155, 156, 157, 158, 159, 160, 161,
105, 0, 153, 154, 155, 156, 157, 158, 159, 160,
161, 105, 0, 0, 220, 0, 0, 0, 365, 0,
163, 164, 430, 163, 164, 263, 264, 265, 266, 0,
221, 153, 154, 155, 156, 157, 158, 159, 160, 161,
105, 0, 0, 0, 0, 0, 0, 0, 0, 220,
0, 0, 0, 0, 0, 163, 164, 240, 0, 0,
220, 0, 0, 0, 0, 221, 163, 164, 466, 0,
0, 220, 0, 0, 373, 0, 221, 163, 164, 163,
164, 263, 264, 265, 266, 0, 0, 221, 153, 154,
155, 156, 157, 158, 159, 160, 161, 105, 0, 0,
275, 0, 0, 411, 0, 0, 163, 164, 163, 164,
263, 264, 265, 266, 0, 0, 221, 229, 229, 229,
229, 229, 229, 229, 229, 229, 229, 0, 153, 154,
155, 156, 157, 158, 159, 160, 161, 105, 255, 153,
154, 155, 156, 157, 158, 159, 160, 161, 105, 0,
0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
0, 0, 0, 163, 164, 0, 0, 0, 0, 0,
0, 0, 0, 221, 153, 154, 155, 156, 157, 158,
159, 160, 161, 105, 0, 0, 229, 0, 0, 0,
0, 0, 229, 229, 0, 0, 0, 214, 0, 0,
0, 0, 229, 163, 164, 256, 0, 257, 162, 0,
0, 0, 96, 0, 163, 164, 165, 98, 166, 0,
0, 100, 0, 101, 102, 103, 0, 104, 0, 0,
0, 0, 0, 111, 112, 113, 114, 115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 119, 0, 121,
0, 122, 0, 0, 0, 0, 0, 0, 130, 0,
0, 0, 0, 0, 0, 138, 153, 154, 155, 156,
157, 158, 159, 160, 161, 105, 153, 154, 155, 156,
157, 158, 159, 160, 161, 105, 0, 0, 182, 183,
153, 154, 155, 156, 157, 158, 159, 160, 161, 105,
153, 154, 155, 156, 157, 158, 159, 160, 161, 105,
169, 0, 0, 169, 0, 169, 169, 169, 169, 169,
169, 169, 169, 169, 169, 0, 169, 169, 169, 169,
169, 169, 0, 0, 0, 162, 0, 0, 0, 0,
0, 163, 164, 176, 0, 214, 0, 0, 0, 0,
0, 163, 164, 215, 0, 0, 0, 0, 0, 214,
0, 0, 0, 0, 0, 163, 164, 8, 9, 435,
11, 0, 13, 0, 15, 163, 164, 18, 0, 0,
0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
0, 0, 0, 34, 35, 36, 37, 0, 0, 40,
0, 0, 0, 0, 45, 0, 47, 48, 0, 0,
50, 0, 52, 53, 0, 0, 56, 394, 149, 0,
0, 59, 163, 164, 326, 327, 328, 329, 330, 331,
332, 333, 0, 334, 335, 336, 337, 338, 339, 402,
0, 0, 0, 0, 163, 164, 326, 327, 328, 329,
330, 331, 332, 333, 0, 334, 335, 336, 337, 338,
339, 403, 0, 0, 0, 0, 163, 164, 326, 327,
328, 329, 330, 331, 332, 333, 0, 334, 335, 336,
337, 338, 339, 416, 0, 0, 0, 0, 163, 164,
326, 327, 328, 329, 330, 331, 332, 333, 0, 334,
335, 336, 337, 338, 339, 456, 0, 0, 0, 0,
163, 164, 326, 327, 328, 329, 330, 331, 332, 333,
0, 334, 335, 336, 337, 338, 339, 513, 0, 0,
0, 0, 163, 164, 326, 327, 328, 329, 330, 331,
332, 333, 0, 334, 335, 336, 337, 338, 339, 144,
0, 0, 0, 0, 144, 144, 144, 144, 144, 144,
144, 144, 144, 144, 0, 144, 144, 144, 144, 144,
144, 510, 0, 0, 163, 164, 326, 327, 328, 329,
330, 331, 332, 333, 0, 334, 335, 336, 337, 338,
339, 163, 164, 326, 327, 328, 329, 330, 331, 332,
333, 0, 334, 335, 336, 337, 338, 339, 144, 144,
144, 144, 144, 144, 144, 144, 144, 144, 0, 144,
144, 144, 144, 144, 144,
};
short yycheck[] = { 29,
111, 236, 140, 122, 68, 180, 181, 3, 29, 119,
130, 75, 348, 1, 30, 31, 349, 1, 1, 138,
202, 33, 14, 39, 54, 1, 42, 436, 180, 181,
46, 97, 1, 6, 1, 14, 100, 49, 1, 44,
14, 14, 376, 275, 1, 57, 389, 14, 83, 231,
85, 1, 162, 191, 14, 78, 84, 167, 86, 74,
83, 76, 182, 183, 174, 95, 96, 97, 220, 1,
1, 1, 14, 78, 82, 141, 99, 44, 75, 109,
110, 78, 112, 75, 195, 1, 74, 117, 497, 110,
120, 119, 1, 5, 78, 215, 216, 1, 82, 129,
275, 1, 78, 133, 214, 14, 136, 74, 129, 78,
140, 78, 142, 143, 84, 99, 86, 147, 452, 131,
83, 78, 85, 275, 98, 98, 83, 470, 85, 240,
99, 14, 99, 83, 162, 44, 1, 1, 98, 167,
82, 205, 14, 75, 75, 75, 174, 78, 78, 119,
382, 383, 384, 263, 264, 265, 266, 267, 494, 14,
493, 191, 78, 345, 194, 74, 75, 197, 77, 78,
78, 75, 1, 77, 74, 78, 351, 86, 87, 88,
89, 245, 14, 213, 78, 14, 214, 1, 14, 78,
99, 74, 162, 78, 429, 347, 99, 167, 83, 169,
230, 74, 74, 233, 174, 99, 78, 382, 383, 384,
75, 75, 233, 78, 78, 80, 81, 355, 234, 74,
85, 85, 454, 455, 452, 457, 454, 455, 78, 457,
382, 383, 384, 83, 1, 263, 264, 265, 266, 267,
75, 78, 470, 78, 214, 74, 216, 14, 78, 75,
83, 83, 85, 85, 224, 285, 82, 367, 433, 75,
256, 1, 78, 78, 78, 417, 80, 81, 82, 83,
84, 85, 242, 78, 14, 75, 269, 270, 78, 454,
455, 274, 457, 435, 75, 83, 77, 78, 1, 259,
401, 402, 262, 263, 264, 265, 266, 267, 268, 74,
78, 14, 454, 455, 44, 457, 75, 74, 77, 279,
84, 78, 86, 80, 81, 82, 83, 84, 85, 6,
74, 351, 497, 351, 75, 355, 356, 78, 298, 393,
449, 44, 74, 74, 74, 75, 400, 77, 78, 367,
310, 311, 75, 75, 1, 78, 78, 317, 88, 89,
75, 6, 322, 78, 324, 325, 74, 14, 74, 99,
75, 74, 75, 78, 77, 78, 396, 74, 80, 81,
82, 83, 84, 86, 87, 88, 89, 74, 348, 75,
410, 351, 78, 14, 78, 75, 99, 44, 78, 359,
75, 361, 1, 78, 364, 74, 122, 367, 368, 369,
370, 371, 372, 433, 76, 433, 436, 518, 436, 78,
380, 75, 138, 139, 78, 1, 75, 74, 75, 78,
77, 78, 452, 75, 454, 455, 78, 457, 14, 540,
87, 88, 89, 71, 1, 80, 81, 82, 83, 84,
470, 75, 99, 83, 78, 74, 476, 1, 418, 419,
420, 421, 422, 423, 424, 425, 426, 427, 44, 75,
14, 75, 78, 433, 78, 83, 74, 497, 498, 497,
196, 80, 81, 82, 83, 84, 85, 82, 83, 84,
450, 207, 208, 82, 83, 84, 1, 74, 74, 84,
44, 74, 78, 78, 220, 221, 222, 467, 76, 14,
80, 78, 78, 473, 84, 475, 86, 78, 75, 235,
74, 78, 14, 80, 81, 82, 83, 487, 85, 76,
74, 75, 78, 77, 78, 84, 252, 497, 254, 44,
75, 501, 258, 77, 88, 89, 85, 86, 87, 119,
78, 78, 78, 1, 78, 99, 78, 517, 70, 275,
80, 81, 82, 83, 84, 85, 1, 78, 81, 74,
75, 75, 77, 78, 534, 80, 81, 76, 538, 14,
85, 86, 87, 88, 89, 82, 91, 92, 93, 94,
95, 96, 162, 1, 99, 78, 74, 167, 80, 81,
82, 83, 84, 85, 174, 78, 14, 78, 178, 44,
326, 327, 328, 329, 330, 331, 332, 333, 14, 14,
75, 75, 192, 75, 340, 341, 75, 75, 75, 199,
78, 347, 80, 81, 82, 83, 44, 85, 354, 75,
75, 76, 77, 78, 214, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 75, 91, 92, 93, 94,
95, 96, 78, 1, 99, 1, 74, 75, 1, 77,
78, 387, 1, 1, 1, 391, 392, 85, 86, 87,
88, 89, 1, 91, 92, 93, 94, 95, 96, 1,
1, 99, 408, 263, 264, 265, 266, 267, 1, 269,
270, 1, 1, 1, 274, 1, 1, 1, 1, 80,
81, 82, 83, 84, 85, 14, 1, 1, 1, 289,
91, 92, 93, 94, 95, 96, 78, 1, 1, 1,
75, 75, 448, 449, 1, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 44, 1, 1, 75, 465,
1, 78, 77, 80, 81, 82, 83, 1, 85, 484,
211, 275, 476, 14, 75, 481, 289, 78, 181, 80,
81, 82, 83, 1, 85, 74, 75, 447, 77, 78,
396, 510, 354, 499, 497, 120, 14, 86, 87, 88,
89, 491, 145, 44, 510, 137, 472, 367, 514, 433,
99, 144, 134, 230, 74, 75, 376, 410, 465, 399,
80, 81, 82, 486, 79, 146, 44, 367, -1, 389,
90, -1, -1, -1, 75, 76, 77, 78, 398, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
91, 92, 93, 94, 95, 96, 74, 75, 99, 77,
78, -1, 80, 81, 82, 83, 1, 85, 86, 87,
88, 89, -1, 91, 92, 93, 94, 95, 96, 14,
-1, 99, 80, 81, 82, 83, 84, 85, 86, 1,
-1, -1, 452, 91, 92, 93, 94, 95, 96, -1,
-1, -1, 14, -1, -1, -1, -1, -1, -1, 44,
470, -1, 1, 78, -1, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 14, 91, 92, 93, 94,
95, 96, 44, -1, -1, -1, -1, -1, -1, 74,
75, -1, 77, 78, -1, 80, 81, 82, 83, -1,
85, 86, 87, 88, 89, 44, 91, 92, 93, 94,
95, 96, 74, 75, 99, 77, 78, -1, 80, 81,
82, 83, -1, 85, 86, 87, 88, 89, -1, 91,
92, 93, 94, 95, 96, 74, 75, 99, 77, 78,
-1, 80, 81, 82, 83, -1, 85, 86, 87, 88,
89, 4, 91, 92, 93, 94, 95, 96, -1, -1,
99, -1, -1, -1, -1, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 1, 62,
63, 64, 65, 66, 67, 68, 69, -1, -1, 72,
73, -1, -1, -1, -1, -1, -1, 21, -1, -1,
1, 25, -1, -1, 28, -1, -1, 31, 32, -1,
34, -1, -1, -1, 97, -1, -1, 100, -1, 1,
80, 81, 82, 83, 84, 85, 86, 87, 52, -1,
54, 91, 92, 93, 94, 95, 96, -1, 1, 63,
-1, -1, -1, 67, -1, -1, -1, -1, 72, -1,
-1, -1, 75, -1, -1, 78, -1, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 1, 91, 92,
93, 94, 95, 96, 75, -1, 100, 78, -1, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 1,
91, 92, 93, 94, 95, 96, 78, -1, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
92, 93, 94, 95, 96, 78, -1, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, 91, 92,
93, 94, 95, 96, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 78, -1, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, 91, 92, 93,
94, 95, 96, -1, -1, -1, -1, -1, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
92, 93, 94, 95, 96, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, -1, -1, -1, -1, -1,
-1, -1, -1, 74, -1, -1, -1, -1, -1, 80,
81, 82, -1, 84, -1, -1, -1, -1, -1, 90,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
-1, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, -1, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, -1, -1, 74, -1, -1, -1, 75, -1,
80, 81, 82, 80, 81, 82, 83, 84, 85, -1,
90, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, -1, -1, -1, -1, -1, -1, -1, -1, 74,
-1, -1, -1, -1, -1, 80, 81, 82, -1, -1,
74, -1, -1, -1, -1, 90, 80, 81, 82, -1,
-1, 74, -1, -1, 75, -1, 90, 80, 81, 80,
81, 82, 83, 84, 85, -1, -1, 90, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, -1, -1,
74, -1, -1, 75, -1, -1, 80, 81, 80, 81,
82, 83, 84, 85, -1, -1, 90, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, -1, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, -1,
-1, -1, -1, -1, -1, -1, -1, 74, -1, -1,
-1, -1, -1, 80, 81, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, -1, -1, 74, -1, -1, -1,
-1, -1, 80, 81, -1, -1, -1, 74, -1, -1,
-1, -1, 90, 80, 81, 82, -1, 84, 74, -1,
-1, -1, 13, -1, 80, 81, 82, 18, 84, -1,
-1, 22, -1, 24, 25, 26, -1, 28, -1, -1,
-1, -1, -1, 34, 35, 36, 37, 38, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 48, -1, 50,
-1, 52, -1, -1, -1, -1, -1, -1, 59, -1,
-1, -1, -1, -1, -1, 66, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, -1, -1, 89, 90,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
75, -1, -1, 78, -1, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, -1, 91, 92, 93, 94,
95, 96, -1, -1, -1, 74, -1, -1, -1, -1,
-1, 80, 81, 82, -1, 74, -1, -1, -1, -1,
-1, 80, 81, 82, -1, -1, -1, -1, -1, 74,
-1, -1, -1, -1, -1, 80, 81, 19, 20, 74,
22, -1, 24, -1, 26, 80, 81, 29, -1, -1,
-1, -1, -1, -1, -1, -1, 38, -1, -1, -1,
-1, -1, -1, 45, 46, 47, 48, -1, -1, 51,
-1, -1, -1, -1, 56, -1, 58, 59, -1, -1,
62, -1, 64, 65, -1, -1, 68, 75, 70, -1,
-1, 73, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, 91, 92, 93, 94, 95, 96, 75,
-1, -1, -1, -1, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, 91, 92, 93, 94, 95,
96, 75, -1, -1, -1, -1, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, 91, 92, 93,
94, 95, 96, 75, -1, -1, -1, -1, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
92, 93, 94, 95, 96, 75, -1, -1, -1, -1,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, 91, 92, 93, 94, 95, 96, 75, -1, -1,
-1, -1, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, 91, 92, 93, 94, 95, 96, 75,
-1, -1, -1, -1, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, 91, 92, 93, 94, 95,
96, 77, -1, -1, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, 91, 92, 93, 94, 95,
96, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, 91, 92, 93, 94, 95, 96, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
92, 93, 94, 95, 96,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 100
#if YYDEBUG
char *yyname[] = {
"end-of-file","SEOS","SCOMMENT","SLABEL","SUNKNOWN","SHOLLERITH","SICON",
"SRCON","SDCON","SBITCON","SOCTCON","SHEXCON","STRUE","SFALSE","SNAME",
"SNAMEEQ","SFIELD","SSCALE","SINCLUDE","SLET","SASSIGN","SAUTOMATIC",
"SBACKSPACE","SBLOCK","SCALL","SCHARACTER","SCLOSE","SCOMMON","SCOMPLEX",
"SCONTINUE","SDATA","SDCOMPLEX","SDIMENSION","SDO","SDOUBLE","SELSE","SELSEIF",
"SEND","SENDFILE","SENDIF","SENTRY","SEQUIV","SEXTERNAL","SFORMAT","SFUNCTION",
"SGOTO","SASGOTO","SCOMPGOTO","SARITHIF","SLOGIF","SIMPLICIT","SINQUIRE",
"SINTEGER","SINTRINSIC","SLOGICAL","SNAMELIST","SOPEN","SPARAM","SPAUSE",
"SPRINT","SPROGRAM","SPUNCH","SREAD","SREAL","SRETURN","SREWIND","SSAVE",
"SSTATIC","SSTOP","SSUBROUTINE","STHEN","STO","SUNDEFINED","SWRITE","SLPAR",
"SRPAR","SEQUALS","SCOLON","SCOMMA","SCURRENCY","SPLUS","SMINUS","SSTAR",
"SSLASH","SPOWER","SCONCAT","SAND","SOR","SNEQV","SEQV","SNOT","SEQ","SLT",
"SGT","SLE","SGE","SNE","SENDDO","SWHILE","SSLASHD","SBYTE",
};
char *yyrule[] = {
"$accept : program",
"program :",
"program : program stat SEOS",
"stat : thislabel entry",
"stat : thislabel spec",
"stat : thislabel exec",
"stat : thislabel SINCLUDE filename",
"stat : thislabel SEND end_spec",
"stat : thislabel SUNKNOWN",
"stat : error",
"thislabel : SLABEL",
"entry : SPROGRAM new_proc progname",
"entry : SPROGRAM new_proc progname progarglist",
"entry : SBLOCK new_proc progname",
"entry : SSUBROUTINE new_proc entryname arglist",
"entry : SFUNCTION new_proc entryname arglist",
"entry : type SFUNCTION new_proc entryname arglist",
"entry : SENTRY entryname arglist",
"new_proc :",
"entryname : name",
"name : SNAME",
"progname :",
"progname : entryname",
"progarglist : SLPAR SRPAR",
"progarglist : SLPAR progargs SRPAR",
"progargs : progarg",
"progargs : progargs SCOMMA progarg",
"progarg : SNAME",
"progarg : SNAME SEQUALS SNAME",
"arglist :",
"arglist : SLPAR SRPAR",
"arglist : SLPAR args SRPAR",
"args : arg",
"args : args SCOMMA arg",
"arg : name",
"arg : SSTAR",
"filename : SHOLLERITH",
"spec : dcl",
"spec : common",
"spec : external",
"spec : intrinsic",
"spec : equivalence",
"spec : data",
"spec : implicit",
"spec : namelist",
"spec : SSAVE",
"spec : SSAVE savelist",
"spec : SFORMAT",
"spec : SPARAM in_dcl SLPAR paramlist SRPAR",
"dcl : type opt_comma name in_dcl new_dcl dims lengspec",
"dcl : dcl SCOMMA name dims lengspec",
"dcl : dcl SSLASHD datainit vallist SSLASHD",
"new_dcl :",
"type : typespec lengspec",
"typespec : typename",
"typename : SINTEGER",
"typename : SREAL",
"typename : SCOMPLEX",
"typename : SDOUBLE",
"typename : SDCOMPLEX",
"typename : SLOGICAL",
"typename : SCHARACTER",
"typename : SUNDEFINED",
"typename : SDIMENSION",
"typename : SAUTOMATIC",
"typename : SSTATIC",
"typename : SBYTE",
"lengspec :",
"lengspec : SSTAR intonlyon expr intonlyoff",
"lengspec : SSTAR intonlyon SLPAR SSTAR SRPAR intonlyoff",
"common : SCOMMON in_dcl var",
"common : SCOMMON in_dcl comblock var",
"common : common opt_comma comblock opt_comma var",
"common : common SCOMMA var",
"comblock : SCONCAT",
"comblock : SSLASH SNAME SSLASH",
"external : SEXTERNAL in_dcl name",
"external : external SCOMMA name",
"intrinsic : SINTRINSIC in_dcl name",
"intrinsic : intrinsic SCOMMA name",
"equivalence : SEQUIV in_dcl equivset",
"equivalence : equivalence SCOMMA equivset",
"equivset : SLPAR equivlist SRPAR",
"equivlist : lhs",
"equivlist : equivlist SCOMMA lhs",
"data : SDATA in_data datalist",
"data : data opt_comma datalist",
"in_data :",
"datalist : datainit datavarlist SSLASH datapop vallist SSLASH",
"datainit :",
"datapop :",
"$$1 :",
"vallist : $$1 val",
"vallist : vallist SCOMMA val",
"val : value",
"val : simple SSTAR value",
"value : simple",
"value : addop simple",
"value : complex_const",
"savelist : saveitem",
"savelist : savelist SCOMMA saveitem",
"saveitem : name",
"saveitem : comblock",
"paramlist : paramitem",
"paramlist : paramlist SCOMMA paramitem",
"paramitem : name SEQUALS expr",
"var : name dims",
"datavar : lhs",
"datavar : SLPAR datavarlist SCOMMA dospec SRPAR",
"datavarlist : datavar",
"datavarlist : datavarlist SCOMMA datavar",
"dims :",
"dims : SLPAR dimlist SRPAR",
"$$2 :",
"dimlist : $$2 dim",
"dimlist : dimlist SCOMMA dim",
"dim : ubound",
"dim : expr SCOLON ubound",
"ubound : SSTAR",
"ubound : expr",
"labellist : label",
"labellist : labellist SCOMMA label",
"label : SICON",
"implicit : SIMPLICIT in_dcl implist",
"implicit : implicit SCOMMA implist",
"implist : imptype SLPAR letgroups SRPAR",
"implist : imptype",
"$$3 :",
"imptype : $$3 type",
"letgroups : letgroup",
"letgroups : letgroups SCOMMA letgroup",
"letgroup : letter",
"letgroup : letter SMINUS letter",
"letter : SNAME",
"namelist : SNAMELIST",
"namelist : namelist namelistentry",
"namelistentry : SSLASH name SSLASH namelistlist",
"namelistlist : name",
"namelistlist : namelistlist SCOMMA name",
"in_dcl :",
"funarglist :",
"funarglist : funargs",
"funargs : expr",
"funargs : funargs SCOMMA expr",
"expr : uexpr",
"expr : SLPAR expr SRPAR",
"expr : complex_const",
"uexpr : lhs",
"uexpr : simple_const",
"uexpr : expr addop expr",
"uexpr : expr SSTAR expr",
"uexpr : expr SSLASH expr",
"uexpr : expr SPOWER expr",
"uexpr : addop expr",
"uexpr : expr relop expr",
"uexpr : expr SEQV expr",
"uexpr : expr SNEQV expr",
"uexpr : expr SOR expr",
"uexpr : expr SAND expr",
"uexpr : SNOT expr",
"uexpr : expr SCONCAT expr",
"addop : SPLUS",
"addop : SMINUS",
"relop : SEQ",
"relop : SGT",
"relop : SLT",
"relop : SGE",
"relop : SLE",
"relop : SNE",
"lhs : name",
"lhs : name substring",
"lhs : name SLPAR funarglist SRPAR",
"lhs : name SLPAR funarglist SRPAR substring",
"substring : SLPAR opt_expr SCOLON opt_expr SRPAR",
"opt_expr :",
"opt_expr : expr",
"simple : name",
"simple : simple_const",
"simple_const : STRUE",
"simple_const : SFALSE",
"simple_const : SHOLLERITH",
"simple_const : SICON",
"simple_const : SRCON",
"simple_const : SDCON",
"simple_const : bit_const",
"complex_const : SLPAR uexpr SCOMMA uexpr SRPAR",
"bit_const : SHEXCON",
"bit_const : SOCTCON",
"bit_const : SBITCON",
"fexpr : unpar_fexpr",
"fexpr : SLPAR fexpr SRPAR",
"unpar_fexpr : lhs",
"unpar_fexpr : simple_const",
"unpar_fexpr : fexpr addop fexpr",
"unpar_fexpr : fexpr SSTAR fexpr",
"unpar_fexpr : fexpr SSLASH fexpr",
"unpar_fexpr : fexpr SPOWER fexpr",
"unpar_fexpr : addop fexpr",
"unpar_fexpr : fexpr SCONCAT fexpr",
"exec : iffable",
"exec : SDO end_spec intonlyon label intonlyoff opt_comma dospecw",
"exec : SDO end_spec opt_comma dospecw",
"exec : SENDDO",
"exec : logif iffable",
"exec : logif STHEN",
"exec : SELSEIF end_spec SLPAR expr SRPAR STHEN",
"exec : SELSE end_spec",
"exec : SENDIF end_spec",
"logif : SLOGIF end_spec SLPAR expr SRPAR",
"dospec : name SEQUALS exprlist",
"dospecw : dospec",
"dospecw : SWHILE SLPAR expr SRPAR",
"iffable : let lhs SEQUALS expr",
"iffable : SASSIGN end_spec assignlabel STO name",
"iffable : SCONTINUE end_spec",
"iffable : goto",
"iffable : io",
"iffable : SARITHIF end_spec SLPAR expr SRPAR label SCOMMA label SCOMMA label",
"iffable : call",
"iffable : call SLPAR SRPAR",
"iffable : call SLPAR callarglist SRPAR",
"iffable : SRETURN end_spec opt_expr",
"iffable : stop end_spec opt_expr",
"assignlabel : SICON",
"let : SLET",
"goto : SGOTO end_spec label",
"goto : SASGOTO end_spec name",
"goto : SASGOTO end_spec name opt_comma SLPAR labellist SRPAR",
"goto : SCOMPGOTO end_spec SLPAR labellist SRPAR opt_comma expr",
"opt_comma :",
"opt_comma : SCOMMA",
"call : SCALL end_spec name",
"callarglist : callarg",
"callarglist : callarglist SCOMMA callarg",
"callarg : expr",
"callarg : SSTAR label",
"stop : SPAUSE",
"stop : SSTOP",
"exprlist : expr",
"exprlist : exprlist SCOMMA expr",
"end_spec :",
"intonlyon :",
"intonlyoff :",
"io : io1",
"io1 : iofmove ioctl",
"io1 : iofmove unpar_fexpr",
"io1 : iofmove SSTAR",
"io1 : iofmove SPOWER",
"io1 : iofctl ioctl",
"io1 : read ioctl",
"io1 : read infmt",
"io1 : read ioctl inlist",
"io1 : read infmt SCOMMA inlist",
"io1 : read ioctl SCOMMA inlist",
"io1 : write ioctl",
"io1 : write ioctl outlist",
"io1 : print",
"io1 : print SCOMMA outlist",
"iofmove : fmkwd end_spec in_ioctl",
"fmkwd : SBACKSPACE",
"fmkwd : SREWIND",
"fmkwd : SENDFILE",
"iofctl : ctlkwd end_spec in_ioctl",
"ctlkwd : SINQUIRE",
"ctlkwd : SOPEN",
"ctlkwd : SCLOSE",
"infmt : unpar_fexpr",
"infmt : SSTAR",
"ioctl : SLPAR fexpr SRPAR",
"ioctl : SLPAR ctllist SRPAR",
"ctllist : ioclause",
"ctllist : ctllist SCOMMA ioclause",
"ioclause : fexpr",
"ioclause : SSTAR",
"ioclause : SPOWER",
"ioclause : nameeq expr",
"ioclause : nameeq SSTAR",
"ioclause : nameeq SPOWER",
"nameeq : SNAMEEQ",
"read : SREAD end_spec in_ioctl",
"write : SWRITE end_spec in_ioctl",
"print : SPRINT end_spec fexpr in_ioctl",
"print : SPRINT end_spec SSTAR in_ioctl",
"inlist : inelt",
"inlist : inlist SCOMMA inelt",
"inelt : lhs",
"inelt : SLPAR inlist SCOMMA dospec SRPAR",
"outlist : uexpr",
"outlist : other",
"outlist : out2",
"out2 : uexpr SCOMMA uexpr",
"out2 : uexpr SCOMMA other",
"out2 : other SCOMMA uexpr",
"out2 : other SCOMMA other",
"out2 : out2 SCOMMA uexpr",
"out2 : out2 SCOMMA other",
"other : complex_const",
"other : SLPAR expr SRPAR",
"other : SLPAR uexpr SCOMMA dospec SRPAR",
"other : SLPAR other SCOMMA dospec SRPAR",
"other : SLPAR out2 SCOMMA dospec SRPAR",
"in_ioctl :",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
int yyparse __P((void));
static int yygrowstack __P((void));
static int yygrowstack()
{
int newsize, i;
short *newss;
YYSTYPE *newvs;
if ((newsize = yystacksize) == 0)
newsize = YYINITSTACKSIZE;
else if (newsize >= YYMAXDEPTH)
return -1;
else if ((newsize *= 2) > YYMAXDEPTH)
newsize = YYMAXDEPTH;
i = yyssp - yyss;
if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
return -1;
yyss = newss;
yyssp = newss + i;
if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
return -1;
yyvs = newvs;
yyvsp = newvs + i;
yystacksize = newsize;
yysslim = yyss + newsize - 1;
return 0;
}
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
int yym, yyn, yystate;
#if YYDEBUG
char *yys;
if ((yys = getenv("YYDEBUG")) != NULL)
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif
yynerrs = 0;
yyerrflag = 0;
yychar = (-1);
if (yyss == NULL && yygrowstack()) goto yyoverflow;
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
yychar = (-1);
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
goto yynewerror;
yynewerror:
yyerror("syntax error");
goto yyerrlab;
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
--yyvsp;
}
}
}
else
{
if (yychar == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
yychar = (-1);
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
yyval = yyvsp[1-yym];
switch (yyn)
{
case 3:
#line 219 "gram.in"
{
/* stat: is the nonterminal for Fortran statements */
lastwasbranch = NO; }
break;
case 5:
#line 225 "gram.in"
{ /* forbid further statement function definitions... */
if (parstate == INDATA && laststfcn != thisstno)
parstate = INEXEC;
thisstno++;
if(yyvsp[-1].labval && (yyvsp[-1].labval->labelno==dorange))
enddo(yyvsp[-1].labval->labelno);
if(lastwasbranch && thislabel==NULL)
warn("statement cannot be reached");
lastwasbranch = thiswasbranch;
thiswasbranch = NO;
if(yyvsp[-1].labval)
{
if(yyvsp[-1].labval->labtype == LABFORMAT)
err("label already that of a format");
else
yyvsp[-1].labval->labtype = LABEXEC;
}
freetemps();
}
break;
case 6:
#line 245 "gram.in"
{ if (can_include)
doinclude( yyvsp[0].charpval );
else {
fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval);
done(1);
}
}
break;
case 7:
#line 253 "gram.in"
{ if (yyvsp[-2].labval)
lastwasbranch = NO;
endproc(); /* lastwasbranch = NO; -- set in endproc() */
}
break;
case 8:
#line 258 "gram.in"
{ unclassifiable();
/* flline flushes the current line, ignoring the rest of the text there */
flline(); }
break;
case 9:
#line 264 "gram.in"
{ flline(); needkwd = NO; inioctl = NO;
yyerrok; yyclearin; }
break;
case 10:
#line 269 "gram.in"
{
if(yystno != 0)
{
yyval.labval = thislabel = mklabel(yystno);
if( ! headerdone ) {
if (procclass == CLUNKNOWN)
procclass = CLMAIN;
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)
p1_label((long)(thislabel - labeltab));
}
}
else yyval.labval = thislabel = NULL;
}
break;
case 11:
#line 297 "gram.in"
{startproc(yyvsp[0].extval, CLMAIN); }
break;
case 12:
#line 299 "gram.in"
{ warn("ignoring arguments to main program");
/* hashclear(); */
startproc(yyvsp[-1].extval, CLMAIN); }
break;
case 13:
#line 303 "gram.in"
{ if(yyvsp[0].extval) NO66("named BLOCKDATA");
startproc(yyvsp[0].extval, CLBLOCK); }
break;
case 14:
#line 306 "gram.in"
{ entrypt(CLPROC, TYSUBR, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 15:
#line 308 "gram.in"
{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 16:
#line 310 "gram.in"
{ entrypt(CLPROC, yyvsp[-4].ival, varleng, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 17:
#line 312 "gram.in"
{ if(parstate==OUTSIDE || procclass==CLMAIN
|| procclass==CLBLOCK)
execerr("misplaced entry statement", CNULL);
entrypt(CLENTRY, 0, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval);
}
break;
case 18:
#line 320 "gram.in"
{ newproc(); }
break;
case 19:
#line 324 "gram.in"
{ yyval.extval = newentry(yyvsp[0].namval, 1); }
break;
case 20:
#line 328 "gram.in"
{ yyval.namval = mkname(token); }
break;
case 21:
#line 331 "gram.in"
{ yyval.extval = NULL; }
break;
case 29:
#line 349 "gram.in"
{ yyval.chval = 0; }
break;
case 30:
#line 351 "gram.in"
{ NO66(" () argument list");
yyval.chval = 0; }
break;
case 31:
#line 354 "gram.in"
{yyval.chval = yyvsp[-1].chval; }
break;
case 32:
#line 358 "gram.in"
{ yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval,CHNULL) : CHNULL ); }
break;
case 33:
#line 360 "gram.in"
{ if(yyvsp[0].namval) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval, yyvsp[-2].chval); }
break;
case 34:
#line 364 "gram.in"
{ if(yyvsp[0].namval->vstg!=STGUNKNOWN && yyvsp[0].namval->vstg!=STGARG)
dclerr("name declared as argument after use", yyvsp[0].namval);
yyvsp[0].namval->vstg = STGARG;
}
break;
case 35:
#line 369 "gram.in"
{ NO66("altenate return argument");
/* substars means that '*'ed formal parameters should be replaced.
This is used to specify alternate return labels; in theory, only
parameter slots which have '*' should accept the statement labels.
This compiler chooses to ignore the '*'s in the formal declaration, and
always return the proper value anyway.
This variable is only referred to in proc.c */
yyval.namval = 0; substars = YES; }
break;
case 36:
#line 385 "gram.in"
{
char *s;
s = copyn(toklen+1, token);
s[toklen] = '\0';
yyval.charpval = s;
}
break;
case 45:
#line 401 "gram.in"
{ NO66("SAVE statement");
saveall = YES; }
break;
case 46:
#line 404 "gram.in"
{ NO66("SAVE statement"); }
break;
case 47:
#line 406 "gram.in"
{ fmtstmt(thislabel); setfmt(thislabel); }
break;
case 48:
#line 408 "gram.in"
{ NO66("PARAMETER statement"); }
break;
case 49:
#line 412 "gram.in"
{ settype(yyvsp[-4].namval, yyvsp[-6].ival, yyvsp[0].lval);
if(ndim>0) setbound(yyvsp[-4].namval,ndim,dims);
}
break;
case 50:
#line 416 "gram.in"
{ settype(yyvsp[-2].namval, yyvsp[-4].ival, yyvsp[0].lval);
if(ndim>0) setbound(yyvsp[-2].namval,ndim,dims);
}
break;
case 51:
#line 420 "gram.in"
{ if (new_dcl == 2) {
err("attempt to give DATA in type-declaration");
new_dcl = 1;
}
}
break;
case 52:
#line 427 "gram.in"
{ new_dcl = 2; }
break;
case 53:
#line 430 "gram.in"
{ varleng = yyvsp[0].lval; }
break;
case 54:
#line 434 "gram.in"
{ varleng = (yyvsp[0].ival<0 || ONEOF(yyvsp[0].ival,M(TYLOGICAL)|M(TYLONG))
? 0 : typesize[yyvsp[0].ival]);
vartype = yyvsp[0].ival; }
break;
case 55:
#line 439 "gram.in"
{ yyval.ival = TYLONG; }
break;
case 56:
#line 440 "gram.in"
{ yyval.ival = tyreal; }
break;
case 57:
#line 441 "gram.in"
{ ++complex_seen; yyval.ival = tycomplex; }
break;
case 58:
#line 442 "gram.in"
{ yyval.ival = TYDREAL; }
break;
case 59:
#line 443 "gram.in"
{ ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; }
break;
case 60:
#line 444 "gram.in"
{ yyval.ival = TYLOGICAL; }
break;
case 61:
#line 445 "gram.in"
{ NO66("CHARACTER statement"); yyval.ival = TYCHAR; }
break;
case 62:
#line 446 "gram.in"
{ yyval.ival = TYUNKNOWN; }
break;
case 63:
#line 447 "gram.in"
{ yyval.ival = TYUNKNOWN; }
break;
case 64:
#line 448 "gram.in"
{ NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; }
break;
case 65:
#line 449 "gram.in"
{ NOEXT("STATIC statement"); yyval.ival = - STGBSS; }
break;
case 66:
#line 450 "gram.in"
{ yyval.ival = TYINT1; }
break;
case 67:
#line 454 "gram.in"
{ yyval.lval = varleng; }
break;
case 68:
#line 456 "gram.in"
{
expptr p;
p = yyvsp[-1].expval;
NO66("length specification *n");
if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
{
yyval.lval = 0;
dclerr("length must be a positive integer constant",
NPNULL);
}
else {
if (vartype == TYCHAR)
yyval.lval = p->constblock.Const.ci;
else switch((int)p->constblock.Const.ci) {
case 1: yyval.lval = 1; break;
case 2: yyval.lval = typesize[TYSHORT]; break;
case 4: yyval.lval = typesize[TYLONG]; break;
case 8: yyval.lval = typesize[TYDREAL]; break;
case 16: yyval.lval = typesize[TYDCOMPLEX]; break;
default:
dclerr("invalid length",NPNULL);
yyval.lval = varleng;
}
}
}
break;
case 69:
#line 482 "gram.in"
{ NO66("length specification *(*)"); yyval.lval = -1; }
break;
case 70:
#line 486 "gram.in"
{ incomm( yyval.extval = comblock("") , yyvsp[0].namval ); }
break;
case 71:
#line 488 "gram.in"
{ yyval.extval = yyvsp[-1].extval; incomm(yyvsp[-1].extval, yyvsp[0].namval); }
break;
case 72:
#line 490 "gram.in"
{ yyval.extval = yyvsp[-2].extval; incomm(yyvsp[-2].extval, yyvsp[0].namval); }
break;
case 73:
#line 492 "gram.in"
{ incomm(yyvsp[-2].extval, yyvsp[0].namval); }
break;
case 74:
#line 496 "gram.in"
{ yyval.extval = comblock(""); }
break;
case 75:
#line 498 "gram.in"
{ yyval.extval = comblock(token); }
break;
case 76:
#line 502 "gram.in"
{ setext(yyvsp[0].namval); }
break;
case 77:
#line 504 "gram.in"
{ setext(yyvsp[0].namval); }
break;
case 78:
#line 508 "gram.in"
{ NO66("INTRINSIC statement"); setintr(yyvsp[0].namval); }
break;
case 79:
#line 510 "gram.in"
{ setintr(yyvsp[0].namval); }
break;
case 82:
#line 518 "gram.in"
{
struct Equivblock *p;
if(nequiv >= maxequiv)
many("equivalences", 'q', maxequiv);
p = & eqvclass[nequiv++];
p->eqvinit = NO;
p->eqvbottom = 0;
p->eqvtop = 0;
p->equivs = yyvsp[-1].eqvval;
}
break;
case 83:
#line 531 "gram.in"
{ yyval.eqvval=ALLOC(Eqvchain);
yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
}
break;
case 84:
#line 535 "gram.in"
{ yyval.eqvval=ALLOC(Eqvchain);
yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
yyval.eqvval->eqvnextp = yyvsp[-2].eqvval;
}
break;
case 87:
#line 546 "gram.in"
{ if(parstate == OUTSIDE)
{
newproc();
startproc(ESNULL, CLMAIN);
}
if(parstate < INDATA)
{
enddcl();
parstate = INDATA;
datagripe = 1;
}
}
break;
case 88:
#line 561 "gram.in"
{ ftnint junk;
if(nextdata(&junk) != NULL)
err("too few initializers");
frdata(yyvsp[-4].chval);
frrpl();
}
break;
case 89:
#line 569 "gram.in"
{ frchain(&datastack); curdtp = 0; }
break;
case 90:
#line 571 "gram.in"
{ pop_datastack(); }
break;
case 91:
#line 573 "gram.in"
{ toomanyinit = NO; }
break;
case 94:
#line 578 "gram.in"
{ dataval(ENULL, yyvsp[0].expval); }
break;
case 95:
#line 580 "gram.in"
{ dataval(yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 97:
#line 585 "gram.in"
{ if( yyvsp[-1].ival==OPMINUS && ISCONST(yyvsp[0].expval) )
consnegop((Constp)yyvsp[0].expval);
yyval.expval = yyvsp[0].expval;
}
break;
case 101:
#line 597 "gram.in"
{ int k;
yyvsp[0].namval->vsave = YES;
k = yyvsp[0].namval->vstg;
if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
dclerr("can only save static variables", yyvsp[0].namval);
}
break;
case 105:
#line 611 "gram.in"
{ if(yyvsp[-2].namval->vclass == CLUNKNOWN)
make_param((struct Paramblock *)yyvsp[-2].namval, yyvsp[0].expval);
else dclerr("cannot make into parameter", yyvsp[-2].namval);
}
break;
case 106:
#line 618 "gram.in"
{ if(ndim>0) setbound(yyvsp[-1].namval, ndim, dims); }
break;
case 107:
#line 622 "gram.in"
{ Namep np;
struct Primblock *pp = (struct Primblock *)yyvsp[0].expval;
int tt = yyvsp[0].expval->tag;
if (tt != TPRIM) {
if (tt == TCONST)
err("parameter in data statement");
else
erri("tag %d in data statement",tt);
yyval.chval = 0;
err_lineno = lineno;
break;
}
np = pp -> namep;
vardcl(np);
if ((pp->fcharp || pp->lcharp)
&& (np->vtype != TYCHAR || np->vdim))
sserr(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) {
errstr(np->vstg == STGARG
? "Dummy argument \"%.60s\" in data statement."
: "Cannot give data to \"%.75s\"",
np->fvarname);
yyval.chval = 0;
err_lineno = lineno;
break;
}
yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL);
}
break;
case 108:
#line 655 "gram.in"
{ chainp p; struct Impldoblock *q;
pop_datastack();
q = ALLOC(Impldoblock);
q->tag = TIMPLDO;
(q->varnp = (Namep) (yyvsp[-1].chval->datap))->vimpldovar = 1;
p = yyvsp[-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); }
frchain( & (yyvsp[-1].chval) );
yyval.chval = mkchain((char *)q, CHNULL);
q->datalist = hookup(yyvsp[-3].chval, yyval.chval);
}
break;
case 109:
#line 671 "gram.in"
{ if (!datastack)
curdtp = 0;
datastack = mkchain((char *)curdtp, datastack);
curdtp = yyvsp[0].chval; curdtelt = 0;
}
break;
case 110:
#line 677 "gram.in"
{ yyval.chval = hookup(yyvsp[-2].chval, yyvsp[0].chval); }
break;
case 111:
#line 681 "gram.in"
{ ndim = 0; }
break;
case 113:
#line 685 "gram.in"
{ ndim = 0; }
break;
case 116:
#line 690 "gram.in"
{
if(ndim == maxdim)
err("too many dimensions");
else if(ndim < maxdim)
{ dims[ndim].lb = 0;
dims[ndim].ub = yyvsp[0].expval;
}
++ndim;
}
break;
case 117:
#line 700 "gram.in"
{
if(ndim == maxdim)
err("too many dimensions");
else if(ndim < maxdim)
{ dims[ndim].lb = yyvsp[-2].expval;
dims[ndim].ub = yyvsp[0].expval;
}
++ndim;
}
break;
case 118:
#line 712 "gram.in"
{ yyval.expval = 0; }
break;
case 120:
#line 717 "gram.in"
{ nstars = 1; labarray[0] = yyvsp[0].labval; }
break;
case 121:
#line 719 "gram.in"
{ if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; }
break;
case 122:
#line 723 "gram.in"
{ yyval.labval = execlab( convci(toklen, token) ); }
break;
case 123:
#line 727 "gram.in"
{ NO66("IMPLICIT statement"); }
break;
case 126:
#line 733 "gram.in"
{ if (vartype != TYUNKNOWN)
dclerr("-- expected letter range",NPNULL);
setimpl(vartype, varleng, 'a', 'z'); }
break;
case 127:
#line 738 "gram.in"
{ needkwd = 1; }
break;
case 131:
#line 747 "gram.in"
{ setimpl(vartype, varleng, yyvsp[0].ival, yyvsp[0].ival); }
break;
case 132:
#line 749 "gram.in"
{ setimpl(vartype, varleng, yyvsp[-2].ival, yyvsp[0].ival); }
break;
case 133:
#line 753 "gram.in"
{ if(toklen!=1 || token[0]<'a' || token[0]>'z')
{
dclerr("implicit item must be single letter", NPNULL);
yyval.ival = 0;
}
else yyval.ival = token[0];
}
break;
case 136:
#line 767 "gram.in"
{
if(yyvsp[-2].namval->vclass == CLUNKNOWN)
{
yyvsp[-2].namval->vclass = CLNAMELIST;
yyvsp[-2].namval->vtype = TYINT;
yyvsp[-2].namval->vstg = STGBSS;
yyvsp[-2].namval->varxptr.namelist = yyvsp[0].chval;
yyvsp[-2].namval->vardesc.varno = ++lastvarno;
}
else dclerr("cannot be a namelist name", yyvsp[-2].namval);
}
break;
case 137:
#line 781 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].namval, CHNULL); }
break;
case 138:
#line 783 "gram.in"
{ yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].namval, CHNULL)); }
break;
case 139:
#line 787 "gram.in"
{ switch(parstate)
{
case OUTSIDE: newproc();
startproc(ESNULL, CLMAIN);
case INSIDE: parstate = INDCL;
case INDCL: break;
case INDATA:
if (datagripe) {
errstr(
"Statement order error: declaration after DATA",
CNULL);
datagripe = 0;
}
break;
default:
dclerr("declaration among executables", NPNULL);
}
}
break;
case 140:
#line 809 "gram.in"
{ yyval.chval = 0; }
break;
case 141:
#line 811 "gram.in"
{ yyval.chval = revchain(yyvsp[0].chval); }
break;
case 142:
#line 815 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 143:
#line 817 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
break;
case 145:
#line 822 "gram.in"
{ yyval.expval = yyvsp[-1].expval; if (yyval.expval->tag == TPRIM)
yyval.expval->primblock.parenused = 1; }
break;
case 149:
#line 830 "gram.in"
{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 150:
#line 832 "gram.in"
{ yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 151:
#line 834 "gram.in"
{ yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 152:
#line 836 "gram.in"
{ yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 153:
#line 838 "gram.in"
{ if(yyvsp[-1].ival == OPMINUS)
yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
else yyval.expval = yyvsp[0].expval;
}
break;
case 154:
#line 843 "gram.in"
{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 155:
#line 845 "gram.in"
{ NO66(".EQV. operator");
yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval,yyvsp[0].expval); }
break;
case 156:
#line 848 "gram.in"
{ NO66(".NEQV. operator");
yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 157:
#line 851 "gram.in"
{ yyval.expval = mkexpr(OPOR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 158:
#line 853 "gram.in"
{ yyval.expval = mkexpr(OPAND, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 159:
#line 855 "gram.in"
{ yyval.expval = mkexpr(OPNOT, yyvsp[0].expval, ENULL); }
break;
case 160:
#line 857 "gram.in"
{ NO66("concatenation operator //");
yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 161:
#line 861 "gram.in"
{ yyval.ival = OPPLUS; }
break;
case 162:
#line 862 "gram.in"
{ yyval.ival = OPMINUS; }
break;
case 163:
#line 865 "gram.in"
{ yyval.ival = OPEQ; }
break;
case 164:
#line 866 "gram.in"
{ yyval.ival = OPGT; }
break;
case 165:
#line 867 "gram.in"
{ yyval.ival = OPLT; }
break;
case 166:
#line 868 "gram.in"
{ yyval.ival = OPGE; }
break;
case 167:
#line 869 "gram.in"
{ yyval.ival = OPLE; }
break;
case 168:
#line 870 "gram.in"
{ yyval.ival = OPNE; }
break;
case 169:
#line 874 "gram.in"
{ yyval.expval = mkprim(yyvsp[0].namval, LBNULL, CHNULL); }
break;
case 170:
#line 876 "gram.in"
{ NO66("substring operator :");
yyval.expval = mkprim(yyvsp[-1].namval, LBNULL, yyvsp[0].chval); }
break;
case 171:
#line 879 "gram.in"
{ yyval.expval = mkprim(yyvsp[-3].namval, mklist(yyvsp[-1].chval), CHNULL); }
break;
case 172:
#line 881 "gram.in"
{ NO66("substring operator :");
yyval.expval = mkprim(yyvsp[-4].namval, mklist(yyvsp[-2].chval), yyvsp[0].chval); }
break;
case 173:
#line 886 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[-3].expval, mkchain((char *)yyvsp[-1].expval,CHNULL)); }
break;
case 174:
#line 890 "gram.in"
{ yyval.expval = 0; }
break;
case 176:
#line 895 "gram.in"
{ if(yyvsp[0].namval->vclass == CLPARAM)
yyval.expval = (expptr) cpexpr(
( (struct Paramblock *) (yyvsp[0].namval) ) -> paramval);
}
break;
case 178:
#line 902 "gram.in"
{ yyval.expval = mklogcon(1); }
break;
case 179:
#line 903 "gram.in"
{ yyval.expval = mklogcon(0); }
break;
case 180:
#line 904 "gram.in"
{ yyval.expval = mkstrcon(toklen, token); }
break;
case 181:
#line 905 "gram.in"
{ yyval.expval = mkintcon( convci(toklen, token) ); }
break;
case 182:
#line 906 "gram.in"
{ yyval.expval = mkrealcon(tyreal, token); }
break;
case 183:
#line 907 "gram.in"
{ yyval.expval = mkrealcon(TYDREAL, token); }
break;
case 185:
#line 912 "gram.in"
{ yyval.expval = mkcxcon(yyvsp[-3].expval,yyvsp[-1].expval); }
break;
case 186:
#line 916 "gram.in"
{ NOEXT("hex constant");
yyval.expval = mkbitcon(4, toklen, token); }
break;
case 187:
#line 919 "gram.in"
{ NOEXT("octal constant");
yyval.expval = mkbitcon(3, toklen, token); }
break;
case 188:
#line 922 "gram.in"
{ NOEXT("binary constant");
yyval.expval = mkbitcon(1, toklen, token); }
break;
case 190:
#line 928 "gram.in"
{ yyval.expval = yyvsp[-1].expval; }
break;
case 193:
#line 934 "gram.in"
{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 194:
#line 936 "gram.in"
{ yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 195:
#line 938 "gram.in"
{ yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 196:
#line 940 "gram.in"
{ yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 197:
#line 942 "gram.in"
{ if(yyvsp[-1].ival == OPMINUS)
yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
else yyval.expval = yyvsp[0].expval;
}
break;
case 198:
#line 947 "gram.in"
{ NO66("concatenation operator //");
yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 200:
#line 952 "gram.in"
{
if(yyvsp[-3].labval->labdefined)
execerr("no backward DO loops", CNULL);
yyvsp[-3].labval->blklevel = blklevel+1;
exdo(yyvsp[-3].labval->labelno, NPNULL, yyvsp[0].chval);
}
break;
case 201:
#line 959 "gram.in"
{
exdo((int)(ctls - ctlstack - 2), NPNULL, yyvsp[0].chval);
NOEXT("DO without label");
}
break;
case 202:
#line 964 "gram.in"
{ exenddo(NPNULL); }
break;
case 203:
#line 966 "gram.in"
{ exendif(); thiswasbranch = NO; }
break;
case 205:
#line 969 "gram.in"
{ exelif(yyvsp[-2].expval); lastwasbranch = NO; }
break;
case 206:
#line 971 "gram.in"
{ exelse(); lastwasbranch = NO; }
break;
case 207:
#line 973 "gram.in"
{ exendif(); lastwasbranch = NO; }
break;
case 208:
#line 977 "gram.in"
{ exif(yyvsp[-1].expval); }
break;
case 209:
#line 981 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[-2].namval, yyvsp[0].chval); }
break;
case 211:
#line 986 "gram.in"
{ yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval); }
break;
case 212:
#line 990 "gram.in"
{ exequals((struct Primblock *)yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 213:
#line 992 "gram.in"
{ exassign(yyvsp[0].namval, yyvsp[-2].labval); }
break;
case 216:
#line 996 "gram.in"
{ inioctl = NO; }
break;
case 217:
#line 998 "gram.in"
{ exarif(yyvsp[-6].expval, yyvsp[-4].labval, yyvsp[-2].labval, yyvsp[0].labval); thiswasbranch = YES; }
break;
case 218:
#line 1000 "gram.in"
{ excall(yyvsp[0].namval, LBNULL, 0, labarray); }
break;
case 219:
#line 1002 "gram.in"
{ excall(yyvsp[-2].namval, LBNULL, 0, labarray); }
break;
case 220:
#line 1004 "gram.in"
{ if(nstars < maxlablist)
excall(yyvsp[-3].namval, mklist(revchain(yyvsp[-1].chval)), nstars, labarray);
else
many("alternate returns", 'l', maxlablist);
}
break;
case 221:
#line 1010 "gram.in"
{ exreturn(yyvsp[0].expval); thiswasbranch = YES; }
break;
case 222:
#line 1012 "gram.in"
{ exstop(yyvsp[-2].ival, yyvsp[0].expval); thiswasbranch = yyvsp[-2].ival; }
break;
case 223:
#line 1016 "gram.in"
{ yyval.labval = mklabel( convci(toklen, token) ); }
break;
case 224:
#line 1020 "gram.in"
{ if(parstate == OUTSIDE)
{
newproc();
startproc(ESNULL, CLMAIN);
}
}
break;
case 225:
#line 1029 "gram.in"
{ exgoto(yyvsp[0].labval); thiswasbranch = YES; }
break;
case 226:
#line 1031 "gram.in"
{ exasgoto(yyvsp[0].namval); thiswasbranch = YES; }
break;
case 227:
#line 1033 "gram.in"
{ exasgoto(yyvsp[-4].namval); thiswasbranch = YES; }
break;
case 228:
#line 1035 "gram.in"
{ if(nstars < maxlablist)
putcmgo(putx(fixtype(yyvsp[0].expval)), nstars, labarray);
else
many("labels in computed GOTO list", 'l', maxlablist);
}
break;
case 231:
#line 1047 "gram.in"
{ nstars = 0; yyval.namval = yyvsp[0].namval; }
break;
case 232:
#line 1051 "gram.in"
{ yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval,CHNULL) : CHNULL; }
break;
case 233:
#line 1053 "gram.in"
{ yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval) : yyvsp[-2].chval; }
break;
case 235:
#line 1058 "gram.in"
{ if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; yyval.expval = 0; }
break;
case 236:
#line 1062 "gram.in"
{ yyval.ival = 0; }
break;
case 237:
#line 1064 "gram.in"
{ yyval.ival = 2; }
break;
case 238:
#line 1068 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 239:
#line 1070 "gram.in"
{ yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].expval,CHNULL) ); }
break;
case 240:
#line 1074 "gram.in"
{ if(parstate == OUTSIDE)
{
newproc();
startproc(ESNULL, CLMAIN);
}
/* This next statement depends on the ordering of the state table encoding */
if(parstate < INDATA) enddcl();
}
break;
case 241:
#line 1087 "gram.in"
{ intonly = YES; }
break;
case 242:
#line 1091 "gram.in"
{ intonly = NO; }
break;
case 243:
#line 1096 "gram.in"
{ endio(); }
break;
case 245:
#line 1101 "gram.in"
{ ioclause(IOSUNIT, yyvsp[0].expval); endioctl(); }
break;
case 246:
#line 1103 "gram.in"
{ ioclause(IOSUNIT, ENULL); endioctl(); }
break;
case 247:
#line 1105 "gram.in"
{ ioclause(IOSUNIT, IOSTDERR); endioctl(); }
break;
case 249:
#line 1108 "gram.in"
{ doio(CHNULL); }
break;
case 250:
#line 1110 "gram.in"
{ doio(CHNULL); }
break;
case 251:
#line 1112 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 252:
#line 1114 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 253:
#line 1116 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 254:
#line 1118 "gram.in"
{ doio(CHNULL); }
break;
case 255:
#line 1120 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 256:
#line 1122 "gram.in"
{ doio(CHNULL); }
break;
case 257:
#line 1124 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 259:
#line 1131 "gram.in"
{ iostmt = IOBACKSPACE; }
break;
case 260:
#line 1133 "gram.in"
{ iostmt = IOREWIND; }
break;
case 261:
#line 1135 "gram.in"
{ iostmt = IOENDFILE; }
break;
case 263:
#line 1142 "gram.in"
{ iostmt = IOINQUIRE; }
break;
case 264:
#line 1144 "gram.in"
{ iostmt = IOOPEN; }
break;
case 265:
#line 1146 "gram.in"
{ iostmt = IOCLOSE; }
break;
case 266:
#line 1150 "gram.in"
{
ioclause(IOSUNIT, ENULL);
ioclause(IOSFMT, yyvsp[0].expval);
endioctl();
}
break;
case 267:
#line 1156 "gram.in"
{
ioclause(IOSUNIT, ENULL);
ioclause(IOSFMT, ENULL);
endioctl();
}
break;
case 268:
#line 1164 "gram.in"
{
ioclause(IOSUNIT, yyvsp[-1].expval);
endioctl();
}
break;
case 269:
#line 1169 "gram.in"
{ endioctl(); }
break;
case 272:
#line 1177 "gram.in"
{ ioclause(IOSPOSITIONAL, yyvsp[0].expval); }
break;
case 273:
#line 1179 "gram.in"
{ ioclause(IOSPOSITIONAL, ENULL); }
break;
case 274:
#line 1181 "gram.in"
{ ioclause(IOSPOSITIONAL, IOSTDERR); }
break;
case 275:
#line 1183 "gram.in"
{ ioclause(yyvsp[-1].ival, yyvsp[0].expval); }
break;
case 276:
#line 1185 "gram.in"
{ ioclause(yyvsp[-1].ival, ENULL); }
break;
case 277:
#line 1187 "gram.in"
{ ioclause(yyvsp[-1].ival, IOSTDERR); }
break;
case 278:
#line 1191 "gram.in"
{ yyval.ival = iocname(); }
break;
case 279:
#line 1195 "gram.in"
{ iostmt = IOREAD; }
break;
case 280:
#line 1199 "gram.in"
{ iostmt = IOWRITE; }
break;
case 281:
#line 1203 "gram.in"
{
iostmt = IOWRITE;
ioclause(IOSUNIT, ENULL);
ioclause(IOSFMT, yyvsp[-1].expval);
endioctl();
}
break;
case 282:
#line 1210 "gram.in"
{
iostmt = IOWRITE;
ioclause(IOSUNIT, ENULL);
ioclause(IOSFMT, ENULL);
endioctl();
}
break;
case 283:
#line 1219 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
break;
case 284:
#line 1221 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
break;
case 285:
#line 1225 "gram.in"
{ yyval.tagval = (tagptr) yyvsp[0].expval; }
break;
case 286:
#line 1227 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval,revchain(yyvsp[-3].chval)); }
break;
case 287:
#line 1231 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 288:
#line 1233 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
break;
case 290:
#line 1238 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
break;
case 291:
#line 1240 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
break;
case 292:
#line 1242 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
break;
case 293:
#line 1244 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
break;
case 294:
#line 1246 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
break;
case 295:
#line 1248 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
break;
case 296:
#line 1252 "gram.in"
{ yyval.tagval = (tagptr) yyvsp[0].expval; }
break;
case 297:
#line 1254 "gram.in"
{ yyval.tagval = (tagptr) yyvsp[-1].expval; }
break;
case 298:
#line 1256 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].expval, CHNULL) ); }
break;
case 299:
#line 1258 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].tagval, CHNULL) ); }
break;
case 300:
#line 1260 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, revchain(yyvsp[-3].chval)); }
break;
case 301:
#line 1264 "gram.in"
{ startioctl(); }
break;
#line 2616 "y.tab.c"
}
yyssp -= yym;
yystate = *yyssp;
yyvsp -= yym;
yym = yylhs[yyn];
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
*++yyvsp = yyval;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yychar, yys);
}
#endif
}
if (yychar == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate;
*++yyvsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
return (1);
yyaccept:
return (0);
}
syntax highlighted by Code2HTML, v. 0.9.1