home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / f2c / src / gram.c < prev    next >
C/C++ Source or Header  |  1999-12-11  |  96KB  |  2,780 lines

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