00001 #include <sys/cdefs.h>
00002 #ifndef lint
00003 #if 0
00004 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
00005 #else
00006 __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
00007 #endif
00008 #endif
00009 #include <stdlib.h>
00010 #define YYBYACC 1
00011 #define YYMAJOR 1
00012 #define YYMINOR 9
00013 #define YYLEX yylex()
00014 #define YYEMPTY -1
00015 #define yyclearin (yychar=(YYEMPTY))
00016 #define yyerrok (yyerrflag=0)
00017 #define YYRECOVERING (yyerrflag!=0)
00018 #define YYPREFIX "yy"
00019 #line 125 "gram.in"
00020 #include "defs.h"
00021 #include "p1defs.h"
00022
00023 static int nstars;
00024
00025 static int datagripe;
00026 static int ndim;
00027 static int vartype;
00028 int new_dcl;
00029 static ftnint varleng;
00030 static struct Dims dims[MAXDIM+1];
00031 extern struct Labelblock **labarray;
00032
00033 extern int maxlablist;
00034
00035
00036
00037
00038
00039 int lastwasbranch = NO;
00040 static int thiswasbranch = NO;
00041 extern ftnint yystno;
00042 extern flag intonly;
00043 static chainp datastack;
00044 extern long laststfcn, thisstno;
00045 extern int can_include;
00046 extern struct Primblock *primchk Argdcl((expptr));
00047
00048 #define ESNULL (Extsym *)0
00049 #define NPNULL (Namep)0
00050 #define LBNULL (struct Listblock *)0
00051
00052 static void
00053 pop_datastack(Void) {
00054 chainp d0 = datastack;
00055 if (d0->datap)
00056 curdtp = (chainp)d0->datap;
00057 datastack = d0->nextp;
00058 d0->nextp = 0;
00059 frchain(&d0);
00060 }
00061
00062 #line 171 "gram.in"
00063 typedef union {
00064 int ival;
00065 ftnint lval;
00066 char *charpval;
00067 chainp chval;
00068 tagptr tagval;
00069 expptr expval;
00070 struct Labelblock *labval;
00071 struct Nameblock *namval;
00072 struct Eqvchain *eqvval;
00073 Extsym *extval;
00074 } YYSTYPE;
00075 #line 76 "y.tab.c"
00076 #define SEOS 1
00077 #define SCOMMENT 2
00078 #define SLABEL 3
00079 #define SUNKNOWN 4
00080 #define SHOLLERITH 5
00081 #define SICON 6
00082 #define SRCON 7
00083 #define SDCON 8
00084 #define SBITCON 9
00085 #define SOCTCON 10
00086 #define SHEXCON 11
00087 #define STRUE 12
00088 #define SFALSE 13
00089 #define SNAME 14
00090 #define SNAMEEQ 15
00091 #define SFIELD 16
00092 #define SSCALE 17
00093 #define SINCLUDE 18
00094 #define SLET 19
00095 #define SASSIGN 20
00096 #define SAUTOMATIC 21
00097 #define SBACKSPACE 22
00098 #define SBLOCK 23
00099 #define SCALL 24
00100 #define SCHARACTER 25
00101 #define SCLOSE 26
00102 #define SCOMMON 27
00103 #define SCOMPLEX 28
00104 #define SCONTINUE 29
00105 #define SDATA 30
00106 #define SDCOMPLEX 31
00107 #define SDIMENSION 32
00108 #define SDO 33
00109 #define SDOUBLE 34
00110 #define SELSE 35
00111 #define SELSEIF 36
00112 #define SEND 37
00113 #define SENDFILE 38
00114 #define SENDIF 39
00115 #define SENTRY 40
00116 #define SEQUIV 41
00117 #define SEXTERNAL 42
00118 #define SFORMAT 43
00119 #define SFUNCTION 44
00120 #define SGOTO 45
00121 #define SASGOTO 46
00122 #define SCOMPGOTO 47
00123 #define SARITHIF 48
00124 #define SLOGIF 49
00125 #define SIMPLICIT 50
00126 #define SINQUIRE 51
00127 #define SINTEGER 52
00128 #define SINTRINSIC 53
00129 #define SLOGICAL 54
00130 #define SNAMELIST 55
00131 #define SOPEN 56
00132 #define SPARAM 57
00133 #define SPAUSE 58
00134 #define SPRINT 59
00135 #define SPROGRAM 60
00136 #define SPUNCH 61
00137 #define SREAD 62
00138 #define SREAL 63
00139 #define SRETURN 64
00140 #define SREWIND 65
00141 #define SSAVE 66
00142 #define SSTATIC 67
00143 #define SSTOP 68
00144 #define SSUBROUTINE 69
00145 #define STHEN 70
00146 #define STO 71
00147 #define SUNDEFINED 72
00148 #define SWRITE 73
00149 #define SLPAR 74
00150 #define SRPAR 75
00151 #define SEQUALS 76
00152 #define SCOLON 77
00153 #define SCOMMA 78
00154 #define SCURRENCY 79
00155 #define SPLUS 80
00156 #define SMINUS 81
00157 #define SSTAR 82
00158 #define SSLASH 83
00159 #define SPOWER 84
00160 #define SCONCAT 85
00161 #define SAND 86
00162 #define SOR 87
00163 #define SNEQV 88
00164 #define SEQV 89
00165 #define SNOT 90
00166 #define SEQ 91
00167 #define SLT 92
00168 #define SGT 93
00169 #define SLE 94
00170 #define SGE 95
00171 #define SNE 96
00172 #define SENDDO 97
00173 #define SWHILE 98
00174 #define SSLASHD 99
00175 #define SBYTE 100
00176 #define YYERRCODE 256
00177 short yylhs[] = { -1,
00178 0, 0, 54, 54, 54, 54, 54, 54, 54, 1,
00179 55, 55, 55, 55, 55, 55, 55, 59, 51, 32,
00180 52, 52, 60, 60, 61, 61, 62, 62, 25, 25,
00181 25, 26, 26, 33, 33, 16, 56, 56, 56, 56,
00182 56, 56, 56, 56, 56, 56, 56, 56, 9, 9,
00183 9, 73, 6, 7, 8, 8, 8, 8, 8, 8,
00184 8, 8, 8, 8, 8, 8, 15, 15, 15, 49,
00185 49, 49, 49, 50, 50, 63, 63, 64, 64, 65,
00186 65, 79, 53, 53, 66, 66, 80, 81, 75, 82,
00187 84, 76, 76, 83, 83, 44, 44, 44, 69, 69,
00188 85, 85, 71, 71, 86, 35, 17, 17, 18, 18,
00189 74, 74, 89, 87, 87, 88, 88, 42, 42, 90,
00190 90, 2, 67, 67, 91, 91, 94, 92, 93, 93,
00191 95, 95, 10, 68, 68, 96, 19, 19, 70, 20,
00192 20, 21, 21, 37, 37, 37, 38, 38, 38, 38,
00193 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
00194 11, 11, 12, 12, 12, 12, 12, 12, 36, 36,
00195 36, 36, 31, 39, 39, 43, 43, 47, 47, 47,
00196 47, 47, 47, 47, 46, 48, 48, 48, 40, 40,
00197 41, 41, 41, 41, 41, 41, 41, 41, 57, 57,
00198 57, 57, 57, 57, 57, 57, 57, 98, 22, 23,
00199 23, 97, 97, 97, 97, 97, 97, 97, 97, 97,
00200 97, 97, 3, 99, 100, 100, 100, 100, 72, 72,
00201 34, 24, 24, 45, 45, 13, 13, 27, 27, 58,
00202 77, 78, 101, 102, 102, 102, 102, 102, 102, 102,
00203 102, 102, 102, 102, 102, 102, 102, 103, 110, 110,
00204 110, 105, 112, 112, 112, 107, 107, 104, 104, 113,
00205 113, 114, 114, 114, 114, 114, 114, 14, 106, 108,
00206 109, 109, 28, 28, 5, 5, 29, 29, 29, 30,
00207 30, 30, 30, 30, 30, 4, 4, 4, 4, 4,
00208 111,
00209 };
00210 short yylen[] = { 2,
00211 0, 3, 2, 2, 2, 3, 3, 2, 1, 1,
00212 3, 4, 3, 4, 4, 5, 3, 0, 1, 1,
00213 0, 1, 2, 3, 1, 3, 1, 3, 0, 2,
00214 3, 1, 3, 1, 1, 1, 1, 1, 1, 1,
00215 1, 1, 1, 1, 1, 2, 1, 5, 7, 5,
00216 5, 0, 2, 1, 1, 1, 1, 1, 1, 1,
00217 1, 1, 1, 1, 1, 1, 0, 4, 6, 3,
00218 4, 5, 3, 1, 3, 3, 3, 3, 3, 3,
00219 3, 3, 1, 3, 3, 3, 0, 6, 0, 0,
00220 0, 2, 3, 1, 3, 1, 2, 1, 1, 3,
00221 1, 1, 1, 3, 3, 2, 1, 5, 1, 3,
00222 0, 3, 0, 2, 3, 1, 3, 1, 1, 1,
00223 3, 1, 3, 3, 4, 1, 0, 2, 1, 3,
00224 1, 3, 1, 1, 2, 4, 1, 3, 0, 0,
00225 1, 1, 3, 1, 3, 1, 1, 1, 3, 3,
00226 3, 3, 2, 3, 3, 3, 3, 3, 2, 3,
00227 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
00228 4, 5, 5, 0, 1, 1, 1, 1, 1, 1,
00229 1, 1, 1, 1, 5, 1, 1, 1, 1, 3,
00230 1, 1, 3, 3, 3, 3, 2, 3, 1, 7,
00231 4, 1, 2, 2, 6, 2, 2, 5, 3, 1,
00232 4, 4, 5, 2, 1, 1, 10, 1, 3, 4,
00233 3, 3, 1, 1, 3, 3, 7, 7, 0, 1,
00234 3, 1, 3, 1, 2, 1, 1, 1, 3, 0,
00235 0, 0, 1, 2, 2, 2, 2, 2, 2, 2,
00236 3, 4, 4, 2, 3, 1, 3, 3, 1, 1,
00237 1, 3, 1, 1, 1, 1, 1, 3, 3, 1,
00238 3, 1, 1, 1, 2, 2, 2, 1, 3, 3,
00239 4, 4, 1, 3, 1, 5, 1, 1, 1, 3,
00240 3, 3, 3, 3, 3, 1, 3, 5, 5, 5,
00241 0,
00242 };
00243 short yydefred[] = { 1,
00244 0, 9, 10, 0, 0, 8, 0, 224, 240, 64,
00245 259, 18, 240, 61, 265, 139, 57, 240, 87, 59,
00246 63, 240, 58, 240, 240, 240, 261, 240, 0, 139,
00247 139, 47, 18, 240, 240, 240, 240, 240, 139, 263,
00248 55, 139, 60, 134, 264, 139, 236, 240, 18, 240,
00249 56, 240, 260, 0, 65, 237, 18, 62, 240, 202,
00250 66, 0, 0, 54, 0, 240, 0, 0, 3, 4,
00251 5, 0, 0, 0, 0, 0, 0, 199, 0, 0,
00252 215, 216, 243, 0, 0, 0, 0, 0, 240, 240,
00253 2, 36, 6, 0, 0, 0, 0, 214, 89, 0,
00254 206, 0, 7, 207, 20, 19, 0, 0, 0, 0,
00255 0, 0, 0, 0, 0, 127, 0, 0, 0, 0,
00256 301, 0, 0, 74, 101, 102, 0, 99, 0, 301,
00257 18, 230, 0, 241, 53, 0, 89, 0, 0, 0,
00258 0, 0, 0, 0, 89, 127, 0, 135, 204, 203,
00259 0, 0, 180, 181, 182, 183, 188, 187, 186, 178,
00260 179, 0, 161, 162, 246, 247, 0, 191, 0, 0,
00261 192, 184, 244, 0, 248, 267, 0, 0, 0, 0,
00262 0, 301, 301, 223, 0, 22, 13, 231, 0, 70,
00263 0, 0, 85, 0, 0, 0, 0, 17, 0, 80,
00264 76, 0, 122, 225, 0, 0, 0, 0, 123, 0,
00265 0, 78, 0, 0, 301, 0, 189, 0, 279, 0,
00266 0, 0, 147, 0, 144, 221, 146, 148, 0, 0,
00267 0, 280, 0, 139, 0, 0, 91, 222, 219, 0,
00268 0, 0, 232, 73, 0, 77, 79, 81, 86, 124,
00269 0, 0, 170, 0, 278, 273, 274, 0, 0, 0,
00270 270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00271 283, 0, 285, 0, 0, 0, 255, 0, 0, 0,
00272 0, 257, 258, 262, 0, 113, 106, 71, 0, 109,
00273 0, 107, 0, 210, 201, 0, 242, 0, 30, 35,
00274 0, 34, 32, 83, 0, 15, 0, 120, 0, 0,
00275 0, 0, 128, 0, 0, 103, 0, 282, 281, 0,
00276 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00277 0, 0, 0, 163, 165, 164, 167, 166, 168, 0,
00278 0, 75, 100, 14, 0, 52, 0, 0, 0, 0,
00279 0, 235, 220, 0, 0, 0, 0, 0, 0, 0,
00280 0, 276, 277, 0, 0, 269, 0, 0, 0, 0,
00281 0, 0, 268, 0, 0, 0, 0, 0, 0, 0,
00282 0, 0, 0, 0, 213, 0, 0, 0, 0, 90,
00283 0, 0, 0, 0, 31, 0, 82, 0, 0, 0,
00284 0, 0, 208, 133, 0, 0, 129, 0, 48, 0,
00285 190, 0, 23, 0, 25, 145, 0, 0, 0, 0,
00286 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
00287 68, 50, 0, 51, 0, 0, 176, 0, 94, 98,
00288 177, 92, 233, 72, 0, 137, 0, 0, 0, 0,
00289 271, 0, 284, 0, 0, 0, 0, 293, 0, 295,
00290 0, 291, 0, 112, 0, 118, 0, 116, 114, 0,
00291 110, 91, 0, 0, 0, 0, 205, 33, 84, 0,
00292 0, 121, 0, 0, 125, 0, 0, 104, 0, 24,
00293 0, 0, 0, 242, 93, 97, 0, 0, 0, 172,
00294 0, 0, 0, 0, 0, 0, 0, 0, 115, 0,
00295 0, 0, 211, 0, 200, 227, 0, 0, 132, 130,
00296 28, 26, 185, 49, 69, 96, 95, 138, 173, 286,
00297 299, 300, 298, 0, 117, 108, 88, 0, 0, 0,
00298 217,
00299 };
00300 short yydgoto[] = { 1,
00301 4, 308, 185, 276, 271, 62, 63, 64, 65, 405,
00302 222, 341, 66, 258, 135, 93, 290, 291, 445, 357,
00303 358, 294, 295, 241, 198, 301, 474, 272, 277, 278,
00304 253, 151, 303, 67, 190, 223, 279, 225, 360, 169,
00305 217, 468, 438, 439, 243, 227, 228, 172, 68, 126,
00306 186, 187, 305, 5, 69, 70, 71, 94, 95, 321,
00307 414, 415, 72, 73, 74, 75, 76, 77, 127, 97,
00308 315, 133, 429, 287, 192, 350, 195, 393, 200, 99,
00309 193, 472, 442, 351, 128, 316, 386, 469, 387, 309,
00310 209, 210, 406, 211, 407, 148, 78, 79, 80, 81,
00311 82, 83, 84, 173, 85, 86, 179, 87, 88, 89,
00312 219, 90, 260, 261,
00313 };
00314 short yysindex[] = { 0,
00315 5, 0, 0, 978, 18, 0, 89, 0, 0, 0,
00316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00317 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
00318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00320 0, 0, 0, 169, 0, 0, 0, 0, 0, 0,
00321 0, -4, -7, 0, 98, 0, 128, 93, 0, 0,
00322 0, 112, 164, 171, 186, 196, 203, 0, 1649, 22,
00323 0, 0, 0, 1435, 226, 1562, 226, 223, 0, 0,
00324 0, 0, 0, 314, 22, 22, 169, 0, 0, 186,
00325 0, 247, 0, 0, 0, 0, 259, 260, 22, 22,
00326 346, 22, 283, 285, 294, 0, 22, 304, 1572, 22,
00327 0, 1298, 370, 0, 0, 0, 307, 0, 22, 0,
00328 0, 0, 22, 0, 0, 22, 0, 1298, 721, 22,
00329 -34, 22, 22, 260, 0, 0, 22, 0, 0, 0,
00330 322, 329, 0, 0, 0, 0, 0, 0, 0, 0,
00331 0, 1424, 0, 0, 0, 0, 1586, 0, 471, 0,
00332 0, 0, 0, 1424, 0, 0, 0, 129, 332, 1327,
00333 1327, 0, 0, 0, 363, 0, 0, 0, 372, 0,
00334 22, 118, 0, 27, 346, 1298, 175, 0, 22, 0,
00335 0, 259, 0, 0, 186, 346, 1298, 1298, 0, 393,
00336 1037, 0, 22, 1586, 0, 471, 0, 414, 0, 1298,
00337 1298, 1298, 0, 1812, 0, 0, 0, 0, 361, 169,
00338 259, 0, 22, 0, 1384, 372, 0, 0, 0, 346,
00339 4, 1812, 0, 0, 186, 0, 0, 0, 0, 0,
00340 383, 1298, 0, 1298, 0, 0, 0, 1190, 1244, 166,
00341 0, 406, 1586, 1586, 1586, 1586, 1586, 1300, 146, 146,
00342 0, 416, 0, 146, 1327, 424, 0, 425, 1812, 430,
00343 0, 0, 0, 0, 22, 0, 0, 0, 118, 0,
00344 116, 0, 418, 0, 0, 423, 0, 1643, 0, 0,
00345 185, 0, 0, 0, 201, 0, 437, 0, 250, 1665,
00346 1687, 499, 0, 444, 268, 0, 1329, 0, 0, 9,
00347 0, 1709, 445, 620, 442, 1298, 1298, 1298, 1298, 1298,
00348 1298, 1298, 1298, 0, 0, 0, 0, 0, 0, 1298,
00349 1298, 0, 0, 0, 259, 0, 1241, 1812, -7, 107,
00350 1596, 0, 0, 1276, 22, 22, 456, 463, 1812, 457,
00351 1812, 0, 0, 1812, 0, 0, 1424, 406, 406, 406,
00352 289, 396, 0, 464, 416, 146, 416, 465, 467, 1731,
00353 469, 1327, 1327, 1327, 0, 269, 1287, 480, 118, 0,
00354 1298, 1298, 186, 479, 0, 59, 0, 22, 346, 186,
00355 346, 346, 0, 0, 478, 276, 0, 1298, 0, 22,
00356 0, 492, 0, 286, 0, 0, 1298, 442, 442, 442,
00357 356, 620, 783, 1001, 1001, 402, 509, 0, 372, 487,
00358 0, 0, 1596, 0, 1298, 1470, 0, 494, 0, 0,
00359 0, 0, 0, 0, 508, 0, 513, 1298, 1298, 471,
00360 0, 146, 0, 1327, 1327, 0, 1327, 0, 0, 0,
00361 0, 0, 0, 0, 1287, 0, 1795, 0, 0, 118,
00362 0, 0, 1753, 518, 1812, 27, 0, 0, 0, 305,
00363 1298, 0, 520, 499, 0, 499, 1812, 0, 595, 0,
00364 596, 536, -7, 0, 0, 0, 1596, 22, 1298, 0,
00365 1812, 537, 539, -14, 542, 544, 555, 536, 0, 1287,
00366 571, 151, 0, 1298, 0, 0, 1812, 346, 0, 0,
00367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00368 0, 0, 0, 1812, 0, 0, 0, 1812, 575, 346,
00369 0,
00370 };
00371 short yyrindex[] = { 0,
00372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00377 0, 0, 0, 653, 0, 0, 0, 0, 0, 0,
00378 0, 370, 415, 0, 655, 0, 658, 38, 0, 0,
00379 0, 662, 663, 672, 172, 679, 688, 0, 0, 0,
00380 0, 0, 0, 0, 0, 0, 0, 691, 0, 0,
00381 0, 0, 0, 0, 693, 0, 0, 0, 0, 28,
00382 0, 0, 0, 0, 0, 0, 695, 0, 0, 0,
00383 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
00384 0, 696, 0, 0, 0, 0, 697, 0, 0, 0,
00385 0, 0, 0, 0, 0, 0, 0, 696, 0, 168,
00386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00387 556, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00388 0, 0, 0, 0, 0, 0, 0, 0, 0, 392,
00389 0, 0, 0, 0, 0, 0, 187, 698, 706, 707,
00390 0, 0, 0, 0, 0, 0, 0, 0, 44, 0,
00391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00392 0, 695, 0, 0, 101, 0, 0, 0, 0, 25,
00393 0, 0, 0, 0, 0, 85, 0, 708, 0, 0,
00394 0, 0, 0, 97, 0, 0, 0, 0, 0, 0,
00395 695, 0, 0, 0, 0, 17, 0, 0, 0, 0,
00396 0, 311, 0, 0, 370, 0, 0, 0, 0, 0,
00397 0, 232, 0, 0, 0, 0, 0, 0, 639, 0,
00398 0, 434, 0, 0, 0, 0, 0, 639, 0, 0,
00399 0, 717, 0, 0, 0, 718, 0, 719, 0, 1149,
00400 1038, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00404 0, 0, 1775, 92, 763, 0, 0, 0, 0, 0,
00405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00406 0, 0, 0, 0, 695, 0, 0, 34, 32, 0,
00407 0, 0, 0, 0, 0, 0, 0, 646, 210, 0,
00408 724, 0, 0, 316, 234, 0, 0, 543, 664, 680,
00409 137, 136, 0, 0, 736, 0, 737, 0, 0, 0,
00410 1775, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00411 0, 0, 41, 0, 0, 0, 0, 0, 0, 1413,
00412 0, 0, 0, 0, 337, 0, 0, 0, 0, 0,
00413 0, 342, 0, 0, 0, 0, 0, 846, 869, 892,
00414 583, 288, 344, 261, 447, 486, 692, 0, 17, 0,
00415 0, 0, 0, 0, 0, 0, 0, -22, 0, 0,
00416 0, 0, 0, 0, 51, 0, 740, 0, 647, 349,
00417 0, 0, 0, 0, 0, 1060, 0, 0, 1079, 0,
00418 1098, 0, 1127, 0, 0, 0, 367, 0, 0, 0,
00419 0, 0, 0, 69, 70, 0, 0, 0, 0, 0,
00420 0, 0, 0, 0, 0, 0, 385, 0, 0, 0,
00421 0, 1829, 32, 0, 0, 0, 0, 0, 666, 0,
00422 387, 0, 0, 1536, 0, 0, 0, 816, 0, 0,
00423 0, 0, 0, 0, 0, 0, 747, 0, 0, 0,
00424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00425 0, 0, 0, 367, 0, 0, 0, 71, 0, 0,
00426 0,
00427 };
00428 short yygindex[] = { 0,
00429 0, -110, 0, -231, -333, 540, 0, 0, 0, 266,
00430 31, 0, 0, 0, -332, 0, -342, 468, 0, 0,
00431 0, -227, 277, 0, -181, 0, 0, 8, 578, 477,
00432 321, -29, 375, 0, -137, 421, 275, -151, -118, -109,
00433 227, 262, -408, 278, 419, -174, -27, 0, 0, -65,
00434 -20, 656, 0, 0, 0, 0, 0, 1500, -11, 0,
00435 0, 291, 0, 0, 0, 0, 0, 0, 0, -15,
00436 0, -63, 0, -234, 649, 315, 659, -335, 648, 0,
00437 638, 0, 357, 0, 564, 388, 0, 334, 0, 401,
00438 660, 0, 0, 0, 318, 0, 726, 0, 0, 0,
00439 0, 0, 0, 452, 0, 0, 0, 0, 0, 0,
00440 -119, 0, 0, 441,
00441 };
00442 #define YYTABLESIZE 1925
00443 short yytable[] = { 106,
00444 204, 349, 244, 226, 141, 281, 281, 3, 107, 216,
00445 232, 145, 431, 21, 108, 109, 432, 111, 91, 238,
00446 306, 110, 412, 116, 125, 126, 117, 496, 280, 280,
00447 118, 191, 67, 241, 242, 105, 194, 120, 38, 131,
00448 105, 229, 453, 378, 111, 129, 471, 242, 123, 344,
00449 124, 136, 259, 288, 229, 96, 171, 262, 171, 252,
00450 96, 392, 283, 284, 268, 106, 188, 189, 323, 209,
00451 238, 239, 105, 132, 134, 245, 96, 242, 353, 201,
00452 106, 354, 205, 413, 297, 301, 21, 212, 526, 202,
00453 106, 171, 159, 92, 111, 318, 319, 175, 111, 106,
00454 281, 226, 126, 234, 317, 159, 236, 242, 231, 67,
00455 189, 242, 246, 247, 167, 111, 167, 251, 453, 233,
00456 229, 111, 229, 381, 293, 229, 111, 471, 111, 352,
00457 67, 105, 242, 136, 171, 159, 193, 198, 229, 171,
00458 300, 307, 105, 209, 238, 239, 171, 238, 239, 167,
00459 458, 460, 462, 368, 369, 370, 371, 372, 525, 105,
00460 524, 189, 301, 428, 296, 159, 159, 302, 159, 159,
00461 140, 175, 42, 175, 229, 136, 440, 159, 159, 159,
00462 159, 355, 105, 314, 433, 229, 171, 266, 105, 142,
00463 159, 289, 167, 389, 493, 323, 137, 167, 390, 267,
00464 125, 139, 269, 106, 167, 434, 270, 281, 281, 281,
00465 193, 198, 345, 193, 198, 193, 193, 444, 346, 269,
00466 193, 198, 458, 460, 503, 462, 505, 506, 433, 507,
00467 459, 461, 463, 537, 268, 171, 171, 171, 171, 171,
00468 366, 143, 511, 367, 167, 229, 267, 268, 144, 299,
00469 230, 123, 230, 124, 340, 385, 300, 450, 440, 395,
00470 2, 156, 396, 132, 266, 492, 189, 189, 189, 189,
00471 189, 189, 340, 146, 156, 397, 374, 375, 398, 281,
00472 281, 377, 281, 323, 142, 147, 175, 142, 158, 267,
00473 482, 483, 267, 167, 167, 167, 167, 167, 267, 174,
00474 181, 158, 459, 461, 156, 508, 140, 268, 174, 340,
00475 170, 268, 177, 190, 190, 190, 190, 190, 190, 184,
00476 196, 437, 440, 441, 400, 189, 446, 401, 340, 476,
00477 502, 158, 197, 199, 156, 156, 481, 156, 156, 171,
00478 340, 340, 409, 464, 157, 410, 465, 267, 156, 156,
00479 485, 203, 340, 486, 340, 340, 206, 157, 207, 156,
00480 490, 158, 158, 491, 158, 158, 302, 208, 163, 164,
00481 263, 264, 265, 158, 158, 158, 158, 213, 340, 516,
00482 314, 436, 401, 229, 230, 234, 158, 157, 234, 340,
00483 275, 340, 245, 275, 340, 252, 224, 167, 267, 267,
00484 267, 267, 267, 437, 254, 441, 437, 539, 441, 274,
00485 340, 131, 224, 242, 131, 67, 27, 157, 157, 27,
00486 157, 157, 504, 272, 504, 504, 272, 504, 67, 541,
00487 157, 157, 157, 285, 197, 163, 164, 326, 327, 328,
00488 504, 119, 157, 342, 119, 286, 296, 155, 340, 340,
00489 340, 340, 340, 340, 340, 340, 340, 340, 67, 105,
00490 155, 143, 105, 436, 143, 356, 312, 437, 528, 441,
00491 298, 189, 189, 189, 189, 189, 189, 263, 264, 265,
00492 267, 310, 311, 326, 327, 328, 149, 320, 67, 265,
00493 155, 391, 67, 376, 322, 324, 325, 340, 392, 149,
00494 152, 382, 383, 340, 168, 340, 168, 384, 197, 348,
00495 399, 197, 404, 197, 197, 197, 197, 340, 197, 408,
00496 155, 155, 417, 155, 155, 328, 359, 436, 361, 149,
00497 447, 340, 364, 449, 155, 155, 175, 178, 180, 168,
00498 448, 452, 454, 194, 455, 155, 457, 340, 477, 380,
00499 163, 164, 263, 264, 265, 266, 169, 470, 484, 149,
00500 149, 494, 149, 149, 340, 149, 149, 489, 340, 169,
00501 149, 149, 149, 149, 149, 497, 149, 149, 149, 149,
00502 149, 149, 168, 160, 149, 498, 499, 168, 163, 164,
00503 326, 327, 328, 329, 168, 514, 160, 518, 273, 169,
00504 418, 419, 420, 421, 422, 423, 424, 425, 521, 412,
00505 523, 529, 292, 530, 426, 427, 531, 194, 532, 304,
00506 194, 322, 194, 194, 194, 194, 160, 194, 242, 533,
00507 169, 169, 169, 169, 168, 169, 169, 169, 169, 169,
00508 169, 169, 169, 169, 169, 536, 169, 169, 169, 169,
00509 169, 169, 540, 45, 169, 37, 160, 160, 218, 160,
00510 160, 467, 39, 40, 195, 473, 475, 160, 160, 160,
00511 160, 160, 41, 160, 160, 160, 160, 160, 160, 43,
00512 196, 160, 487, 168, 168, 168, 168, 168, 44, 273,
00513 273, 256, 154, 21, 273, 29, 174, 46, 249, 163,
00514 164, 326, 327, 328, 329, 154, 250, 254, 11, 292,
00515 334, 335, 336, 337, 338, 339, 272, 251, 288, 289,
00516 141, 174, 501, 224, 212, 153, 154, 155, 156, 157,
00517 158, 159, 160, 161, 105, 154, 253, 252, 195, 467,
00518 171, 195, 174, 195, 195, 195, 195, 228, 195, 519,
00519 313, 379, 515, 171, 196, 517, 388, 196, 282, 196,
00520 196, 196, 196, 153, 196, 154, 154, 500, 154, 154,
00521 478, 535, 443, 224, 527, 218, 153, 154, 154, 154,
00522 154, 522, 249, 171, 534, 237, 512, 168, 538, 495,
00523 154, 248, 235, 343, 220, 239, 273, 488, 509, 480,
00524 163, 164, 240, 520, 150, 250, 153, 451, 0, 292,
00525 221, 0, 0, 0, 171, 171, 171, 171, 479, 171,
00526 171, 171, 171, 171, 171, 171, 171, 171, 171, 0,
00527 171, 171, 171, 171, 171, 171, 153, 153, 171, 153,
00528 153, 0, 153, 153, 153, 153, 150, 153, 153, 153,
00529 153, 153, 0, 153, 153, 153, 153, 153, 153, 150,
00530 0, 153, 163, 164, 326, 327, 328, 329, 330, 151,
00531 0, 0, 273, 334, 335, 336, 337, 338, 339, 0,
00532 0, 0, 151, 0, 0, 0, 0, 0, 0, 150,
00533 292, 0, 152, 290, 0, 144, 144, 144, 144, 144,
00534 144, 144, 144, 144, 144, 152, 144, 144, 144, 144,
00535 144, 144, 151, 0, 0, 0, 0, 0, 0, 150,
00536 150, 0, 150, 150, 0, 150, 150, 150, 150, 0,
00537 150, 150, 150, 150, 150, 152, 150, 150, 150, 150,
00538 150, 150, 151, 151, 150, 151, 151, 0, 151, 151,
00539 151, 151, 0, 151, 151, 151, 151, 151, 0, 151,
00540 151, 151, 151, 151, 151, 152, 152, 151, 152, 152,
00541 0, 152, 152, 152, 152, 0, 152, 152, 152, 152,
00542 152, 6, 152, 152, 152, 152, 152, 152, 0, 0,
00543 152, 0, 0, 0, 0, 7, 8, 9, 10, 11,
00544 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
00545 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00546 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
00547 42, 43, 44, 45, 46, 47, 48, 49, 296, 50,
00548 51, 52, 53, 54, 55, 56, 57, 0, 0, 58,
00549 59, 0, 0, 0, 0, 0, 0, 10, 0, 0,
00550 297, 14, 0, 0, 17, 0, 0, 20, 21, 0,
00551 23, 0, 0, 0, 60, 0, 0, 61, 0, 292,
00552 163, 164, 326, 327, 328, 329, 330, 331, 41, 0,
00553 43, 334, 335, 336, 337, 338, 339, 0, 294, 51,
00554 0, 0, 0, 55, 0, 0, 0, 0, 58, 0,
00555 0, 0, 146, 0, 0, 296, 0, 146, 146, 146,
00556 146, 146, 146, 146, 146, 146, 146, 290, 146, 146,
00557 146, 146, 146, 146, 145, 0, 61, 297, 0, 145,
00558 145, 145, 145, 145, 145, 145, 145, 145, 145, 287,
00559 145, 145, 145, 145, 145, 145, 292, 0, 144, 144,
00560 144, 144, 144, 144, 144, 144, 144, 144, 0, 144,
00561 144, 144, 144, 144, 144, 294, 0, 144, 144, 144,
00562 144, 144, 144, 144, 144, 144, 144, 0, 144, 144,
00563 144, 144, 144, 144, 153, 154, 155, 156, 157, 158,
00564 159, 160, 161, 105, 290, 0, 144, 144, 144, 144,
00565 144, 144, 144, 144, 144, 144, 0, 144, 144, 144,
00566 144, 144, 144, 0, 0, 0, 0, 0, 144, 144,
00567 144, 144, 144, 144, 144, 144, 144, 144, 0, 144,
00568 144, 144, 144, 144, 144, 153, 154, 155, 156, 157,
00569 158, 159, 160, 161, 105, 0, 0, 0, 0, 0,
00570 0, 0, 0, 220, 0, 0, 0, 0, 0, 163,
00571 164, 362, 0, 363, 0, 0, 0, 0, 0, 221,
00572 153, 154, 155, 156, 157, 158, 159, 160, 161, 105,
00573 0, 153, 154, 155, 156, 157, 158, 159, 160, 161,
00574 105, 0, 153, 154, 155, 156, 157, 158, 159, 160,
00575 161, 105, 0, 0, 220, 0, 0, 0, 365, 0,
00576 163, 164, 430, 163, 164, 263, 264, 265, 266, 0,
00577 221, 153, 154, 155, 156, 157, 158, 159, 160, 161,
00578 105, 0, 0, 0, 0, 0, 0, 0, 0, 220,
00579 0, 0, 0, 0, 0, 163, 164, 240, 0, 0,
00580 220, 0, 0, 0, 0, 221, 163, 164, 466, 0,
00581 0, 220, 0, 0, 373, 0, 221, 163, 164, 163,
00582 164, 263, 264, 265, 266, 0, 0, 221, 153, 154,
00583 155, 156, 157, 158, 159, 160, 161, 105, 0, 0,
00584 275, 0, 0, 411, 0, 0, 163, 164, 163, 164,
00585 263, 264, 265, 266, 0, 0, 221, 229, 229, 229,
00586 229, 229, 229, 229, 229, 229, 229, 0, 153, 154,
00587 155, 156, 157, 158, 159, 160, 161, 105, 255, 153,
00588 154, 155, 156, 157, 158, 159, 160, 161, 105, 0,
00589 0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
00590 0, 0, 0, 163, 164, 0, 0, 0, 0, 0,
00591 0, 0, 0, 221, 153, 154, 155, 156, 157, 158,
00592 159, 160, 161, 105, 0, 0, 229, 0, 0, 0,
00593 0, 0, 229, 229, 0, 0, 0, 214, 0, 0,
00594 0, 0, 229, 163, 164, 256, 0, 257, 162, 0,
00595 0, 0, 96, 0, 163, 164, 165, 98, 166, 0,
00596 0, 100, 0, 101, 102, 103, 0, 104, 0, 0,
00597 0, 0, 0, 111, 112, 113, 114, 115, 0, 0,
00598 0, 0, 0, 0, 0, 0, 0, 119, 0, 121,
00599 0, 122, 0, 0, 0, 0, 0, 0, 130, 0,
00600 0, 0, 0, 0, 0, 138, 153, 154, 155, 156,
00601 157, 158, 159, 160, 161, 105, 153, 154, 155, 156,
00602 157, 158, 159, 160, 161, 105, 0, 0, 182, 183,
00603 153, 154, 155, 156, 157, 158, 159, 160, 161, 105,
00604 153, 154, 155, 156, 157, 158, 159, 160, 161, 105,
00605 169, 0, 0, 169, 0, 169, 169, 169, 169, 169,
00606 169, 169, 169, 169, 169, 0, 169, 169, 169, 169,
00607 169, 169, 0, 0, 0, 162, 0, 0, 0, 0,
00608 0, 163, 164, 176, 0, 214, 0, 0, 0, 0,
00609 0, 163, 164, 215, 0, 0, 0, 0, 0, 214,
00610 0, 0, 0, 0, 0, 163, 164, 8, 9, 435,
00611 11, 0, 13, 0, 15, 163, 164, 18, 0, 0,
00612 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
00613 0, 0, 0, 34, 35, 36, 37, 0, 0, 40,
00614 0, 0, 0, 0, 45, 0, 47, 48, 0, 0,
00615 50, 0, 52, 53, 0, 0, 56, 394, 149, 0,
00616 0, 59, 163, 164, 326, 327, 328, 329, 330, 331,
00617 332, 333, 0, 334, 335, 336, 337, 338, 339, 402,
00618 0, 0, 0, 0, 163, 164, 326, 327, 328, 329,
00619 330, 331, 332, 333, 0, 334, 335, 336, 337, 338,
00620 339, 403, 0, 0, 0, 0, 163, 164, 326, 327,
00621 328, 329, 330, 331, 332, 333, 0, 334, 335, 336,
00622 337, 338, 339, 416, 0, 0, 0, 0, 163, 164,
00623 326, 327, 328, 329, 330, 331, 332, 333, 0, 334,
00624 335, 336, 337, 338, 339, 456, 0, 0, 0, 0,
00625 163, 164, 326, 327, 328, 329, 330, 331, 332, 333,
00626 0, 334, 335, 336, 337, 338, 339, 513, 0, 0,
00627 0, 0, 163, 164, 326, 327, 328, 329, 330, 331,
00628 332, 333, 0, 334, 335, 336, 337, 338, 339, 144,
00629 0, 0, 0, 0, 144, 144, 144, 144, 144, 144,
00630 144, 144, 144, 144, 0, 144, 144, 144, 144, 144,
00631 144, 510, 0, 0, 163, 164, 326, 327, 328, 329,
00632 330, 331, 332, 333, 0, 334, 335, 336, 337, 338,
00633 339, 163, 164, 326, 327, 328, 329, 330, 331, 332,
00634 333, 0, 334, 335, 336, 337, 338, 339, 144, 144,
00635 144, 144, 144, 144, 144, 144, 144, 144, 0, 144,
00636 144, 144, 144, 144, 144,
00637 };
00638 short yycheck[] = { 29,
00639 111, 236, 140, 122, 68, 180, 181, 3, 29, 119,
00640 130, 75, 348, 1, 30, 31, 349, 1, 1, 138,
00641 202, 33, 14, 39, 54, 1, 42, 436, 180, 181,
00642 46, 97, 1, 6, 1, 14, 100, 49, 1, 44,
00643 14, 14, 376, 275, 1, 57, 389, 14, 83, 231,
00644 85, 1, 162, 191, 14, 78, 84, 167, 86, 74,
00645 83, 76, 182, 183, 174, 95, 96, 97, 220, 1,
00646 1, 1, 14, 78, 82, 141, 99, 44, 75, 109,
00647 110, 78, 112, 75, 195, 1, 74, 117, 497, 110,
00648 120, 119, 1, 5, 78, 215, 216, 1, 82, 129,
00649 275, 1, 78, 133, 214, 14, 136, 74, 129, 78,
00650 140, 78, 142, 143, 84, 99, 86, 147, 452, 131,
00651 83, 78, 85, 275, 98, 98, 83, 470, 85, 240,
00652 99, 14, 99, 83, 162, 44, 1, 1, 98, 167,
00653 82, 205, 14, 75, 75, 75, 174, 78, 78, 119,
00654 382, 383, 384, 263, 264, 265, 266, 267, 494, 14,
00655 493, 191, 78, 345, 194, 74, 75, 197, 77, 78,
00656 78, 75, 1, 77, 74, 78, 351, 86, 87, 88,
00657 89, 245, 14, 213, 78, 14, 214, 1, 14, 78,
00658 99, 74, 162, 78, 429, 347, 99, 167, 83, 169,
00659 230, 74, 74, 233, 174, 99, 78, 382, 383, 384,
00660 75, 75, 233, 78, 78, 80, 81, 355, 234, 74,
00661 85, 85, 454, 455, 452, 457, 454, 455, 78, 457,
00662 382, 383, 384, 83, 1, 263, 264, 265, 266, 267,
00663 75, 78, 470, 78, 214, 74, 216, 14, 78, 75,
00664 83, 83, 85, 85, 224, 285, 82, 367, 433, 75,
00665 256, 1, 78, 78, 78, 417, 80, 81, 82, 83,
00666 84, 85, 242, 78, 14, 75, 269, 270, 78, 454,
00667 455, 274, 457, 435, 75, 83, 77, 78, 1, 259,
00668 401, 402, 262, 263, 264, 265, 266, 267, 268, 74,
00669 78, 14, 454, 455, 44, 457, 75, 74, 77, 279,
00670 84, 78, 86, 80, 81, 82, 83, 84, 85, 6,
00671 74, 351, 497, 351, 75, 355, 356, 78, 298, 393,
00672 449, 44, 74, 74, 74, 75, 400, 77, 78, 367,
00673 310, 311, 75, 75, 1, 78, 78, 317, 88, 89,
00674 75, 6, 322, 78, 324, 325, 74, 14, 74, 99,
00675 75, 74, 75, 78, 77, 78, 396, 74, 80, 81,
00676 82, 83, 84, 86, 87, 88, 89, 74, 348, 75,
00677 410, 351, 78, 14, 78, 75, 99, 44, 78, 359,
00678 75, 361, 1, 78, 364, 74, 122, 367, 368, 369,
00679 370, 371, 372, 433, 76, 433, 436, 518, 436, 78,
00680 380, 75, 138, 139, 78, 1, 75, 74, 75, 78,
00681 77, 78, 452, 75, 454, 455, 78, 457, 14, 540,
00682 87, 88, 89, 71, 1, 80, 81, 82, 83, 84,
00683 470, 75, 99, 83, 78, 74, 476, 1, 418, 419,
00684 420, 421, 422, 423, 424, 425, 426, 427, 44, 75,
00685 14, 75, 78, 433, 78, 83, 74, 497, 498, 497,
00686 196, 80, 81, 82, 83, 84, 85, 82, 83, 84,
00687 450, 207, 208, 82, 83, 84, 1, 74, 74, 84,
00688 44, 74, 78, 78, 220, 221, 222, 467, 76, 14,
00689 80, 78, 78, 473, 84, 475, 86, 78, 75, 235,
00690 74, 78, 14, 80, 81, 82, 83, 487, 85, 76,
00691 74, 75, 78, 77, 78, 84, 252, 497, 254, 44,
00692 75, 501, 258, 77, 88, 89, 85, 86, 87, 119,
00693 78, 78, 78, 1, 78, 99, 78, 517, 70, 275,
00694 80, 81, 82, 83, 84, 85, 1, 78, 81, 74,
00695 75, 75, 77, 78, 534, 80, 81, 76, 538, 14,
00696 85, 86, 87, 88, 89, 82, 91, 92, 93, 94,
00697 95, 96, 162, 1, 99, 78, 74, 167, 80, 81,
00698 82, 83, 84, 85, 174, 78, 14, 78, 178, 44,
00699 326, 327, 328, 329, 330, 331, 332, 333, 14, 14,
00700 75, 75, 192, 75, 340, 341, 75, 75, 75, 199,
00701 78, 347, 80, 81, 82, 83, 44, 85, 354, 75,
00702 75, 76, 77, 78, 214, 80, 81, 82, 83, 84,
00703 85, 86, 87, 88, 89, 75, 91, 92, 93, 94,
00704 95, 96, 78, 1, 99, 1, 74, 75, 1, 77,
00705 78, 387, 1, 1, 1, 391, 392, 85, 86, 87,
00706 88, 89, 1, 91, 92, 93, 94, 95, 96, 1,
00707 1, 99, 408, 263, 264, 265, 266, 267, 1, 269,
00708 270, 1, 1, 1, 274, 1, 1, 1, 1, 80,
00709 81, 82, 83, 84, 85, 14, 1, 1, 1, 289,
00710 91, 92, 93, 94, 95, 96, 78, 1, 1, 1,
00711 75, 75, 448, 449, 1, 5, 6, 7, 8, 9,
00712 10, 11, 12, 13, 14, 44, 1, 1, 75, 465,
00713 1, 78, 77, 80, 81, 82, 83, 1, 85, 484,
00714 211, 275, 476, 14, 75, 481, 289, 78, 181, 80,
00715 81, 82, 83, 1, 85, 74, 75, 447, 77, 78,
00716 396, 510, 354, 499, 497, 120, 14, 86, 87, 88,
00717 89, 491, 145, 44, 510, 137, 472, 367, 514, 433,
00718 99, 144, 134, 230, 74, 75, 376, 410, 465, 399,
00719 80, 81, 82, 486, 79, 146, 44, 367, -1, 389,
00720 90, -1, -1, -1, 75, 76, 77, 78, 398, 80,
00721 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
00722 91, 92, 93, 94, 95, 96, 74, 75, 99, 77,
00723 78, -1, 80, 81, 82, 83, 1, 85, 86, 87,
00724 88, 89, -1, 91, 92, 93, 94, 95, 96, 14,
00725 -1, 99, 80, 81, 82, 83, 84, 85, 86, 1,
00726 -1, -1, 452, 91, 92, 93, 94, 95, 96, -1,
00727 -1, -1, 14, -1, -1, -1, -1, -1, -1, 44,
00728 470, -1, 1, 78, -1, 80, 81, 82, 83, 84,
00729 85, 86, 87, 88, 89, 14, 91, 92, 93, 94,
00730 95, 96, 44, -1, -1, -1, -1, -1, -1, 74,
00731 75, -1, 77, 78, -1, 80, 81, 82, 83, -1,
00732 85, 86, 87, 88, 89, 44, 91, 92, 93, 94,
00733 95, 96, 74, 75, 99, 77, 78, -1, 80, 81,
00734 82, 83, -1, 85, 86, 87, 88, 89, -1, 91,
00735 92, 93, 94, 95, 96, 74, 75, 99, 77, 78,
00736 -1, 80, 81, 82, 83, -1, 85, 86, 87, 88,
00737 89, 4, 91, 92, 93, 94, 95, 96, -1, -1,
00738 99, -1, -1, -1, -1, 18, 19, 20, 21, 22,
00739 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00740 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
00741 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
00742 53, 54, 55, 56, 57, 58, 59, 60, 1, 62,
00743 63, 64, 65, 66, 67, 68, 69, -1, -1, 72,
00744 73, -1, -1, -1, -1, -1, -1, 21, -1, -1,
00745 1, 25, -1, -1, 28, -1, -1, 31, 32, -1,
00746 34, -1, -1, -1, 97, -1, -1, 100, -1, 1,
00747 80, 81, 82, 83, 84, 85, 86, 87, 52, -1,
00748 54, 91, 92, 93, 94, 95, 96, -1, 1, 63,
00749 -1, -1, -1, 67, -1, -1, -1, -1, 72, -1,
00750 -1, -1, 75, -1, -1, 78, -1, 80, 81, 82,
00751 83, 84, 85, 86, 87, 88, 89, 1, 91, 92,
00752 93, 94, 95, 96, 75, -1, 100, 78, -1, 80,
00753 81, 82, 83, 84, 85, 86, 87, 88, 89, 1,
00754 91, 92, 93, 94, 95, 96, 78, -1, 80, 81,
00755 82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
00756 92, 93, 94, 95, 96, 78, -1, 80, 81, 82,
00757 83, 84, 85, 86, 87, 88, 89, -1, 91, 92,
00758 93, 94, 95, 96, 5, 6, 7, 8, 9, 10,
00759 11, 12, 13, 14, 78, -1, 80, 81, 82, 83,
00760 84, 85, 86, 87, 88, 89, -1, 91, 92, 93,
00761 94, 95, 96, -1, -1, -1, -1, -1, 80, 81,
00762 82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
00763 92, 93, 94, 95, 96, 5, 6, 7, 8, 9,
00764 10, 11, 12, 13, 14, -1, -1, -1, -1, -1,
00765 -1, -1, -1, 74, -1, -1, -1, -1, -1, 80,
00766 81, 82, -1, 84, -1, -1, -1, -1, -1, 90,
00767 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00768 -1, 5, 6, 7, 8, 9, 10, 11, 12, 13,
00769 14, -1, 5, 6, 7, 8, 9, 10, 11, 12,
00770 13, 14, -1, -1, 74, -1, -1, -1, 75, -1,
00771 80, 81, 82, 80, 81, 82, 83, 84, 85, -1,
00772 90, 5, 6, 7, 8, 9, 10, 11, 12, 13,
00773 14, -1, -1, -1, -1, -1, -1, -1, -1, 74,
00774 -1, -1, -1, -1, -1, 80, 81, 82, -1, -1,
00775 74, -1, -1, -1, -1, 90, 80, 81, 82, -1,
00776 -1, 74, -1, -1, 75, -1, 90, 80, 81, 80,
00777 81, 82, 83, 84, 85, -1, -1, 90, 5, 6,
00778 7, 8, 9, 10, 11, 12, 13, 14, -1, -1,
00779 74, -1, -1, 75, -1, -1, 80, 81, 80, 81,
00780 82, 83, 84, 85, -1, -1, 90, 5, 6, 7,
00781 8, 9, 10, 11, 12, 13, 14, -1, 5, 6,
00782 7, 8, 9, 10, 11, 12, 13, 14, 15, 5,
00783 6, 7, 8, 9, 10, 11, 12, 13, 14, -1,
00784 -1, -1, -1, -1, -1, -1, -1, 74, -1, -1,
00785 -1, -1, -1, 80, 81, -1, -1, -1, -1, -1,
00786 -1, -1, -1, 90, 5, 6, 7, 8, 9, 10,
00787 11, 12, 13, 14, -1, -1, 74, -1, -1, -1,
00788 -1, -1, 80, 81, -1, -1, -1, 74, -1, -1,
00789 -1, -1, 90, 80, 81, 82, -1, 84, 74, -1,
00790 -1, -1, 13, -1, 80, 81, 82, 18, 84, -1,
00791 -1, 22, -1, 24, 25, 26, -1, 28, -1, -1,
00792 -1, -1, -1, 34, 35, 36, 37, 38, -1, -1,
00793 -1, -1, -1, -1, -1, -1, -1, 48, -1, 50,
00794 -1, 52, -1, -1, -1, -1, -1, -1, 59, -1,
00795 -1, -1, -1, -1, -1, 66, 5, 6, 7, 8,
00796 9, 10, 11, 12, 13, 14, 5, 6, 7, 8,
00797 9, 10, 11, 12, 13, 14, -1, -1, 89, 90,
00798 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00799 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00800 75, -1, -1, 78, -1, 80, 81, 82, 83, 84,
00801 85, 86, 87, 88, 89, -1, 91, 92, 93, 94,
00802 95, 96, -1, -1, -1, 74, -1, -1, -1, -1,
00803 -1, 80, 81, 82, -1, 74, -1, -1, -1, -1,
00804 -1, 80, 81, 82, -1, -1, -1, -1, -1, 74,
00805 -1, -1, -1, -1, -1, 80, 81, 19, 20, 74,
00806 22, -1, 24, -1, 26, 80, 81, 29, -1, -1,
00807 -1, -1, -1, -1, -1, -1, 38, -1, -1, -1,
00808 -1, -1, -1, 45, 46, 47, 48, -1, -1, 51,
00809 -1, -1, -1, -1, 56, -1, 58, 59, -1, -1,
00810 62, -1, 64, 65, -1, -1, 68, 75, 70, -1,
00811 -1, 73, 80, 81, 82, 83, 84, 85, 86, 87,
00812 88, 89, -1, 91, 92, 93, 94, 95, 96, 75,
00813 -1, -1, -1, -1, 80, 81, 82, 83, 84, 85,
00814 86, 87, 88, 89, -1, 91, 92, 93, 94, 95,
00815 96, 75, -1, -1, -1, -1, 80, 81, 82, 83,
00816 84, 85, 86, 87, 88, 89, -1, 91, 92, 93,
00817 94, 95, 96, 75, -1, -1, -1, -1, 80, 81,
00818 82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
00819 92, 93, 94, 95, 96, 75, -1, -1, -1, -1,
00820 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
00821 -1, 91, 92, 93, 94, 95, 96, 75, -1, -1,
00822 -1, -1, 80, 81, 82, 83, 84, 85, 86, 87,
00823 88, 89, -1, 91, 92, 93, 94, 95, 96, 75,
00824 -1, -1, -1, -1, 80, 81, 82, 83, 84, 85,
00825 86, 87, 88, 89, -1, 91, 92, 93, 94, 95,
00826 96, 77, -1, -1, 80, 81, 82, 83, 84, 85,
00827 86, 87, 88, 89, -1, 91, 92, 93, 94, 95,
00828 96, 80, 81, 82, 83, 84, 85, 86, 87, 88,
00829 89, -1, 91, 92, 93, 94, 95, 96, 80, 81,
00830 82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
00831 92, 93, 94, 95, 96,
00832 };
00833 #define YYFINAL 1
00834 #ifndef YYDEBUG
00835 #define YYDEBUG 0
00836 #endif
00837 #define YYMAXTOKEN 100
00838 #if YYDEBUG
00839 char *yyname[] = {
00840 "end-of-file","SEOS","SCOMMENT","SLABEL","SUNKNOWN","SHOLLERITH","SICON",
00841 "SRCON","SDCON","SBITCON","SOCTCON","SHEXCON","STRUE","SFALSE","SNAME",
00842 "SNAMEEQ","SFIELD","SSCALE","SINCLUDE","SLET","SASSIGN","SAUTOMATIC",
00843 "SBACKSPACE","SBLOCK","SCALL","SCHARACTER","SCLOSE","SCOMMON","SCOMPLEX",
00844 "SCONTINUE","SDATA","SDCOMPLEX","SDIMENSION","SDO","SDOUBLE","SELSE","SELSEIF",
00845 "SEND","SENDFILE","SENDIF","SENTRY","SEQUIV","SEXTERNAL","SFORMAT","SFUNCTION",
00846 "SGOTO","SASGOTO","SCOMPGOTO","SARITHIF","SLOGIF","SIMPLICIT","SINQUIRE",
00847 "SINTEGER","SINTRINSIC","SLOGICAL","SNAMELIST","SOPEN","SPARAM","SPAUSE",
00848 "SPRINT","SPROGRAM","SPUNCH","SREAD","SREAL","SRETURN","SREWIND","SSAVE",
00849 "SSTATIC","SSTOP","SSUBROUTINE","STHEN","STO","SUNDEFINED","SWRITE","SLPAR",
00850 "SRPAR","SEQUALS","SCOLON","SCOMMA","SCURRENCY","SPLUS","SMINUS","SSTAR",
00851 "SSLASH","SPOWER","SCONCAT","SAND","SOR","SNEQV","SEQV","SNOT","SEQ","SLT",
00852 "SGT","SLE","SGE","SNE","SENDDO","SWHILE","SSLASHD","SBYTE",
00853 };
00854 char *yyrule[] = {
00855 "$accept : program",
00856 "program :",
00857 "program : program stat SEOS",
00858 "stat : thislabel entry",
00859 "stat : thislabel spec",
00860 "stat : thislabel exec",
00861 "stat : thislabel SINCLUDE filename",
00862 "stat : thislabel SEND end_spec",
00863 "stat : thislabel SUNKNOWN",
00864 "stat : error",
00865 "thislabel : SLABEL",
00866 "entry : SPROGRAM new_proc progname",
00867 "entry : SPROGRAM new_proc progname progarglist",
00868 "entry : SBLOCK new_proc progname",
00869 "entry : SSUBROUTINE new_proc entryname arglist",
00870 "entry : SFUNCTION new_proc entryname arglist",
00871 "entry : type SFUNCTION new_proc entryname arglist",
00872 "entry : SENTRY entryname arglist",
00873 "new_proc :",
00874 "entryname : name",
00875 "name : SNAME",
00876 "progname :",
00877 "progname : entryname",
00878 "progarglist : SLPAR SRPAR",
00879 "progarglist : SLPAR progargs SRPAR",
00880 "progargs : progarg",
00881 "progargs : progargs SCOMMA progarg",
00882 "progarg : SNAME",
00883 "progarg : SNAME SEQUALS SNAME",
00884 "arglist :",
00885 "arglist : SLPAR SRPAR",
00886 "arglist : SLPAR args SRPAR",
00887 "args : arg",
00888 "args : args SCOMMA arg",
00889 "arg : name",
00890 "arg : SSTAR",
00891 "filename : SHOLLERITH",
00892 "spec : dcl",
00893 "spec : common",
00894 "spec : external",
00895 "spec : intrinsic",
00896 "spec : equivalence",
00897 "spec : data",
00898 "spec : implicit",
00899 "spec : namelist",
00900 "spec : SSAVE",
00901 "spec : SSAVE savelist",
00902 "spec : SFORMAT",
00903 "spec : SPARAM in_dcl SLPAR paramlist SRPAR",
00904 "dcl : type opt_comma name in_dcl new_dcl dims lengspec",
00905 "dcl : dcl SCOMMA name dims lengspec",
00906 "dcl : dcl SSLASHD datainit vallist SSLASHD",
00907 "new_dcl :",
00908 "type : typespec lengspec",
00909 "typespec : typename",
00910 "typename : SINTEGER",
00911 "typename : SREAL",
00912 "typename : SCOMPLEX",
00913 "typename : SDOUBLE",
00914 "typename : SDCOMPLEX",
00915 "typename : SLOGICAL",
00916 "typename : SCHARACTER",
00917 "typename : SUNDEFINED",
00918 "typename : SDIMENSION",
00919 "typename : SAUTOMATIC",
00920 "typename : SSTATIC",
00921 "typename : SBYTE",
00922 "lengspec :",
00923 "lengspec : SSTAR intonlyon expr intonlyoff",
00924 "lengspec : SSTAR intonlyon SLPAR SSTAR SRPAR intonlyoff",
00925 "common : SCOMMON in_dcl var",
00926 "common : SCOMMON in_dcl comblock var",
00927 "common : common opt_comma comblock opt_comma var",
00928 "common : common SCOMMA var",
00929 "comblock : SCONCAT",
00930 "comblock : SSLASH SNAME SSLASH",
00931 "external : SEXTERNAL in_dcl name",
00932 "external : external SCOMMA name",
00933 "intrinsic : SINTRINSIC in_dcl name",
00934 "intrinsic : intrinsic SCOMMA name",
00935 "equivalence : SEQUIV in_dcl equivset",
00936 "equivalence : equivalence SCOMMA equivset",
00937 "equivset : SLPAR equivlist SRPAR",
00938 "equivlist : lhs",
00939 "equivlist : equivlist SCOMMA lhs",
00940 "data : SDATA in_data datalist",
00941 "data : data opt_comma datalist",
00942 "in_data :",
00943 "datalist : datainit datavarlist SSLASH datapop vallist SSLASH",
00944 "datainit :",
00945 "datapop :",
00946 "$$1 :",
00947 "vallist : $$1 val",
00948 "vallist : vallist SCOMMA val",
00949 "val : value",
00950 "val : simple SSTAR value",
00951 "value : simple",
00952 "value : addop simple",
00953 "value : complex_const",
00954 "savelist : saveitem",
00955 "savelist : savelist SCOMMA saveitem",
00956 "saveitem : name",
00957 "saveitem : comblock",
00958 "paramlist : paramitem",
00959 "paramlist : paramlist SCOMMA paramitem",
00960 "paramitem : name SEQUALS expr",
00961 "var : name dims",
00962 "datavar : lhs",
00963 "datavar : SLPAR datavarlist SCOMMA dospec SRPAR",
00964 "datavarlist : datavar",
00965 "datavarlist : datavarlist SCOMMA datavar",
00966 "dims :",
00967 "dims : SLPAR dimlist SRPAR",
00968 "$$2 :",
00969 "dimlist : $$2 dim",
00970 "dimlist : dimlist SCOMMA dim",
00971 "dim : ubound",
00972 "dim : expr SCOLON ubound",
00973 "ubound : SSTAR",
00974 "ubound : expr",
00975 "labellist : label",
00976 "labellist : labellist SCOMMA label",
00977 "label : SICON",
00978 "implicit : SIMPLICIT in_dcl implist",
00979 "implicit : implicit SCOMMA implist",
00980 "implist : imptype SLPAR letgroups SRPAR",
00981 "implist : imptype",
00982 "$$3 :",
00983 "imptype : $$3 type",
00984 "letgroups : letgroup",
00985 "letgroups : letgroups SCOMMA letgroup",
00986 "letgroup : letter",
00987 "letgroup : letter SMINUS letter",
00988 "letter : SNAME",
00989 "namelist : SNAMELIST",
00990 "namelist : namelist namelistentry",
00991 "namelistentry : SSLASH name SSLASH namelistlist",
00992 "namelistlist : name",
00993 "namelistlist : namelistlist SCOMMA name",
00994 "in_dcl :",
00995 "funarglist :",
00996 "funarglist : funargs",
00997 "funargs : expr",
00998 "funargs : funargs SCOMMA expr",
00999 "expr : uexpr",
01000 "expr : SLPAR expr SRPAR",
01001 "expr : complex_const",
01002 "uexpr : lhs",
01003 "uexpr : simple_const",
01004 "uexpr : expr addop expr",
01005 "uexpr : expr SSTAR expr",
01006 "uexpr : expr SSLASH expr",
01007 "uexpr : expr SPOWER expr",
01008 "uexpr : addop expr",
01009 "uexpr : expr relop expr",
01010 "uexpr : expr SEQV expr",
01011 "uexpr : expr SNEQV expr",
01012 "uexpr : expr SOR expr",
01013 "uexpr : expr SAND expr",
01014 "uexpr : SNOT expr",
01015 "uexpr : expr SCONCAT expr",
01016 "addop : SPLUS",
01017 "addop : SMINUS",
01018 "relop : SEQ",
01019 "relop : SGT",
01020 "relop : SLT",
01021 "relop : SGE",
01022 "relop : SLE",
01023 "relop : SNE",
01024 "lhs : name",
01025 "lhs : name substring",
01026 "lhs : name SLPAR funarglist SRPAR",
01027 "lhs : name SLPAR funarglist SRPAR substring",
01028 "substring : SLPAR opt_expr SCOLON opt_expr SRPAR",
01029 "opt_expr :",
01030 "opt_expr : expr",
01031 "simple : name",
01032 "simple : simple_const",
01033 "simple_const : STRUE",
01034 "simple_const : SFALSE",
01035 "simple_const : SHOLLERITH",
01036 "simple_const : SICON",
01037 "simple_const : SRCON",
01038 "simple_const : SDCON",
01039 "simple_const : bit_const",
01040 "complex_const : SLPAR uexpr SCOMMA uexpr SRPAR",
01041 "bit_const : SHEXCON",
01042 "bit_const : SOCTCON",
01043 "bit_const : SBITCON",
01044 "fexpr : unpar_fexpr",
01045 "fexpr : SLPAR fexpr SRPAR",
01046 "unpar_fexpr : lhs",
01047 "unpar_fexpr : simple_const",
01048 "unpar_fexpr : fexpr addop fexpr",
01049 "unpar_fexpr : fexpr SSTAR fexpr",
01050 "unpar_fexpr : fexpr SSLASH fexpr",
01051 "unpar_fexpr : fexpr SPOWER fexpr",
01052 "unpar_fexpr : addop fexpr",
01053 "unpar_fexpr : fexpr SCONCAT fexpr",
01054 "exec : iffable",
01055 "exec : SDO end_spec intonlyon label intonlyoff opt_comma dospecw",
01056 "exec : SDO end_spec opt_comma dospecw",
01057 "exec : SENDDO",
01058 "exec : logif iffable",
01059 "exec : logif STHEN",
01060 "exec : SELSEIF end_spec SLPAR expr SRPAR STHEN",
01061 "exec : SELSE end_spec",
01062 "exec : SENDIF end_spec",
01063 "logif : SLOGIF end_spec SLPAR expr SRPAR",
01064 "dospec : name SEQUALS exprlist",
01065 "dospecw : dospec",
01066 "dospecw : SWHILE SLPAR expr SRPAR",
01067 "iffable : let lhs SEQUALS expr",
01068 "iffable : SASSIGN end_spec assignlabel STO name",
01069 "iffable : SCONTINUE end_spec",
01070 "iffable : goto",
01071 "iffable : io",
01072 "iffable : SARITHIF end_spec SLPAR expr SRPAR label SCOMMA label SCOMMA label",
01073 "iffable : call",
01074 "iffable : call SLPAR SRPAR",
01075 "iffable : call SLPAR callarglist SRPAR",
01076 "iffable : SRETURN end_spec opt_expr",
01077 "iffable : stop end_spec opt_expr",
01078 "assignlabel : SICON",
01079 "let : SLET",
01080 "goto : SGOTO end_spec label",
01081 "goto : SASGOTO end_spec name",
01082 "goto : SASGOTO end_spec name opt_comma SLPAR labellist SRPAR",
01083 "goto : SCOMPGOTO end_spec SLPAR labellist SRPAR opt_comma expr",
01084 "opt_comma :",
01085 "opt_comma : SCOMMA",
01086 "call : SCALL end_spec name",
01087 "callarglist : callarg",
01088 "callarglist : callarglist SCOMMA callarg",
01089 "callarg : expr",
01090 "callarg : SSTAR label",
01091 "stop : SPAUSE",
01092 "stop : SSTOP",
01093 "exprlist : expr",
01094 "exprlist : exprlist SCOMMA expr",
01095 "end_spec :",
01096 "intonlyon :",
01097 "intonlyoff :",
01098 "io : io1",
01099 "io1 : iofmove ioctl",
01100 "io1 : iofmove unpar_fexpr",
01101 "io1 : iofmove SSTAR",
01102 "io1 : iofmove SPOWER",
01103 "io1 : iofctl ioctl",
01104 "io1 : read ioctl",
01105 "io1 : read infmt",
01106 "io1 : read ioctl inlist",
01107 "io1 : read infmt SCOMMA inlist",
01108 "io1 : read ioctl SCOMMA inlist",
01109 "io1 : write ioctl",
01110 "io1 : write ioctl outlist",
01111 "io1 : print",
01112 "io1 : print SCOMMA outlist",
01113 "iofmove : fmkwd end_spec in_ioctl",
01114 "fmkwd : SBACKSPACE",
01115 "fmkwd : SREWIND",
01116 "fmkwd : SENDFILE",
01117 "iofctl : ctlkwd end_spec in_ioctl",
01118 "ctlkwd : SINQUIRE",
01119 "ctlkwd : SOPEN",
01120 "ctlkwd : SCLOSE",
01121 "infmt : unpar_fexpr",
01122 "infmt : SSTAR",
01123 "ioctl : SLPAR fexpr SRPAR",
01124 "ioctl : SLPAR ctllist SRPAR",
01125 "ctllist : ioclause",
01126 "ctllist : ctllist SCOMMA ioclause",
01127 "ioclause : fexpr",
01128 "ioclause : SSTAR",
01129 "ioclause : SPOWER",
01130 "ioclause : nameeq expr",
01131 "ioclause : nameeq SSTAR",
01132 "ioclause : nameeq SPOWER",
01133 "nameeq : SNAMEEQ",
01134 "read : SREAD end_spec in_ioctl",
01135 "write : SWRITE end_spec in_ioctl",
01136 "print : SPRINT end_spec fexpr in_ioctl",
01137 "print : SPRINT end_spec SSTAR in_ioctl",
01138 "inlist : inelt",
01139 "inlist : inlist SCOMMA inelt",
01140 "inelt : lhs",
01141 "inelt : SLPAR inlist SCOMMA dospec SRPAR",
01142 "outlist : uexpr",
01143 "outlist : other",
01144 "outlist : out2",
01145 "out2 : uexpr SCOMMA uexpr",
01146 "out2 : uexpr SCOMMA other",
01147 "out2 : other SCOMMA uexpr",
01148 "out2 : other SCOMMA other",
01149 "out2 : out2 SCOMMA uexpr",
01150 "out2 : out2 SCOMMA other",
01151 "other : complex_const",
01152 "other : SLPAR expr SRPAR",
01153 "other : SLPAR uexpr SCOMMA dospec SRPAR",
01154 "other : SLPAR other SCOMMA dospec SRPAR",
01155 "other : SLPAR out2 SCOMMA dospec SRPAR",
01156 "in_ioctl :",
01157 };
01158 #endif
01159 #ifdef YYSTACKSIZE
01160 #undef YYMAXDEPTH
01161 #define YYMAXDEPTH YYSTACKSIZE
01162 #else
01163 #ifdef YYMAXDEPTH
01164 #define YYSTACKSIZE YYMAXDEPTH
01165 #else
01166 #define YYSTACKSIZE 10000
01167 #define YYMAXDEPTH 10000
01168 #endif
01169 #endif
01170 #define YYINITSTACKSIZE 200
01171 int yydebug;
01172 int yynerrs;
01173 int yyerrflag;
01174 int yychar;
01175 short *yyssp;
01176 YYSTYPE *yyvsp;
01177 YYSTYPE yyval;
01178 YYSTYPE yylval;
01179 short *yyss;
01180 short *yysslim;
01181 YYSTYPE *yyvs;
01182 int yystacksize;
01183
01184 int yyparse __P((void));
01185 static int yygrowstack __P((void));
01186 static int yygrowstack()
01187 {
01188 int newsize, i;
01189 short *newss;
01190 YYSTYPE *newvs;
01191
01192 if ((newsize = yystacksize) == 0)
01193 newsize = YYINITSTACKSIZE;
01194 else if (newsize >= YYMAXDEPTH)
01195 return -1;
01196 else if ((newsize *= 2) > YYMAXDEPTH)
01197 newsize = YYMAXDEPTH;
01198 i = yyssp - yyss;
01199 if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
01200 return -1;
01201 yyss = newss;
01202 yyssp = newss + i;
01203 if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
01204 return -1;
01205 yyvs = newvs;
01206 yyvsp = newvs + i;
01207 yystacksize = newsize;
01208 yysslim = yyss + newsize - 1;
01209 return 0;
01210 }
01211
01212 #define YYABORT goto yyabort
01213 #define YYREJECT goto yyabort
01214 #define YYACCEPT goto yyaccept
01215 #define YYERROR goto yyerrlab
01216 int
01217 yyparse()
01218 {
01219 int yym, yyn, yystate;
01220 #if YYDEBUG
01221 char *yys;
01222
01223 if ((yys = getenv("YYDEBUG")) != NULL)
01224 {
01225 yyn = *yys;
01226 if (yyn >= '0' && yyn <= '9')
01227 yydebug = yyn - '0';
01228 }
01229 #endif
01230
01231 yynerrs = 0;
01232 yyerrflag = 0;
01233 yychar = (-1);
01234
01235 if (yyss == NULL && yygrowstack()) goto yyoverflow;
01236 yyssp = yyss;
01237 yyvsp = yyvs;
01238 *yyssp = yystate = 0;
01239
01240 yyloop:
01241 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
01242 if (yychar < 0)
01243 {
01244 if ((yychar = yylex()) < 0) yychar = 0;
01245 #if YYDEBUG
01246 if (yydebug)
01247 {
01248 yys = 0;
01249 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
01250 if (!yys) yys = "illegal-symbol";
01251 printf("%sdebug: state %d, reading %d (%s)\n",
01252 YYPREFIX, yystate, yychar, yys);
01253 }
01254 #endif
01255 }
01256 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
01257 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
01258 {
01259 #if YYDEBUG
01260 if (yydebug)
01261 printf("%sdebug: state %d, shifting to state %d\n",
01262 YYPREFIX, yystate, yytable[yyn]);
01263 #endif
01264 if (yyssp >= yysslim && yygrowstack())
01265 {
01266 goto yyoverflow;
01267 }
01268 *++yyssp = yystate = yytable[yyn];
01269 *++yyvsp = yylval;
01270 yychar = (-1);
01271 if (yyerrflag > 0) --yyerrflag;
01272 goto yyloop;
01273 }
01274 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
01275 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
01276 {
01277 yyn = yytable[yyn];
01278 goto yyreduce;
01279 }
01280 if (yyerrflag) goto yyinrecovery;
01281 goto yynewerror;
01282 yynewerror:
01283 yyerror("syntax error");
01284 goto yyerrlab;
01285 yyerrlab:
01286 ++yynerrs;
01287 yyinrecovery:
01288 if (yyerrflag < 3)
01289 {
01290 yyerrflag = 3;
01291 for (;;)
01292 {
01293 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
01294 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
01295 {
01296 #if YYDEBUG
01297 if (yydebug)
01298 printf("%sdebug: state %d, error recovery shifting\
01299 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
01300 #endif
01301 if (yyssp >= yysslim && yygrowstack())
01302 {
01303 goto yyoverflow;
01304 }
01305 *++yyssp = yystate = yytable[yyn];
01306 *++yyvsp = yylval;
01307 goto yyloop;
01308 }
01309 else
01310 {
01311 #if YYDEBUG
01312 if (yydebug)
01313 printf("%sdebug: error recovery discarding state %d\n",
01314 YYPREFIX, *yyssp);
01315 #endif
01316 if (yyssp <= yyss) goto yyabort;
01317 --yyssp;
01318 --yyvsp;
01319 }
01320 }
01321 }
01322 else
01323 {
01324 if (yychar == 0) goto yyabort;
01325 #if YYDEBUG
01326 if (yydebug)
01327 {
01328 yys = 0;
01329 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
01330 if (!yys) yys = "illegal-symbol";
01331 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
01332 YYPREFIX, yystate, yychar, yys);
01333 }
01334 #endif
01335 yychar = (-1);
01336 goto yyloop;
01337 }
01338 yyreduce:
01339 #if YYDEBUG
01340 if (yydebug)
01341 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
01342 YYPREFIX, yystate, yyn, yyrule[yyn]);
01343 #endif
01344 yym = yylen[yyn];
01345 yyval = yyvsp[1-yym];
01346 switch (yyn)
01347 {
01348 case 3:
01349 #line 219 "gram.in"
01350 {
01351
01352
01353 lastwasbranch = NO; }
01354 break;
01355 case 5:
01356 #line 225 "gram.in"
01357 {
01358 if (parstate == INDATA && laststfcn != thisstno)
01359 parstate = INEXEC;
01360 thisstno++;
01361 if(yyvsp[-1].labval && (yyvsp[-1].labval->labelno==dorange))
01362 enddo(yyvsp[-1].labval->labelno);
01363 if(lastwasbranch && thislabel==NULL)
01364 warn("statement cannot be reached");
01365 lastwasbranch = thiswasbranch;
01366 thiswasbranch = NO;
01367 if(yyvsp[-1].labval)
01368 {
01369 if(yyvsp[-1].labval->labtype == LABFORMAT)
01370 err("label already that of a format");
01371 else
01372 yyvsp[-1].labval->labtype = LABEXEC;
01373 }
01374 freetemps();
01375 }
01376 break;
01377 case 6:
01378 #line 245 "gram.in"
01379 { if (can_include)
01380 doinclude( yyvsp[0].charpval );
01381 else {
01382 fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval);
01383 done(1);
01384 }
01385 }
01386 break;
01387 case 7:
01388 #line 253 "gram.in"
01389 { if (yyvsp[-2].labval)
01390 lastwasbranch = NO;
01391 endproc();
01392 }
01393 break;
01394 case 8:
01395 #line 258 "gram.in"
01396 { unclassifiable();
01397
01398
01399
01400 flline(); }
01401 break;
01402 case 9:
01403 #line 264 "gram.in"
01404 { flline(); needkwd = NO; inioctl = NO;
01405 yyerrok; yyclearin; }
01406 break;
01407 case 10:
01408 #line 269 "gram.in"
01409 {
01410 if(yystno != 0)
01411 {
01412 yyval.labval = thislabel = mklabel(yystno);
01413 if( ! headerdone ) {
01414 if (procclass == CLUNKNOWN)
01415 procclass = CLMAIN;
01416 puthead(CNULL, procclass);
01417 }
01418 if(thislabel->labdefined)
01419 execerr("label %s already defined",
01420 convic(thislabel->stateno) );
01421 else {
01422 if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
01423 && thislabel->labtype!=LABFORMAT)
01424 warn1("there is a branch to label %s from outside block",
01425 convic( (ftnint) (thislabel->stateno) ) );
01426 thislabel->blklevel = blklevel;
01427 thislabel->labdefined = YES;
01428 if(thislabel->labtype != LABFORMAT)
01429 p1_label((long)(thislabel - labeltab));
01430 }
01431 }
01432 else yyval.labval = thislabel = NULL;
01433 }
01434 break;
01435 case 11:
01436 #line 297 "gram.in"
01437 {startproc(yyvsp[0].extval, CLMAIN); }
01438 break;
01439 case 12:
01440 #line 299 "gram.in"
01441 { warn("ignoring arguments to main program");
01442
01443 startproc(yyvsp[-1].extval, CLMAIN); }
01444 break;
01445 case 13:
01446 #line 303 "gram.in"
01447 { if(yyvsp[0].extval) NO66("named BLOCKDATA");
01448 startproc(yyvsp[0].extval, CLBLOCK); }
01449 break;
01450 case 14:
01451 #line 306 "gram.in"
01452 { entrypt(CLPROC, TYSUBR, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
01453 break;
01454 case 15:
01455 #line 308 "gram.in"
01456 { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
01457 break;
01458 case 16:
01459 #line 310 "gram.in"
01460 { entrypt(CLPROC, yyvsp[-4].ival, varleng, yyvsp[-1].extval, yyvsp[0].chval); }
01461 break;
01462 case 17:
01463 #line 312 "gram.in"
01464 { if(parstate==OUTSIDE || procclass==CLMAIN
01465 || procclass==CLBLOCK)
01466 execerr("misplaced entry statement", CNULL);
01467 entrypt(CLENTRY, 0, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval);
01468 }
01469 break;
01470 case 18:
01471 #line 320 "gram.in"
01472 { newproc(); }
01473 break;
01474 case 19:
01475 #line 324 "gram.in"
01476 { yyval.extval = newentry(yyvsp[0].namval, 1); }
01477 break;
01478 case 20:
01479 #line 328 "gram.in"
01480 { yyval.namval = mkname(token); }
01481 break;
01482 case 21:
01483 #line 331 "gram.in"
01484 { yyval.extval = NULL; }
01485 break;
01486 case 29:
01487 #line 349 "gram.in"
01488 { yyval.chval = 0; }
01489 break;
01490 case 30:
01491 #line 351 "gram.in"
01492 { NO66(" () argument list");
01493 yyval.chval = 0; }
01494 break;
01495 case 31:
01496 #line 354 "gram.in"
01497 {yyval.chval = yyvsp[-1].chval; }
01498 break;
01499 case 32:
01500 #line 358 "gram.in"
01501 { yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval,CHNULL) : CHNULL ); }
01502 break;
01503 case 33:
01504 #line 360 "gram.in"
01505 { if(yyvsp[0].namval) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval, yyvsp[-2].chval); }
01506 break;
01507 case 34:
01508 #line 364 "gram.in"
01509 { if(yyvsp[0].namval->vstg!=STGUNKNOWN && yyvsp[0].namval->vstg!=STGARG)
01510 dclerr("name declared as argument after use", yyvsp[0].namval);
01511 yyvsp[0].namval->vstg = STGARG;
01512 }
01513 break;
01514 case 35:
01515 #line 369 "gram.in"
01516 { NO66("altenate return argument");
01517
01518
01519
01520
01521
01522
01523
01524
01525
01526 yyval.namval = 0; substars = YES; }
01527 break;
01528 case 36:
01529 #line 385 "gram.in"
01530 {
01531 char *s;
01532 s = copyn(toklen+1, token);
01533 s[toklen] = '\0';
01534 yyval.charpval = s;
01535 }
01536 break;
01537 case 45:
01538 #line 401 "gram.in"
01539 { NO66("SAVE statement");
01540 saveall = YES; }
01541 break;
01542 case 46:
01543 #line 404 "gram.in"
01544 { NO66("SAVE statement"); }
01545 break;
01546 case 47:
01547 #line 406 "gram.in"
01548 { fmtstmt(thislabel); setfmt(thislabel); }
01549 break;
01550 case 48:
01551 #line 408 "gram.in"
01552 { NO66("PARAMETER statement"); }
01553 break;
01554 case 49:
01555 #line 412 "gram.in"
01556 { settype(yyvsp[-4].namval, yyvsp[-6].ival, yyvsp[0].lval);
01557 if(ndim>0) setbound(yyvsp[-4].namval,ndim,dims);
01558 }
01559 break;
01560 case 50:
01561 #line 416 "gram.in"
01562 { settype(yyvsp[-2].namval, yyvsp[-4].ival, yyvsp[0].lval);
01563 if(ndim>0) setbound(yyvsp[-2].namval,ndim,dims);
01564 }
01565 break;
01566 case 51:
01567 #line 420 "gram.in"
01568 { if (new_dcl == 2) {
01569 err("attempt to give DATA in type-declaration");
01570 new_dcl = 1;
01571 }
01572 }
01573 break;
01574 case 52:
01575 #line 427 "gram.in"
01576 { new_dcl = 2; }
01577 break;
01578 case 53:
01579 #line 430 "gram.in"
01580 { varleng = yyvsp[0].lval; }
01581 break;
01582 case 54:
01583 #line 434 "gram.in"
01584 { varleng = (yyvsp[0].ival<0 || ONEOF(yyvsp[0].ival,M(TYLOGICAL)|M(TYLONG))
01585 ? 0 : typesize[yyvsp[0].ival]);
01586 vartype = yyvsp[0].ival; }
01587 break;
01588 case 55:
01589 #line 439 "gram.in"
01590 { yyval.ival = TYLONG; }
01591 break;
01592 case 56:
01593 #line 440 "gram.in"
01594 { yyval.ival = tyreal; }
01595 break;
01596 case 57:
01597 #line 441 "gram.in"
01598 { ++complex_seen; yyval.ival = tycomplex; }
01599 break;
01600 case 58:
01601 #line 442 "gram.in"
01602 { yyval.ival = TYDREAL; }
01603 break;
01604 case 59:
01605 #line 443 "gram.in"
01606 { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; }
01607 break;
01608 case 60:
01609 #line 444 "gram.in"
01610 { yyval.ival = TYLOGICAL; }
01611 break;
01612 case 61:
01613 #line 445 "gram.in"
01614 { NO66("CHARACTER statement"); yyval.ival = TYCHAR; }
01615 break;
01616 case 62:
01617 #line 446 "gram.in"
01618 { yyval.ival = TYUNKNOWN; }
01619 break;
01620 case 63:
01621 #line 447 "gram.in"
01622 { yyval.ival = TYUNKNOWN; }
01623 break;
01624 case 64:
01625 #line 448 "gram.in"
01626 { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; }
01627 break;
01628 case 65:
01629 #line 449 "gram.in"
01630 { NOEXT("STATIC statement"); yyval.ival = - STGBSS; }
01631 break;
01632 case 66:
01633 #line 450 "gram.in"
01634 { yyval.ival = TYINT1; }
01635 break;
01636 case 67:
01637 #line 454 "gram.in"
01638 { yyval.lval = varleng; }
01639 break;
01640 case 68:
01641 #line 456 "gram.in"
01642 {
01643 expptr p;
01644 p = yyvsp[-1].expval;
01645 NO66("length specification *n");
01646 if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
01647 {
01648 yyval.lval = 0;
01649 dclerr("length must be a positive integer constant",
01650 NPNULL);
01651 }
01652 else {
01653 if (vartype == TYCHAR)
01654 yyval.lval = p->constblock.Const.ci;
01655 else switch((int)p->constblock.Const.ci) {
01656 case 1: yyval.lval = 1; break;
01657 case 2: yyval.lval = typesize[TYSHORT]; break;
01658 case 4: yyval.lval = typesize[TYLONG]; break;
01659 case 8: yyval.lval = typesize[TYDREAL]; break;
01660 case 16: yyval.lval = typesize[TYDCOMPLEX]; break;
01661 default:
01662 dclerr("invalid length",NPNULL);
01663 yyval.lval = varleng;
01664 }
01665 }
01666 }
01667 break;
01668 case 69:
01669 #line 482 "gram.in"
01670 { NO66("length specification *(*)"); yyval.lval = -1; }
01671 break;
01672 case 70:
01673 #line 486 "gram.in"
01674 { incomm( yyval.extval = comblock("") , yyvsp[0].namval ); }
01675 break;
01676 case 71:
01677 #line 488 "gram.in"
01678 { yyval.extval = yyvsp[-1].extval; incomm(yyvsp[-1].extval, yyvsp[0].namval); }
01679 break;
01680 case 72:
01681 #line 490 "gram.in"
01682 { yyval.extval = yyvsp[-2].extval; incomm(yyvsp[-2].extval, yyvsp[0].namval); }
01683 break;
01684 case 73:
01685 #line 492 "gram.in"
01686 { incomm(yyvsp[-2].extval, yyvsp[0].namval); }
01687 break;
01688 case 74:
01689 #line 496 "gram.in"
01690 { yyval.extval = comblock(""); }
01691 break;
01692 case 75:
01693 #line 498 "gram.in"
01694 { yyval.extval = comblock(token); }
01695 break;
01696 case 76:
01697 #line 502 "gram.in"
01698 { setext(yyvsp[0].namval); }
01699 break;
01700 case 77:
01701 #line 504 "gram.in"
01702 { setext(yyvsp[0].namval); }
01703 break;
01704 case 78:
01705 #line 508 "gram.in"
01706 { NO66("INTRINSIC statement"); setintr(yyvsp[0].namval); }
01707 break;
01708 case 79:
01709 #line 510 "gram.in"
01710 { setintr(yyvsp[0].namval); }
01711 break;
01712 case 82:
01713 #line 518 "gram.in"
01714 {
01715 struct Equivblock *p;
01716 if(nequiv >= maxequiv)
01717 many("equivalences", 'q', maxequiv);
01718 p = & eqvclass[nequiv++];
01719 p->eqvinit = NO;
01720 p->eqvbottom = 0;
01721 p->eqvtop = 0;
01722 p->equivs = yyvsp[-1].eqvval;
01723 }
01724 break;
01725 case 83:
01726 #line 531 "gram.in"
01727 { yyval.eqvval=ALLOC(Eqvchain);
01728 yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
01729 }
01730 break;
01731 case 84:
01732 #line 535 "gram.in"
01733 { yyval.eqvval=ALLOC(Eqvchain);
01734 yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
01735 yyval.eqvval->eqvnextp = yyvsp[-2].eqvval;
01736 }
01737 break;
01738 case 87:
01739 #line 546 "gram.in"
01740 { if(parstate == OUTSIDE)
01741 {
01742 newproc();
01743 startproc(ESNULL, CLMAIN);
01744 }
01745 if(parstate < INDATA)
01746 {
01747 enddcl();
01748 parstate = INDATA;
01749 datagripe = 1;
01750 }
01751 }
01752 break;
01753 case 88:
01754 #line 561 "gram.in"
01755 { ftnint junk;
01756 if(nextdata(&junk) != NULL)
01757 err("too few initializers");
01758 frdata(yyvsp[-4].chval);
01759 frrpl();
01760 }
01761 break;
01762 case 89:
01763 #line 569 "gram.in"
01764 { frchain(&datastack); curdtp = 0; }
01765 break;
01766 case 90:
01767 #line 571 "gram.in"
01768 { pop_datastack(); }
01769 break;
01770 case 91:
01771 #line 573 "gram.in"
01772 { toomanyinit = NO; }
01773 break;
01774 case 94:
01775 #line 578 "gram.in"
01776 { dataval(ENULL, yyvsp[0].expval); }
01777 break;
01778 case 95:
01779 #line 580 "gram.in"
01780 { dataval(yyvsp[-2].expval, yyvsp[0].expval); }
01781 break;
01782 case 97:
01783 #line 585 "gram.in"
01784 { if( yyvsp[-1].ival==OPMINUS && ISCONST(yyvsp[0].expval) )
01785 consnegop((Constp)yyvsp[0].expval);
01786 yyval.expval = yyvsp[0].expval;
01787 }
01788 break;
01789 case 101:
01790 #line 597 "gram.in"
01791 { int k;
01792 yyvsp[0].namval->vsave = YES;
01793 k = yyvsp[0].namval->vstg;
01794 if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
01795 dclerr("can only save static variables", yyvsp[0].namval);
01796 }
01797 break;
01798 case 105:
01799 #line 611 "gram.in"
01800 { if(yyvsp[-2].namval->vclass == CLUNKNOWN)
01801 make_param((struct Paramblock *)yyvsp[-2].namval, yyvsp[0].expval);
01802 else dclerr("cannot make into parameter", yyvsp[-2].namval);
01803 }
01804 break;
01805 case 106:
01806 #line 618 "gram.in"
01807 { if(ndim>0) setbound(yyvsp[-1].namval, ndim, dims); }
01808 break;
01809 case 107:
01810 #line 622 "gram.in"
01811 { Namep np;
01812 struct Primblock *pp = (struct Primblock *)yyvsp[0].expval;
01813 int tt = yyvsp[0].expval->tag;
01814 if (tt != TPRIM) {
01815 if (tt == TCONST)
01816 err("parameter in data statement");
01817 else
01818 erri("tag %d in data statement",tt);
01819 yyval.chval = 0;
01820 err_lineno = lineno;
01821 break;
01822 }
01823 np = pp -> namep;
01824 vardcl(np);
01825 if ((pp->fcharp || pp->lcharp)
01826 && (np->vtype != TYCHAR || np->vdim))
01827 sserr(np);
01828 if(np->vstg == STGCOMMON)
01829 extsymtab[np->vardesc.varno].extinit = YES;
01830 else if(np->vstg==STGEQUIV)
01831 eqvclass[np->vardesc.varno].eqvinit = YES;
01832 else if(np->vstg!=STGINIT && np->vstg!=STGBSS) {
01833 errstr(np->vstg == STGARG
01834 ? "Dummy argument \"%.60s\" in data statement."
01835 : "Cannot give data to \"%.75s\"",
01836 np->fvarname);
01837 yyval.chval = 0;
01838 err_lineno = lineno;
01839 break;
01840 }
01841 yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL);
01842 }
01843 break;
01844 case 108:
01845 #line 655 "gram.in"
01846 { chainp p; struct Impldoblock *q;
01847 pop_datastack();
01848 q = ALLOC(Impldoblock);
01849 q->tag = TIMPLDO;
01850 (q->varnp = (Namep) (yyvsp[-1].chval->datap))->vimpldovar = 1;
01851 p = yyvsp[-1].chval->nextp;
01852 if(p) { q->implb = (expptr)(p->datap); p = p->nextp; }
01853 if(p) { q->impub = (expptr)(p->datap); p = p->nextp; }
01854 if(p) { q->impstep = (expptr)(p->datap); }
01855 frchain( & (yyvsp[-1].chval) );
01856 yyval.chval = mkchain((char *)q, CHNULL);
01857 q->datalist = hookup(yyvsp[-3].chval, yyval.chval);
01858 }
01859 break;
01860 case 109:
01861 #line 671 "gram.in"
01862 { if (!datastack)
01863 curdtp = 0;
01864 datastack = mkchain((char *)curdtp, datastack);
01865 curdtp = yyvsp[0].chval; curdtelt = 0;
01866 }
01867 break;
01868 case 110:
01869 #line 677 "gram.in"
01870 { yyval.chval = hookup(yyvsp[-2].chval, yyvsp[0].chval); }
01871 break;
01872 case 111:
01873 #line 681 "gram.in"
01874 { ndim = 0; }
01875 break;
01876 case 113:
01877 #line 685 "gram.in"
01878 { ndim = 0; }
01879 break;
01880 case 116:
01881 #line 690 "gram.in"
01882 {
01883 if(ndim == maxdim)
01884 err("too many dimensions");
01885 else if(ndim < maxdim)
01886 { dims[ndim].lb = 0;
01887 dims[ndim].ub = yyvsp[0].expval;
01888 }
01889 ++ndim;
01890 }
01891 break;
01892 case 117:
01893 #line 700 "gram.in"
01894 {
01895 if(ndim == maxdim)
01896 err("too many dimensions");
01897 else if(ndim < maxdim)
01898 { dims[ndim].lb = yyvsp[-2].expval;
01899 dims[ndim].ub = yyvsp[0].expval;
01900 }
01901 ++ndim;
01902 }
01903 break;
01904 case 118:
01905 #line 712 "gram.in"
01906 { yyval.expval = 0; }
01907 break;
01908 case 120:
01909 #line 717 "gram.in"
01910 { nstars = 1; labarray[0] = yyvsp[0].labval; }
01911 break;
01912 case 121:
01913 #line 719 "gram.in"
01914 { if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; }
01915 break;
01916 case 122:
01917 #line 723 "gram.in"
01918 { yyval.labval = execlab( convci(toklen, token) ); }
01919 break;
01920 case 123:
01921 #line 727 "gram.in"
01922 { NO66("IMPLICIT statement"); }
01923 break;
01924 case 126:
01925 #line 733 "gram.in"
01926 { if (vartype != TYUNKNOWN)
01927 dclerr("-- expected letter range",NPNULL);
01928 setimpl(vartype, varleng, 'a', 'z'); }
01929 break;
01930 case 127:
01931 #line 738 "gram.in"
01932 { needkwd = 1; }
01933 break;
01934 case 131:
01935 #line 747 "gram.in"
01936 { setimpl(vartype, varleng, yyvsp[0].ival, yyvsp[0].ival); }
01937 break;
01938 case 132:
01939 #line 749 "gram.in"
01940 { setimpl(vartype, varleng, yyvsp[-2].ival, yyvsp[0].ival); }
01941 break;
01942 case 133:
01943 #line 753 "gram.in"
01944 { if(toklen!=1 || token[0]<'a' || token[0]>'z')
01945 {
01946 dclerr("implicit item must be single letter", NPNULL);
01947 yyval.ival = 0;
01948 }
01949 else yyval.ival = token[0];
01950 }
01951 break;
01952 case 136:
01953 #line 767 "gram.in"
01954 {
01955 if(yyvsp[-2].namval->vclass == CLUNKNOWN)
01956 {
01957 yyvsp[-2].namval->vclass = CLNAMELIST;
01958 yyvsp[-2].namval->vtype = TYINT;
01959 yyvsp[-2].namval->vstg = STGBSS;
01960 yyvsp[-2].namval->varxptr.namelist = yyvsp[0].chval;
01961 yyvsp[-2].namval->vardesc.varno = ++lastvarno;
01962 }
01963 else dclerr("cannot be a namelist name", yyvsp[-2].namval);
01964 }
01965 break;
01966 case 137:
01967 #line 781 "gram.in"
01968 { yyval.chval = mkchain((char *)yyvsp[0].namval, CHNULL); }
01969 break;
01970 case 138:
01971 #line 783 "gram.in"
01972 { yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].namval, CHNULL)); }
01973 break;
01974 case 139:
01975 #line 787 "gram.in"
01976 { switch(parstate)
01977 {
01978 case OUTSIDE: newproc();
01979 startproc(ESNULL, CLMAIN);
01980 case INSIDE: parstate = INDCL;
01981 case INDCL: break;
01982
01983 case INDATA:
01984 if (datagripe) {
01985 errstr(
01986 "Statement order error: declaration after DATA",
01987 CNULL);
01988 datagripe = 0;
01989 }
01990 break;
01991
01992 default:
01993 dclerr("declaration among executables", NPNULL);
01994 }
01995 }
01996 break;
01997 case 140:
01998 #line 809 "gram.in"
01999 { yyval.chval = 0; }
02000 break;
02001 case 141:
02002 #line 811 "gram.in"
02003 { yyval.chval = revchain(yyvsp[0].chval); }
02004 break;
02005 case 142:
02006 #line 815 "gram.in"
02007 { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
02008 break;
02009 case 143:
02010 #line 817 "gram.in"
02011 { yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
02012 break;
02013 case 145:
02014 #line 822 "gram.in"
02015 { yyval.expval = yyvsp[-1].expval; if (yyval.expval->tag == TPRIM)
02016 yyval.expval->primblock.parenused = 1; }
02017 break;
02018 case 149:
02019 #line 830 "gram.in"
02020 { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
02021 break;
02022 case 150:
02023 #line 832 "gram.in"
02024 { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
02025 break;
02026 case 151:
02027 #line 834 "gram.in"
02028 { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
02029 break;
02030 case 152:
02031 #line 836 "gram.in"
02032 { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
02033 break;
02034 case 153:
02035 #line 838 "gram.in"
02036 { if(yyvsp[-1].ival == OPMINUS)
02037 yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
02038 else yyval.expval = yyvsp[0].expval;
02039 }
02040 break;
02041 case 154:
02042 #line 843 "gram.in"
02043 { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
02044 break;
02045 case 155:
02046 #line 845 "gram.in"
02047 { NO66(".EQV. operator");
02048 yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval,yyvsp[0].expval); }
02049 break;
02050 case 156:
02051 #line 848 "gram.in"
02052 { NO66(".NEQV. operator");
02053 yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval, yyvsp[0].expval); }
02054 break;
02055 case 157:
02056 #line 851 "gram.in"
02057 { yyval.expval = mkexpr(OPOR, yyvsp[-2].expval, yyvsp[0].expval); }
02058 break;
02059 case 158:
02060 #line 853 "gram.in"
02061 { yyval.expval = mkexpr(OPAND, yyvsp[-2].expval, yyvsp[0].expval); }
02062 break;
02063 case 159:
02064 #line 855 "gram.in"
02065 { yyval.expval = mkexpr(OPNOT, yyvsp[0].expval, ENULL); }
02066 break;
02067 case 160:
02068 #line 857 "gram.in"
02069 { NO66("concatenation operator //");
02070 yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
02071 break;
02072 case 161:
02073 #line 861 "gram.in"
02074 { yyval.ival = OPPLUS; }
02075 break;
02076 case 162:
02077 #line 862 "gram.in"
02078 { yyval.ival = OPMINUS; }
02079 break;
02080 case 163:
02081 #line 865 "gram.in"
02082 { yyval.ival = OPEQ; }
02083 break;
02084 case 164:
02085 #line 866 "gram.in"
02086 { yyval.ival = OPGT; }
02087 break;
02088 case 165:
02089 #line 867 "gram.in"
02090 { yyval.ival = OPLT; }
02091 break;
02092 case 166:
02093 #line 868 "gram.in"
02094 { yyval.ival = OPGE; }
02095 break;
02096 case 167:
02097 #line 869 "gram.in"
02098 { yyval.ival = OPLE; }
02099 break;
02100 case 168:
02101 #line 870 "gram.in"
02102 { yyval.ival = OPNE; }
02103 break;
02104 case 169:
02105 #line 874 "gram.in"
02106 { yyval.expval = mkprim(yyvsp[0].namval, LBNULL, CHNULL); }
02107 break;
02108 case 170:
02109 #line 876 "gram.in"
02110 { NO66("substring operator :");
02111 yyval.expval = mkprim(yyvsp[-1].namval, LBNULL, yyvsp[0].chval); }
02112 break;
02113 case 171:
02114 #line 879 "gram.in"
02115 { yyval.expval = mkprim(yyvsp[-3].namval, mklist(yyvsp[-1].chval), CHNULL); }
02116 break;
02117 case 172:
02118 #line 881 "gram.in"
02119 { NO66("substring operator :");
02120 yyval.expval = mkprim(yyvsp[-4].namval, mklist(yyvsp[-2].chval), yyvsp[0].chval); }
02121 break;
02122 case 173:
02123 #line 886 "gram.in"
02124 { yyval.chval = mkchain((char *)yyvsp[-3].expval, mkchain((char *)yyvsp[-1].expval,CHNULL)); }
02125 break;
02126 case 174:
02127 #line 890 "gram.in"
02128 { yyval.expval = 0; }
02129 break;
02130 case 176:
02131 #line 895 "gram.in"
02132 { if(yyvsp[0].namval->vclass == CLPARAM)
02133 yyval.expval = (expptr) cpexpr(
02134 ( (struct Paramblock *) (yyvsp[0].namval) ) -> paramval);
02135 }
02136 break;
02137 case 178:
02138 #line 902 "gram.in"
02139 { yyval.expval = mklogcon(1); }
02140 break;
02141 case 179:
02142 #line 903 "gram.in"
02143 { yyval.expval = mklogcon(0); }
02144 break;
02145 case 180:
02146 #line 904 "gram.in"
02147 { yyval.expval = mkstrcon(toklen, token); }
02148 break;
02149 case 181:
02150 #line 905 "gram.in"
02151 { yyval.expval = mkintcon( convci(toklen, token) ); }
02152 break;
02153 case 182:
02154 #line 906 "gram.in"
02155 { yyval.expval = mkrealcon(tyreal, token); }
02156 break;
02157 case 183:
02158 #line 907 "gram.in"
02159 { yyval.expval = mkrealcon(TYDREAL, token); }
02160 break;
02161 case 185:
02162 #line 912 "gram.in"
02163 { yyval.expval = mkcxcon(yyvsp[-3].expval,yyvsp[-1].expval); }
02164 break;
02165 case 186:
02166 #line 916 "gram.in"
02167 { NOEXT("hex constant");
02168 yyval.expval = mkbitcon(4, toklen, token); }
02169 break;
02170 case 187:
02171 #line 919 "gram.in"
02172 { NOEXT("octal constant");
02173 yyval.expval = mkbitcon(3, toklen, token); }
02174 break;
02175 case 188:
02176 #line 922 "gram.in"
02177 { NOEXT("binary constant");
02178 yyval.expval = mkbitcon(1, toklen, token); }
02179 break;
02180 case 190:
02181 #line 928 "gram.in"
02182 { yyval.expval = yyvsp[-1].expval; }
02183 break;
02184 case 193:
02185 #line 934 "gram.in"
02186 { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
02187 break;
02188 case 194:
02189 #line 936 "gram.in"
02190 { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
02191 break;
02192 case 195:
02193 #line 938 "gram.in"
02194 { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
02195 break;
02196 case 196:
02197 #line 940 "gram.in"
02198 { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
02199 break;
02200 case 197:
02201 #line 942 "gram.in"
02202 { if(yyvsp[-1].ival == OPMINUS)
02203 yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
02204 else yyval.expval = yyvsp[0].expval;
02205 }
02206 break;
02207 case 198:
02208 #line 947 "gram.in"
02209 { NO66("concatenation operator //");
02210 yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
02211 break;
02212 case 200:
02213 #line 952 "gram.in"
02214 {
02215 if(yyvsp[-3].labval->labdefined)
02216 execerr("no backward DO loops", CNULL);
02217 yyvsp[-3].labval->blklevel = blklevel+1;
02218 exdo(yyvsp[-3].labval->labelno, NPNULL, yyvsp[0].chval);
02219 }
02220 break;
02221 case 201:
02222 #line 959 "gram.in"
02223 {
02224 exdo((int)(ctls - ctlstack - 2), NPNULL, yyvsp[0].chval);
02225 NOEXT("DO without label");
02226 }
02227 break;
02228 case 202:
02229 #line 964 "gram.in"
02230 { exenddo(NPNULL); }
02231 break;
02232 case 203:
02233 #line 966 "gram.in"
02234 { exendif(); thiswasbranch = NO; }
02235 break;
02236 case 205:
02237 #line 969 "gram.in"
02238 { exelif(yyvsp[-2].expval); lastwasbranch = NO; }
02239 break;
02240 case 206:
02241 #line 971 "gram.in"
02242 { exelse(); lastwasbranch = NO; }
02243 break;
02244 case 207:
02245 #line 973 "gram.in"
02246 { exendif(); lastwasbranch = NO; }
02247 break;
02248 case 208:
02249 #line 977 "gram.in"
02250 { exif(yyvsp[-1].expval); }
02251 break;
02252 case 209:
02253 #line 981 "gram.in"
02254 { yyval.chval = mkchain((char *)yyvsp[-2].namval, yyvsp[0].chval); }
02255 break;
02256 case 211:
02257 #line 986 "gram.in"
02258 { yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval); }
02259 break;
02260 case 212:
02261 #line 990 "gram.in"
02262 { exequals((struct Primblock *)yyvsp[-2].expval, yyvsp[0].expval); }
02263 break;
02264 case 213:
02265 #line 992 "gram.in"
02266 { exassign(yyvsp[0].namval, yyvsp[-2].labval); }
02267 break;
02268 case 216:
02269 #line 996 "gram.in"
02270 { inioctl = NO; }
02271 break;
02272 case 217:
02273 #line 998 "gram.in"
02274 { exarif(yyvsp[-6].expval, yyvsp[-4].labval, yyvsp[-2].labval, yyvsp[0].labval); thiswasbranch = YES; }
02275 break;
02276 case 218:
02277 #line 1000 "gram.in"
02278 { excall(yyvsp[0].namval, LBNULL, 0, labarray); }
02279 break;
02280 case 219:
02281 #line 1002 "gram.in"
02282 { excall(yyvsp[-2].namval, LBNULL, 0, labarray); }
02283 break;
02284 case 220:
02285 #line 1004 "gram.in"
02286 { if(nstars < maxlablist)
02287 excall(yyvsp[-3].namval, mklist(revchain(yyvsp[-1].chval)), nstars, labarray);
02288 else
02289 many("alternate returns", 'l', maxlablist);
02290 }
02291 break;
02292 case 221:
02293 #line 1010 "gram.in"
02294 { exreturn(yyvsp[0].expval); thiswasbranch = YES; }
02295 break;
02296 case 222:
02297 #line 1012 "gram.in"
02298 { exstop(yyvsp[-2].ival, yyvsp[0].expval); thiswasbranch = yyvsp[-2].ival; }
02299 break;
02300 case 223:
02301 #line 1016 "gram.in"
02302 { yyval.labval = mklabel( convci(toklen, token) ); }
02303 break;
02304 case 224:
02305 #line 1020 "gram.in"
02306 { if(parstate == OUTSIDE)
02307 {
02308 newproc();
02309 startproc(ESNULL, CLMAIN);
02310 }
02311 }
02312 break;
02313 case 225:
02314 #line 1029 "gram.in"
02315 { exgoto(yyvsp[0].labval); thiswasbranch = YES; }
02316 break;
02317 case 226:
02318 #line 1031 "gram.in"
02319 { exasgoto(yyvsp[0].namval); thiswasbranch = YES; }
02320 break;
02321 case 227:
02322 #line 1033 "gram.in"
02323 { exasgoto(yyvsp[-4].namval); thiswasbranch = YES; }
02324 break;
02325 case 228:
02326 #line 1035 "gram.in"
02327 { if(nstars < maxlablist)
02328 putcmgo(putx(fixtype(yyvsp[0].expval)), nstars, labarray);
02329 else
02330 many("labels in computed GOTO list", 'l', maxlablist);
02331 }
02332 break;
02333 case 231:
02334 #line 1047 "gram.in"
02335 { nstars = 0; yyval.namval = yyvsp[0].namval; }
02336 break;
02337 case 232:
02338 #line 1051 "gram.in"
02339 { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval,CHNULL) : CHNULL; }
02340 break;
02341 case 233:
02342 #line 1053 "gram.in"
02343 { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval) : yyvsp[-2].chval; }
02344 break;
02345 case 235:
02346 #line 1058 "gram.in"
02347 { if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; yyval.expval = 0; }
02348 break;
02349 case 236:
02350 #line 1062 "gram.in"
02351 { yyval.ival = 0; }
02352 break;
02353 case 237:
02354 #line 1064 "gram.in"
02355 { yyval.ival = 2; }
02356 break;
02357 case 238:
02358 #line 1068 "gram.in"
02359 { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
02360 break;
02361 case 239:
02362 #line 1070 "gram.in"
02363 { yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].expval,CHNULL) ); }
02364 break;
02365 case 240:
02366 #line 1074 "gram.in"
02367 { if(parstate == OUTSIDE)
02368 {
02369 newproc();
02370 startproc(ESNULL, CLMAIN);
02371 }
02372
02373
02374
02375 if(parstate < INDATA) enddcl();
02376 }
02377 break;
02378 case 241:
02379 #line 1087 "gram.in"
02380 { intonly = YES; }
02381 break;
02382 case 242:
02383 #line 1091 "gram.in"
02384 { intonly = NO; }
02385 break;
02386 case 243:
02387 #line 1096 "gram.in"
02388 { endio(); }
02389 break;
02390 case 245:
02391 #line 1101 "gram.in"
02392 { ioclause(IOSUNIT, yyvsp[0].expval); endioctl(); }
02393 break;
02394 case 246:
02395 #line 1103 "gram.in"
02396 { ioclause(IOSUNIT, ENULL); endioctl(); }
02397 break;
02398 case 247:
02399 #line 1105 "gram.in"
02400 { ioclause(IOSUNIT, IOSTDERR); endioctl(); }
02401 break;
02402 case 249:
02403 #line 1108 "gram.in"
02404 { doio(CHNULL); }
02405 break;
02406 case 250:
02407 #line 1110 "gram.in"
02408 { doio(CHNULL); }
02409 break;
02410 case 251:
02411 #line 1112 "gram.in"
02412 { doio(revchain(yyvsp[0].chval)); }
02413 break;
02414 case 252:
02415 #line 1114 "gram.in"
02416 { doio(revchain(yyvsp[0].chval)); }
02417 break;
02418 case 253:
02419 #line 1116 "gram.in"
02420 { doio(revchain(yyvsp[0].chval)); }
02421 break;
02422 case 254:
02423 #line 1118 "gram.in"
02424 { doio(CHNULL); }
02425 break;
02426 case 255:
02427 #line 1120 "gram.in"
02428 { doio(revchain(yyvsp[0].chval)); }
02429 break;
02430 case 256:
02431 #line 1122 "gram.in"
02432 { doio(CHNULL); }
02433 break;
02434 case 257:
02435 #line 1124 "gram.in"
02436 { doio(revchain(yyvsp[0].chval)); }
02437 break;
02438 case 259:
02439 #line 1131 "gram.in"
02440 { iostmt = IOBACKSPACE; }
02441 break;
02442 case 260:
02443 #line 1133 "gram.in"
02444 { iostmt = IOREWIND; }
02445 break;
02446 case 261:
02447 #line 1135 "gram.in"
02448 { iostmt = IOENDFILE; }
02449 break;
02450 case 263:
02451 #line 1142 "gram.in"
02452 { iostmt = IOINQUIRE; }
02453 break;
02454 case 264:
02455 #line 1144 "gram.in"
02456 { iostmt = IOOPEN; }
02457 break;
02458 case 265:
02459 #line 1146 "gram.in"
02460 { iostmt = IOCLOSE; }
02461 break;
02462 case 266:
02463 #line 1150 "gram.in"
02464 {
02465 ioclause(IOSUNIT, ENULL);
02466 ioclause(IOSFMT, yyvsp[0].expval);
02467 endioctl();
02468 }
02469 break;
02470 case 267:
02471 #line 1156 "gram.in"
02472 {
02473 ioclause(IOSUNIT, ENULL);
02474 ioclause(IOSFMT, ENULL);
02475 endioctl();
02476 }
02477 break;
02478 case 268:
02479 #line 1164 "gram.in"
02480 {
02481 ioclause(IOSUNIT, yyvsp[-1].expval);
02482 endioctl();
02483 }
02484 break;
02485 case 269:
02486 #line 1169 "gram.in"
02487 { endioctl(); }
02488 break;
02489 case 272:
02490 #line 1177 "gram.in"
02491 { ioclause(IOSPOSITIONAL, yyvsp[0].expval); }
02492 break;
02493 case 273:
02494 #line 1179 "gram.in"
02495 { ioclause(IOSPOSITIONAL, ENULL); }
02496 break;
02497 case 274:
02498 #line 1181 "gram.in"
02499 { ioclause(IOSPOSITIONAL, IOSTDERR); }
02500 break;
02501 case 275:
02502 #line 1183 "gram.in"
02503 { ioclause(yyvsp[-1].ival, yyvsp[0].expval); }
02504 break;
02505 case 276:
02506 #line 1185 "gram.in"
02507 { ioclause(yyvsp[-1].ival, ENULL); }
02508 break;
02509 case 277:
02510 #line 1187 "gram.in"
02511 { ioclause(yyvsp[-1].ival, IOSTDERR); }
02512 break;
02513 case 278:
02514 #line 1191 "gram.in"
02515 { yyval.ival = iocname(); }
02516 break;
02517 case 279:
02518 #line 1195 "gram.in"
02519 { iostmt = IOREAD; }
02520 break;
02521 case 280:
02522 #line 1199 "gram.in"
02523 { iostmt = IOWRITE; }
02524 break;
02525 case 281:
02526 #line 1203 "gram.in"
02527 {
02528 iostmt = IOWRITE;
02529 ioclause(IOSUNIT, ENULL);
02530 ioclause(IOSFMT, yyvsp[-1].expval);
02531 endioctl();
02532 }
02533 break;
02534 case 282:
02535 #line 1210 "gram.in"
02536 {
02537 iostmt = IOWRITE;
02538 ioclause(IOSUNIT, ENULL);
02539 ioclause(IOSFMT, ENULL);
02540 endioctl();
02541 }
02542 break;
02543 case 283:
02544 #line 1219 "gram.in"
02545 { yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
02546 break;
02547 case 284:
02548 #line 1221 "gram.in"
02549 { yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
02550 break;
02551 case 285:
02552 #line 1225 "gram.in"
02553 { yyval.tagval = (tagptr) yyvsp[0].expval; }
02554 break;
02555 case 286:
02556 #line 1227 "gram.in"
02557 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval,revchain(yyvsp[-3].chval)); }
02558 break;
02559 case 287:
02560 #line 1231 "gram.in"
02561 { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
02562 break;
02563 case 288:
02564 #line 1233 "gram.in"
02565 { yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
02566 break;
02567 case 290:
02568 #line 1238 "gram.in"
02569 { yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
02570 break;
02571 case 291:
02572 #line 1240 "gram.in"
02573 { yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
02574 break;
02575 case 292:
02576 #line 1242 "gram.in"
02577 { yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
02578 break;
02579 case 293:
02580 #line 1244 "gram.in"
02581 { yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
02582 break;
02583 case 294:
02584 #line 1246 "gram.in"
02585 { yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
02586 break;
02587 case 295:
02588 #line 1248 "gram.in"
02589 { yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
02590 break;
02591 case 296:
02592 #line 1252 "gram.in"
02593 { yyval.tagval = (tagptr) yyvsp[0].expval; }
02594 break;
02595 case 297:
02596 #line 1254 "gram.in"
02597 { yyval.tagval = (tagptr) yyvsp[-1].expval; }
02598 break;
02599 case 298:
02600 #line 1256 "gram.in"
02601 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].expval, CHNULL) ); }
02602 break;
02603 case 299:
02604 #line 1258 "gram.in"
02605 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].tagval, CHNULL) ); }
02606 break;
02607 case 300:
02608 #line 1260 "gram.in"
02609 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, revchain(yyvsp[-3].chval)); }
02610 break;
02611 case 301:
02612 #line 1264 "gram.in"
02613 { startioctl(); }
02614 break;
02615 #line 2616 "y.tab.c"
02616 }
02617 yyssp -= yym;
02618 yystate = *yyssp;
02619 yyvsp -= yym;
02620 yym = yylhs[yyn];
02621 if (yystate == 0 && yym == 0)
02622 {
02623 #if YYDEBUG
02624 if (yydebug)
02625 printf("%sdebug: after reduction, shifting from state 0 to\
02626 state %d\n", YYPREFIX, YYFINAL);
02627 #endif
02628 yystate = YYFINAL;
02629 *++yyssp = YYFINAL;
02630 *++yyvsp = yyval;
02631 if (yychar < 0)
02632 {
02633 if ((yychar = yylex()) < 0) yychar = 0;
02634 #if YYDEBUG
02635 if (yydebug)
02636 {
02637 yys = 0;
02638 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
02639 if (!yys) yys = "illegal-symbol";
02640 printf("%sdebug: state %d, reading %d (%s)\n",
02641 YYPREFIX, YYFINAL, yychar, yys);
02642 }
02643 #endif
02644 }
02645 if (yychar == 0) goto yyaccept;
02646 goto yyloop;
02647 }
02648 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
02649 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
02650 yystate = yytable[yyn];
02651 else
02652 yystate = yydgoto[yym];
02653 #if YYDEBUG
02654 if (yydebug)
02655 printf("%sdebug: after reduction, shifting from state %d \
02656 to state %d\n", YYPREFIX, *yyssp, yystate);
02657 #endif
02658 if (yyssp >= yysslim && yygrowstack())
02659 {
02660 goto yyoverflow;
02661 }
02662 *++yyssp = yystate;
02663 *++yyvsp = yyval;
02664 goto yyloop;
02665 yyoverflow:
02666 yyerror("yacc stack overflow");
02667 yyabort:
02668 return (1);
02669 yyaccept:
02670 return (0);
02671 }