home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_c / f2c.lha / f2c_ami.zoo / src / gram.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-04-28  |  81.8 KB  |  2,584 lines

  1. #ifndef lint
  2. char yysccsid[] = "@(#)yaccpar    1.4 (Berkeley) 02/25/90";
  3. #endif
  4. #line 124 "gram.in"
  5. #    include "defs.h"
  6. #    include "p1defs.h"
  7.  
  8. static int nstars;            /* Number of labels in an
  9.                        alternate return CALL */
  10. static int ndim;
  11. static int vartype;
  12. int new_dcl;
  13. static ftnint varleng;
  14. static struct Dims dims[MAXDIM+1];
  15. static struct Labelblock *labarray[MAXLABLIST];    /* Labels in an alternate
  16.                            return CALL */
  17.  
  18. /* The next two variables are used to verify that each statement might be reached
  19.    during runtime.   lastwasbranch   is tested only in the defintion of the
  20.    stat:   nonterminal. */
  21.  
  22. int lastwasbranch = NO;
  23. static int thiswasbranch = NO;
  24. extern ftnint yystno;
  25. extern flag intonly;
  26. static chainp datastack;
  27. extern long laststfcn, thisstno;
  28. extern int can_include;    /* for netlib */
  29.  
  30. ftnint convci();
  31. Addrp nextdata();
  32. expptr mklogcon(), mkaddcon(), mkrealcon(), mkstrcon(), mkbitcon();
  33. expptr mkcxcon();
  34. struct Listblock *mklist();
  35. struct Listblock *mklist();
  36. struct Impldoblock *mkiodo();
  37. Extsym *comblock();
  38. #define ESNULL (Extsym *)0
  39. #define NPNULL (Namep)0
  40. #define LBNULL (struct Listblock *)0
  41. extern void freetemps(), make_param();
  42.  
  43.  static void
  44. pop_datastack() {
  45.     chainp d0 = datastack;
  46.     if (d0->datap)
  47.         curdtp = (chainp)d0->datap;
  48.     datastack = d0->nextp;
  49.     d0->nextp = 0;
  50.     frchain(&d0);
  51.     }
  52.  
  53. #line 176 "gram.in"
  54. typedef union    {
  55.     int ival;
  56.     ftnint lval;
  57.     char *charpval;
  58.     chainp chval;
  59.     tagptr tagval;
  60.     expptr expval;
  61.     struct Labelblock *labval;
  62.     struct Nameblock *namval;
  63.     struct Eqvchain *eqvval;
  64.     Extsym *extval;
  65.     } YYSTYPE;
  66. #line 67 "y.tab.c"
  67. #define SEOS 1
  68. #define SCOMMENT 2
  69. #define SLABEL 3
  70. #define SUNKNOWN 4
  71. #define SHOLLERITH 5
  72. #define SICON 6
  73. #define SRCON 7
  74. #define SDCON 8
  75. #define SBITCON 9
  76. #define SOCTCON 10
  77. #define SHEXCON 11
  78. #define STRUE 12
  79. #define SFALSE 13
  80. #define SNAME 14
  81. #define SNAMEEQ 15
  82. #define SFIELD 16
  83. #define SSCALE 17
  84. #define SINCLUDE 18
  85. #define SLET 19
  86. #define SASSIGN 20
  87. #define SAUTOMATIC 21
  88. #define SBACKSPACE 22
  89. #define SBLOCK 23
  90. #define SCALL 24
  91. #define SCHARACTER 25
  92. #define SCLOSE 26
  93. #define SCOMMON 27
  94. #define SCOMPLEX 28
  95. #define SCONTINUE 29
  96. #define SDATA 30
  97. #define SDCOMPLEX 31
  98. #define SDIMENSION 32
  99. #define SDO 33
  100. #define SDOUBLE 34
  101. #define SELSE 35
  102. #define SELSEIF 36
  103. #define SEND 37
  104. #define SENDFILE 38
  105. #define SENDIF 39
  106. #define SENTRY 40
  107. #define SEQUIV 41
  108. #define SEXTERNAL 42
  109. #define SFORMAT 43
  110. #define SFUNCTION 44
  111. #define SGOTO 45
  112. #define SASGOTO 46
  113. #define SCOMPGOTO 47
  114. #define SARITHIF 48
  115. #define SLOGIF 49
  116. #define SIMPLICIT 50
  117. #define SINQUIRE 51
  118. #define SINTEGER 52
  119. #define SINTRINSIC 53
  120. #define SLOGICAL 54
  121. #define SNAMELIST 55
  122. #define SOPEN 56
  123. #define SPARAM 57
  124. #define SPAUSE 58
  125. #define SPRINT 59
  126. #define SPROGRAM 60
  127. #define SPUNCH 61
  128. #define SREAD 62
  129. #define SREAL 63
  130. #define SRETURN 64
  131. #define SREWIND 65
  132. #define SSAVE 66
  133. #define SSTATIC 67
  134. #define SSTOP 68
  135. #define SSUBROUTINE 69
  136. #define STHEN 70
  137. #define STO 71
  138. #define SUNDEFINED 72
  139. #define SWRITE 73
  140. #define SLPAR 74
  141. #define SRPAR 75
  142. #define SEQUALS 76
  143. #define SCOLON 77
  144. #define SCOMMA 78
  145. #define SCURRENCY 79
  146. #define SPLUS 80
  147. #define SMINUS 81
  148. #define SSTAR 82
  149. #define SSLASH 83
  150. #define SPOWER 84
  151. #define SCONCAT 85
  152. #define SAND 86
  153. #define SOR 87
  154. #define SNEQV 88
  155. #define SEQV 89
  156. #define SNOT 90
  157. #define SEQ 91
  158. #define SLT 92
  159. #define SGT 93
  160. #define SLE 94
  161. #define SGE 95
  162. #define SNE 96
  163. #define SENDDO 97
  164. #define SWHILE 98
  165. #define SSLASHD 99
  166. #define YYERRCODE 256
  167. short yylhs[] = {                                        -1,
  168.     0,    0,   54,   54,   54,   54,   54,   54,   54,    1,
  169.    55,   55,   55,   55,   55,   55,   55,   59,   51,   32,
  170.    52,   52,   60,   60,   61,   61,   62,   62,   25,   25,
  171.    25,   26,   26,   33,   33,   16,   56,   56,   56,   56,
  172.    56,   56,   56,   56,   56,   56,   56,   56,    9,    9,
  173.     9,   73,    6,    7,    8,    8,    8,    8,    8,    8,
  174.     8,    8,    8,    8,    8,   15,   15,   15,   49,   49,
  175.    49,   49,   50,   50,   63,   63,   64,   64,   65,   65,
  176.    79,   53,   53,   66,   66,   80,   81,   75,   82,   84,
  177.    76,   76,   83,   83,   44,   44,   44,   69,   69,   85,
  178.    85,   71,   71,   86,   35,   17,   17,   18,   18,   74,
  179.    74,   89,   87,   87,   88,   88,   42,   42,   90,   90,
  180.     2,   67,   67,   91,   91,   94,   92,   93,   93,   95,
  181.    95,   10,   68,   68,   96,   19,   19,   70,   20,   20,
  182.    21,   21,   37,   37,   37,   38,   38,   38,   38,   38,
  183.    38,   38,   38,   38,   38,   38,   38,   38,   38,   11,
  184.    11,   12,   12,   12,   12,   12,   12,   36,   36,   36,
  185.    36,   31,   39,   39,   43,   43,   47,   47,   47,   47,
  186.    47,   47,   47,   46,   48,   48,   48,   40,   40,   41,
  187.    41,   41,   41,   41,   41,   41,   41,   57,   57,   57,
  188.    57,   57,   57,   57,   57,   57,   98,   22,   23,   23,
  189.    97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
  190.    97,    3,   99,  100,  100,  100,  100,   72,   72,   34,
  191.    24,   24,   45,   45,   13,   13,   27,   27,   58,   77,
  192.    78,  101,  102,  102,  102,  102,  102,  102,  102,  102,
  193.   102,  102,  102,  102,  102,  102,  103,  110,  110,  110,
  194.   105,  112,  112,  112,  107,  107,  104,  104,  113,  113,
  195.   114,  114,  114,  114,  114,  114,   14,  106,  108,  109,
  196.   109,   28,   28,    5,    5,   29,   29,   29,   30,   30,
  197.    30,   30,   30,   30,    4,    4,    4,    4,    4,  111,
  198. };
  199. short yylen[] = {                                         2,
  200.     0,    3,    2,    2,    2,    3,    3,    2,    1,    1,
  201.     3,    4,    3,    4,    4,    5,    3,    0,    1,    1,
  202.     0,    1,    2,    3,    1,    3,    1,    3,    0,    2,
  203.     3,    1,    3,    1,    1,    1,    1,    1,    1,    1,
  204.     1,    1,    1,    1,    1,    2,    1,    5,    7,    5,
  205.     5,    0,    2,    1,    1,    1,    1,    1,    1,    1,
  206.     1,    1,    1,    1,    1,    0,    4,    6,    3,    4,
  207.     5,    3,    1,    3,    3,    3,    3,    3,    3,    3,
  208.     3,    1,    3,    3,    3,    0,    6,    0,    0,    0,
  209.     2,    3,    1,    3,    1,    2,    1,    1,    3,    1,
  210.     1,    1,    3,    3,    2,    1,    5,    1,    3,    0,
  211.     3,    0,    2,    3,    1,    3,    1,    1,    1,    3,
  212.     1,    3,    3,    4,    1,    0,    2,    1,    3,    1,
  213.     3,    1,    1,    2,    4,    1,    3,    0,    0,    1,
  214.     1,    3,    1,    3,    1,    1,    1,    3,    3,    3,
  215.     3,    2,    3,    3,    3,    3,    3,    2,    3,    1,
  216.     1,    1,    1,    1,    1,    1,    1,    1,    2,    4,
  217.     5,    5,    0,    1,    1,    1,    1,    1,    1,    1,
  218.     1,    1,    1,    5,    1,    1,    1,    1,    3,    1,
  219.     1,    3,    3,    3,    3,    2,    3,    1,    7,    4,
  220.     1,    2,    2,    6,    2,    2,    5,    3,    1,    4,
  221.     4,    5,    2,    1,    1,   10,    1,    3,    4,    3,
  222.     3,    1,    1,    3,    3,    7,    7,    0,    1,    3,
  223.     1,    3,    1,    2,    1,    1,    1,    3,    0,    0,
  224.     0,    1,    2,    2,    2,    2,    2,    2,    2,    3,
  225.     4,    4,    2,    3,    1,    3,    3,    1,    1,    1,
  226.     3,    1,    1,    1,    1,    1,    3,    3,    1,    3,
  227.     1,    1,    1,    2,    2,    2,    1,    3,    3,    4,
  228.     4,    1,    3,    1,    5,    1,    1,    1,    3,    3,
  229.     3,    3,    3,    3,    1,    3,    5,    5,    5,    0,
  230. };
  231. short yydefred[] = {                                      1,
  232.     0,    9,   10,    0,    0,    8,    0,  223,  239,   64,
  233.   258,   18,  239,   61,  264,  138,   57,  239,   86,   59,
  234.    63,  239,   58,  239,  239,  239,  260,  239,    0,  138,
  235.   138,   47,   18,  239,  239,  239,  239,  239,  138,  262,
  236.    55,  138,   60,  133,  263,  138,  235,  239,   18,  239,
  237.    56,  239,  259,    0,   65,  236,   18,   62,  239,  201,
  238.     0,    0,   54,    0,  239,    0,    0,    3,    4,    5,
  239.     0,    0,    0,    0,    0,    0,  198,    0,    0,  214,
  240.   215,  242,    0,    0,    0,    0,    0,  239,  239,    2,
  241.    36,    6,    0,    0,    0,    0,  213,   88,    0,  205,
  242.     0,    7,  206,   20,   19,    0,    0,    0,    0,    0,
  243.     0,    0,    0,    0,  126,    0,    0,    0,    0,  300,
  244.     0,    0,   73,  100,  101,    0,   98,    0,  300,   18,
  245.   229,    0,  240,   53,    0,   88,    0,    0,    0,    0,
  246.     0,    0,    0,   88,  126,    0,  134,  203,  202,    0,
  247.     0,  179,  180,  181,  182,  187,  186,  185,  177,  178,
  248.     0,  160,  161,  245,  246,    0,  190,    0,    0,  191,
  249.   183,  243,    0,  247,  266,    0,    0,    0,    0,    0,
  250.   300,  300,  222,    0,   22,   13,  230,    0,   69,    0,
  251.     0,   84,    0,    0,    0,    0,   17,    0,   79,   75,
  252.     0,  121,  224,    0,    0,    0,    0,  122,    0,    0,
  253.    77,    0,    0,  300,    0,  188,    0,  278,    0,    0,
  254.     0,  146,    0,  143,  220,  145,  147,    0,    0,    0,
  255.   279,    0,  138,    0,    0,   90,  221,  218,    0,    0,
  256.     0,  231,   72,    0,   76,   78,   80,   85,  123,    0,
  257.     0,  169,    0,  277,  272,  273,    0,    0,    0,  269,
  258.     0,    0,    0,    0,    0,    0,    0,    0,    0,  282,
  259.     0,  284,    0,    0,    0,  254,    0,    0,    0,    0,
  260.   256,  257,  261,    0,  112,  105,   70,    0,  108,    0,
  261.   106,    0,  209,  200,    0,  241,    0,   30,   35,    0,
  262.    34,   32,   82,    0,   15,    0,  119,    0,    0,    0,
  263.     0,  127,    0,    0,  102,    0,  281,  280,    0,   12,
  264.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  265.     0,    0,  162,  164,  163,  166,  165,  167,    0,    0,
  266.    74,   99,   14,    0,   52,    0,    0,    0,    0,    0,
  267.   234,  219,    0,    0,    0,    0,    0,    0,    0,    0,
  268.   275,  276,    0,    0,  268,    0,    0,    0,    0,    0,
  269.     0,  267,    0,    0,    0,    0,    0,    0,    0,    0,
  270.     0,    0,    0,  212,    0,    0,    0,    0,   89,    0,
  271.     0,    0,    0,   31,    0,   81,    0,    0,    0,    0,
  272.     0,  207,  132,    0,    0,  128,    0,   48,    0,  189,
  273.     0,   23,    0,   25,  144,    0,    0,    0,    0,    0,
  274.     0,    0,    0,    0,    0,    0,   16,    0,    0,   67,
  275.    50,    0,   51,    0,    0,  175,    0,   93,   97,  176,
  276.    91,  232,   71,    0,  136,    0,    0,    0,    0,  270,
  277.     0,  283,    0,    0,    0,    0,  292,    0,  294,    0,
  278.   290,    0,  111,    0,  117,    0,  115,  113,    0,  109,
  279.    90,    0,    0,    0,    0,  204,   33,   83,    0,    0,
  280.   120,    0,    0,  124,    0,    0,  103,    0,   24,    0,
  281.     0,    0,  241,   92,   96,    0,    0,    0,  171,    0,
  282.     0,    0,    0,    0,    0,    0,    0,  114,    0,    0,
  283.     0,  210,    0,  199,  226,    0,    0,  131,  129,   28,
  284.    26,  184,   49,   68,   95,   94,  137,  172,  285,  298,
  285.   299,  297,    0,  116,  107,   87,    0,    0,    0,  216,
  286. };
  287. short yydgoto[] = {                                       1,
  288.     4,  307,  184,  275,  270,   61,   62,   63,   64,  404,
  289.   221,  340,   65,  257,  134,   92,  289,  290,  444,  356,
  290.   357,  293,  294,  240,  197,  300,  473,  271,  276,  277,
  291.   252,  150,  302,   66,  189,  222,  278,  224,  359,  168,
  292.   216,  467,  437,  438,  242,  226,  227,  171,   67,  125,
  293.   185,  186,  304,    5,   68,   69,   70,   93,   94,  320,
  294.   413,  414,   71,   72,   73,   74,   75,   76,  126,   96,
  295.   314,  132,  428,  286,  191,  349,  194,  392,  199,   98,
  296.   192,  471,  441,  350,  127,  315,  385,  468,  386,  308,
  297.   208,  209,  405,  210,  406,  147,   77,   78,   79,   80,
  298.    81,   82,   83,  172,   84,   85,  178,   86,   87,   88,
  299.   218,   89,  259,  260,
  300. };
  301. short yysindex[] = {                                      0,
  302.     4,    0,    0, 1152,   22,    0,   34,    0,    0,    0,
  303.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  304.     0,    0,    0,    0,    0,    0,    0,    0,   37,    0,
  305.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  306.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  307.     0,    0,    0,  198,    0,    0,    0,    0,    0,    0,
  308.   -14,  -47,    0,  -10,    0,  -13,   99,    0,    0,    0,
  309.   107,  124,  132,  143,  144,  146,    0, 1495,   37,    0,
  310.     0,    0,  690,  159, 1386,  159,  162,    0,    0,    0,
  311.     0,    0,  235,   37,   37,  198,    0,    0,  143,    0,
  312.   189,    0,    0,    0,    0,  193,  196,   37,   37,  265,
  313.    37,  203,  204,  210,    0,   37,  211, 1396,   37,    0,
  314.   305,  306,    0,    0,    0,  299,    0,   37,    0,    0,
  315.     0,   37,    0,    0,   37,    0,  305,  720,   37,  110,
  316.    37,   37,  196,    0,    0,   37,    0,    0,    0,  314,
  317.   225,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  318.  1375,    0,    0,    0,    0, 1410,    0,  508,    0,    0,
  319.     0,    0, 1375,    0,    0,    0,  175,  331, 1267, 1267,
  320.     0,    0,    0,  344,    0,    0,    0,  345,    0,   37,
  321.   182,    0,   30,  265,  305,  116,    0,   37,    0,    0,
  322.   193,    0,    0,  143,  265,  305,  305,    0,  354,  839,
  323.     0,   37, 1410,    0,  508,    0,  361,    0,  305,  305,
  324.   305,    0, 1699,    0,    0,    0,    0,  356,  198,  193,
  325.     0,   37,    0, 1278,  345,    0,    0,    0,  265,  104,
  326.  1699,    0,    0,  143,    0,    0,    0,    0,    0,  360,
  327.   305,    0,  305,    0,    0,    0, 1221,  631,  112,    0,
  328.   353, 1410, 1410, 1410, 1410, 1410, 1280,  192,  192,    0,
  329.   367,    0,  192, 1267,  400,    0,  401, 1699,  405,    0,
  330.     0,    0,    0,   37,    0,    0,    0,  182,    0,  -41,
  331.     0,  415,    0,    0,  416,    0, 1511,    0,    0,  227,
  332.     0,    0,    0,  249,    0,  417,    0,  256, 1533, 1555,
  333.   479,    0,  422,  260,    0, 1447,    0,    0,  145,    0,
  334.  1577,  423,  803,  418,  305,  305,  305,  305,  305,  305,
  335.   305,  305,    0,    0,    0,    0,    0,    0,  305,  305,
  336.     0,    0,    0,  193,    0, 1232, 1699,  -47,  106, 1420,
  337.     0,    0, 1245,   37,   37,  432,  434, 1699,  442, 1699,
  338.     0,    0, 1699,    0,    0, 1375,  353,  353,  353,  637,
  339.   -12,    0,  444,  367,  192,  367,  447,  452, 1599,  458,
  340.  1267, 1267, 1267,    0,  267, 1256,  459,  182,    0,  305,
  341.   305,  143,  440,    0,   15,    0,   37,  265,  143,  265,
  342.   265,    0,    0,  457,  281,    0,  305,    0,   37,    0,
  343.   464,    0,  287,    0,    0,  305,  418,  418,  418,  833,
  344.   803, 1733,  665,  665,  300,  794,    0,  345,  466,    0,
  345.     0, 1420,    0,  305, 1825,    0,  460,    0,    0,    0,
  346.     0,    0,    0,  468,    0,  483,  305,  305,  508,    0,
  347.   192,    0, 1267, 1267,    0, 1267,    0,    0,    0,    0,
  348.     0,    0,    0, 1256,    0, 1663,    0,    0,  182,    0,
  349.     0, 1621,  480, 1699,   30,    0,    0,    0,  329,  305,
  350.     0,  489,  479,    0,  479, 1699,    0,  530,    0,  547,
  351.   500,  -47,    0,    0,    0, 1420,   37,  305,    0, 1699,
  352.   510,  511,  183,  520,  522,  533,  500,    0, 1256,  534,
  353.   -35,    0,  305,    0,    0, 1699,  265,    0,    0,    0,
  354.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  355.     0,    0, 1699,    0,    0,    0, 1699,  532,  265,    0,
  356. };
  357. short yyrindex[] = {                                      0,
  358.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  359.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  360.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  361.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  362.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  363.     0,    0,    0,  610,    0,    0,    0,    0,    0,    0,
  364.   306,  229,    0,  612,    0,  615,   40,    0,    0,    0,
  365.   617,  628,  644,   95,  651,  652,    0,    0,    0,    0,
  366.     0,    0,    0,    0,    0,    0,  654,    0,    0,    0,
  367.     0,    0,    0,  657,    0,    0,    0,    0,   26,    0,
  368.     0,    0,    0,    0,    0,  661,    0,    0,    0,    0,
  369.     0,    0,    0,    0,    0,    0,    0,    0,   77,    0,
  370.   662,    0,    0,    0,    0,  663,    0,    0,    0,    0,
  371.     0,    0,    0,    0,    0,    0,  662,    0,  223,    0,
  372.     0,    0,    0,    0,    0,    0,    0,    0,    0,  555,
  373.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  374.     0,    0,    0,    0,    0,    0,    0,    0,  392,    0,
  375.     0,    0,    0,    0,    0,  470,  671,  678,  679,    0,
  376.     0,    0,    0,    0,    0,    0,    0,   44,    0,    0,
  377.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  378.   661,    0,    0,  177,    0,    0,    0,    0,   72,    0,
  379.     0,    0,    0,    0,   74,    0,  687,    0,    0,    0,
  380.     0,    0,  157,    0,    0,    0,    0,    0,    0,  661,
  381.     0,    0,    0,    0,   16,    0,    0,    0,    0,    0,
  382.   336,    0,    0,  306,    0,    0,    0,    0,    0,    0,
  383.   292,    0,    0,    0,    0,    0,    0,  613,    0,    0,
  384.    62,    0,    0,    0,    0,    0,  613,    0,    0,    0,
  385.   692,    0,    0,    0,  706,    0,  707,    0, 1066,  917,
  386.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  387.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  388.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  389.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  390.     0, 1643,  343,  762,    0,    0,    0,    0,    0,    0,
  391.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  392.     0,    0,    0,  661,    0,    0,   33,   27,    0,    0,
  393.     0,    0,    0,    0,    0,    0,  635,  136,    0,  723,
  394.     0,    0,  348,  290,    0,    0,  268,  433,  542,   17,
  395.   167,    0,    0,  735,    0,  736,    0,    0,    0, 1643,
  396.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  397.     0,   38,    0,    0,    0,    0,    0,    0, 1364,    0,
  398.     0,    0,    0,  358,    0,    0,    0,    0,    0,    0,
  399.   366,    0,    0,    0,    0,    0,  845,  868,  891,  582,
  400.   691,  446,  187,  980,  485,  974,    0,   16,    0,    0,
  401.     0,    0,    0,    0,    0,    0,  -23,    0,    0,    0,
  402.     0,    0,    0,   21,    0,  739,    0,  666,  383,    0,
  403.     0,    0,    0,    0,  951,    0,    0, 1006,    0, 1026,
  404.     0, 1049,    0,    0,    0,  384,    0,    0,    0,    0,
  405.     0,    0,    9,   82,    0,    0,    0,    0,    0,    0,
  406.     0,    0,    0,    0,    0,  409,    0,    0,    0,    0,
  407.  1716,   27,    0,    0,    0,    0,    0,  667,    0,  410,
  408.     0,    0, 1489,    0,    0,    0, 1682,    0,    0,    0,
  409.     0,    0,    0,    0,    0,  737,    0,    0,    0,    0,
  410.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  411.     0,    0,  384,    0,    0,    0,   87,    0,    0,    0,
  412. };
  413. short yygindex[] = {                                      0,
  414.     0, -101,    0, -228, -318,  544,    0,    0,    0,  259,
  415.    31,    0,    0,    0, -336,    0, -338,  455,    0,    0,
  416.     0,  -93,  310,    0, -181,    0,    0,   64,  587,  488,
  417.   335,  -29,  387,    0, -131,  421,  275, -166, -118,  -92,
  418.   307,  266, -269,  293,  438, -174,  -27,    0,    0,   79,
  419.    -8,  673,    0,    0,    0,    0,    0, 1461,    5,    0,
  420.     0,  296,    0,    0,    0,    0,    0,    0,    0,  -15,
  421.     0,  -63,    0, -234,  668,  322,  664, -345,  655,    0,
  422.   659,    0,  373,    0,  570,  398,    0,  347,    0,  414,
  423.   684,    0,    0,    0,  323,    0,  763,    0,    0,    0,
  424.     0,    0,    0,  380,    0,    0,    0,    0,    0,    0,
  425.   -96,    0,    0,  486,
  426. };
  427. #define YYTABLESIZE 1839
  428. short yytable[] = {                                     105,
  429.   348,  430,  225,  140,  280,  280,    3,  243,  203,  208,
  430.   144,  431,  279,  279,  107,  108,  110,  197,  237,  305,
  431.   106,  135,   90,  115,  124,  215,  116,   66,  104,  130,
  432.   117,  240,  231,  241,  133,  193,  388,  109,   91,  228,
  433.    38,  389,  432,  104,  110,  377,  241,  536,  343,  470,
  434.   104,  228,  322,  119,   95,  170,  452,  170,  287,   95,
  435.   138,  128,  196,  131,  105,  187,  188,  135,  258,  262,
  436.   263,  264,  125,  261,  300,   95,  241,   21,  200,  105,
  437.   267,  204,  237,  208,  282,  283,  211,  238,  136,  105,
  438.   170,  197,  296,  110,  197,   42,  299,  110,  105,  280,
  439.   201,  197,  233,  135,   66,  235,  241,  380,  228,  188,
  440.   241,  245,  246,  166,  110,  166,  250,  317,  318,  230,
  441.   316,  110,  228,  228,  228,   66,  110,  292,  110,  104,
  442.   470,  241,  452,  170,  232,  228,  196,  351,  170,  196,
  443.   306,  196,  196,  196,  196,  170,  196,  524,  166,  125,
  444.    21,  300,  457,  459,  461,  523,  237,  174,  411,  237,
  445.   188,  238,  427,  295,  238,  495,  301,  192,  228,  367,
  446.   368,  369,  370,  371,  190,  439,  139,  225,  352,  322,
  447.   354,  353,  313,  432,  141,  170,  365,  155,  104,  366,
  448.   298,  166,  122,  492,  123,  104,  166,  299,  266,  124,
  449.   155,  142,  105,  166,  433,  104,  280,  280,  280,  143,
  450.   141,  104,  174,  141,  458,  460,  462,  345,  244,  412,
  451.   131,  145,  443,  344,  457,  459,  525,  461,  146,   66,
  452.   155,  174,  173,  174,  170,  170,  170,  170,  170,  180,
  453.   183,  192,   66,  166,  192,  266,  192,  192,  268,  491,
  454.   228,  192,  269,  339,  384,  288,  251,  439,  391,    2,
  455.   155,  155,  195,  155,  155,  268,  196,  322,  193,  198,
  456.   202,  339,   66,  449,  155,  155,  205,  206,  280,  280,
  457.   122,  280,  123,  207,  212,  155,  458,  460,  266,  507,
  458.   267,  266,  166,  166,  166,  166,  166,  266,  481,  482,
  459.   253,  394,   66,  267,  395,  229,   66,  229,  339,  152,
  460.   153,  154,  155,  156,  157,  158,  159,  160,  104,  228,
  461.   436,  439,  440,  396,  188,  445,  397,  339,  475,  501,
  462.   399,  373,  374,  400,  408,  480,  376,  409,  170,  339,
  463.   339,  463,  193,  158,  464,  193,  266,  193,  193,  193,
  464.   193,  339,  193,  339,  339,  484,  158,  502,  485,  504,
  465.   505,  489,  506,  267,  490,  301,  139,  267,  173,  189,
  466.   189,  189,  189,  189,  189,  510,  229,  339,  219,  313,
  467.   435,  325,  326,  327,  162,  163,  158,  251,  339,  169,
  468.   339,  176,  244,  339,  220,  223,  166,  266,  266,  266,
  469.   266,  266,  436,  515,  440,  436,  400,  440,  273,  339,
  470.   233,  223,  241,  233,  284,  538,  158,  158,  285,  158,
  471.   158,  503,  274,  503,  503,  274,  503,  311,  158,  158,
  472.   158,  158,  130,  194,  319,  130,  264,  540,  341,  503,
  473.    27,  158,  355,   27,  375,  295,  156,  339,  339,  339,
  474.   339,  339,  339,  339,  339,  339,  339,  271,  118,  156,
  475.   271,  118,  435,  174,  177,  179,  436,  527,  440,  297,
  476.   265,  188,  188,  188,  188,  188,  188,  381,  382,  266,
  477.   309,  310,  383,  104,  142,  148,  104,  142,  390,  156,
  478.   398,  391,  403,  321,  323,  324,  339,  407,  148,  151,
  479.   416,  327,  339,  167,  339,  167,  446,  194,  347,  476,
  480.   194,  447,  194,  194,  194,  194,  339,  194,  448,  156,
  481.   156,  451,  156,  156,  453,  358,  435,  360,  148,  454,
  482.   339,  363,  156,  156,  156,  456,  469,  483,  167,  488,
  483.   493,  496,  195,  520,  156,  497,  339,  265,  379,  188,
  484.   188,  188,  188,  188,  188,  168,  498,  513,  148,  148,
  485.   411,  148,  148,  339,  148,  148,  517,  339,  168,  148,
  486.   148,  148,  148,  148,  522,  148,  148,  148,  148,  148,
  487.   148,  167,  159,  148,  528,  529,  167,  162,  163,  262,
  488.   263,  264,  265,  167,  530,  159,  531,  272,  168,  417,
  489.   418,  419,  420,  421,  422,  423,  424,  532,  535,  539,
  490.    45,  291,   37,  425,  426,  217,  195,   39,  303,  195,
  491.   321,  195,  195,  195,  195,  159,  195,  241,   40,  168,
  492.   168,  168,  168,  167,  168,  168,  168,  168,  168,  168,
  493.   168,  168,  168,  168,   41,  168,  168,  168,  168,  168,
  494.   168,   43,   44,  168,  255,  159,  159,   21,  159,  159,
  495.   466,   29,  173,   46,  472,  474,  159,  159,  159,  159,
  496.   159,  248,  159,  159,  159,  159,  159,  159,  249,  253,
  497.   159,  486,  167,  167,  167,  167,  167,   11,  272,  272,
  498.   271,  157,  250,  272,  152,  153,  154,  155,  156,  157,
  499.   158,  159,  160,  104,  157,  364,  287,  288,  291,  140,
  500.   162,  163,  262,  263,  264,  265,  162,  163,  262,  263,
  501.   264,  500,  223,  211,  152,  153,  154,  155,  156,  157,
  502.   158,  159,  160,  104,  157,  252,  251,  227,  466,  170,
  503.   173,  518,  387,  173,  162,  163,  325,  326,  327,  328,
  504.   329,  330,  170,  312,  516,  333,  334,  335,  336,  337,
  505.   338,  378,  152,  161,  157,  157,  281,  157,  157,  162,
  506.   163,  164,  223,  165,  534,  152,  157,  157,  157,  157,
  507.   499,  477,  170,  533,  514,  521,  167,  537,  526,  157,
  508.   442,  217,  511,  219,  238,  272,  234,  247,  342,  162,
  509.   163,  239,  248,  236,  494,  152,  487,  519,  291,  220,
  510.   508,  479,    0,  170,  170,  170,  170,  478,  170,  170,
  511.   170,  170,  170,  170,  170,  170,  170,  170,  249,  170,
  512.   170,  170,  170,  170,  170,  152,  152,  170,  152,  152,
  513.   149,  152,  152,  152,  152,  149,  152,  152,  152,  152,
  514.   152,  450,  152,  152,  152,  152,  152,  152,  149,   10,
  515.   152,    0,    0,   14,    0,    0,   17,    0,  150,   20,
  516.    21,  272,   23,  162,  163,  325,  326,  327,  328,    0,
  517.     0,  150,  162,  163,  325,  326,  327,  328,  149,  291,
  518.    41,  151,   43,  333,  334,  335,  336,  337,  338,    0,
  519.     0,   51,    0,    0,  151,   55,    0,    0,    0,    0,
  520.    58,  150,  162,  163,  325,  326,  327,  295,  149,  149,
  521.     0,  149,  149,    0,  149,  149,  149,  149,    0,  149,
  522.   149,  149,  149,  149,  151,  149,  149,  149,  149,  149,
  523.   149,  150,  150,  149,  150,  150,    0,  150,  150,  150,
  524.   150,  296,  150,  150,  150,  150,  150,    0,  150,  150,
  525.   150,  150,  150,  150,  151,  151,  150,  151,  151,    0,
  526.   151,  151,  151,  151,  153,  151,  151,  151,  151,  151,
  527.   154,  151,  151,  151,  151,  151,  151,  153,    0,  151,
  528.     0,  145,    0,  154,  295,    0,  145,  145,  145,  145,
  529.   145,  145,  145,  145,  145,  145,  291,  145,  145,  145,
  530.   145,  145,  145,    0,    0,    0,    0,  153,    0,    0,
  531.     0,    0,    0,  154,    0,  144,  293,    0,  296,    0,
  532.   144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
  533.     0,  144,  144,  144,  144,  144,  144,  153,  153,  289,
  534.   153,  153,    0,  154,  154,    0,  154,  154,    0,  153,
  535.   153,  153,  153,    0,    0,    0,  286,  154,  154,    0,
  536.     0,    0,  153,    0,    0,    0,    0,    0,  154,    0,
  537.     0,    0,    0,  291,    0,  143,  143,  143,  143,  143,
  538.   143,  143,  143,  143,  143,    0,  143,  143,  143,  143,
  539.   143,  143,    0,  293,    0,  143,  143,  143,  143,  143,
  540.   143,  143,  143,  143,  143,    0,  143,  143,  143,  143,
  541.   143,  143,    0,    0,    0,    0,  289,    0,  143,  143,
  542.   143,  143,  143,  143,  143,  143,  143,  143,    0,  143,
  543.   143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  544.   143,  143,  143,  143,  143,    6,  143,  143,  143,  143,
  545.   143,  143,    0,    0,    0,    0,    0,    0,    0,    7,
  546.     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
  547.    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
  548.    28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
  549.    38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
  550.    48,   49,    0,   50,   51,   52,   53,   54,   55,   56,
  551.    57,    0,    0,   58,   59,  152,  153,  154,  155,  156,
  552.   157,  158,  159,  160,  104,    0,  152,  153,  154,  155,
  553.   156,  157,  158,  159,  160,  104,    0,    0,   60,  152,
  554.   153,  154,  155,  156,  157,  158,  159,  160,  104,    0,
  555.   152,  153,  154,  155,  156,  157,  158,  159,  160,  104,
  556.     0,  152,  153,  154,  155,  156,  157,  158,  159,  160,
  557.   104,    0,  152,  153,  154,  155,  156,  157,  158,  159,
  558.   160,  104,    0,    0,  219,    0,    0,    0,    0,    0,
  559.   162,  163,  361,    0,  362,  219,    0,    0,    0,    0,
  560.   220,  162,  163,  429,    0,    0,    0,    0,  219,    0,
  561.     0,  220,    0,    0,  162,  163,  239,    0,    0,  219,
  562.     0,    0,    0,    0,  220,  162,  163,  465,    0,    0,
  563.   274,    0,    0,    0,    0,  220,  162,  163,    0,    0,
  564.     0,  346,    0,    0,  372,    0,  220,  162,  163,  162,
  565.   163,  262,  263,  264,  265,    0,    0,  220,  228,  228,
  566.   228,  228,  228,  228,  228,  228,  228,  228,    0,  152,
  567.   153,  154,  155,  156,  157,  158,  159,  160,  104,  254,
  568.   152,  153,  154,  155,  156,  157,  158,  159,  160,  104,
  569.   152,  153,  154,  155,  156,  157,  158,  159,  160,  104,
  570.     0,    0,    0,    0,  152,  153,  154,  155,  156,  157,
  571.   158,  159,  160,  104,  152,  153,  154,  155,  156,  157,
  572.   158,  159,  160,  104,    0,    0,    0,  228,    0,    0,
  573.     0,    0,    0,  228,  228,    0,    0,    0,  213,    0,
  574.     0,    0,    0,  228,  162,  163,  255,    0,  256,  161,
  575.     0,    0,    0,    0,    0,  162,  163,  175,    0,  213,
  576.     0,    0,    0,   95,    0,  162,  163,  214,   97,    0,
  577.     0,    0,   99,  213,  100,  101,  102,    0,  103,  162,
  578.   163,    0,    0,  434,  110,  111,  112,  113,  114,  162,
  579.   163,    0,    0,    0,    0,    0,    0,    0,  118,    0,
  580.   120,    0,  121,    8,    9,    0,   11,    0,   13,  129,
  581.    15,  410,    0,   18,    0,  137,  162,  163,  262,  263,
  582.   264,  265,   27,    0,    0,    0,    0,    0,    0,   34,
  583.    35,   36,   37,    0,    0,   40,    0,    0,  181,  182,
  584.    45,    0,   47,   48,    0,    0,   50,    0,   52,   53,
  585.     0,    0,   56,  168,  148,    0,  168,   59,  168,  168,
  586.   168,  168,  168,  168,  168,  168,  168,  168,    0,  168,
  587.   168,  168,  168,  168,  168,  393,    0,    0,    0,    0,
  588.   162,  163,  325,  326,  327,  328,  329,  330,  331,  332,
  589.     0,  333,  334,  335,  336,  337,  338,  401,    0,    0,
  590.     0,    0,  162,  163,  325,  326,  327,  328,  329,  330,
  591.   331,  332,    0,  333,  334,  335,  336,  337,  338,  402,
  592.     0,    0,    0,    0,  162,  163,  325,  326,  327,  328,
  593.   329,  330,  331,  332,    0,  333,  334,  335,  336,  337,
  594.   338,  415,    0,    0,    0,    0,  162,  163,  325,  326,
  595.   327,  328,  329,  330,  331,  332,    0,  333,  334,  335,
  596.   336,  337,  338,  455,    0,    0,    0,    0,  162,  163,
  597.   325,  326,  327,  328,  329,  330,  331,  332,    0,  333,
  598.   334,  335,  336,  337,  338,  512,    0,    0,    0,    0,
  599.   162,  163,  325,  326,  327,  328,  329,  330,  331,  332,
  600.     0,  333,  334,  335,  336,  337,  338,  143,    0,    0,
  601.     0,    0,  143,  143,  143,  143,  143,  143,  143,  143,
  602.   143,  143,    0,  143,  143,  143,  143,  143,  143,  509,
  603.     0,    0,  162,  163,  325,  326,  327,  328,  329,  330,
  604.   331,  332,    0,  333,  334,  335,  336,  337,  338,  289,
  605.     0,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  606.   143,    0,  143,  143,  143,  143,  143,  143,  162,  163,
  607.   325,  326,  327,  328,  329,  330,  331,  332,    0,  333,
  608.   334,  335,  336,  337,  338,  143,  143,  143,  143,  143,
  609.   143,  143,  143,  143,  143,    0,  143,  143,  143,  143,
  610.   143,  143,  162,  163,  325,  326,  327,  328,  329,    0,
  611.     0,    0,    0,  333,  334,  335,  336,  337,  338,  152,
  612.   153,  154,  155,  156,  157,  158,  159,  160,  104,
  613. };
  614. short yycheck[] = {                                      29,
  615.   235,  347,  121,   67,  179,  180,    3,  139,  110,    1,
  616.    74,  348,  179,  180,   30,   31,    1,    1,  137,  201,
  617.    29,    1,    1,   39,   54,  118,   42,    1,   14,   44,
  618.    46,    6,  129,    1,   82,   99,   78,   33,    5,   14,
  619.     1,   83,   78,   14,    1,  274,   14,   83,  230,  388,
  620.    14,   14,  219,   49,   78,   83,  375,   85,  190,   83,
  621.    74,   57,    1,   78,   94,   95,   96,   78,  161,   82,
  622.    83,   84,    1,  166,    1,   99,   44,    1,  108,  109,
  623.   173,  111,    1,   75,  181,  182,  116,    1,   99,  119,
  624.   118,   75,  194,   78,   78,    1,   82,   82,  128,  274,
  625.   109,   85,  132,   83,   78,  135,   74,  274,   14,  139,
  626.    78,  141,  142,   83,   99,   85,  146,  214,  215,  128,
  627.   213,   78,   83,   98,   85,   99,   83,   98,   85,   14,
  628.   469,   99,  451,  161,  130,   98,   75,  239,  166,   78,
  629.   204,   80,   81,   82,   83,  173,   85,  493,  118,   78,
  630.    74,   78,  381,  382,  383,  492,   75,    1,   14,   78,
  631.   190,   75,  344,  193,   78,  435,  196,    1,   74,  262,
  632.   263,  264,  265,  266,   96,  350,   78,    1,   75,  346,
  633.   244,   78,  212,   78,   78,  213,   75,    1,   14,   78,
  634.    75,  161,   83,  428,   85,   14,  166,   82,  168,  229,
  635.    14,   78,  232,  173,   99,   14,  381,  382,  383,   78,
  636.    75,   14,   77,   78,  381,  382,  383,  233,  140,   75,
  637.    78,   78,  354,  232,  453,  454,  496,  456,   83,    1,
  638.    44,   75,   74,   77,  262,  263,  264,  265,  266,   78,
  639.     6,   75,   14,  213,   78,  215,   80,   81,   74,  416,
  640.    74,   85,   78,  223,  284,   74,   74,  432,   76,  256,
  641.    74,   75,   74,   77,   78,   74,   74,  434,    1,   74,
  642.     6,  241,   44,  366,   88,   89,   74,   74,  453,  454,
  643.    83,  456,   85,   74,   74,   99,  453,  454,  258,  456,
  644.     1,  261,  262,  263,  264,  265,  266,  267,  400,  401,
  645.    76,   75,   74,   14,   78,   83,   78,   85,  278,    5,
  646.     6,    7,    8,    9,   10,   11,   12,   13,   14,   14,
  647.   350,  496,  350,   75,  354,  355,   78,  297,  392,  448,
  648.    75,  268,  269,   78,   75,  399,  273,   78,  366,  309,
  649.   310,   75,   75,    1,   78,   78,  316,   80,   81,   82,
  650.    83,  321,   85,  323,  324,   75,   14,  451,   78,  453,
  651.   454,   75,  456,   74,   78,  395,   75,   78,   77,   80,
  652.    81,   82,   83,   84,   85,  469,   78,  347,   74,  409,
  653.   350,   82,   83,   84,   80,   81,   44,   74,  358,   83,
  654.   360,   85,    1,  363,   90,  121,  366,  367,  368,  369,
  655.   370,  371,  432,   75,  432,  435,   78,  435,   78,  379,
  656.    75,  137,  138,   78,   71,  517,   74,   75,   74,   77,
  657.    78,  451,   75,  453,  454,   78,  456,   74,   86,   87,
  658.    88,   89,   75,    1,   74,   78,   84,  539,   83,  469,
  659.    75,   99,   83,   78,   78,  475,    1,  417,  418,  419,
  660.   420,  421,  422,  423,  424,  425,  426,   75,   75,   14,
  661.    78,   78,  432,   84,   85,   86,  496,  497,  496,  195,
  662.     1,   80,   81,   82,   83,   84,   85,   78,   78,  449,
  663.   206,  207,   78,   75,   75,    1,   78,   78,   74,   44,
  664.    74,   76,   14,  219,  220,  221,  466,   76,   14,   79,
  665.    78,   84,  472,   83,  474,   85,   75,   75,  234,   70,
  666.    78,   78,   80,   81,   82,   83,  486,   85,   77,   74,
  667.    75,   78,   77,   78,   78,  251,  496,  253,   44,   78,
  668.   500,  257,   87,   88,   89,   78,   78,   81,  118,   76,
  669.    75,   82,    1,   14,   99,   78,  516,   78,  274,   80,
  670.    81,   82,   83,   84,   85,    1,   74,   78,   74,   75,
  671.    14,   77,   78,  533,   80,   81,   78,  537,   14,   85,
  672.    86,   87,   88,   89,   75,   91,   92,   93,   94,   95,
  673.    96,  161,    1,   99,   75,   75,  166,   80,   81,   82,
  674.    83,   84,   85,  173,   75,   14,   75,  177,   44,  325,
  675.   326,  327,  328,  329,  330,  331,  332,   75,   75,   78,
  676.     1,  191,    1,  339,  340,    1,   75,    1,  198,   78,
  677.   346,   80,   81,   82,   83,   44,   85,  353,    1,   75,
  678.    76,   77,   78,  213,   80,   81,   82,   83,   84,   85,
  679.    86,   87,   88,   89,    1,   91,   92,   93,   94,   95,
  680.    96,    1,    1,   99,    1,   74,   75,    1,   77,   78,
  681.   386,    1,    1,    1,  390,  391,   85,   86,   87,   88,
  682.    89,    1,   91,   92,   93,   94,   95,   96,    1,    1,
  683.    99,  407,  262,  263,  264,  265,  266,    1,  268,  269,
  684.    78,    1,    1,  273,    5,    6,    7,    8,    9,   10,
  685.    11,   12,   13,   14,   14,   75,    1,    1,  288,   75,
  686.    80,   81,   82,   83,   84,   85,   80,   81,   82,   83,
  687.    84,  447,  448,    1,    5,    6,    7,    8,    9,   10,
  688.    11,   12,   13,   14,   44,    1,    1,    1,  464,    1,
  689.    75,  483,  288,   77,   80,   81,   82,   83,   84,   85,
  690.    86,   87,   14,  210,  480,   91,   92,   93,   94,   95,
  691.    96,  274,    1,   74,   74,   75,  180,   77,   78,   80,
  692.    81,   82,  498,   84,  509,   14,   86,   87,   88,   89,
  693.   446,  395,   44,  509,  475,  490,  366,  513,  496,   99,
  694.   353,  119,  471,   74,   75,  375,  133,  143,  229,   80,
  695.    81,   82,  144,  136,  432,   44,  409,  485,  388,   90,
  696.   464,  398,   -1,   75,   76,   77,   78,  397,   80,   81,
  697.    82,   83,   84,   85,   86,   87,   88,   89,  145,   91,
  698.    92,   93,   94,   95,   96,   74,   75,   99,   77,   78,
  699.    78,   80,   81,   82,   83,    1,   85,   86,   87,   88,
  700.    89,  366,   91,   92,   93,   94,   95,   96,   14,   21,
  701.    99,   -1,   -1,   25,   -1,   -1,   28,   -1,    1,   31,
  702.    32,  451,   34,   80,   81,   82,   83,   84,   85,   -1,
  703.    -1,   14,   80,   81,   82,   83,   84,   85,   44,  469,
  704.    52,    1,   54,   91,   92,   93,   94,   95,   96,   -1,
  705.    -1,   63,   -1,   -1,   14,   67,   -1,   -1,   -1,   -1,
  706.    72,   44,   80,   81,   82,   83,   84,    1,   74,   75,
  707.    -1,   77,   78,   -1,   80,   81,   82,   83,   -1,   85,
  708.    86,   87,   88,   89,   44,   91,   92,   93,   94,   95,
  709.    96,   74,   75,   99,   77,   78,   -1,   80,   81,   82,
  710.    83,    1,   85,   86,   87,   88,   89,   -1,   91,   92,
  711.    93,   94,   95,   96,   74,   75,   99,   77,   78,   -1,
  712.    80,   81,   82,   83,    1,   85,   86,   87,   88,   89,
  713.     1,   91,   92,   93,   94,   95,   96,   14,   -1,   99,
  714.    -1,   75,   -1,   14,   78,   -1,   80,   81,   82,   83,
  715.    84,   85,   86,   87,   88,   89,    1,   91,   92,   93,
  716.    94,   95,   96,   -1,   -1,   -1,   -1,   44,   -1,   -1,
  717.    -1,   -1,   -1,   44,   -1,   75,    1,   -1,   78,   -1,
  718.    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
  719.    -1,   91,   92,   93,   94,   95,   96,   74,   75,    1,
  720.    77,   78,   -1,   74,   75,   -1,   77,   78,   -1,   86,
  721.    87,   88,   89,   -1,   -1,   -1,    1,   88,   89,   -1,
  722.    -1,   -1,   99,   -1,   -1,   -1,   -1,   -1,   99,   -1,
  723.    -1,   -1,   -1,   78,   -1,   80,   81,   82,   83,   84,
  724.    85,   86,   87,   88,   89,   -1,   91,   92,   93,   94,
  725.    95,   96,   -1,   78,   -1,   80,   81,   82,   83,   84,
  726.    85,   86,   87,   88,   89,   -1,   91,   92,   93,   94,
  727.    95,   96,   -1,   -1,   -1,   -1,   78,   -1,   80,   81,
  728.    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
  729.    92,   93,   94,   95,   96,   80,   81,   82,   83,   84,
  730.    85,   86,   87,   88,   89,    4,   91,   92,   93,   94,
  731.    95,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   18,
  732.    19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
  733.    29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
  734.    39,   40,   41,   42,   43,   44,   45,   46,   47,   48,
  735.    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
  736.    59,   60,   -1,   62,   63,   64,   65,   66,   67,   68,
  737.    69,   -1,   -1,   72,   73,    5,    6,    7,    8,    9,
  738.    10,   11,   12,   13,   14,   -1,    5,    6,    7,    8,
  739.     9,   10,   11,   12,   13,   14,   -1,   -1,   97,    5,
  740.     6,    7,    8,    9,   10,   11,   12,   13,   14,   -1,
  741.     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
  742.    -1,    5,    6,    7,    8,    9,   10,   11,   12,   13,
  743.    14,   -1,    5,    6,    7,    8,    9,   10,   11,   12,
  744.    13,   14,   -1,   -1,   74,   -1,   -1,   -1,   -1,   -1,
  745.    80,   81,   82,   -1,   84,   74,   -1,   -1,   -1,   -1,
  746.    90,   80,   81,   82,   -1,   -1,   -1,   -1,   74,   -1,
  747.    -1,   90,   -1,   -1,   80,   81,   82,   -1,   -1,   74,
  748.    -1,   -1,   -1,   -1,   90,   80,   81,   82,   -1,   -1,
  749.    74,   -1,   -1,   -1,   -1,   90,   80,   81,   -1,   -1,
  750.    -1,   74,   -1,   -1,   75,   -1,   90,   80,   81,   80,
  751.    81,   82,   83,   84,   85,   -1,   -1,   90,    5,    6,
  752.     7,    8,    9,   10,   11,   12,   13,   14,   -1,    5,
  753.     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
  754.     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
  755.     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
  756.    -1,   -1,   -1,   -1,    5,    6,    7,    8,    9,   10,
  757.    11,   12,   13,   14,    5,    6,    7,    8,    9,   10,
  758.    11,   12,   13,   14,   -1,   -1,   -1,   74,   -1,   -1,
  759.    -1,   -1,   -1,   80,   81,   -1,   -1,   -1,   74,   -1,
  760.    -1,   -1,   -1,   90,   80,   81,   82,   -1,   84,   74,
  761.    -1,   -1,   -1,   -1,   -1,   80,   81,   82,   -1,   74,
  762.    -1,   -1,   -1,   13,   -1,   80,   81,   82,   18,   -1,
  763.    -1,   -1,   22,   74,   24,   25,   26,   -1,   28,   80,
  764.    81,   -1,   -1,   74,   34,   35,   36,   37,   38,   80,
  765.    81,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   48,   -1,
  766.    50,   -1,   52,   19,   20,   -1,   22,   -1,   24,   59,
  767.    26,   75,   -1,   29,   -1,   65,   80,   81,   82,   83,
  768.    84,   85,   38,   -1,   -1,   -1,   -1,   -1,   -1,   45,
  769.    46,   47,   48,   -1,   -1,   51,   -1,   -1,   88,   89,
  770.    56,   -1,   58,   59,   -1,   -1,   62,   -1,   64,   65,
  771.    -1,   -1,   68,   75,   70,   -1,   78,   73,   80,   81,
  772.    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
  773.    92,   93,   94,   95,   96,   75,   -1,   -1,   -1,   -1,
  774.    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
  775.    -1,   91,   92,   93,   94,   95,   96,   75,   -1,   -1,
  776.    -1,   -1,   80,   81,   82,   83,   84,   85,   86,   87,
  777.    88,   89,   -1,   91,   92,   93,   94,   95,   96,   75,
  778.    -1,   -1,   -1,   -1,   80,   81,   82,   83,   84,   85,
  779.    86,   87,   88,   89,   -1,   91,   92,   93,   94,   95,
  780.    96,   75,   -1,   -1,   -1,   -1,   80,   81,   82,   83,
  781.    84,   85,   86,   87,   88,   89,   -1,   91,   92,   93,
  782.    94,   95,   96,   75,   -1,   -1,   -1,   -1,   80,   81,
  783.    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
  784.    92,   93,   94,   95,   96,   75,   -1,   -1,   -1,   -1,
  785.    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
  786.    -1,   91,   92,   93,   94,   95,   96,   75,   -1,   -1,
  787.    -1,   -1,   80,   81,   82,   83,   84,   85,   86,   87,
  788.    88,   89,   -1,   91,   92,   93,   94,   95,   96,   77,
  789.    -1,   -1,   80,   81,   82,   83,   84,   85,   86,   87,
  790.    88,   89,   -1,   91,   92,   93,   94,   95,   96,   78,
  791.    -1,   80,   81,   82,   83,   84,   85,   86,   87,   88,
  792.    89,   -1,   91,   92,   93,   94,   95,   96,   80,   81,
  793.    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
  794.    92,   93,   94,   95,   96,   80,   81,   82,   83,   84,
  795.    85,   86,   87,   88,   89,   -1,   91,   92,   93,   94,
  796.    95,   96,   80,   81,   82,   83,   84,   85,   86,   -1,
  797.    -1,   -1,   -1,   91,   92,   93,   94,   95,   96,    5,
  798.     6,    7,    8,    9,   10,   11,   12,   13,   14,
  799. };
  800. #define YYFINAL 1
  801. #ifndef YYDEBUG
  802. #define YYDEBUG 0
  803. #endif
  804. #define YYMAXTOKEN 99
  805. #if YYDEBUG
  806. char *yyname[] = {
  807. "end-of-file","SEOS","SCOMMENT","SLABEL","SUNKNOWN","SHOLLERITH","SICON",
  808. "SRCON","SDCON","SBITCON","SOCTCON","SHEXCON","STRUE","SFALSE","SNAME",
  809. "SNAMEEQ","SFIELD","SSCALE","SINCLUDE","SLET","SASSIGN","SAUTOMATIC",
  810. "SBACKSPACE","SBLOCK","SCALL","SCHARACTER","SCLOSE","SCOMMON","SCOMPLEX",
  811. "SCONTINUE","SDATA","SDCOMPLEX","SDIMENSION","SDO","SDOUBLE","SELSE","SELSEIF",
  812. "SEND","SENDFILE","SENDIF","SENTRY","SEQUIV","SEXTERNAL","SFORMAT","SFUNCTION",
  813. "SGOTO","SASGOTO","SCOMPGOTO","SARITHIF","SLOGIF","SIMPLICIT","SINQUIRE",
  814. "SINTEGER","SINTRINSIC","SLOGICAL","SNAMELIST","SOPEN","SPARAM","SPAUSE",
  815. "SPRINT","SPROGRAM","SPUNCH","SREAD","SREAL","SRETURN","SREWIND","SSAVE",
  816. "SSTATIC","SSTOP","SSUBROUTINE","STHEN","STO","SUNDEFINED","SWRITE","SLPAR",
  817. "SRPAR","SEQUALS","SCOLON","SCOMMA","SCURRENCY","SPLUS","SMINUS","SSTAR",
  818. "SSLASH","SPOWER","SCONCAT","SAND","SOR","SNEQV","SEQV","SNOT","SEQ","SLT",
  819. "SGT","SLE","SGE","SNE","SENDDO","SWHILE","SSLASHD",
  820. };
  821. char *yyrule[] = {
  822. "$accept : program",
  823. "program :",
  824. "program : program stat SEOS",
  825. "stat : thislabel entry",
  826. "stat : thislabel spec",
  827. "stat : thislabel exec",
  828. "stat : thislabel SINCLUDE filename",
  829. "stat : thislabel SEND end_spec",
  830. "stat : thislabel SUNKNOWN",
  831. "stat : error",
  832. "thislabel : SLABEL",
  833. "entry : SPROGRAM new_proc progname",
  834. "entry : SPROGRAM new_proc progname progarglist",
  835. "entry : SBLOCK new_proc progname",
  836. "entry : SSUBROUTINE new_proc entryname arglist",
  837. "entry : SFUNCTION new_proc entryname arglist",
  838. "entry : type SFUNCTION new_proc entryname arglist",
  839. "entry : SENTRY entryname arglist",
  840. "new_proc :",
  841. "entryname : name",
  842. "name : SNAME",
  843. "progname :",
  844. "progname : entryname",
  845. "progarglist : SLPAR SRPAR",
  846. "progarglist : SLPAR progargs SRPAR",
  847. "progargs : progarg",
  848. "progargs : progargs SCOMMA progarg",
  849. "progarg : SNAME",
  850. "progarg : SNAME SEQUALS SNAME",
  851. "arglist :",
  852. "arglist : SLPAR SRPAR",
  853. "arglist : SLPAR args SRPAR",
  854. "args : arg",
  855. "args : args SCOMMA arg",
  856. "arg : name",
  857. "arg : SSTAR",
  858. "filename : SHOLLERITH",
  859. "spec : dcl",
  860. "spec : common",
  861. "spec : external",
  862. "spec : intrinsic",
  863. "spec : equivalence",
  864. "spec : data",
  865. "spec : implicit",
  866. "spec : namelist",
  867. "spec : SSAVE",
  868. "spec : SSAVE savelist",
  869. "spec : SFORMAT",
  870. "spec : SPARAM in_dcl SLPAR paramlist SRPAR",
  871. "dcl : type opt_comma name in_dcl new_dcl dims lengspec",
  872. "dcl : dcl SCOMMA name dims lengspec",
  873. "dcl : dcl SSLASHD datainit vallist SSLASHD",
  874. "new_dcl :",
  875. "type : typespec lengspec",
  876. "typespec : typename",
  877. "typename : SINTEGER",
  878. "typename : SREAL",
  879. "typename : SCOMPLEX",
  880. "typename : SDOUBLE",
  881. "typename : SDCOMPLEX",
  882. "typename : SLOGICAL",
  883. "typename : SCHARACTER",
  884. "typename : SUNDEFINED",
  885. "typename : SDIMENSION",
  886. "typename : SAUTOMATIC",
  887. "typename : SSTATIC",
  888. "lengspec :",
  889. "lengspec : SSTAR intonlyon expr intonlyoff",
  890. "lengspec : SSTAR intonlyon SLPAR SSTAR SRPAR intonlyoff",
  891. "common : SCOMMON in_dcl var",
  892. "common : SCOMMON in_dcl comblock var",
  893. "common : common opt_comma comblock opt_comma var",
  894. "common : common SCOMMA var",
  895. "comblock : SCONCAT",
  896. "comblock : SSLASH SNAME SSLASH",
  897. "external : SEXTERNAL in_dcl name",
  898. "external : external SCOMMA name",
  899. "intrinsic : SINTRINSIC in_dcl name",
  900. "intrinsic : intrinsic SCOMMA name",
  901. "equivalence : SEQUIV in_dcl equivset",
  902. "equivalence : equivalence SCOMMA equivset",
  903. "equivset : SLPAR equivlist SRPAR",
  904. "equivlist : lhs",
  905. "equivlist : equivlist SCOMMA lhs",
  906. "data : SDATA in_data datalist",
  907. "data : data opt_comma datalist",
  908. "in_data :",
  909. "datalist : datainit datavarlist SSLASH datapop vallist SSLASH",
  910. "datainit :",
  911. "datapop :",
  912. "$$1 :",
  913. "vallist : $$1 val",
  914. "vallist : vallist SCOMMA val",
  915. "val : value",
  916. "val : simple SSTAR value",
  917. "value : simple",
  918. "value : addop simple",
  919. "value : complex_const",
  920. "savelist : saveitem",
  921. "savelist : savelist SCOMMA saveitem",
  922. "saveitem : name",
  923. "saveitem : comblock",
  924. "paramlist : paramitem",
  925. "paramlist : paramlist SCOMMA paramitem",
  926. "paramitem : name SEQUALS expr",
  927. "var : name dims",
  928. "datavar : lhs",
  929. "datavar : SLPAR datavarlist SCOMMA dospec SRPAR",
  930. "datavarlist : datavar",
  931. "datavarlist : datavarlist SCOMMA datavar",
  932. "dims :",
  933. "dims : SLPAR dimlist SRPAR",
  934. "$$2 :",
  935. "dimlist : $$2 dim",
  936. "dimlist : dimlist SCOMMA dim",
  937. "dim : ubound",
  938. "dim : expr SCOLON ubound",
  939. "ubound : SSTAR",
  940. "ubound : expr",
  941. "labellist : label",
  942. "labellist : labellist SCOMMA label",
  943. "label : SICON",
  944. "implicit : SIMPLICIT in_dcl implist",
  945. "implicit : implicit SCOMMA implist",
  946. "implist : imptype SLPAR letgroups SRPAR",
  947. "implist : imptype",
  948. "$$3 :",
  949. "imptype : $$3 type",
  950. "letgroups : letgroup",
  951. "letgroups : letgroups SCOMMA letgroup",
  952. "letgroup : letter",
  953. "letgroup : letter SMINUS letter",
  954. "letter : SNAME",
  955. "namelist : SNAMELIST",
  956. "namelist : namelist namelistentry",
  957. "namelistentry : SSLASH name SSLASH namelistlist",
  958. "namelistlist : name",
  959. "namelistlist : namelistlist SCOMMA name",
  960. "in_dcl :",
  961. "funarglist :",
  962. "funarglist : funargs",
  963. "funargs : expr",
  964. "funargs : funargs SCOMMA expr",
  965. "expr : uexpr",
  966. "expr : SLPAR expr SRPAR",
  967. "expr : complex_const",
  968. "uexpr : lhs",
  969. "uexpr : simple_const",
  970. "uexpr : expr addop expr",
  971. "uexpr : expr SSTAR expr",
  972. "uexpr : expr SSLASH expr",
  973. "uexpr : expr SPOWER expr",
  974. "uexpr : addop expr",
  975. "uexpr : expr relop expr",
  976. "uexpr : expr SEQV expr",
  977. "uexpr : expr SNEQV expr",
  978. "uexpr : expr SOR expr",
  979. "uexpr : expr SAND expr",
  980. "uexpr : SNOT expr",
  981. "uexpr : expr SCONCAT expr",
  982. "addop : SPLUS",
  983. "addop : SMINUS",
  984. "relop : SEQ",
  985. "relop : SGT",
  986. "relop : SLT",
  987. "relop : SGE",
  988. "relop : SLE",
  989. "relop : SNE",
  990. "lhs : name",
  991. "lhs : name substring",
  992. "lhs : name SLPAR funarglist SRPAR",
  993. "lhs : name SLPAR funarglist SRPAR substring",
  994. "substring : SLPAR opt_expr SCOLON opt_expr SRPAR",
  995. "opt_expr :",
  996. "opt_expr : expr",
  997. "simple : name",
  998. "simple : simple_const",
  999. "simple_const : STRUE",
  1000. "simple_const : SFALSE",
  1001. "simple_const : SHOLLERITH",
  1002. "simple_const : SICON",
  1003. "simple_const : SRCON",
  1004. "simple_const : SDCON",
  1005. "simple_const : bit_const",
  1006. "complex_const : SLPAR uexpr SCOMMA uexpr SRPAR",
  1007. "bit_const : SHEXCON",
  1008. "bit_const : SOCTCON",
  1009. "bit_const : SBITCON",
  1010. "fexpr : unpar_fexpr",
  1011. "fexpr : SLPAR fexpr SRPAR",
  1012. "unpar_fexpr : lhs",
  1013. "unpar_fexpr : simple_const",
  1014. "unpar_fexpr : fexpr addop fexpr",
  1015. "unpar_fexpr : fexpr SSTAR fexpr",
  1016. "unpar_fexpr : fexpr SSLASH fexpr",
  1017. "unpar_fexpr : fexpr SPOWER fexpr",
  1018. "unpar_fexpr : addop fexpr",
  1019. "unpar_fexpr : fexpr SCONCAT fexpr",
  1020. "exec : iffable",
  1021. "exec : SDO end_spec intonlyon label intonlyoff opt_comma dospecw",
  1022. "exec : SDO end_spec opt_comma dospecw",
  1023. "exec : SENDDO",
  1024. "exec : logif iffable",
  1025. "exec : logif STHEN",
  1026. "exec : SELSEIF end_spec SLPAR expr SRPAR STHEN",
  1027. "exec : SELSE end_spec",
  1028. "exec : SENDIF end_spec",
  1029. "logif : SLOGIF end_spec SLPAR expr SRPAR",
  1030. "dospec : name SEQUALS exprlist",
  1031. "dospecw : dospec",
  1032. "dospecw : SWHILE SLPAR expr SRPAR",
  1033. "iffable : let lhs SEQUALS expr",
  1034. "iffable : SASSIGN end_spec assignlabel STO name",
  1035. "iffable : SCONTINUE end_spec",
  1036. "iffable : goto",
  1037. "iffable : io",
  1038. "iffable : SARITHIF end_spec SLPAR expr SRPAR label SCOMMA label SCOMMA label",
  1039. "iffable : call",
  1040. "iffable : call SLPAR SRPAR",
  1041. "iffable : call SLPAR callarglist SRPAR",
  1042. "iffable : SRETURN end_spec opt_expr",
  1043. "iffable : stop end_spec opt_expr",
  1044. "assignlabel : SICON",
  1045. "let : SLET",
  1046. "goto : SGOTO end_spec label",
  1047. "goto : SASGOTO end_spec name",
  1048. "goto : SASGOTO end_spec name opt_comma SLPAR labellist SRPAR",
  1049. "goto : SCOMPGOTO end_spec SLPAR labellist SRPAR opt_comma expr",
  1050. "opt_comma :",
  1051. "opt_comma : SCOMMA",
  1052. "call : SCALL end_spec name",
  1053. "callarglist : callarg",
  1054. "callarglist : callarglist SCOMMA callarg",
  1055. "callarg : expr",
  1056. "callarg : SSTAR label",
  1057. "stop : SPAUSE",
  1058. "stop : SSTOP",
  1059. "exprlist : expr",
  1060. "exprlist : exprlist SCOMMA expr",
  1061. "end_spec :",
  1062. "intonlyon :",
  1063. "intonlyoff :",
  1064. "io : io1",
  1065. "io1 : iofmove ioctl",
  1066. "io1 : iofmove unpar_fexpr",
  1067. "io1 : iofmove SSTAR",
  1068. "io1 : iofmove SPOWER",
  1069. "io1 : iofctl ioctl",
  1070. "io1 : read ioctl",
  1071. "io1 : read infmt",
  1072. "io1 : read ioctl inlist",
  1073. "io1 : read infmt SCOMMA inlist",
  1074. "io1 : read ioctl SCOMMA inlist",
  1075. "io1 : write ioctl",
  1076. "io1 : write ioctl outlist",
  1077. "io1 : print",
  1078. "io1 : print SCOMMA outlist",
  1079. "iofmove : fmkwd end_spec in_ioctl",
  1080. "fmkwd : SBACKSPACE",
  1081. "fmkwd : SREWIND",
  1082. "fmkwd : SENDFILE",
  1083. "iofctl : ctlkwd end_spec in_ioctl",
  1084. "ctlkwd : SINQUIRE",
  1085. "ctlkwd : SOPEN",
  1086. "ctlkwd : SCLOSE",
  1087. "infmt : unpar_fexpr",
  1088. "infmt : SSTAR",
  1089. "ioctl : SLPAR fexpr SRPAR",
  1090. "ioctl : SLPAR ctllist SRPAR",
  1091. "ctllist : ioclause",
  1092. "ctllist : ctllist SCOMMA ioclause",
  1093. "ioclause : fexpr",
  1094. "ioclause : SSTAR",
  1095. "ioclause : SPOWER",
  1096. "ioclause : nameeq expr",
  1097. "ioclause : nameeq SSTAR",
  1098. "ioclause : nameeq SPOWER",
  1099. "nameeq : SNAMEEQ",
  1100. "read : SREAD end_spec in_ioctl",
  1101. "write : SWRITE end_spec in_ioctl",
  1102. "print : SPRINT end_spec fexpr in_ioctl",
  1103. "print : SPRINT end_spec SSTAR in_ioctl",
  1104. "inlist : inelt",
  1105. "inlist : inlist SCOMMA inelt",
  1106. "inelt : lhs",
  1107. "inelt : SLPAR inlist SCOMMA dospec SRPAR",
  1108. "outlist : uexpr",
  1109. "outlist : other",
  1110. "outlist : out2",
  1111. "out2 : uexpr SCOMMA uexpr",
  1112. "out2 : uexpr SCOMMA other",
  1113. "out2 : other SCOMMA uexpr",
  1114. "out2 : other SCOMMA other",
  1115. "out2 : out2 SCOMMA uexpr",
  1116. "out2 : out2 SCOMMA other",
  1117. "other : complex_const",
  1118. "other : SLPAR expr SRPAR",
  1119. "other : SLPAR uexpr SCOMMA dospec SRPAR",
  1120. "other : SLPAR other SCOMMA dospec SRPAR",
  1121. "other : SLPAR out2 SCOMMA dospec SRPAR",
  1122. "in_ioctl :",
  1123. };
  1124. #endif
  1125. #define yyclearin (yychar=(-1))
  1126. #define yyerrok (yyerrflag=0)
  1127. #ifndef YYSTACKSIZE
  1128. #ifdef YYMAXDEPTH
  1129. #define YYSTACKSIZE YYMAXDEPTH
  1130. #else
  1131. #define YYSTACKSIZE 300
  1132. #endif
  1133. #endif
  1134. int yydebug;
  1135. int yynerrs;
  1136. int yyerrflag;
  1137. int yychar;
  1138. short *yyssp;
  1139. YYSTYPE *yyvsp;
  1140. YYSTYPE yyval;
  1141. YYSTYPE yylval;
  1142. #define yystacksize YYSTACKSIZE
  1143. short yyss[YYSTACKSIZE];
  1144. YYSTYPE yyvs[YYSTACKSIZE];
  1145. #define YYABORT goto yyabort
  1146. #define YYACCEPT goto yyaccept
  1147. #define YYERROR goto yyerrlab
  1148. int
  1149. yyparse()
  1150. {
  1151.     register int yym, yyn, yystate;
  1152. #if YYDEBUG
  1153.     register char *yys;
  1154.     extern char *getenv();
  1155.  
  1156.     if (yys = getenv("YYDEBUG"))
  1157.     {
  1158.         yyn = *yys;
  1159.         if (yyn >= '0' && yyn <= '9')
  1160.             yydebug = yyn - '0';
  1161.     }
  1162. #endif
  1163.  
  1164.     yynerrs = 0;
  1165.     yyerrflag = 0;
  1166.     yychar = (-1);
  1167.  
  1168.     yyssp = yyss;
  1169.     yyvsp = yyvs;
  1170.     *yyssp = yystate = 0;
  1171.  
  1172. yyloop:
  1173.     if (yyn = yydefred[yystate]) goto yyreduce;
  1174.     if (yychar < 0)
  1175.     {
  1176.         if ((yychar = yylex()) < 0) yychar = 0;
  1177. #if YYDEBUG
  1178.         if (yydebug)
  1179.         {
  1180.             yys = 0;
  1181.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1182.             if (!yys) yys = "illegal-symbol";
  1183.             printf("yydebug: state %d, reading %d (%s)\n", yystate,
  1184.                     yychar, yys);
  1185.         }
  1186. #endif
  1187.     }
  1188.     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
  1189.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  1190.     {
  1191. #if YYDEBUG
  1192.         if (yydebug)
  1193.             printf("yydebug: state %d, shifting to state %d\n",
  1194.                     yystate, yytable[yyn]);
  1195. #endif
  1196.         if (yyssp >= yyss + yystacksize - 1)
  1197.         {
  1198.             goto yyoverflow;
  1199.         }
  1200.         *++yyssp = yystate = yytable[yyn];
  1201.         *++yyvsp = yylval;
  1202.         yychar = (-1);
  1203.         if (yyerrflag > 0)  --yyerrflag;
  1204.         goto yyloop;
  1205.     }
  1206.     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
  1207.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  1208.     {
  1209.         yyn = yytable[yyn];
  1210.         goto yyreduce;
  1211.     }
  1212.     if (yyerrflag) goto yyinrecovery;
  1213. #ifdef lint
  1214.     goto yynewerror;
  1215. #endif
  1216. yynewerror:
  1217.     yyerror("syntax error");
  1218. #ifdef lint
  1219.     goto yyerrlab;
  1220. #endif
  1221. yyerrlab:
  1222.     ++yynerrs;
  1223. yyinrecovery:
  1224.     if (yyerrflag < 3)
  1225.     {
  1226.         yyerrflag = 3;
  1227.         for (;;)
  1228.         {
  1229.             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
  1230.                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
  1231.             {
  1232. #if YYDEBUG
  1233.                 if (yydebug)
  1234.                     printf("yydebug: state %d, error recovery shifting\
  1235.  to state %d\n", *yyssp, yytable[yyn]);
  1236. #endif
  1237.                 if (yyssp >= yyss + yystacksize - 1)
  1238.                 {
  1239.                     goto yyoverflow;
  1240.                 }
  1241.                 *++yyssp = yystate = yytable[yyn];
  1242.                 *++yyvsp = yylval;
  1243.                 goto yyloop;
  1244.             }
  1245.             else
  1246.             {
  1247. #if YYDEBUG
  1248.                 if (yydebug)
  1249.                     printf("yydebug: error recovery discarding state %d\n",
  1250.                             *yyssp);
  1251. #endif
  1252.                 if (yyssp <= yyss) goto yyabort;
  1253.                 --yyssp;
  1254.                 --yyvsp;
  1255.             }
  1256.         }
  1257.     }
  1258.     else
  1259.     {
  1260.         if (yychar == 0) goto yyabort;
  1261. #if YYDEBUG
  1262.         if (yydebug)
  1263.         {
  1264.             yys = 0;
  1265.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1266.             if (!yys) yys = "illegal-symbol";
  1267.             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
  1268.                     yystate, yychar, yys);
  1269.         }
  1270. #endif
  1271.         yychar = (-1);
  1272.         goto yyloop;
  1273.     }
  1274. yyreduce:
  1275. #if YYDEBUG
  1276.     if (yydebug)
  1277.         printf("yydebug: state %d, reducing by rule %d (%s)\n",
  1278.                 yystate, yyn, yyrule[yyn]);
  1279. #endif
  1280.     yym = yylen[yyn];
  1281.     yyval = yyvsp[1-yym];
  1282.     switch (yyn)
  1283.     {
  1284. case 3:
  1285. #line 224 "gram.in"
  1286. {
  1287. /* stat:   is the nonterminal for Fortran statements */
  1288.  
  1289.           lastwasbranch = NO; }
  1290. break;
  1291. case 5:
  1292. #line 230 "gram.in"
  1293. { /* forbid further statement function definitions... */
  1294.           if (parstate == INDATA && laststfcn != thisstno)
  1295.             parstate = INEXEC;
  1296.           thisstno++;
  1297.           if(yyvsp[-1].labval  && (yyvsp[-1].labval ->labelno==dorange))
  1298.             enddo(yyvsp[-1].labval ->labelno);
  1299.           if(lastwasbranch && thislabel==NULL)
  1300.             warn("statement cannot be reached");
  1301.           lastwasbranch = thiswasbranch;
  1302.           thiswasbranch = NO;
  1303.           if(yyvsp[-1].labval )
  1304.             {
  1305.             if(yyvsp[-1].labval ->labtype == LABFORMAT)
  1306.                 err("label already that of a format");
  1307.             else
  1308.                 yyvsp[-1].labval ->labtype = LABEXEC;
  1309.             }
  1310.           freetemps();
  1311.         }
  1312. break;
  1313. case 6:
  1314. #line 250 "gram.in"
  1315. { if (can_include)
  1316.             doinclude( yyvsp[0].charpval  );
  1317.           else {
  1318.             fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval );
  1319.             done(1);
  1320.             }
  1321.         }
  1322. break;
  1323. case 7:
  1324. #line 258 "gram.in"
  1325. { if (yyvsp[-2].labval )
  1326.             lastwasbranch = NO;
  1327.           endproc(); /* lastwasbranch = NO; -- set in endproc() */
  1328.         }
  1329. break;
  1330. case 8:
  1331. #line 263 "gram.in"
  1332. { extern void unclassifiable();
  1333.           unclassifiable();
  1334.  
  1335. /* flline flushes the current line, ignoring the rest of the text there */
  1336.  
  1337.           flline(); }
  1338. break;
  1339. case 9:
  1340. #line 270 "gram.in"
  1341. { flline();  needkwd = NO;  inioctl = NO;
  1342.           yyerrok; yyclearin; }
  1343. break;
  1344. case 10:
  1345. #line 275 "gram.in"
  1346. {
  1347.         if(yystno != 0)
  1348.             {
  1349.             yyval.labval  = thislabel =  mklabel(yystno);
  1350.             if( ! headerdone ) {
  1351.                 if (procclass == CLUNKNOWN)
  1352.                     procclass = CLMAIN;
  1353.                 puthead(CNULL, procclass);
  1354.                 }
  1355.             if(thislabel->labdefined)
  1356.                 execerr("label %s already defined",
  1357.                     convic(thislabel->stateno) );
  1358.             else    {
  1359.                 if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
  1360.                     && thislabel->labtype!=LABFORMAT)
  1361.                     warn1("there is a branch to label %s from outside block",
  1362.                           convic( (ftnint) (thislabel->stateno) ) );
  1363.                 thislabel->blklevel = blklevel;
  1364.                 thislabel->labdefined = YES;
  1365.                 if(thislabel->labtype != LABFORMAT)
  1366.                     p1_label((long)(thislabel - labeltab));
  1367.                 }
  1368.             }
  1369.         else    yyval.labval  = thislabel = NULL;
  1370.         }
  1371. break;
  1372. case 11:
  1373. #line 303 "gram.in"
  1374. {startproc(yyvsp[0].extval , CLMAIN); }
  1375. break;
  1376. case 12:
  1377. #line 305 "gram.in"
  1378. {    warn("ignoring arguments to main program");
  1379.             /* hashclear(); */
  1380.             startproc(yyvsp[-1].extval , CLMAIN); }
  1381. break;
  1382. case 13:
  1383. #line 309 "gram.in"
  1384. { if(yyvsp[0].extval ) NO66("named BLOCKDATA");
  1385.           startproc(yyvsp[0].extval , CLBLOCK); }
  1386. break;
  1387. case 14:
  1388. #line 312 "gram.in"
  1389. { entrypt(CLPROC, TYSUBR, (ftnint) 0,  yyvsp[-1].extval , yyvsp[0].chval ); }
  1390. break;
  1391. case 15:
  1392. #line 314 "gram.in"
  1393. { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval , yyvsp[0].chval ); }
  1394. break;
  1395. case 16:
  1396. #line 316 "gram.in"
  1397. { entrypt(CLPROC, yyvsp[-4].ival , varleng, yyvsp[-1].extval , yyvsp[0].chval ); }
  1398. break;
  1399. case 17:
  1400. #line 318 "gram.in"
  1401. { if(parstate==OUTSIDE || procclass==CLMAIN
  1402.             || procclass==CLBLOCK)
  1403.                 execerr("misplaced entry statement", CNULL);
  1404.           entrypt(CLENTRY, 0, (ftnint) 0, yyvsp[-1].extval , yyvsp[0].chval );
  1405.         }
  1406. break;
  1407. case 18:
  1408. #line 326 "gram.in"
  1409. { newproc(); }
  1410. break;
  1411. case 19:
  1412. #line 330 "gram.in"
  1413. { yyval.extval  = newentry(yyvsp[0].namval , 1); }
  1414. break;
  1415. case 20:
  1416. #line 334 "gram.in"
  1417. { yyval.namval  = mkname(token); }
  1418. break;
  1419. case 21:
  1420. #line 337 "gram.in"
  1421. { yyval.extval  = NULL; }
  1422. break;
  1423. case 29:
  1424. #line 355 "gram.in"
  1425. { yyval.chval  = 0; }
  1426. break;
  1427. case 30:
  1428. #line 357 "gram.in"
  1429. { NO66(" () argument list");
  1430.           yyval.chval  = 0; }
  1431. break;
  1432. case 31:
  1433. #line 360 "gram.in"
  1434. {yyval.chval  = yyvsp[-1].chval ; }
  1435. break;
  1436. case 32:
  1437. #line 364 "gram.in"
  1438. { yyval.chval  = (yyvsp[0].namval  ? mkchain((char *)yyvsp[0].namval ,CHNULL) : CHNULL ); }
  1439. break;
  1440. case 33:
  1441. #line 366 "gram.in"
  1442. { if(yyvsp[0].namval ) yyvsp[-2].chval  = yyval.chval  = mkchain((char *)yyvsp[0].namval , yyvsp[-2].chval ); }
  1443. break;
  1444. case 34:
  1445. #line 370 "gram.in"
  1446. { if(yyvsp[0].namval ->vstg!=STGUNKNOWN && yyvsp[0].namval ->vstg!=STGARG)
  1447.             dclerr("name declared as argument after use", yyvsp[0].namval );
  1448.           yyvsp[0].namval ->vstg = STGARG;
  1449.         }
  1450. break;
  1451. case 35:
  1452. #line 375 "gram.in"
  1453. { NO66("altenate return argument");
  1454.  
  1455. /* substars   means that '*'ed formal parameters should be replaced.
  1456.    This is used to specify alternate return labels; in theory, only
  1457.    parameter slots which have '*' should accept the statement labels.
  1458.    This compiler chooses to ignore the '*'s in the formal declaration, and
  1459.    always return the proper value anyway.
  1460.  
  1461.    This variable is only referred to in   proc.c   */
  1462.  
  1463.           yyval.namval  = 0;  substars = YES; }
  1464. break;
  1465. case 36:
  1466. #line 391 "gram.in"
  1467. {
  1468.         char *s;
  1469.         s = copyn(toklen+1, token);
  1470.         s[toklen] = '\0';
  1471.         yyval.charpval  = s;
  1472.         }
  1473. break;
  1474. case 45:
  1475. #line 407 "gram.in"
  1476. { NO66("SAVE statement");
  1477.           saveall = YES; }
  1478. break;
  1479. case 46:
  1480. #line 410 "gram.in"
  1481. { NO66("SAVE statement"); }
  1482. break;
  1483. case 47:
  1484. #line 412 "gram.in"
  1485. { fmtstmt(thislabel); setfmt(thislabel); }
  1486. break;
  1487. case 48:
  1488. #line 414 "gram.in"
  1489. { NO66("PARAMETER statement"); }
  1490. break;
  1491. case 49:
  1492. #line 418 "gram.in"
  1493. { settype(yyvsp[-4].namval , yyvsp[-6].ival , yyvsp[0].lval );
  1494.           if(ndim>0) setbound(yyvsp[-4].namval ,ndim,dims);
  1495.         }
  1496. break;
  1497. case 50:
  1498. #line 422 "gram.in"
  1499. { settype(yyvsp[-2].namval , yyvsp[-4].ival , yyvsp[0].lval );
  1500.           if(ndim>0) setbound(yyvsp[-2].namval ,ndim,dims);
  1501.         }
  1502. break;
  1503. case 51:
  1504. #line 426 "gram.in"
  1505. { if (new_dcl == 2) {
  1506.             err("attempt to give DATA in type-declaration");
  1507.             new_dcl = 1;
  1508.             }
  1509.         }
  1510. break;
  1511. case 52:
  1512. #line 433 "gram.in"
  1513. { new_dcl = 2; }
  1514. break;
  1515. case 53:
  1516. #line 436 "gram.in"
  1517. { varleng = yyvsp[0].lval ;
  1518.           if (vartype == TYLOGICAL && varleng == 1) {
  1519.             varleng = 0;
  1520.             err("treating LOGICAL*1 as LOGICAL");
  1521.             --nerr;    /* allow generation of .c file */
  1522.             }
  1523.         }
  1524. break;
  1525. case 54:
  1526. #line 446 "gram.in"
  1527. { varleng = (yyvsp[0].ival <0 || yyvsp[0].ival ==TYLONG ? 0 : typesize[yyvsp[0].ival ]);
  1528.           vartype = yyvsp[0].ival ; }
  1529. break;
  1530. case 55:
  1531. #line 450 "gram.in"
  1532. { yyval.ival  = TYLONG; }
  1533. break;
  1534. case 56:
  1535. #line 451 "gram.in"
  1536. { yyval.ival  = tyreal; }
  1537. break;
  1538. case 57:
  1539. #line 452 "gram.in"
  1540. { ++complex_seen; yyval.ival  = TYCOMPLEX; }
  1541. break;
  1542. case 58:
  1543. #line 453 "gram.in"
  1544. { yyval.ival  = TYDREAL; }
  1545. break;
  1546. case 59:
  1547. #line 454 "gram.in"
  1548. { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival  = TYDCOMPLEX; }
  1549. break;
  1550. case 60:
  1551. #line 455 "gram.in"
  1552. { yyval.ival  = TYLOGICAL; }
  1553. break;
  1554. case 61:
  1555. #line 456 "gram.in"
  1556. { NO66("CHARACTER statement"); yyval.ival  = TYCHAR; }
  1557. break;
  1558. case 62:
  1559. #line 457 "gram.in"
  1560. { yyval.ival  = TYUNKNOWN; }
  1561. break;
  1562. case 63:
  1563. #line 458 "gram.in"
  1564. { yyval.ival  = TYUNKNOWN; }
  1565. break;
  1566. case 64:
  1567. #line 459 "gram.in"
  1568. { NOEXT("AUTOMATIC statement"); yyval.ival  = - STGAUTO; }
  1569. break;
  1570. case 65:
  1571. #line 460 "gram.in"
  1572. { NOEXT("STATIC statement"); yyval.ival  = - STGBSS; }
  1573. break;
  1574. case 66:
  1575. #line 464 "gram.in"
  1576. { yyval.lval  = varleng; }
  1577. break;
  1578. case 67:
  1579. #line 466 "gram.in"
  1580. {
  1581.         expptr p;
  1582.         p = yyvsp[-1].expval ;
  1583.         NO66("length specification *n");
  1584.         if( ! ISICON(p) || p->constblock.Const.ci<0 )
  1585.             {
  1586.             yyval.lval  = 0;
  1587.             dclerr("length must be a positive integer constant",
  1588.                 NPNULL);
  1589.             }
  1590.         else {
  1591.             if (vartype == TYCHAR)
  1592.                 yyval.lval  = p->constblock.Const.ci;
  1593.             else switch((int)p->constblock.Const.ci) {
  1594.                 case 1:    yyval.lval  = 1; break;
  1595.                 case 2: yyval.lval  = typesize[TYSHORT];    break;
  1596.                 case 4: yyval.lval  = typesize[TYLONG];    break;
  1597.                 case 8: yyval.lval  = typesize[TYDREAL];    break;
  1598.                 case 16: yyval.lval  = typesize[TYDCOMPLEX]; break;
  1599.                 default:
  1600.                     dclerr("invalid length",NPNULL);
  1601.                     yyval.lval  = varleng;
  1602.                 }
  1603.             }
  1604.         }
  1605. break;
  1606. case 68:
  1607. #line 492 "gram.in"
  1608. { NO66("length specification *(*)"); yyval.lval  = -1; }
  1609. break;
  1610. case 69:
  1611. #line 496 "gram.in"
  1612. { incomm( yyval.extval  = comblock("") , yyvsp[0].namval  ); }
  1613. break;
  1614. case 70:
  1615. #line 498 "gram.in"
  1616. { yyval.extval  = yyvsp[-1].extval ;  incomm(yyvsp[-1].extval , yyvsp[0].namval ); }
  1617. break;
  1618. case 71:
  1619. #line 500 "gram.in"
  1620. { yyval.extval  = yyvsp[-2].extval ;  incomm(yyvsp[-2].extval , yyvsp[0].namval ); }
  1621. break;
  1622. case 72:
  1623. #line 502 "gram.in"
  1624. { incomm(yyvsp[-2].extval , yyvsp[0].namval ); }
  1625. break;
  1626. case 73:
  1627. #line 506 "gram.in"
  1628. { yyval.extval  = comblock(""); }
  1629. break;
  1630. case 74:
  1631. #line 508 "gram.in"
  1632. { yyval.extval  = comblock(token); }
  1633. break;
  1634. case 75:
  1635. #line 512 "gram.in"
  1636. { setext(yyvsp[0].namval ); }
  1637. break;
  1638. case 76:
  1639. #line 514 "gram.in"
  1640. { setext(yyvsp[0].namval ); }
  1641. break;
  1642. case 77:
  1643. #line 518 "gram.in"
  1644. { NO66("INTRINSIC statement"); setintr(yyvsp[0].namval ); }
  1645. break;
  1646. case 78:
  1647. #line 520 "gram.in"
  1648. { setintr(yyvsp[0].namval ); }
  1649. break;
  1650. case 81:
  1651. #line 528 "gram.in"
  1652. {
  1653.         struct Equivblock *p;
  1654.         if(nequiv >= maxequiv)
  1655.             many("equivalences", 'q', maxequiv);
  1656.         p  =  & eqvclass[nequiv++];
  1657.         p->eqvinit = NO;
  1658.         p->eqvbottom = 0;
  1659.         p->eqvtop = 0;
  1660.         p->equivs = yyvsp[-1].eqvval ;
  1661.         }
  1662. break;
  1663. case 82:
  1664. #line 541 "gram.in"
  1665. { yyval.eqvval =ALLOC(Eqvchain);
  1666.           yyval.eqvval ->eqvitem.eqvlhs = (struct Primblock *)yyvsp[0].expval ;
  1667.         }
  1668. break;
  1669. case 83:
  1670. #line 545 "gram.in"
  1671. { yyval.eqvval =ALLOC(Eqvchain);
  1672.           yyval.eqvval ->eqvitem.eqvlhs = (struct Primblock *) yyvsp[0].expval ;
  1673.           yyval.eqvval ->eqvnextp = yyvsp[-2].eqvval ;
  1674.         }
  1675. break;
  1676. case 86:
  1677. #line 556 "gram.in"
  1678. { if(parstate == OUTSIDE)
  1679.             {
  1680.             newproc();
  1681.             startproc(ESNULL, CLMAIN);
  1682.             }
  1683.           if(parstate < INDATA)
  1684.             {
  1685.             enddcl();
  1686.             parstate = INDATA;
  1687.             }
  1688.         }
  1689. break;
  1690. case 87:
  1691. #line 570 "gram.in"
  1692. { ftnint junk;
  1693.           if(nextdata(&junk) != NULL)
  1694.             err("too few initializers");
  1695.           frdata(yyvsp[-4].chval );
  1696.           frrpl();
  1697.         }
  1698. break;
  1699. case 88:
  1700. #line 578 "gram.in"
  1701. { frchain(&datastack); curdtp = 0; }
  1702. break;
  1703. case 89:
  1704. #line 580 "gram.in"
  1705. { pop_datastack(); }
  1706. break;
  1707. case 90:
  1708. #line 582 "gram.in"
  1709. { toomanyinit = NO; }
  1710. break;
  1711. case 93:
  1712. #line 587 "gram.in"
  1713. { dataval(ENULL, yyvsp[0].expval ); }
  1714. break;
  1715. case 94:
  1716. #line 589 "gram.in"
  1717. { dataval(yyvsp[-2].expval , yyvsp[0].expval ); }
  1718. break;
  1719. case 96:
  1720. #line 594 "gram.in"
  1721. { if( yyvsp[-1].ival ==OPMINUS && ISCONST(yyvsp[0].expval ) )
  1722.             consnegop((Constp)yyvsp[0].expval );
  1723.           yyval.expval  = yyvsp[0].expval ;
  1724.         }
  1725. break;
  1726. case 100:
  1727. #line 606 "gram.in"
  1728. { int k;
  1729.           yyvsp[0].namval ->vsave = YES;
  1730.           k = yyvsp[0].namval ->vstg;
  1731.         if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
  1732.             dclerr("can only save static variables", yyvsp[0].namval );
  1733.         }
  1734. break;
  1735. case 104:
  1736. #line 620 "gram.in"
  1737. { if(yyvsp[-2].namval ->vclass == CLUNKNOWN)
  1738.             make_param((struct Paramblock *)yyvsp[-2].namval , yyvsp[0].expval );
  1739.           else dclerr("cannot make into parameter", yyvsp[-2].namval );
  1740.         }
  1741. break;
  1742. case 105:
  1743. #line 627 "gram.in"
  1744. { if(ndim>0) setbound(yyvsp[-1].namval , ndim, dims); }
  1745. break;
  1746. case 106:
  1747. #line 631 "gram.in"
  1748. { Namep np;
  1749.           np = ( (struct Primblock *) yyvsp[0].expval ) -> namep;
  1750.           vardcl(np);
  1751.           if(np->vstg == STGCOMMON)
  1752.             extsymtab[np->vardesc.varno].extinit = YES;
  1753.           else if(np->vstg==STGEQUIV)
  1754.             eqvclass[np->vardesc.varno].eqvinit = YES;
  1755.           else if(np->vstg!=STGINIT && np->vstg!=STGBSS)
  1756.             dclerr("inconsistent storage classes", np);
  1757.           yyval.chval  = mkchain((char *)yyvsp[0].expval , CHNULL);
  1758.         }
  1759. break;
  1760. case 107:
  1761. #line 643 "gram.in"
  1762. { chainp p; struct Impldoblock *q;
  1763.         pop_datastack();
  1764.         q = ALLOC(Impldoblock);
  1765.         q->tag = TIMPLDO;
  1766.         (q->varnp = (Namep) (yyvsp[-1].chval ->datap))->vimpldovar = 1;
  1767.         p = yyvsp[-1].chval ->nextp;
  1768.         if(p)  { q->implb = (expptr)(p->datap); p = p->nextp; }
  1769.         if(p)  { q->impub = (expptr)(p->datap); p = p->nextp; }
  1770.         if(p)  { q->impstep = (expptr)(p->datap); }
  1771.         frchain( & (yyvsp[-1].chval ) );
  1772.         yyval.chval  = mkchain((char *)q, CHNULL);
  1773.         q->datalist = hookup(yyvsp[-3].chval , yyval.chval );
  1774.         }
  1775. break;
  1776. case 108:
  1777. #line 659 "gram.in"
  1778. { if (!datastack)
  1779.             curdtp = 0;
  1780.           datastack = mkchain((char *)curdtp, datastack);
  1781.           curdtp = yyvsp[0].chval ; curdtelt = 0;
  1782.           }
  1783. break;
  1784. case 109:
  1785. #line 665 "gram.in"
  1786. { yyval.chval  = hookup(yyvsp[-2].chval , yyvsp[0].chval ); }
  1787. break;
  1788. case 110:
  1789. #line 669 "gram.in"
  1790. { ndim = 0; }
  1791. break;
  1792. case 112:
  1793. #line 673 "gram.in"
  1794. { ndim = 0; }
  1795. break;
  1796. case 115:
  1797. #line 678 "gram.in"
  1798. {
  1799.           if(ndim == maxdim)
  1800.             err("too many dimensions");
  1801.           else if(ndim < maxdim)
  1802.             { dims[ndim].lb = 0;
  1803.               dims[ndim].ub = yyvsp[0].expval ;
  1804.             }
  1805.           ++ndim;
  1806.         }
  1807. break;
  1808. case 116:
  1809. #line 688 "gram.in"
  1810. {
  1811.           if(ndim == maxdim)
  1812.             err("too many dimensions");
  1813.           else if(ndim < maxdim)
  1814.             { dims[ndim].lb = yyvsp[-2].expval ;
  1815.               dims[ndim].ub = yyvsp[0].expval ;
  1816.             }
  1817.           ++ndim;
  1818.         }
  1819. break;
  1820. case 117:
  1821. #line 700 "gram.in"
  1822. { yyval.expval  = 0; }
  1823. break;
  1824. case 119:
  1825. #line 705 "gram.in"
  1826. { nstars = 1; labarray[0] = yyvsp[0].labval ; }
  1827. break;
  1828. case 120:
  1829. #line 707 "gram.in"
  1830. { if(nstars < MAXLABLIST)  labarray[nstars++] = yyvsp[0].labval ; }
  1831. break;
  1832. case 121:
  1833. #line 711 "gram.in"
  1834. { yyval.labval  = execlab( convci(toklen, token) ); }
  1835. break;
  1836. case 122:
  1837. #line 715 "gram.in"
  1838. { NO66("IMPLICIT statement"); }
  1839. break;
  1840. case 125:
  1841. #line 721 "gram.in"
  1842. { if (vartype != TYUNKNOWN)
  1843.             dclerr("-- expected letter range",NPNULL);
  1844.           setimpl(vartype, varleng, 'a', 'z'); }
  1845. break;
  1846. case 126:
  1847. #line 726 "gram.in"
  1848. { needkwd = 1; }
  1849. break;
  1850. case 130:
  1851. #line 735 "gram.in"
  1852. { setimpl(vartype, varleng, yyvsp[0].ival , yyvsp[0].ival ); }
  1853. break;
  1854. case 131:
  1855. #line 737 "gram.in"
  1856. { setimpl(vartype, varleng, yyvsp[-2].ival , yyvsp[0].ival ); }
  1857. break;
  1858. case 132:
  1859. #line 741 "gram.in"
  1860. { if(toklen!=1 || token[0]<'a' || token[0]>'z')
  1861.             {
  1862.             dclerr("implicit item must be single letter", NPNULL);
  1863.             yyval.ival  = 0;
  1864.             }
  1865.           else yyval.ival  = token[0];
  1866.         }
  1867. break;
  1868. case 135:
  1869. #line 755 "gram.in"
  1870. {
  1871.         if(yyvsp[-2].namval ->vclass == CLUNKNOWN)
  1872.             {
  1873.             yyvsp[-2].namval ->vclass = CLNAMELIST;
  1874.             yyvsp[-2].namval ->vtype = TYINT;
  1875.             yyvsp[-2].namval ->vstg = STGBSS;
  1876.             yyvsp[-2].namval ->varxptr.namelist = yyvsp[0].chval ;
  1877.             yyvsp[-2].namval ->vardesc.varno = ++lastvarno;
  1878.             }
  1879.         else dclerr("cannot be a namelist name", yyvsp[-2].namval );
  1880.         }
  1881. break;
  1882. case 136:
  1883. #line 769 "gram.in"
  1884. { yyval.chval  = mkchain((char *)yyvsp[0].namval , CHNULL); }
  1885. break;
  1886. case 137:
  1887. #line 771 "gram.in"
  1888. { yyval.chval  = hookup(yyvsp[-2].chval , mkchain((char *)yyvsp[0].namval , CHNULL)); }
  1889. break;
  1890. case 138:
  1891. #line 775 "gram.in"
  1892. { switch(parstate)
  1893.             {
  1894.             case OUTSIDE:    newproc();
  1895.                     startproc(ESNULL, CLMAIN);
  1896.             case INSIDE:    parstate = INDCL;
  1897.             case INDCL:    break;
  1898.  
  1899.             case INDATA:
  1900.                 errstr(
  1901.                 "Statement order error: declaration after DATA",
  1902.                     CNULL);
  1903.                 break;
  1904.  
  1905.             default:
  1906.                 dclerr("declaration among executables", NPNULL);
  1907.             }
  1908.         }
  1909. break;
  1910. case 139:
  1911. #line 794 "gram.in"
  1912. { yyval.chval  = 0; }
  1913. break;
  1914. case 140:
  1915. #line 796 "gram.in"
  1916. { yyval.chval  = revchain(yyvsp[0].chval ); }
  1917. break;
  1918. case 141:
  1919. #line 800 "gram.in"
  1920. { yyval.chval  = mkchain((char *)yyvsp[0].expval , CHNULL); }
  1921. break;
  1922. case 142:
  1923. #line 802 "gram.in"
  1924. { yyval.chval  = mkchain((char *)yyvsp[0].expval , yyvsp[-2].chval ); }
  1925. break;
  1926. case 144:
  1927. #line 807 "gram.in"
  1928. { yyval.expval  = yyvsp[-1].expval ; }
  1929. break;
  1930. case 148:
  1931. #line 814 "gram.in"
  1932. { yyval.expval  = mkexpr(yyvsp[-1].ival , yyvsp[-2].expval , yyvsp[0].expval ); }
  1933. break;
  1934. case 149:
  1935. #line 816 "gram.in"
  1936. { yyval.expval  = mkexpr(OPSTAR, yyvsp[-2].expval , yyvsp[0].expval ); }
  1937. break;
  1938. case 150:
  1939. #line 818 "gram.in"
  1940. { yyval.expval  = mkexpr(OPSLASH, yyvsp[-2].expval , yyvsp[0].expval ); }
  1941. break;
  1942. case 151:
  1943. #line 820 "gram.in"
  1944. { yyval.expval  = mkexpr(OPPOWER, yyvsp[-2].expval , yyvsp[0].expval ); }
  1945. break;
  1946. case 152:
  1947. #line 822 "gram.in"
  1948. { if(yyvsp[-1].ival  == OPMINUS)
  1949.             yyval.expval  = mkexpr(OPNEG, yyvsp[0].expval , ENULL);
  1950.           else     yyval.expval  = yyvsp[0].expval ;
  1951.         }
  1952. break;
  1953. case 153:
  1954. #line 827 "gram.in"
  1955. { yyval.expval  = mkexpr(yyvsp[-1].ival , yyvsp[-2].expval , yyvsp[0].expval ); }
  1956. break;
  1957. case 154:
  1958. #line 829 "gram.in"
  1959. { NO66(".EQV. operator");
  1960.           yyval.expval  = mkexpr(OPEQV, yyvsp[-2].expval ,yyvsp[0].expval ); }
  1961. break;
  1962. case 155:
  1963. #line 832 "gram.in"
  1964. { NO66(".NEQV. operator");
  1965.           yyval.expval  = mkexpr(OPNEQV, yyvsp[-2].expval , yyvsp[0].expval ); }
  1966. break;
  1967. case 156:
  1968. #line 835 "gram.in"
  1969. { yyval.expval  = mkexpr(OPOR, yyvsp[-2].expval , yyvsp[0].expval ); }
  1970. break;
  1971. case 157:
  1972. #line 837 "gram.in"
  1973. { yyval.expval  = mkexpr(OPAND, yyvsp[-2].expval , yyvsp[0].expval ); }
  1974. break;
  1975. case 158:
  1976. #line 839 "gram.in"
  1977. { yyval.expval  = mkexpr(OPNOT, yyvsp[0].expval , ENULL); }
  1978. break;
  1979. case 159:
  1980. #line 841 "gram.in"
  1981. { NO66("concatenation operator //");
  1982.           yyval.expval  = mkexpr(OPCONCAT, yyvsp[-2].expval , yyvsp[0].expval ); }
  1983. break;
  1984. case 160:
  1985. #line 845 "gram.in"
  1986. { yyval.ival  = OPPLUS; }
  1987. break;
  1988. case 161:
  1989. #line 846 "gram.in"
  1990. { yyval.ival  = OPMINUS; }
  1991. break;
  1992. case 162:
  1993. #line 849 "gram.in"
  1994. { yyval.ival  = OPEQ; }
  1995. break;
  1996. case 163:
  1997. #line 850 "gram.in"
  1998. { yyval.ival  = OPGT; }
  1999. break;
  2000. case 164:
  2001. #line 851 "gram.in"
  2002. { yyval.ival  = OPLT; }
  2003. break;
  2004. case 165:
  2005. #line 852 "gram.in"
  2006. { yyval.ival  = OPGE; }
  2007. break;
  2008. case 166:
  2009. #line 853 "gram.in"
  2010. { yyval.ival  = OPLE; }
  2011. break;
  2012. case 167:
  2013. #line 854 "gram.in"
  2014. { yyval.ival  = OPNE; }
  2015. break;
  2016. case 168:
  2017. #line 858 "gram.in"
  2018. { yyval.expval  = mkprim(yyvsp[0].namval , LBNULL, CHNULL); }
  2019. break;
  2020. case 169:
  2021. #line 860 "gram.in"
  2022. { NO66("substring operator :");
  2023.           yyval.expval  = mkprim(yyvsp[-1].namval , LBNULL, yyvsp[0].chval ); }
  2024. break;
  2025. case 170:
  2026. #line 863 "gram.in"
  2027. { yyval.expval  = mkprim(yyvsp[-3].namval , mklist(yyvsp[-1].chval ), CHNULL); }
  2028. break;
  2029. case 171:
  2030. #line 865 "gram.in"
  2031. { NO66("substring operator :");
  2032.           yyval.expval  = mkprim(yyvsp[-4].namval , mklist(yyvsp[-2].chval ), yyvsp[0].chval ); }
  2033. break;
  2034. case 172:
  2035. #line 870 "gram.in"
  2036. { yyval.chval  = mkchain((char *)yyvsp[-3].expval , mkchain((char *)yyvsp[-1].expval ,CHNULL)); }
  2037. break;
  2038. case 173:
  2039. #line 874 "gram.in"
  2040. { yyval.expval  = 0; }
  2041. break;
  2042. case 175:
  2043. #line 879 "gram.in"
  2044. { if(yyvsp[0].namval ->vclass == CLPARAM)
  2045.             yyval.expval  = (expptr) cpexpr(
  2046.                 ( (struct Paramblock *) (yyvsp[0].namval ) ) -> paramval);
  2047.         }
  2048. break;
  2049. case 177:
  2050. #line 886 "gram.in"
  2051. { yyval.expval  = mklogcon(1); }
  2052. break;
  2053. case 178:
  2054. #line 887 "gram.in"
  2055. { yyval.expval  = mklogcon(0); }
  2056. break;
  2057. case 179:
  2058. #line 888 "gram.in"
  2059. { yyval.expval  = mkstrcon(toklen, token); }
  2060. break;
  2061. case 180:
  2062. #line 889 "gram.in"
  2063.  { yyval.expval  = mkintcon( convci(toklen, token) ); }
  2064. break;
  2065. case 181:
  2066. #line 890 "gram.in"
  2067.  { yyval.expval  = mkrealcon(tyreal, token); }
  2068. break;
  2069. case 182:
  2070. #line 891 "gram.in"
  2071.  { yyval.expval  = mkrealcon(TYDREAL, token); }
  2072. break;
  2073. case 184:
  2074. #line 896 "gram.in"
  2075. { yyval.expval  = mkcxcon(yyvsp[-3].expval ,yyvsp[-1].expval ); }
  2076. break;
  2077. case 185:
  2078. #line 900 "gram.in"
  2079. { NOEXT("hex constant");
  2080.           yyval.expval  = mkbitcon(4, toklen, token); }
  2081. break;
  2082. case 186:
  2083. #line 903 "gram.in"
  2084. { NOEXT("octal constant");
  2085.           yyval.expval  = mkbitcon(3, toklen, token); }
  2086. break;
  2087. case 187:
  2088. #line 906 "gram.in"
  2089. { NOEXT("binary constant");
  2090.           yyval.expval  = mkbitcon(1, toklen, token); }
  2091. break;
  2092. case 189:
  2093. #line 912 "gram.in"
  2094. { yyval.expval  = yyvsp[-1].expval ; }
  2095. break;
  2096. case 192:
  2097. #line 918 "gram.in"
  2098. { yyval.expval  = mkexpr(yyvsp[-1].ival , yyvsp[-2].expval , yyvsp[0].expval ); }
  2099. break;
  2100. case 193:
  2101. #line 920 "gram.in"
  2102. { yyval.expval  = mkexpr(OPSTAR, yyvsp[-2].expval , yyvsp[0].expval ); }
  2103. break;
  2104. case 194:
  2105. #line 922 "gram.in"
  2106. { yyval.expval  = mkexpr(OPSLASH, yyvsp[-2].expval , yyvsp[0].expval ); }
  2107. break;
  2108. case 195:
  2109. #line 924 "gram.in"
  2110. { yyval.expval  = mkexpr(OPPOWER, yyvsp[-2].expval , yyvsp[0].expval ); }
  2111. break;
  2112. case 196:
  2113. #line 926 "gram.in"
  2114. { if(yyvsp[-1].ival  == OPMINUS)
  2115.             yyval.expval  = mkexpr(OPNEG, yyvsp[0].expval , ENULL);
  2116.           else    yyval.expval  = yyvsp[0].expval ;
  2117.         }
  2118. break;
  2119. case 197:
  2120. #line 931 "gram.in"
  2121. { NO66("concatenation operator //");
  2122.           yyval.expval  = mkexpr(OPCONCAT, yyvsp[-2].expval , yyvsp[0].expval ); }
  2123. break;
  2124. case 199:
  2125. #line 936 "gram.in"
  2126. {
  2127.         if(yyvsp[-3].labval ->labdefined)
  2128.             execerr("no backward DO loops", CNULL);
  2129.         yyvsp[-3].labval ->blklevel = blklevel+1;
  2130.         exdo(yyvsp[-3].labval ->labelno, NPNULL, yyvsp[0].chval );
  2131.         }
  2132. break;
  2133. case 200:
  2134. #line 943 "gram.in"
  2135. {
  2136.         exdo(ctls - ctlstack - 2, NPNULL, yyvsp[0].chval );
  2137.         NOEXT("DO without label");
  2138.         }
  2139. break;
  2140. case 201:
  2141. #line 948 "gram.in"
  2142. { exenddo(NPNULL); }
  2143. break;
  2144. case 202:
  2145. #line 950 "gram.in"
  2146. { exendif();  thiswasbranch = NO; }
  2147. break;
  2148. case 204:
  2149. #line 953 "gram.in"
  2150. { exelif(yyvsp[-2].expval ); lastwasbranch = NO; }
  2151. break;
  2152. case 205:
  2153. #line 955 "gram.in"
  2154. { exelse(); lastwasbranch = NO; }
  2155. break;
  2156. case 206:
  2157. #line 957 "gram.in"
  2158. { exendif(); lastwasbranch = NO; }
  2159. break;
  2160. case 207:
  2161. #line 961 "gram.in"
  2162. { exif(yyvsp[-1].expval ); }
  2163. break;
  2164. case 208:
  2165. #line 965 "gram.in"
  2166. { yyval.chval  = mkchain((char *)yyvsp[-2].namval , yyvsp[0].chval ); }
  2167. break;
  2168. case 210:
  2169. #line 970 "gram.in"
  2170. { yyval.chval  = mkchain(CNULL, (chainp)yyvsp[-1].expval ); }
  2171. break;
  2172. case 211:
  2173. #line 974 "gram.in"
  2174. { exequals((struct Primblock *)yyvsp[-2].expval , yyvsp[0].expval ); }
  2175. break;
  2176. case 212:
  2177. #line 976 "gram.in"
  2178. { exassign(yyvsp[0].namval , yyvsp[-2].labval ); }
  2179. break;
  2180. case 215:
  2181. #line 980 "gram.in"
  2182. { inioctl = NO; }
  2183. break;
  2184. case 216:
  2185. #line 982 "gram.in"
  2186. { exarif(yyvsp[-6].expval , yyvsp[-4].labval , yyvsp[-2].labval , yyvsp[0].labval );  thiswasbranch = YES; }
  2187. break;
  2188. case 217:
  2189. #line 984 "gram.in"
  2190. { excall(yyvsp[0].namval , LBNULL, 0, labarray); }
  2191. break;
  2192. case 218:
  2193. #line 986 "gram.in"
  2194. { excall(yyvsp[-2].namval , LBNULL, 0, labarray); }
  2195. break;
  2196. case 219:
  2197. #line 988 "gram.in"
  2198. { if(nstars < MAXLABLIST)
  2199.             excall(yyvsp[-3].namval , mklist(revchain(yyvsp[-1].chval )), nstars, labarray);
  2200.           else
  2201.             err("too many alternate returns");
  2202.         }
  2203. break;
  2204. case 220:
  2205. #line 994 "gram.in"
  2206. { exreturn(yyvsp[0].expval );  thiswasbranch = YES; }
  2207. break;
  2208. case 221:
  2209. #line 996 "gram.in"
  2210. { exstop(yyvsp[-2].ival , yyvsp[0].expval );  thiswasbranch = yyvsp[-2].ival ; }
  2211. break;
  2212. case 222:
  2213. #line 1000 "gram.in"
  2214. { yyval.labval  = mklabel( convci(toklen, token) ); }
  2215. break;
  2216. case 223:
  2217. #line 1004 "gram.in"
  2218. { if(parstate == OUTSIDE)
  2219.             {
  2220.             newproc();
  2221.             startproc(ESNULL, CLMAIN);
  2222.             }
  2223.         }
  2224. break;
  2225. case 224:
  2226. #line 1013 "gram.in"
  2227. { exgoto(yyvsp[0].labval );  thiswasbranch = YES; }
  2228. break;
  2229. case 225:
  2230. #line 1015 "gram.in"
  2231. { exasgoto(yyvsp[0].namval );  thiswasbranch = YES; }
  2232. break;
  2233. case 226:
  2234. #line 1017 "gram.in"
  2235. { exasgoto(yyvsp[-4].namval );  thiswasbranch = YES; }
  2236. break;
  2237. case 227:
  2238. #line 1019 "gram.in"
  2239. { if(nstars < MAXLABLIST)
  2240.             putcmgo(putx(fixtype(yyvsp[0].expval )), nstars, labarray);
  2241.           else
  2242.             err("computed GOTO list too long");
  2243.         }
  2244. break;
  2245. case 230:
  2246. #line 1031 "gram.in"
  2247. { nstars = 0; yyval.namval  = yyvsp[0].namval ; }
  2248. break;
  2249. case 231:
  2250. #line 1035 "gram.in"
  2251. { yyval.chval  = yyvsp[0].expval  ? mkchain((char *)yyvsp[0].expval ,CHNULL) : CHNULL; }
  2252. break;
  2253. case 232:
  2254. #line 1037 "gram.in"
  2255. { yyval.chval  = yyvsp[0].expval  ? mkchain((char *)yyvsp[0].expval , yyvsp[-2].chval ) : yyvsp[-2].chval ; }
  2256. break;
  2257. case 234:
  2258. #line 1042 "gram.in"
  2259. { if(nstars<MAXLABLIST) labarray[nstars++] = yyvsp[0].labval ; yyval.expval  = 0; }
  2260. break;
  2261. case 235:
  2262. #line 1046 "gram.in"
  2263. { yyval.ival  = 0; }
  2264. break;
  2265. case 236:
  2266. #line 1048 "gram.in"
  2267. { yyval.ival  = 1; }
  2268. break;
  2269. case 237:
  2270. #line 1052 "gram.in"
  2271. { yyval.chval  = mkchain((char *)yyvsp[0].expval , CHNULL); }
  2272. break;
  2273. case 238:
  2274. #line 1054 "gram.in"
  2275. { yyval.chval  = hookup(yyvsp[-2].chval , mkchain((char *)yyvsp[0].expval ,CHNULL) ); }
  2276. break;
  2277. case 239:
  2278. #line 1058 "gram.in"
  2279. { if(parstate == OUTSIDE)
  2280.             {
  2281.             newproc();
  2282.             startproc(ESNULL, CLMAIN);
  2283.             }
  2284.  
  2285. /* This next statement depends on the ordering of the state table encoding */
  2286.  
  2287.           if(parstate < INDATA) enddcl();
  2288.         }
  2289. break;
  2290. case 240:
  2291. #line 1071 "gram.in"
  2292. { intonly = YES; }
  2293. break;
  2294. case 241:
  2295. #line 1075 "gram.in"
  2296. { intonly = NO; }
  2297. break;
  2298. case 242:
  2299. #line 1080 "gram.in"
  2300. { endio(); }
  2301. break;
  2302. case 244:
  2303. #line 1085 "gram.in"
  2304. { ioclause(IOSUNIT, yyvsp[0].expval ); endioctl(); }
  2305. break;
  2306. case 245:
  2307. #line 1087 "gram.in"
  2308. { ioclause(IOSUNIT, ENULL); endioctl(); }
  2309. break;
  2310. case 246:
  2311. #line 1089 "gram.in"
  2312. { ioclause(IOSUNIT, IOSTDERR); endioctl(); }
  2313. break;
  2314. case 248:
  2315. #line 1092 "gram.in"
  2316. { doio(CHNULL); }
  2317. break;
  2318. case 249:
  2319. #line 1094 "gram.in"
  2320. { doio(CHNULL); }
  2321. break;
  2322. case 250:
  2323. #line 1096 "gram.in"
  2324. { doio(revchain(yyvsp[0].chval )); }
  2325. break;
  2326. case 251:
  2327. #line 1098 "gram.in"
  2328. { doio(revchain(yyvsp[0].chval )); }
  2329. break;
  2330. case 252:
  2331. #line 1100 "gram.in"
  2332. { doio(revchain(yyvsp[0].chval )); }
  2333. break;
  2334. case 253:
  2335. #line 1102 "gram.in"
  2336. { doio(CHNULL); }
  2337. break;
  2338. case 254:
  2339. #line 1104 "gram.in"
  2340. { doio(revchain(yyvsp[0].chval )); }
  2341. break;
  2342. case 255:
  2343. #line 1106 "gram.in"
  2344. { doio(CHNULL); }
  2345. break;
  2346. case 256:
  2347. #line 1108 "gram.in"
  2348. { doio(revchain(yyvsp[0].chval )); }
  2349. break;
  2350. case 258:
  2351. #line 1115 "gram.in"
  2352. { iostmt = IOBACKSPACE; }
  2353. break;
  2354. case 259:
  2355. #line 1117 "gram.in"
  2356. { iostmt = IOREWIND; }
  2357. break;
  2358. case 260:
  2359. #line 1119 "gram.in"
  2360. { iostmt = IOENDFILE; }
  2361. break;
  2362. case 262:
  2363. #line 1126 "gram.in"
  2364. { iostmt = IOINQUIRE; }
  2365. break;
  2366. case 263:
  2367. #line 1128 "gram.in"
  2368. { iostmt = IOOPEN; }
  2369. break;
  2370. case 264:
  2371. #line 1130 "gram.in"
  2372. { iostmt = IOCLOSE; }
  2373. break;
  2374. case 265:
  2375. #line 1134 "gram.in"
  2376. {
  2377.         ioclause(IOSUNIT, ENULL);
  2378.         ioclause(IOSFMT, yyvsp[0].expval );
  2379.         endioctl();
  2380.         }
  2381. break;
  2382. case 266:
  2383. #line 1140 "gram.in"
  2384. {
  2385.         ioclause(IOSUNIT, ENULL);
  2386.         ioclause(IOSFMT, ENULL);
  2387.         endioctl();
  2388.         }
  2389. break;
  2390. case 267:
  2391. #line 1148 "gram.in"
  2392. {
  2393.           ioclause(IOSUNIT, yyvsp[-1].expval );
  2394.           endioctl();
  2395.         }
  2396. break;
  2397. case 268:
  2398. #line 1153 "gram.in"
  2399. { endioctl(); }
  2400. break;
  2401. case 271:
  2402. #line 1161 "gram.in"
  2403. { ioclause(IOSPOSITIONAL, yyvsp[0].expval ); }
  2404. break;
  2405. case 272:
  2406. #line 1163 "gram.in"
  2407. { ioclause(IOSPOSITIONAL, ENULL); }
  2408. break;
  2409. case 273:
  2410. #line 1165 "gram.in"
  2411. { ioclause(IOSPOSITIONAL, IOSTDERR); }
  2412. break;
  2413. case 274:
  2414. #line 1167 "gram.in"
  2415. { ioclause(yyvsp[-1].ival , yyvsp[0].expval ); }
  2416. break;
  2417. case 275:
  2418. #line 1169 "gram.in"
  2419. { ioclause(yyvsp[-1].ival , ENULL); }
  2420. break;
  2421. case 276:
  2422. #line 1171 "gram.in"
  2423. { ioclause(yyvsp[-1].ival , IOSTDERR); }
  2424. break;
  2425. case 277:
  2426. #line 1175 "gram.in"
  2427. { yyval.ival  = iocname(); }
  2428. break;
  2429. case 278:
  2430. #line 1179 "gram.in"
  2431. { iostmt = IOREAD; }
  2432. break;
  2433. case 279:
  2434. #line 1183 "gram.in"
  2435. { iostmt = IOWRITE; }
  2436. break;
  2437. case 280:
  2438. #line 1187 "gram.in"
  2439. {
  2440.         iostmt = IOWRITE;
  2441.         ioclause(IOSUNIT, ENULL);
  2442.         ioclause(IOSFMT, yyvsp[-1].expval );
  2443.         endioctl();
  2444.         }
  2445. break;
  2446. case 281:
  2447. #line 1194 "gram.in"
  2448. {
  2449.         iostmt = IOWRITE;
  2450.         ioclause(IOSUNIT, ENULL);
  2451.         ioclause(IOSFMT, ENULL);
  2452.         endioctl();
  2453.         }
  2454. break;
  2455. case 282:
  2456. #line 1203 "gram.in"
  2457. { yyval.chval  = mkchain((char *)yyvsp[0].tagval , CHNULL); }
  2458. break;
  2459. case 283:
  2460. #line 1205 "gram.in"
  2461. { yyval.chval  = mkchain((char *)yyvsp[0].tagval , yyvsp[-2].chval ); }
  2462. break;
  2463. case 284:
  2464. #line 1209 "gram.in"
  2465. { yyval.tagval  = (tagptr) yyvsp[0].expval ; }
  2466. break;
  2467. case 285:
  2468. #line 1211 "gram.in"
  2469. { yyval.tagval  = (tagptr) mkiodo(yyvsp[-1].chval ,revchain(yyvsp[-3].chval )); }
  2470. break;
  2471. case 286:
  2472. #line 1215 "gram.in"
  2473. { yyval.chval  = mkchain((char *)yyvsp[0].expval , CHNULL); }
  2474. break;
  2475. case 287:
  2476. #line 1217 "gram.in"
  2477. { yyval.chval  = mkchain((char *)yyvsp[0].tagval , CHNULL); }
  2478. break;
  2479. case 289:
  2480. #line 1222 "gram.in"
  2481. { yyval.chval  = mkchain((char *)yyvsp[0].expval , mkchain((char *)yyvsp[-2].expval , CHNULL) ); }
  2482. break;
  2483. case 290:
  2484. #line 1224 "gram.in"
  2485. { yyval.chval  = mkchain((char *)yyvsp[0].tagval , mkchain((char *)yyvsp[-2].expval , CHNULL) ); }
  2486. break;
  2487. case 291:
  2488. #line 1226 "gram.in"
  2489. { yyval.chval  = mkchain((char *)yyvsp[0].expval , mkchain((char *)yyvsp[-2].tagval , CHNULL) ); }
  2490. break;
  2491. case 292:
  2492. #line 1228 "gram.in"
  2493. { yyval.chval  = mkchain((char *)yyvsp[0].tagval , mkchain((char *)yyvsp[-2].tagval , CHNULL) ); }
  2494. break;
  2495. case 293:
  2496. #line 1230 "gram.in"
  2497. { yyval.chval  = mkchain((char *)yyvsp[0].expval , yyvsp[-2].chval ); }
  2498. break;
  2499. case 294:
  2500. #line 1232 "gram.in"
  2501. { yyval.chval  = mkchain((char *)yyvsp[0].tagval , yyvsp[-2].chval ); }
  2502. break;
  2503. case 295:
  2504. #line 1236 "gram.in"
  2505. { yyval.tagval  = (tagptr) yyvsp[0].expval ; }
  2506. break;
  2507. case 296:
  2508. #line 1238 "gram.in"
  2509. { yyval.tagval  = (tagptr) yyvsp[-1].expval ; }
  2510. break;
  2511. case 297:
  2512. #line 1240 "gram.in"
  2513. { yyval.tagval  = (tagptr) mkiodo(yyvsp[-1].chval , mkchain((char *)yyvsp[-3].expval , CHNULL) ); }
  2514. break;
  2515. case 298:
  2516. #line 1242 "gram.in"
  2517. { yyval.tagval  = (tagptr) mkiodo(yyvsp[-1].chval , mkchain((char *)yyvsp[-3].tagval , CHNULL) ); }
  2518. break;
  2519. case 299:
  2520. #line 1244 "gram.in"
  2521. { yyval.tagval  = (tagptr) mkiodo(yyvsp[-1].chval , revchain(yyvsp[-3].chval )); }
  2522. break;
  2523. case 300:
  2524. #line 1248 "gram.in"
  2525. { startioctl(); }
  2526. break;
  2527. #line 2528 "y.tab.c"
  2528.     }
  2529.     yyssp -= yym;
  2530.     yystate = *yyssp;
  2531.     yyvsp -= yym;
  2532.     yym = yylhs[yyn];
  2533.     if (yystate == 0 && yym == 0)
  2534.     {
  2535. #ifdef YYDEBUG
  2536.         if (yydebug)
  2537.             printf("yydebug: after reduction, shifting from state 0 to\
  2538.  state %d\n", YYFINAL);
  2539. #endif
  2540.         yystate = YYFINAL;
  2541.         *++yyssp = YYFINAL;
  2542.         *++yyvsp = yyval;
  2543.         if (yychar < 0)
  2544.         {
  2545.             if ((yychar = yylex()) < 0) yychar = 0;
  2546. #if YYDEBUG
  2547.             if (yydebug)
  2548.             {
  2549.                 yys = 0;
  2550.                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  2551.                 if (!yys) yys = "illegal-symbol";
  2552.                 printf("yydebug: state %d, reading %d (%s)\n",
  2553.                         YYFINAL, yychar, yys);
  2554.             }
  2555. #endif
  2556.         }
  2557.         if (yychar == 0) goto yyaccept;
  2558.         goto yyloop;
  2559.     }
  2560.     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
  2561.             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
  2562.         yystate = yytable[yyn];
  2563.     else
  2564.         yystate = yydgoto[yym];
  2565. #ifdef YYDEBUG
  2566.     if (yydebug)
  2567.         printf("yydebug: after reduction, shifting from state %d \
  2568. to state %d\n", *yyssp, yystate);
  2569. #endif
  2570.     if (yyssp >= yyss + yystacksize - 1)
  2571.     {
  2572.         goto yyoverflow;
  2573.     }
  2574.     *++yyssp = yystate;
  2575.     *++yyvsp = yyval;
  2576.     goto yyloop;
  2577. yyoverflow:
  2578.     yyerror("yacc stack overflow");
  2579. yyabort:
  2580.     return (1);
  2581. yyaccept:
  2582.     return (0);
  2583. }
  2584.