home *** CD-ROM | disk | FTP | other *** search
- #ifndef lint
- char yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90";
- #endif
- #line 124 "gram.in"
- # include "defs.h"
- # include "p1defs.h"
-
- static int nstars; /* Number of labels in an
- alternate return CALL */
- static int ndim;
- static int vartype;
- int new_dcl;
- static ftnint varleng;
- static struct Dims dims[MAXDIM+1];
- static struct Labelblock *labarray[MAXLABLIST]; /* Labels in an alternate
- return CALL */
-
- /* 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 */
-
- ftnint convci();
- Addrp nextdata();
- expptr mklogcon(), mkaddcon(), mkrealcon(), mkstrcon(), mkbitcon();
- expptr mkcxcon();
- struct Listblock *mklist();
- struct Listblock *mklist();
- struct Impldoblock *mkiodo();
- Extsym *comblock();
- #define ESNULL (Extsym *)0
- #define NPNULL (Namep)0
- #define LBNULL (struct Listblock *)0
- extern void freetemps(), make_param();
-
- static void
- pop_datastack() {
- chainp d0 = datastack;
- if (d0->datap)
- curdtp = (chainp)d0->datap;
- datastack = d0->nextp;
- d0->nextp = 0;
- frchain(&d0);
- }
-
- #line 176 "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 67 "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 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, 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, 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, 223, 239, 64,
- 258, 18, 239, 61, 264, 138, 57, 239, 86, 59,
- 63, 239, 58, 239, 239, 239, 260, 239, 0, 138,
- 138, 47, 18, 239, 239, 239, 239, 239, 138, 262,
- 55, 138, 60, 133, 263, 138, 235, 239, 18, 239,
- 56, 239, 259, 0, 65, 236, 18, 62, 239, 201,
- 0, 0, 54, 0, 239, 0, 0, 3, 4, 5,
- 0, 0, 0, 0, 0, 0, 198, 0, 0, 214,
- 215, 242, 0, 0, 0, 0, 0, 239, 239, 2,
- 36, 6, 0, 0, 0, 0, 213, 88, 0, 205,
- 0, 7, 206, 20, 19, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 126, 0, 0, 0, 0, 300,
- 0, 0, 73, 100, 101, 0, 98, 0, 300, 18,
- 229, 0, 240, 53, 0, 88, 0, 0, 0, 0,
- 0, 0, 0, 88, 126, 0, 134, 203, 202, 0,
- 0, 179, 180, 181, 182, 187, 186, 185, 177, 178,
- 0, 160, 161, 245, 246, 0, 190, 0, 0, 191,
- 183, 243, 0, 247, 266, 0, 0, 0, 0, 0,
- 300, 300, 222, 0, 22, 13, 230, 0, 69, 0,
- 0, 84, 0, 0, 0, 0, 17, 0, 79, 75,
- 0, 121, 224, 0, 0, 0, 0, 122, 0, 0,
- 77, 0, 0, 300, 0, 188, 0, 278, 0, 0,
- 0, 146, 0, 143, 220, 145, 147, 0, 0, 0,
- 279, 0, 138, 0, 0, 90, 221, 218, 0, 0,
- 0, 231, 72, 0, 76, 78, 80, 85, 123, 0,
- 0, 169, 0, 277, 272, 273, 0, 0, 0, 269,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 282,
- 0, 284, 0, 0, 0, 254, 0, 0, 0, 0,
- 256, 257, 261, 0, 112, 105, 70, 0, 108, 0,
- 106, 0, 209, 200, 0, 241, 0, 30, 35, 0,
- 34, 32, 82, 0, 15, 0, 119, 0, 0, 0,
- 0, 127, 0, 0, 102, 0, 281, 280, 0, 12,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 162, 164, 163, 166, 165, 167, 0, 0,
- 74, 99, 14, 0, 52, 0, 0, 0, 0, 0,
- 234, 219, 0, 0, 0, 0, 0, 0, 0, 0,
- 275, 276, 0, 0, 268, 0, 0, 0, 0, 0,
- 0, 267, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 212, 0, 0, 0, 0, 89, 0,
- 0, 0, 0, 31, 0, 81, 0, 0, 0, 0,
- 0, 207, 132, 0, 0, 128, 0, 48, 0, 189,
- 0, 23, 0, 25, 144, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 0, 0, 67,
- 50, 0, 51, 0, 0, 175, 0, 93, 97, 176,
- 91, 232, 71, 0, 136, 0, 0, 0, 0, 270,
- 0, 283, 0, 0, 0, 0, 292, 0, 294, 0,
- 290, 0, 111, 0, 117, 0, 115, 113, 0, 109,
- 90, 0, 0, 0, 0, 204, 33, 83, 0, 0,
- 120, 0, 0, 124, 0, 0, 103, 0, 24, 0,
- 0, 0, 241, 92, 96, 0, 0, 0, 171, 0,
- 0, 0, 0, 0, 0, 0, 0, 114, 0, 0,
- 0, 210, 0, 199, 226, 0, 0, 131, 129, 28,
- 26, 184, 49, 68, 95, 94, 137, 172, 285, 298,
- 299, 297, 0, 116, 107, 87, 0, 0, 0, 216,
- };
- short yydgoto[] = { 1,
- 4, 307, 184, 275, 270, 61, 62, 63, 64, 404,
- 221, 340, 65, 257, 134, 92, 289, 290, 444, 356,
- 357, 293, 294, 240, 197, 300, 473, 271, 276, 277,
- 252, 150, 302, 66, 189, 222, 278, 224, 359, 168,
- 216, 467, 437, 438, 242, 226, 227, 171, 67, 125,
- 185, 186, 304, 5, 68, 69, 70, 93, 94, 320,
- 413, 414, 71, 72, 73, 74, 75, 76, 126, 96,
- 314, 132, 428, 286, 191, 349, 194, 392, 199, 98,
- 192, 471, 441, 350, 127, 315, 385, 468, 386, 308,
- 208, 209, 405, 210, 406, 147, 77, 78, 79, 80,
- 81, 82, 83, 172, 84, 85, 178, 86, 87, 88,
- 218, 89, 259, 260,
- };
- short yysindex[] = { 0,
- 4, 0, 0, 1152, 22, 0, 34, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 198, 0, 0, 0, 0, 0, 0,
- -14, -47, 0, -10, 0, -13, 99, 0, 0, 0,
- 107, 124, 132, 143, 144, 146, 0, 1495, 37, 0,
- 0, 0, 690, 159, 1386, 159, 162, 0, 0, 0,
- 0, 0, 235, 37, 37, 198, 0, 0, 143, 0,
- 189, 0, 0, 0, 0, 193, 196, 37, 37, 265,
- 37, 203, 204, 210, 0, 37, 211, 1396, 37, 0,
- 305, 306, 0, 0, 0, 299, 0, 37, 0, 0,
- 0, 37, 0, 0, 37, 0, 305, 720, 37, 110,
- 37, 37, 196, 0, 0, 37, 0, 0, 0, 314,
- 225, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1375, 0, 0, 0, 0, 1410, 0, 508, 0, 0,
- 0, 0, 1375, 0, 0, 0, 175, 331, 1267, 1267,
- 0, 0, 0, 344, 0, 0, 0, 345, 0, 37,
- 182, 0, 30, 265, 305, 116, 0, 37, 0, 0,
- 193, 0, 0, 143, 265, 305, 305, 0, 354, 839,
- 0, 37, 1410, 0, 508, 0, 361, 0, 305, 305,
- 305, 0, 1699, 0, 0, 0, 0, 356, 198, 193,
- 0, 37, 0, 1278, 345, 0, 0, 0, 265, 104,
- 1699, 0, 0, 143, 0, 0, 0, 0, 0, 360,
- 305, 0, 305, 0, 0, 0, 1221, 631, 112, 0,
- 353, 1410, 1410, 1410, 1410, 1410, 1280, 192, 192, 0,
- 367, 0, 192, 1267, 400, 0, 401, 1699, 405, 0,
- 0, 0, 0, 37, 0, 0, 0, 182, 0, -41,
- 0, 415, 0, 0, 416, 0, 1511, 0, 0, 227,
- 0, 0, 0, 249, 0, 417, 0, 256, 1533, 1555,
- 479, 0, 422, 260, 0, 1447, 0, 0, 145, 0,
- 1577, 423, 803, 418, 305, 305, 305, 305, 305, 305,
- 305, 305, 0, 0, 0, 0, 0, 0, 305, 305,
- 0, 0, 0, 193, 0, 1232, 1699, -47, 106, 1420,
- 0, 0, 1245, 37, 37, 432, 434, 1699, 442, 1699,
- 0, 0, 1699, 0, 0, 1375, 353, 353, 353, 637,
- -12, 0, 444, 367, 192, 367, 447, 452, 1599, 458,
- 1267, 1267, 1267, 0, 267, 1256, 459, 182, 0, 305,
- 305, 143, 440, 0, 15, 0, 37, 265, 143, 265,
- 265, 0, 0, 457, 281, 0, 305, 0, 37, 0,
- 464, 0, 287, 0, 0, 305, 418, 418, 418, 833,
- 803, 1733, 665, 665, 300, 794, 0, 345, 466, 0,
- 0, 1420, 0, 305, 1825, 0, 460, 0, 0, 0,
- 0, 0, 0, 468, 0, 483, 305, 305, 508, 0,
- 192, 0, 1267, 1267, 0, 1267, 0, 0, 0, 0,
- 0, 0, 0, 1256, 0, 1663, 0, 0, 182, 0,
- 0, 1621, 480, 1699, 30, 0, 0, 0, 329, 305,
- 0, 489, 479, 0, 479, 1699, 0, 530, 0, 547,
- 500, -47, 0, 0, 0, 1420, 37, 305, 0, 1699,
- 510, 511, 183, 520, 522, 533, 500, 0, 1256, 534,
- -35, 0, 305, 0, 0, 1699, 265, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1699, 0, 0, 0, 1699, 532, 265, 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, 610, 0, 0, 0, 0, 0, 0,
- 306, 229, 0, 612, 0, 615, 40, 0, 0, 0,
- 617, 628, 644, 95, 651, 652, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 654, 0, 0, 0,
- 0, 0, 0, 657, 0, 0, 0, 0, 26, 0,
- 0, 0, 0, 0, 0, 661, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 0,
- 662, 0, 0, 0, 0, 663, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 662, 0, 223, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 555,
- 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, 470, 671, 678, 679, 0,
- 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 661, 0, 0, 177, 0, 0, 0, 0, 72, 0,
- 0, 0, 0, 0, 74, 0, 687, 0, 0, 0,
- 0, 0, 157, 0, 0, 0, 0, 0, 0, 661,
- 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
- 336, 0, 0, 306, 0, 0, 0, 0, 0, 0,
- 292, 0, 0, 0, 0, 0, 0, 613, 0, 0,
- 62, 0, 0, 0, 0, 0, 613, 0, 0, 0,
- 692, 0, 0, 0, 706, 0, 707, 0, 1066, 917,
- 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, 1643, 343, 762, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 661, 0, 0, 33, 27, 0, 0,
- 0, 0, 0, 0, 0, 0, 635, 136, 0, 723,
- 0, 0, 348, 290, 0, 0, 268, 433, 542, 17,
- 167, 0, 0, 735, 0, 736, 0, 0, 0, 1643,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 38, 0, 0, 0, 0, 0, 0, 1364, 0,
- 0, 0, 0, 358, 0, 0, 0, 0, 0, 0,
- 366, 0, 0, 0, 0, 0, 845, 868, 891, 582,
- 691, 446, 187, 980, 485, 974, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 0, -23, 0, 0, 0,
- 0, 0, 0, 21, 0, 739, 0, 666, 383, 0,
- 0, 0, 0, 0, 951, 0, 0, 1006, 0, 1026,
- 0, 1049, 0, 0, 0, 384, 0, 0, 0, 0,
- 0, 0, 9, 82, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 409, 0, 0, 0, 0,
- 1716, 27, 0, 0, 0, 0, 0, 667, 0, 410,
- 0, 0, 1489, 0, 0, 0, 1682, 0, 0, 0,
- 0, 0, 0, 0, 0, 737, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 384, 0, 0, 0, 87, 0, 0, 0,
- };
- short yygindex[] = { 0,
- 0, -101, 0, -228, -318, 544, 0, 0, 0, 259,
- 31, 0, 0, 0, -336, 0, -338, 455, 0, 0,
- 0, -93, 310, 0, -181, 0, 0, 64, 587, 488,
- 335, -29, 387, 0, -131, 421, 275, -166, -118, -92,
- 307, 266, -269, 293, 438, -174, -27, 0, 0, 79,
- -8, 673, 0, 0, 0, 0, 0, 1461, 5, 0,
- 0, 296, 0, 0, 0, 0, 0, 0, 0, -15,
- 0, -63, 0, -234, 668, 322, 664, -345, 655, 0,
- 659, 0, 373, 0, 570, 398, 0, 347, 0, 414,
- 684, 0, 0, 0, 323, 0, 763, 0, 0, 0,
- 0, 0, 0, 380, 0, 0, 0, 0, 0, 0,
- -96, 0, 0, 486,
- };
- #define YYTABLESIZE 1839
- short yytable[] = { 105,
- 348, 430, 225, 140, 280, 280, 3, 243, 203, 208,
- 144, 431, 279, 279, 107, 108, 110, 197, 237, 305,
- 106, 135, 90, 115, 124, 215, 116, 66, 104, 130,
- 117, 240, 231, 241, 133, 193, 388, 109, 91, 228,
- 38, 389, 432, 104, 110, 377, 241, 536, 343, 470,
- 104, 228, 322, 119, 95, 170, 452, 170, 287, 95,
- 138, 128, 196, 131, 105, 187, 188, 135, 258, 262,
- 263, 264, 125, 261, 300, 95, 241, 21, 200, 105,
- 267, 204, 237, 208, 282, 283, 211, 238, 136, 105,
- 170, 197, 296, 110, 197, 42, 299, 110, 105, 280,
- 201, 197, 233, 135, 66, 235, 241, 380, 228, 188,
- 241, 245, 246, 166, 110, 166, 250, 317, 318, 230,
- 316, 110, 228, 228, 228, 66, 110, 292, 110, 104,
- 470, 241, 452, 170, 232, 228, 196, 351, 170, 196,
- 306, 196, 196, 196, 196, 170, 196, 524, 166, 125,
- 21, 300, 457, 459, 461, 523, 237, 174, 411, 237,
- 188, 238, 427, 295, 238, 495, 301, 192, 228, 367,
- 368, 369, 370, 371, 190, 439, 139, 225, 352, 322,
- 354, 353, 313, 432, 141, 170, 365, 155, 104, 366,
- 298, 166, 122, 492, 123, 104, 166, 299, 266, 124,
- 155, 142, 105, 166, 433, 104, 280, 280, 280, 143,
- 141, 104, 174, 141, 458, 460, 462, 345, 244, 412,
- 131, 145, 443, 344, 457, 459, 525, 461, 146, 66,
- 155, 174, 173, 174, 170, 170, 170, 170, 170, 180,
- 183, 192, 66, 166, 192, 266, 192, 192, 268, 491,
- 228, 192, 269, 339, 384, 288, 251, 439, 391, 2,
- 155, 155, 195, 155, 155, 268, 196, 322, 193, 198,
- 202, 339, 66, 449, 155, 155, 205, 206, 280, 280,
- 122, 280, 123, 207, 212, 155, 458, 460, 266, 507,
- 267, 266, 166, 166, 166, 166, 166, 266, 481, 482,
- 253, 394, 66, 267, 395, 229, 66, 229, 339, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 104, 228,
- 436, 439, 440, 396, 188, 445, 397, 339, 475, 501,
- 399, 373, 374, 400, 408, 480, 376, 409, 170, 339,
- 339, 463, 193, 158, 464, 193, 266, 193, 193, 193,
- 193, 339, 193, 339, 339, 484, 158, 502, 485, 504,
- 505, 489, 506, 267, 490, 301, 139, 267, 173, 189,
- 189, 189, 189, 189, 189, 510, 229, 339, 219, 313,
- 435, 325, 326, 327, 162, 163, 158, 251, 339, 169,
- 339, 176, 244, 339, 220, 223, 166, 266, 266, 266,
- 266, 266, 436, 515, 440, 436, 400, 440, 273, 339,
- 233, 223, 241, 233, 284, 538, 158, 158, 285, 158,
- 158, 503, 274, 503, 503, 274, 503, 311, 158, 158,
- 158, 158, 130, 194, 319, 130, 264, 540, 341, 503,
- 27, 158, 355, 27, 375, 295, 156, 339, 339, 339,
- 339, 339, 339, 339, 339, 339, 339, 271, 118, 156,
- 271, 118, 435, 174, 177, 179, 436, 527, 440, 297,
- 265, 188, 188, 188, 188, 188, 188, 381, 382, 266,
- 309, 310, 383, 104, 142, 148, 104, 142, 390, 156,
- 398, 391, 403, 321, 323, 324, 339, 407, 148, 151,
- 416, 327, 339, 167, 339, 167, 446, 194, 347, 476,
- 194, 447, 194, 194, 194, 194, 339, 194, 448, 156,
- 156, 451, 156, 156, 453, 358, 435, 360, 148, 454,
- 339, 363, 156, 156, 156, 456, 469, 483, 167, 488,
- 493, 496, 195, 520, 156, 497, 339, 265, 379, 188,
- 188, 188, 188, 188, 188, 168, 498, 513, 148, 148,
- 411, 148, 148, 339, 148, 148, 517, 339, 168, 148,
- 148, 148, 148, 148, 522, 148, 148, 148, 148, 148,
- 148, 167, 159, 148, 528, 529, 167, 162, 163, 262,
- 263, 264, 265, 167, 530, 159, 531, 272, 168, 417,
- 418, 419, 420, 421, 422, 423, 424, 532, 535, 539,
- 45, 291, 37, 425, 426, 217, 195, 39, 303, 195,
- 321, 195, 195, 195, 195, 159, 195, 241, 40, 168,
- 168, 168, 168, 167, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 41, 168, 168, 168, 168, 168,
- 168, 43, 44, 168, 255, 159, 159, 21, 159, 159,
- 466, 29, 173, 46, 472, 474, 159, 159, 159, 159,
- 159, 248, 159, 159, 159, 159, 159, 159, 249, 253,
- 159, 486, 167, 167, 167, 167, 167, 11, 272, 272,
- 271, 157, 250, 272, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 104, 157, 364, 287, 288, 291, 140,
- 162, 163, 262, 263, 264, 265, 162, 163, 262, 263,
- 264, 500, 223, 211, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 104, 157, 252, 251, 227, 466, 170,
- 173, 518, 387, 173, 162, 163, 325, 326, 327, 328,
- 329, 330, 170, 312, 516, 333, 334, 335, 336, 337,
- 338, 378, 152, 161, 157, 157, 281, 157, 157, 162,
- 163, 164, 223, 165, 534, 152, 157, 157, 157, 157,
- 499, 477, 170, 533, 514, 521, 167, 537, 526, 157,
- 442, 217, 511, 219, 238, 272, 234, 247, 342, 162,
- 163, 239, 248, 236, 494, 152, 487, 519, 291, 220,
- 508, 479, 0, 170, 170, 170, 170, 478, 170, 170,
- 170, 170, 170, 170, 170, 170, 170, 170, 249, 170,
- 170, 170, 170, 170, 170, 152, 152, 170, 152, 152,
- 149, 152, 152, 152, 152, 149, 152, 152, 152, 152,
- 152, 450, 152, 152, 152, 152, 152, 152, 149, 10,
- 152, 0, 0, 14, 0, 0, 17, 0, 150, 20,
- 21, 272, 23, 162, 163, 325, 326, 327, 328, 0,
- 0, 150, 162, 163, 325, 326, 327, 328, 149, 291,
- 41, 151, 43, 333, 334, 335, 336, 337, 338, 0,
- 0, 51, 0, 0, 151, 55, 0, 0, 0, 0,
- 58, 150, 162, 163, 325, 326, 327, 295, 149, 149,
- 0, 149, 149, 0, 149, 149, 149, 149, 0, 149,
- 149, 149, 149, 149, 151, 149, 149, 149, 149, 149,
- 149, 150, 150, 149, 150, 150, 0, 150, 150, 150,
- 150, 296, 150, 150, 150, 150, 150, 0, 150, 150,
- 150, 150, 150, 150, 151, 151, 150, 151, 151, 0,
- 151, 151, 151, 151, 153, 151, 151, 151, 151, 151,
- 154, 151, 151, 151, 151, 151, 151, 153, 0, 151,
- 0, 145, 0, 154, 295, 0, 145, 145, 145, 145,
- 145, 145, 145, 145, 145, 145, 291, 145, 145, 145,
- 145, 145, 145, 0, 0, 0, 0, 153, 0, 0,
- 0, 0, 0, 154, 0, 144, 293, 0, 296, 0,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 0, 144, 144, 144, 144, 144, 144, 153, 153, 289,
- 153, 153, 0, 154, 154, 0, 154, 154, 0, 153,
- 153, 153, 153, 0, 0, 0, 286, 154, 154, 0,
- 0, 0, 153, 0, 0, 0, 0, 0, 154, 0,
- 0, 0, 0, 291, 0, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 143, 0, 143, 143, 143, 143,
- 143, 143, 0, 293, 0, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 143, 0, 143, 143, 143, 143,
- 143, 143, 0, 0, 0, 0, 289, 0, 143, 143,
- 143, 143, 143, 143, 143, 143, 143, 143, 0, 143,
- 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 143, 6, 143, 143, 143, 143,
- 143, 143, 0, 0, 0, 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, 0, 50, 51, 52, 53, 54, 55, 56,
- 57, 0, 0, 58, 59, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 104, 0, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 104, 0, 0, 60, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 104, 0,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 104,
- 0, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 104, 0, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 104, 0, 0, 219, 0, 0, 0, 0, 0,
- 162, 163, 361, 0, 362, 219, 0, 0, 0, 0,
- 220, 162, 163, 429, 0, 0, 0, 0, 219, 0,
- 0, 220, 0, 0, 162, 163, 239, 0, 0, 219,
- 0, 0, 0, 0, 220, 162, 163, 465, 0, 0,
- 274, 0, 0, 0, 0, 220, 162, 163, 0, 0,
- 0, 346, 0, 0, 372, 0, 220, 162, 163, 162,
- 163, 262, 263, 264, 265, 0, 0, 220, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 0, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 104, 254,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 104,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 104,
- 0, 0, 0, 0, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 104, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 104, 0, 0, 0, 228, 0, 0,
- 0, 0, 0, 228, 228, 0, 0, 0, 213, 0,
- 0, 0, 0, 228, 162, 163, 255, 0, 256, 161,
- 0, 0, 0, 0, 0, 162, 163, 175, 0, 213,
- 0, 0, 0, 95, 0, 162, 163, 214, 97, 0,
- 0, 0, 99, 213, 100, 101, 102, 0, 103, 162,
- 163, 0, 0, 434, 110, 111, 112, 113, 114, 162,
- 163, 0, 0, 0, 0, 0, 0, 0, 118, 0,
- 120, 0, 121, 8, 9, 0, 11, 0, 13, 129,
- 15, 410, 0, 18, 0, 137, 162, 163, 262, 263,
- 264, 265, 27, 0, 0, 0, 0, 0, 0, 34,
- 35, 36, 37, 0, 0, 40, 0, 0, 181, 182,
- 45, 0, 47, 48, 0, 0, 50, 0, 52, 53,
- 0, 0, 56, 168, 148, 0, 168, 59, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 0, 168,
- 168, 168, 168, 168, 168, 393, 0, 0, 0, 0,
- 162, 163, 325, 326, 327, 328, 329, 330, 331, 332,
- 0, 333, 334, 335, 336, 337, 338, 401, 0, 0,
- 0, 0, 162, 163, 325, 326, 327, 328, 329, 330,
- 331, 332, 0, 333, 334, 335, 336, 337, 338, 402,
- 0, 0, 0, 0, 162, 163, 325, 326, 327, 328,
- 329, 330, 331, 332, 0, 333, 334, 335, 336, 337,
- 338, 415, 0, 0, 0, 0, 162, 163, 325, 326,
- 327, 328, 329, 330, 331, 332, 0, 333, 334, 335,
- 336, 337, 338, 455, 0, 0, 0, 0, 162, 163,
- 325, 326, 327, 328, 329, 330, 331, 332, 0, 333,
- 334, 335, 336, 337, 338, 512, 0, 0, 0, 0,
- 162, 163, 325, 326, 327, 328, 329, 330, 331, 332,
- 0, 333, 334, 335, 336, 337, 338, 143, 0, 0,
- 0, 0, 143, 143, 143, 143, 143, 143, 143, 143,
- 143, 143, 0, 143, 143, 143, 143, 143, 143, 509,
- 0, 0, 162, 163, 325, 326, 327, 328, 329, 330,
- 331, 332, 0, 333, 334, 335, 336, 337, 338, 289,
- 0, 143, 143, 143, 143, 143, 143, 143, 143, 143,
- 143, 0, 143, 143, 143, 143, 143, 143, 162, 163,
- 325, 326, 327, 328, 329, 330, 331, 332, 0, 333,
- 334, 335, 336, 337, 338, 143, 143, 143, 143, 143,
- 143, 143, 143, 143, 143, 0, 143, 143, 143, 143,
- 143, 143, 162, 163, 325, 326, 327, 328, 329, 0,
- 0, 0, 0, 333, 334, 335, 336, 337, 338, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 104,
- };
- short yycheck[] = { 29,
- 235, 347, 121, 67, 179, 180, 3, 139, 110, 1,
- 74, 348, 179, 180, 30, 31, 1, 1, 137, 201,
- 29, 1, 1, 39, 54, 118, 42, 1, 14, 44,
- 46, 6, 129, 1, 82, 99, 78, 33, 5, 14,
- 1, 83, 78, 14, 1, 274, 14, 83, 230, 388,
- 14, 14, 219, 49, 78, 83, 375, 85, 190, 83,
- 74, 57, 1, 78, 94, 95, 96, 78, 161, 82,
- 83, 84, 1, 166, 1, 99, 44, 1, 108, 109,
- 173, 111, 1, 75, 181, 182, 116, 1, 99, 119,
- 118, 75, 194, 78, 78, 1, 82, 82, 128, 274,
- 109, 85, 132, 83, 78, 135, 74, 274, 14, 139,
- 78, 141, 142, 83, 99, 85, 146, 214, 215, 128,
- 213, 78, 83, 98, 85, 99, 83, 98, 85, 14,
- 469, 99, 451, 161, 130, 98, 75, 239, 166, 78,
- 204, 80, 81, 82, 83, 173, 85, 493, 118, 78,
- 74, 78, 381, 382, 383, 492, 75, 1, 14, 78,
- 190, 75, 344, 193, 78, 435, 196, 1, 74, 262,
- 263, 264, 265, 266, 96, 350, 78, 1, 75, 346,
- 244, 78, 212, 78, 78, 213, 75, 1, 14, 78,
- 75, 161, 83, 428, 85, 14, 166, 82, 168, 229,
- 14, 78, 232, 173, 99, 14, 381, 382, 383, 78,
- 75, 14, 77, 78, 381, 382, 383, 233, 140, 75,
- 78, 78, 354, 232, 453, 454, 496, 456, 83, 1,
- 44, 75, 74, 77, 262, 263, 264, 265, 266, 78,
- 6, 75, 14, 213, 78, 215, 80, 81, 74, 416,
- 74, 85, 78, 223, 284, 74, 74, 432, 76, 256,
- 74, 75, 74, 77, 78, 74, 74, 434, 1, 74,
- 6, 241, 44, 366, 88, 89, 74, 74, 453, 454,
- 83, 456, 85, 74, 74, 99, 453, 454, 258, 456,
- 1, 261, 262, 263, 264, 265, 266, 267, 400, 401,
- 76, 75, 74, 14, 78, 83, 78, 85, 278, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 14,
- 350, 496, 350, 75, 354, 355, 78, 297, 392, 448,
- 75, 268, 269, 78, 75, 399, 273, 78, 366, 309,
- 310, 75, 75, 1, 78, 78, 316, 80, 81, 82,
- 83, 321, 85, 323, 324, 75, 14, 451, 78, 453,
- 454, 75, 456, 74, 78, 395, 75, 78, 77, 80,
- 81, 82, 83, 84, 85, 469, 78, 347, 74, 409,
- 350, 82, 83, 84, 80, 81, 44, 74, 358, 83,
- 360, 85, 1, 363, 90, 121, 366, 367, 368, 369,
- 370, 371, 432, 75, 432, 435, 78, 435, 78, 379,
- 75, 137, 138, 78, 71, 517, 74, 75, 74, 77,
- 78, 451, 75, 453, 454, 78, 456, 74, 86, 87,
- 88, 89, 75, 1, 74, 78, 84, 539, 83, 469,
- 75, 99, 83, 78, 78, 475, 1, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 75, 75, 14,
- 78, 78, 432, 84, 85, 86, 496, 497, 496, 195,
- 1, 80, 81, 82, 83, 84, 85, 78, 78, 449,
- 206, 207, 78, 75, 75, 1, 78, 78, 74, 44,
- 74, 76, 14, 219, 220, 221, 466, 76, 14, 79,
- 78, 84, 472, 83, 474, 85, 75, 75, 234, 70,
- 78, 78, 80, 81, 82, 83, 486, 85, 77, 74,
- 75, 78, 77, 78, 78, 251, 496, 253, 44, 78,
- 500, 257, 87, 88, 89, 78, 78, 81, 118, 76,
- 75, 82, 1, 14, 99, 78, 516, 78, 274, 80,
- 81, 82, 83, 84, 85, 1, 74, 78, 74, 75,
- 14, 77, 78, 533, 80, 81, 78, 537, 14, 85,
- 86, 87, 88, 89, 75, 91, 92, 93, 94, 95,
- 96, 161, 1, 99, 75, 75, 166, 80, 81, 82,
- 83, 84, 85, 173, 75, 14, 75, 177, 44, 325,
- 326, 327, 328, 329, 330, 331, 332, 75, 75, 78,
- 1, 191, 1, 339, 340, 1, 75, 1, 198, 78,
- 346, 80, 81, 82, 83, 44, 85, 353, 1, 75,
- 76, 77, 78, 213, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 1, 91, 92, 93, 94, 95,
- 96, 1, 1, 99, 1, 74, 75, 1, 77, 78,
- 386, 1, 1, 1, 390, 391, 85, 86, 87, 88,
- 89, 1, 91, 92, 93, 94, 95, 96, 1, 1,
- 99, 407, 262, 263, 264, 265, 266, 1, 268, 269,
- 78, 1, 1, 273, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 14, 75, 1, 1, 288, 75,
- 80, 81, 82, 83, 84, 85, 80, 81, 82, 83,
- 84, 447, 448, 1, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 44, 1, 1, 1, 464, 1,
- 75, 483, 288, 77, 80, 81, 82, 83, 84, 85,
- 86, 87, 14, 210, 480, 91, 92, 93, 94, 95,
- 96, 274, 1, 74, 74, 75, 180, 77, 78, 80,
- 81, 82, 498, 84, 509, 14, 86, 87, 88, 89,
- 446, 395, 44, 509, 475, 490, 366, 513, 496, 99,
- 353, 119, 471, 74, 75, 375, 133, 143, 229, 80,
- 81, 82, 144, 136, 432, 44, 409, 485, 388, 90,
- 464, 398, -1, 75, 76, 77, 78, 397, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 145, 91,
- 92, 93, 94, 95, 96, 74, 75, 99, 77, 78,
- 78, 80, 81, 82, 83, 1, 85, 86, 87, 88,
- 89, 366, 91, 92, 93, 94, 95, 96, 14, 21,
- 99, -1, -1, 25, -1, -1, 28, -1, 1, 31,
- 32, 451, 34, 80, 81, 82, 83, 84, 85, -1,
- -1, 14, 80, 81, 82, 83, 84, 85, 44, 469,
- 52, 1, 54, 91, 92, 93, 94, 95, 96, -1,
- -1, 63, -1, -1, 14, 67, -1, -1, -1, -1,
- 72, 44, 80, 81, 82, 83, 84, 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,
- 1, 91, 92, 93, 94, 95, 96, 14, -1, 99,
- -1, 75, -1, 14, 78, -1, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 1, 91, 92, 93,
- 94, 95, 96, -1, -1, -1, -1, 44, -1, -1,
- -1, -1, -1, 44, -1, 75, 1, -1, 78, -1,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- -1, 91, 92, 93, 94, 95, 96, 74, 75, 1,
- 77, 78, -1, 74, 75, -1, 77, 78, -1, 86,
- 87, 88, 89, -1, -1, -1, 1, 88, 89, -1,
- -1, -1, 99, -1, -1, -1, -1, -1, 99, -1,
- -1, -1, -1, 78, -1, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, -1, 91, 92, 93, 94,
- 95, 96, -1, 78, -1, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, -1, 91, 92, 93, 94,
- 95, 96, -1, -1, -1, -1, 78, -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, 4, 91, 92, 93, 94,
- 95, 96, -1, -1, -1, -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, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, -1, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, -1, -1, 97, 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, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, -1, -1, 74, -1, -1, -1, -1, -1,
- 80, 81, 82, -1, 84, 74, -1, -1, -1, -1,
- 90, 80, 81, 82, -1, -1, -1, -1, 74, -1,
- -1, 90, -1, -1, 80, 81, 82, -1, -1, 74,
- -1, -1, -1, -1, 90, 80, 81, 82, -1, -1,
- 74, -1, -1, -1, -1, 90, 80, 81, -1, -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, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- -1, -1, -1, -1, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, -1, -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, -1, -1, 80, 81, 82, -1, 74,
- -1, -1, -1, 13, -1, 80, 81, 82, 18, -1,
- -1, -1, 22, 74, 24, 25, 26, -1, 28, 80,
- 81, -1, -1, 74, 34, 35, 36, 37, 38, 80,
- 81, -1, -1, -1, -1, -1, -1, -1, 48, -1,
- 50, -1, 52, 19, 20, -1, 22, -1, 24, 59,
- 26, 75, -1, 29, -1, 65, 80, 81, 82, 83,
- 84, 85, 38, -1, -1, -1, -1, -1, -1, 45,
- 46, 47, 48, -1, -1, 51, -1, -1, 88, 89,
- 56, -1, 58, 59, -1, -1, 62, -1, 64, 65,
- -1, -1, 68, 75, 70, -1, 78, 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, 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, 78,
- -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, 80, 81, 82, 83, 84, 85, 86, -1,
- -1, -1, -1, 91, 92, 93, 94, 95, 96, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14,
- };
- #define YYFINAL 1
- #ifndef YYDEBUG
- #define YYDEBUG 0
- #endif
- #define YYMAXTOKEN 99
- #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",
- };
- 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",
- "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
- #define yyclearin (yychar=(-1))
- #define yyerrok (yyerrflag=0)
- #ifndef YYSTACKSIZE
- #ifdef YYMAXDEPTH
- #define YYSTACKSIZE YYMAXDEPTH
- #else
- #define YYSTACKSIZE 300
- #endif
- #endif
- int yydebug;
- int yynerrs;
- int yyerrflag;
- int yychar;
- short *yyssp;
- YYSTYPE *yyvsp;
- YYSTYPE yyval;
- YYSTYPE yylval;
- #define yystacksize YYSTACKSIZE
- short yyss[YYSTACKSIZE];
- YYSTYPE yyvs[YYSTACKSIZE];
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
- int
- yyparse()
- {
- register int yym, yyn, yystate;
- #if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
- yydebug = yyn - '0';
- }
- #endif
-
- yynerrs = 0;
- yyerrflag = 0;
- yychar = (-1);
-
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
-
- yyloop:
- if (yyn = yydefred[yystate]) 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("yydebug: state %d, reading %d (%s)\n", yystate,
- yychar, yys);
- }
- #endif
- }
- if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
- #if YYDEBUG
- if (yydebug)
- printf("yydebug: state %d, shifting to state %d\n",
- yystate, yytable[yyn]);
- #endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- 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;
- #ifdef lint
- goto yynewerror;
- #endif
- yynewerror:
- yyerror("syntax error");
- #ifdef lint
- goto yyerrlab;
- #endif
- 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("yydebug: state %d, error recovery shifting\
- to state %d\n", *yyssp, yytable[yyn]);
- #endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- goto yyloop;
- }
- else
- {
- #if YYDEBUG
- if (yydebug)
- printf("yydebug: error recovery discarding state %d\n",
- *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("yydebug: state %d, error recovery discards token %d (%s)\n",
- yystate, yychar, yys);
- }
- #endif
- yychar = (-1);
- goto yyloop;
- }
- yyreduce:
- #if YYDEBUG
- if (yydebug)
- printf("yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
- yym = yylen[yyn];
- yyval = yyvsp[1-yym];
- switch (yyn)
- {
- case 3:
- #line 224 "gram.in"
- {
- /* stat: is the nonterminal for Fortran statements */
-
- lastwasbranch = NO; }
- break;
- case 5:
- #line 230 "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 250 "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 258 "gram.in"
- { if (yyvsp[-2].labval )
- lastwasbranch = NO;
- endproc(); /* lastwasbranch = NO; -- set in endproc() */
- }
- break;
- case 8:
- #line 263 "gram.in"
- { extern void unclassifiable();
- unclassifiable();
-
- /* flline flushes the current line, ignoring the rest of the text there */
-
- flline(); }
- break;
- case 9:
- #line 270 "gram.in"
- { flline(); needkwd = NO; inioctl = NO;
- yyerrok; yyclearin; }
- break;
- case 10:
- #line 275 "gram.in"
- {
- if(yystno != 0)
- {
- yyval.labval = thislabel = mklabel(yystno);
- if( ! headerdone ) {
- if (procclass == CLUNKNOWN)
- procclass = CLMAIN;
- puthead(CNULL, procclass);
- }
- if(thislabel->labdefined)
- execerr("label %s already defined",
- convic(thislabel->stateno) );
- else {
- if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
- && thislabel->labtype!=LABFORMAT)
- warn1("there is a branch to label %s from outside block",
- convic( (ftnint) (thislabel->stateno) ) );
- thislabel->blklevel = blklevel;
- thislabel->labdefined = YES;
- if(thislabel->labtype != LABFORMAT)
- p1_label((long)(thislabel - labeltab));
- }
- }
- else yyval.labval = thislabel = NULL;
- }
- break;
- case 11:
- #line 303 "gram.in"
- {startproc(yyvsp[0].extval , CLMAIN); }
- break;
- case 12:
- #line 305 "gram.in"
- { warn("ignoring arguments to main program");
- /* hashclear(); */
- startproc(yyvsp[-1].extval , CLMAIN); }
- break;
- case 13:
- #line 309 "gram.in"
- { if(yyvsp[0].extval ) NO66("named BLOCKDATA");
- startproc(yyvsp[0].extval , CLBLOCK); }
- break;
- case 14:
- #line 312 "gram.in"
- { entrypt(CLPROC, TYSUBR, (ftnint) 0, yyvsp[-1].extval , yyvsp[0].chval ); }
- break;
- case 15:
- #line 314 "gram.in"
- { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval , yyvsp[0].chval ); }
- break;
- case 16:
- #line 316 "gram.in"
- { entrypt(CLPROC, yyvsp[-4].ival , varleng, yyvsp[-1].extval , yyvsp[0].chval ); }
- break;
- case 17:
- #line 318 "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 326 "gram.in"
- { newproc(); }
- break;
- case 19:
- #line 330 "gram.in"
- { yyval.extval = newentry(yyvsp[0].namval , 1); }
- break;
- case 20:
- #line 334 "gram.in"
- { yyval.namval = mkname(token); }
- break;
- case 21:
- #line 337 "gram.in"
- { yyval.extval = NULL; }
- break;
- case 29:
- #line 355 "gram.in"
- { yyval.chval = 0; }
- break;
- case 30:
- #line 357 "gram.in"
- { NO66(" () argument list");
- yyval.chval = 0; }
- break;
- case 31:
- #line 360 "gram.in"
- {yyval.chval = yyvsp[-1].chval ; }
- break;
- case 32:
- #line 364 "gram.in"
- { yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval ,CHNULL) : CHNULL ); }
- break;
- case 33:
- #line 366 "gram.in"
- { if(yyvsp[0].namval ) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval , yyvsp[-2].chval ); }
- break;
- case 34:
- #line 370 "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 375 "gram.in"
- { NO66("altenate return argument");
-
- /* substars means that '*'ed formal parameters should be replaced.
- This is used to specify alternate return labels; in theory, only
- parameter slots which have '*' should accept the statement labels.
- This compiler chooses to ignore the '*'s in the formal declaration, and
- always return the proper value anyway.
-
- This variable is only referred to in proc.c */
-
- yyval.namval = 0; substars = YES; }
- break;
- case 36:
- #line 391 "gram.in"
- {
- char *s;
- s = copyn(toklen+1, token);
- s[toklen] = '\0';
- yyval.charpval = s;
- }
- break;
- case 45:
- #line 407 "gram.in"
- { NO66("SAVE statement");
- saveall = YES; }
- break;
- case 46:
- #line 410 "gram.in"
- { NO66("SAVE statement"); }
- break;
- case 47:
- #line 412 "gram.in"
- { fmtstmt(thislabel); setfmt(thislabel); }
- break;
- case 48:
- #line 414 "gram.in"
- { NO66("PARAMETER statement"); }
- break;
- case 49:
- #line 418 "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 422 "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 426 "gram.in"
- { if (new_dcl == 2) {
- err("attempt to give DATA in type-declaration");
- new_dcl = 1;
- }
- }
- break;
- case 52:
- #line 433 "gram.in"
- { new_dcl = 2; }
- break;
- case 53:
- #line 436 "gram.in"
- { varleng = yyvsp[0].lval ;
- if (vartype == TYLOGICAL && varleng == 1) {
- varleng = 0;
- err("treating LOGICAL*1 as LOGICAL");
- --nerr; /* allow generation of .c file */
- }
- }
- break;
- case 54:
- #line 446 "gram.in"
- { varleng = (yyvsp[0].ival <0 || yyvsp[0].ival ==TYLONG ? 0 : typesize[yyvsp[0].ival ]);
- vartype = yyvsp[0].ival ; }
- break;
- case 55:
- #line 450 "gram.in"
- { yyval.ival = TYLONG; }
- break;
- case 56:
- #line 451 "gram.in"
- { yyval.ival = tyreal; }
- break;
- case 57:
- #line 452 "gram.in"
- { ++complex_seen; yyval.ival = TYCOMPLEX; }
- break;
- case 58:
- #line 453 "gram.in"
- { yyval.ival = TYDREAL; }
- break;
- case 59:
- #line 454 "gram.in"
- { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; }
- break;
- case 60:
- #line 455 "gram.in"
- { yyval.ival = TYLOGICAL; }
- break;
- case 61:
- #line 456 "gram.in"
- { NO66("CHARACTER statement"); yyval.ival = TYCHAR; }
- break;
- case 62:
- #line 457 "gram.in"
- { yyval.ival = TYUNKNOWN; }
- break;
- case 63:
- #line 458 "gram.in"
- { yyval.ival = TYUNKNOWN; }
- break;
- case 64:
- #line 459 "gram.in"
- { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; }
- break;
- case 65:
- #line 460 "gram.in"
- { NOEXT("STATIC statement"); yyval.ival = - STGBSS; }
- break;
- case 66:
- #line 464 "gram.in"
- { yyval.lval = varleng; }
- break;
- case 67:
- #line 466 "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 68:
- #line 492 "gram.in"
- { NO66("length specification *(*)"); yyval.lval = -1; }
- break;
- case 69:
- #line 496 "gram.in"
- { incomm( yyval.extval = comblock("") , yyvsp[0].namval ); }
- break;
- case 70:
- #line 498 "gram.in"
- { yyval.extval = yyvsp[-1].extval ; incomm(yyvsp[-1].extval , yyvsp[0].namval ); }
- break;
- case 71:
- #line 500 "gram.in"
- { yyval.extval = yyvsp[-2].extval ; incomm(yyvsp[-2].extval , yyvsp[0].namval ); }
- break;
- case 72:
- #line 502 "gram.in"
- { incomm(yyvsp[-2].extval , yyvsp[0].namval ); }
- break;
- case 73:
- #line 506 "gram.in"
- { yyval.extval = comblock(""); }
- break;
- case 74:
- #line 508 "gram.in"
- { yyval.extval = comblock(token); }
- break;
- case 75:
- #line 512 "gram.in"
- { setext(yyvsp[0].namval ); }
- break;
- case 76:
- #line 514 "gram.in"
- { setext(yyvsp[0].namval ); }
- break;
- case 77:
- #line 518 "gram.in"
- { NO66("INTRINSIC statement"); setintr(yyvsp[0].namval ); }
- break;
- case 78:
- #line 520 "gram.in"
- { setintr(yyvsp[0].namval ); }
- break;
- case 81:
- #line 528 "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 82:
- #line 541 "gram.in"
- { yyval.eqvval =ALLOC(Eqvchain);
- yyval.eqvval ->eqvitem.eqvlhs = (struct Primblock *)yyvsp[0].expval ;
- }
- break;
- case 83:
- #line 545 "gram.in"
- { yyval.eqvval =ALLOC(Eqvchain);
- yyval.eqvval ->eqvitem.eqvlhs = (struct Primblock *) yyvsp[0].expval ;
- yyval.eqvval ->eqvnextp = yyvsp[-2].eqvval ;
- }
- break;
- case 86:
- #line 556 "gram.in"
- { if(parstate == OUTSIDE)
- {
- newproc();
- startproc(ESNULL, CLMAIN);
- }
- if(parstate < INDATA)
- {
- enddcl();
- parstate = INDATA;
- }
- }
- break;
- case 87:
- #line 570 "gram.in"
- { ftnint junk;
- if(nextdata(&junk) != NULL)
- err("too few initializers");
- frdata(yyvsp[-4].chval );
- frrpl();
- }
- break;
- case 88:
- #line 578 "gram.in"
- { frchain(&datastack); curdtp = 0; }
- break;
- case 89:
- #line 580 "gram.in"
- { pop_datastack(); }
- break;
- case 90:
- #line 582 "gram.in"
- { toomanyinit = NO; }
- break;
- case 93:
- #line 587 "gram.in"
- { dataval(ENULL, yyvsp[0].expval ); }
- break;
- case 94:
- #line 589 "gram.in"
- { dataval(yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 96:
- #line 594 "gram.in"
- { if( yyvsp[-1].ival ==OPMINUS && ISCONST(yyvsp[0].expval ) )
- consnegop((Constp)yyvsp[0].expval );
- yyval.expval = yyvsp[0].expval ;
- }
- break;
- case 100:
- #line 606 "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 104:
- #line 620 "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 105:
- #line 627 "gram.in"
- { if(ndim>0) setbound(yyvsp[-1].namval , ndim, dims); }
- break;
- case 106:
- #line 631 "gram.in"
- { Namep np;
- np = ( (struct Primblock *) yyvsp[0].expval ) -> namep;
- vardcl(np);
- if(np->vstg == STGCOMMON)
- extsymtab[np->vardesc.varno].extinit = YES;
- else if(np->vstg==STGEQUIV)
- eqvclass[np->vardesc.varno].eqvinit = YES;
- else if(np->vstg!=STGINIT && np->vstg!=STGBSS)
- dclerr("inconsistent storage classes", np);
- yyval.chval = mkchain((char *)yyvsp[0].expval , CHNULL);
- }
- break;
- case 107:
- #line 643 "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 108:
- #line 659 "gram.in"
- { if (!datastack)
- curdtp = 0;
- datastack = mkchain((char *)curdtp, datastack);
- curdtp = yyvsp[0].chval ; curdtelt = 0;
- }
- break;
- case 109:
- #line 665 "gram.in"
- { yyval.chval = hookup(yyvsp[-2].chval , yyvsp[0].chval ); }
- break;
- case 110:
- #line 669 "gram.in"
- { ndim = 0; }
- break;
- case 112:
- #line 673 "gram.in"
- { ndim = 0; }
- break;
- case 115:
- #line 678 "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 116:
- #line 688 "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 117:
- #line 700 "gram.in"
- { yyval.expval = 0; }
- break;
- case 119:
- #line 705 "gram.in"
- { nstars = 1; labarray[0] = yyvsp[0].labval ; }
- break;
- case 120:
- #line 707 "gram.in"
- { if(nstars < MAXLABLIST) labarray[nstars++] = yyvsp[0].labval ; }
- break;
- case 121:
- #line 711 "gram.in"
- { yyval.labval = execlab( convci(toklen, token) ); }
- break;
- case 122:
- #line 715 "gram.in"
- { NO66("IMPLICIT statement"); }
- break;
- case 125:
- #line 721 "gram.in"
- { if (vartype != TYUNKNOWN)
- dclerr("-- expected letter range",NPNULL);
- setimpl(vartype, varleng, 'a', 'z'); }
- break;
- case 126:
- #line 726 "gram.in"
- { needkwd = 1; }
- break;
- case 130:
- #line 735 "gram.in"
- { setimpl(vartype, varleng, yyvsp[0].ival , yyvsp[0].ival ); }
- break;
- case 131:
- #line 737 "gram.in"
- { setimpl(vartype, varleng, yyvsp[-2].ival , yyvsp[0].ival ); }
- break;
- case 132:
- #line 741 "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 135:
- #line 755 "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 136:
- #line 769 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].namval , CHNULL); }
- break;
- case 137:
- #line 771 "gram.in"
- { yyval.chval = hookup(yyvsp[-2].chval , mkchain((char *)yyvsp[0].namval , CHNULL)); }
- break;
- case 138:
- #line 775 "gram.in"
- { switch(parstate)
- {
- case OUTSIDE: newproc();
- startproc(ESNULL, CLMAIN);
- case INSIDE: parstate = INDCL;
- case INDCL: break;
-
- case INDATA:
- errstr(
- "Statement order error: declaration after DATA",
- CNULL);
- break;
-
- default:
- dclerr("declaration among executables", NPNULL);
- }
- }
- break;
- case 139:
- #line 794 "gram.in"
- { yyval.chval = 0; }
- break;
- case 140:
- #line 796 "gram.in"
- { yyval.chval = revchain(yyvsp[0].chval ); }
- break;
- case 141:
- #line 800 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , CHNULL); }
- break;
- case 142:
- #line 802 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , yyvsp[-2].chval ); }
- break;
- case 144:
- #line 807 "gram.in"
- { yyval.expval = yyvsp[-1].expval ; }
- break;
- case 148:
- #line 814 "gram.in"
- { yyval.expval = mkexpr(yyvsp[-1].ival , yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 149:
- #line 816 "gram.in"
- { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 150:
- #line 818 "gram.in"
- { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 151:
- #line 820 "gram.in"
- { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 152:
- #line 822 "gram.in"
- { if(yyvsp[-1].ival == OPMINUS)
- yyval.expval = mkexpr(OPNEG, yyvsp[0].expval , ENULL);
- else yyval.expval = yyvsp[0].expval ;
- }
- break;
- case 153:
- #line 827 "gram.in"
- { yyval.expval = mkexpr(yyvsp[-1].ival , yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 154:
- #line 829 "gram.in"
- { NO66(".EQV. operator");
- yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval ,yyvsp[0].expval ); }
- break;
- case 155:
- #line 832 "gram.in"
- { NO66(".NEQV. operator");
- yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 156:
- #line 835 "gram.in"
- { yyval.expval = mkexpr(OPOR, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 157:
- #line 837 "gram.in"
- { yyval.expval = mkexpr(OPAND, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 158:
- #line 839 "gram.in"
- { yyval.expval = mkexpr(OPNOT, yyvsp[0].expval , ENULL); }
- break;
- case 159:
- #line 841 "gram.in"
- { NO66("concatenation operator //");
- yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 160:
- #line 845 "gram.in"
- { yyval.ival = OPPLUS; }
- break;
- case 161:
- #line 846 "gram.in"
- { yyval.ival = OPMINUS; }
- break;
- case 162:
- #line 849 "gram.in"
- { yyval.ival = OPEQ; }
- break;
- case 163:
- #line 850 "gram.in"
- { yyval.ival = OPGT; }
- break;
- case 164:
- #line 851 "gram.in"
- { yyval.ival = OPLT; }
- break;
- case 165:
- #line 852 "gram.in"
- { yyval.ival = OPGE; }
- break;
- case 166:
- #line 853 "gram.in"
- { yyval.ival = OPLE; }
- break;
- case 167:
- #line 854 "gram.in"
- { yyval.ival = OPNE; }
- break;
- case 168:
- #line 858 "gram.in"
- { yyval.expval = mkprim(yyvsp[0].namval , LBNULL, CHNULL); }
- break;
- case 169:
- #line 860 "gram.in"
- { NO66("substring operator :");
- yyval.expval = mkprim(yyvsp[-1].namval , LBNULL, yyvsp[0].chval ); }
- break;
- case 170:
- #line 863 "gram.in"
- { yyval.expval = mkprim(yyvsp[-3].namval , mklist(yyvsp[-1].chval ), CHNULL); }
- break;
- case 171:
- #line 865 "gram.in"
- { NO66("substring operator :");
- yyval.expval = mkprim(yyvsp[-4].namval , mklist(yyvsp[-2].chval ), yyvsp[0].chval ); }
- break;
- case 172:
- #line 870 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[-3].expval , mkchain((char *)yyvsp[-1].expval ,CHNULL)); }
- break;
- case 173:
- #line 874 "gram.in"
- { yyval.expval = 0; }
- break;
- case 175:
- #line 879 "gram.in"
- { if(yyvsp[0].namval ->vclass == CLPARAM)
- yyval.expval = (expptr) cpexpr(
- ( (struct Paramblock *) (yyvsp[0].namval ) ) -> paramval);
- }
- break;
- case 177:
- #line 886 "gram.in"
- { yyval.expval = mklogcon(1); }
- break;
- case 178:
- #line 887 "gram.in"
- { yyval.expval = mklogcon(0); }
- break;
- case 179:
- #line 888 "gram.in"
- { yyval.expval = mkstrcon(toklen, token); }
- break;
- case 180:
- #line 889 "gram.in"
- { yyval.expval = mkintcon( convci(toklen, token) ); }
- break;
- case 181:
- #line 890 "gram.in"
- { yyval.expval = mkrealcon(tyreal, token); }
- break;
- case 182:
- #line 891 "gram.in"
- { yyval.expval = mkrealcon(TYDREAL, token); }
- break;
- case 184:
- #line 896 "gram.in"
- { yyval.expval = mkcxcon(yyvsp[-3].expval ,yyvsp[-1].expval ); }
- break;
- case 185:
- #line 900 "gram.in"
- { NOEXT("hex constant");
- yyval.expval = mkbitcon(4, toklen, token); }
- break;
- case 186:
- #line 903 "gram.in"
- { NOEXT("octal constant");
- yyval.expval = mkbitcon(3, toklen, token); }
- break;
- case 187:
- #line 906 "gram.in"
- { NOEXT("binary constant");
- yyval.expval = mkbitcon(1, toklen, token); }
- break;
- case 189:
- #line 912 "gram.in"
- { yyval.expval = yyvsp[-1].expval ; }
- break;
- case 192:
- #line 918 "gram.in"
- { yyval.expval = mkexpr(yyvsp[-1].ival , yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 193:
- #line 920 "gram.in"
- { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 194:
- #line 922 "gram.in"
- { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 195:
- #line 924 "gram.in"
- { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 196:
- #line 926 "gram.in"
- { if(yyvsp[-1].ival == OPMINUS)
- yyval.expval = mkexpr(OPNEG, yyvsp[0].expval , ENULL);
- else yyval.expval = yyvsp[0].expval ;
- }
- break;
- case 197:
- #line 931 "gram.in"
- { NO66("concatenation operator //");
- yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 199:
- #line 936 "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 200:
- #line 943 "gram.in"
- {
- exdo(ctls - ctlstack - 2, NPNULL, yyvsp[0].chval );
- NOEXT("DO without label");
- }
- break;
- case 201:
- #line 948 "gram.in"
- { exenddo(NPNULL); }
- break;
- case 202:
- #line 950 "gram.in"
- { exendif(); thiswasbranch = NO; }
- break;
- case 204:
- #line 953 "gram.in"
- { exelif(yyvsp[-2].expval ); lastwasbranch = NO; }
- break;
- case 205:
- #line 955 "gram.in"
- { exelse(); lastwasbranch = NO; }
- break;
- case 206:
- #line 957 "gram.in"
- { exendif(); lastwasbranch = NO; }
- break;
- case 207:
- #line 961 "gram.in"
- { exif(yyvsp[-1].expval ); }
- break;
- case 208:
- #line 965 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[-2].namval , yyvsp[0].chval ); }
- break;
- case 210:
- #line 970 "gram.in"
- { yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval ); }
- break;
- case 211:
- #line 974 "gram.in"
- { exequals((struct Primblock *)yyvsp[-2].expval , yyvsp[0].expval ); }
- break;
- case 212:
- #line 976 "gram.in"
- { exassign(yyvsp[0].namval , yyvsp[-2].labval ); }
- break;
- case 215:
- #line 980 "gram.in"
- { inioctl = NO; }
- break;
- case 216:
- #line 982 "gram.in"
- { exarif(yyvsp[-6].expval , yyvsp[-4].labval , yyvsp[-2].labval , yyvsp[0].labval ); thiswasbranch = YES; }
- break;
- case 217:
- #line 984 "gram.in"
- { excall(yyvsp[0].namval , LBNULL, 0, labarray); }
- break;
- case 218:
- #line 986 "gram.in"
- { excall(yyvsp[-2].namval , LBNULL, 0, labarray); }
- break;
- case 219:
- #line 988 "gram.in"
- { if(nstars < MAXLABLIST)
- excall(yyvsp[-3].namval , mklist(revchain(yyvsp[-1].chval )), nstars, labarray);
- else
- err("too many alternate returns");
- }
- break;
- case 220:
- #line 994 "gram.in"
- { exreturn(yyvsp[0].expval ); thiswasbranch = YES; }
- break;
- case 221:
- #line 996 "gram.in"
- { exstop(yyvsp[-2].ival , yyvsp[0].expval ); thiswasbranch = yyvsp[-2].ival ; }
- break;
- case 222:
- #line 1000 "gram.in"
- { yyval.labval = mklabel( convci(toklen, token) ); }
- break;
- case 223:
- #line 1004 "gram.in"
- { if(parstate == OUTSIDE)
- {
- newproc();
- startproc(ESNULL, CLMAIN);
- }
- }
- break;
- case 224:
- #line 1013 "gram.in"
- { exgoto(yyvsp[0].labval ); thiswasbranch = YES; }
- break;
- case 225:
- #line 1015 "gram.in"
- { exasgoto(yyvsp[0].namval ); thiswasbranch = YES; }
- break;
- case 226:
- #line 1017 "gram.in"
- { exasgoto(yyvsp[-4].namval ); thiswasbranch = YES; }
- break;
- case 227:
- #line 1019 "gram.in"
- { if(nstars < MAXLABLIST)
- putcmgo(putx(fixtype(yyvsp[0].expval )), nstars, labarray);
- else
- err("computed GOTO list too long");
- }
- break;
- case 230:
- #line 1031 "gram.in"
- { nstars = 0; yyval.namval = yyvsp[0].namval ; }
- break;
- case 231:
- #line 1035 "gram.in"
- { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval ,CHNULL) : CHNULL; }
- break;
- case 232:
- #line 1037 "gram.in"
- { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval , yyvsp[-2].chval ) : yyvsp[-2].chval ; }
- break;
- case 234:
- #line 1042 "gram.in"
- { if(nstars<MAXLABLIST) labarray[nstars++] = yyvsp[0].labval ; yyval.expval = 0; }
- break;
- case 235:
- #line 1046 "gram.in"
- { yyval.ival = 0; }
- break;
- case 236:
- #line 1048 "gram.in"
- { yyval.ival = 1; }
- break;
- case 237:
- #line 1052 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , CHNULL); }
- break;
- case 238:
- #line 1054 "gram.in"
- { yyval.chval = hookup(yyvsp[-2].chval , mkchain((char *)yyvsp[0].expval ,CHNULL) ); }
- break;
- case 239:
- #line 1058 "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 240:
- #line 1071 "gram.in"
- { intonly = YES; }
- break;
- case 241:
- #line 1075 "gram.in"
- { intonly = NO; }
- break;
- case 242:
- #line 1080 "gram.in"
- { endio(); }
- break;
- case 244:
- #line 1085 "gram.in"
- { ioclause(IOSUNIT, yyvsp[0].expval ); endioctl(); }
- break;
- case 245:
- #line 1087 "gram.in"
- { ioclause(IOSUNIT, ENULL); endioctl(); }
- break;
- case 246:
- #line 1089 "gram.in"
- { ioclause(IOSUNIT, IOSTDERR); endioctl(); }
- break;
- case 248:
- #line 1092 "gram.in"
- { doio(CHNULL); }
- break;
- case 249:
- #line 1094 "gram.in"
- { doio(CHNULL); }
- break;
- case 250:
- #line 1096 "gram.in"
- { doio(revchain(yyvsp[0].chval )); }
- break;
- case 251:
- #line 1098 "gram.in"
- { doio(revchain(yyvsp[0].chval )); }
- break;
- case 252:
- #line 1100 "gram.in"
- { doio(revchain(yyvsp[0].chval )); }
- break;
- case 253:
- #line 1102 "gram.in"
- { doio(CHNULL); }
- break;
- case 254:
- #line 1104 "gram.in"
- { doio(revchain(yyvsp[0].chval )); }
- break;
- case 255:
- #line 1106 "gram.in"
- { doio(CHNULL); }
- break;
- case 256:
- #line 1108 "gram.in"
- { doio(revchain(yyvsp[0].chval )); }
- break;
- case 258:
- #line 1115 "gram.in"
- { iostmt = IOBACKSPACE; }
- break;
- case 259:
- #line 1117 "gram.in"
- { iostmt = IOREWIND; }
- break;
- case 260:
- #line 1119 "gram.in"
- { iostmt = IOENDFILE; }
- break;
- case 262:
- #line 1126 "gram.in"
- { iostmt = IOINQUIRE; }
- break;
- case 263:
- #line 1128 "gram.in"
- { iostmt = IOOPEN; }
- break;
- case 264:
- #line 1130 "gram.in"
- { iostmt = IOCLOSE; }
- break;
- case 265:
- #line 1134 "gram.in"
- {
- ioclause(IOSUNIT, ENULL);
- ioclause(IOSFMT, yyvsp[0].expval );
- endioctl();
- }
- break;
- case 266:
- #line 1140 "gram.in"
- {
- ioclause(IOSUNIT, ENULL);
- ioclause(IOSFMT, ENULL);
- endioctl();
- }
- break;
- case 267:
- #line 1148 "gram.in"
- {
- ioclause(IOSUNIT, yyvsp[-1].expval );
- endioctl();
- }
- break;
- case 268:
- #line 1153 "gram.in"
- { endioctl(); }
- break;
- case 271:
- #line 1161 "gram.in"
- { ioclause(IOSPOSITIONAL, yyvsp[0].expval ); }
- break;
- case 272:
- #line 1163 "gram.in"
- { ioclause(IOSPOSITIONAL, ENULL); }
- break;
- case 273:
- #line 1165 "gram.in"
- { ioclause(IOSPOSITIONAL, IOSTDERR); }
- break;
- case 274:
- #line 1167 "gram.in"
- { ioclause(yyvsp[-1].ival , yyvsp[0].expval ); }
- break;
- case 275:
- #line 1169 "gram.in"
- { ioclause(yyvsp[-1].ival , ENULL); }
- break;
- case 276:
- #line 1171 "gram.in"
- { ioclause(yyvsp[-1].ival , IOSTDERR); }
- break;
- case 277:
- #line 1175 "gram.in"
- { yyval.ival = iocname(); }
- break;
- case 278:
- #line 1179 "gram.in"
- { iostmt = IOREAD; }
- break;
- case 279:
- #line 1183 "gram.in"
- { iostmt = IOWRITE; }
- break;
- case 280:
- #line 1187 "gram.in"
- {
- iostmt = IOWRITE;
- ioclause(IOSUNIT, ENULL);
- ioclause(IOSFMT, yyvsp[-1].expval );
- endioctl();
- }
- break;
- case 281:
- #line 1194 "gram.in"
- {
- iostmt = IOWRITE;
- ioclause(IOSUNIT, ENULL);
- ioclause(IOSFMT, ENULL);
- endioctl();
- }
- break;
- case 282:
- #line 1203 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].tagval , CHNULL); }
- break;
- case 283:
- #line 1205 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].tagval , yyvsp[-2].chval ); }
- break;
- case 284:
- #line 1209 "gram.in"
- { yyval.tagval = (tagptr) yyvsp[0].expval ; }
- break;
- case 285:
- #line 1211 "gram.in"
- { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval ,revchain(yyvsp[-3].chval )); }
- break;
- case 286:
- #line 1215 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , CHNULL); }
- break;
- case 287:
- #line 1217 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].tagval , CHNULL); }
- break;
- case 289:
- #line 1222 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , mkchain((char *)yyvsp[-2].expval , CHNULL) ); }
- break;
- case 290:
- #line 1224 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].tagval , mkchain((char *)yyvsp[-2].expval , CHNULL) ); }
- break;
- case 291:
- #line 1226 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , mkchain((char *)yyvsp[-2].tagval , CHNULL) ); }
- break;
- case 292:
- #line 1228 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].tagval , mkchain((char *)yyvsp[-2].tagval , CHNULL) ); }
- break;
- case 293:
- #line 1230 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].expval , yyvsp[-2].chval ); }
- break;
- case 294:
- #line 1232 "gram.in"
- { yyval.chval = mkchain((char *)yyvsp[0].tagval , yyvsp[-2].chval ); }
- break;
- case 295:
- #line 1236 "gram.in"
- { yyval.tagval = (tagptr) yyvsp[0].expval ; }
- break;
- case 296:
- #line 1238 "gram.in"
- { yyval.tagval = (tagptr) yyvsp[-1].expval ; }
- break;
- case 297:
- #line 1240 "gram.in"
- { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval , mkchain((char *)yyvsp[-3].expval , CHNULL) ); }
- break;
- case 298:
- #line 1242 "gram.in"
- { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval , mkchain((char *)yyvsp[-3].tagval , CHNULL) ); }
- break;
- case 299:
- #line 1244 "gram.in"
- { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval , revchain(yyvsp[-3].chval )); }
- break;
- case 300:
- #line 1248 "gram.in"
- { startioctl(); }
- break;
- #line 2528 "y.tab.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
- yyvsp -= yym;
- yym = yylhs[yyn];
- if (yystate == 0 && yym == 0)
- {
- #ifdef YYDEBUG
- if (yydebug)
- printf("yydebug: after reduction, shifting from state 0 to\
- state %d\n", 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("yydebug: state %d, reading %d (%s)\n",
- 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];
- #ifdef YYDEBUG
- if (yydebug)
- printf("yydebug: after reduction, shifting from state %d \
- to state %d\n", *yyssp, yystate);
- #endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
- yyoverflow:
- yyerror("yacc stack overflow");
- yyabort:
- return (1);
- yyaccept:
- return (0);
- }
-