#include #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 #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->blklevellabtype!=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("alternate 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); }