home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / historic / v92.tgz / v92.tar / v92 / src / icont / tparse.c < prev    next >
C/C++ Source or Header  |  1996-03-22  |  53KB  |  1,918 lines

  1. # define IDENT 257
  2. # define INTLIT 258
  3. # define REALLIT 259
  4. # define STRINGLIT 260
  5. # define CSETLIT 261
  6. # define EOFX 262
  7. # define BREAK 263
  8. # define BY 264
  9. # define CASE 265
  10. # define CREATE 266
  11. # define DEFAULT 267
  12. # define DO 268
  13. # define ELSE 269
  14. # define END 270
  15. # define EVERY 271
  16. # define FAIL 272
  17. # define GLOBAL 273
  18. # define IF 274
  19. # define INITIAL 275
  20. # define INVOCABLE 276
  21. # define LINK 277
  22. # define LOCAL 278
  23. # define NEXT 279
  24. # define NOT 280
  25. # define OF 281
  26. # define PROCEDURE 282
  27. # define RECORD 283
  28. # define REPEAT 284
  29. # define RETURN 285
  30. # define STATIC 286
  31. # define SUSPEND 287
  32. # define THEN 288
  33. # define TO 289
  34. # define UNTIL 290
  35. # define WHILE 291
  36. # define BANG 292
  37. # define MOD 293
  38. # define AUGMOD 294
  39. # define AND 295
  40. # define AUGAND 296
  41. # define STAR 297
  42. # define AUGSTAR 298
  43. # define INTER 299
  44. # define AUGINTER 300
  45. # define PLUS 301
  46. # define AUGPLUS 302
  47. # define UNION 303
  48. # define AUGUNION 304
  49. # define MINUS 305
  50. # define AUGMINUS 306
  51. # define DIFF 307
  52. # define AUGDIFF 308
  53. # define DOT 309
  54. # define SLASH 310
  55. # define AUGSLASH 311
  56. # define ASSIGN 312
  57. # define SWAP 313
  58. # define NMLT 314
  59. # define AUGNMLT 315
  60. # define REVASSIGN 316
  61. # define REVSWAP 317
  62. # define SLT 318
  63. # define AUGSLT 319
  64. # define SLE 320
  65. # define AUGSLE 321
  66. # define NMLE 322
  67. # define AUGNMLE 323
  68. # define NMEQ 324
  69. # define AUGNMEQ 325
  70. # define SEQ 326
  71. # define AUGSEQ 327
  72. # define EQUIV 328
  73. # define AUGEQUIV 329
  74. # define NMGT 330
  75. # define AUGNMGT 331
  76. # define NMGE 332
  77. # define AUGNMGE 333
  78. # define SGT 334
  79. # define AUGSGT 335
  80. # define SGE 336
  81. # define AUGSGE 337
  82. # define QMARK 338
  83. # define AUGQMARK 339
  84. # define AT 340
  85. # define AUGAT 341
  86. # define BACKSLASH 342
  87. # define CARET 343
  88. # define AUGCARET 344
  89. # define BAR 345
  90. # define CONCAT 346
  91. # define AUGCONCAT 347
  92. # define LCONCAT 348
  93. # define AUGLCONCAT 349
  94. # define TILDE 350
  95. # define NMNE 351
  96. # define AUGNMNE 352
  97. # define SNE 353
  98. # define AUGSNE 354
  99. # define NEQUIV 355
  100. # define AUGNEQUIV 356
  101. # define LPAREN 357
  102. # define RPAREN 358
  103. # define PCOLON 359
  104. # define COMMA 360
  105. # define MCOLON 361
  106. # define COLON 362
  107. # define SEMICOL 363
  108. # define LBRACK 364
  109. # define RBRACK 365
  110. # define LBRACE 366
  111. # define RBRACE 367
  112.  
  113. # line 145 "tgram.g"
  114. /*
  115.  * These commented directives are passed through the first application
  116.  * of cpp, then turned into real includes in tgram.g by fixgram.icn.
  117.  */
  118. #include "::h:gsupport.h"
  119. #undef T_Real
  120. #undef T_String
  121. #undef T_Cset
  122. #include "::h:lexdef.h"
  123. #include "tproto.h"
  124. #include "tglobals.h"
  125. #include "tsym.h"
  126. #include "tree.h"
  127. #include "keyword.h"
  128. #undef YYSTYPE
  129. #define YYSTYPE nodeptr
  130. #define YYMAXDEPTH 500
  131.  
  132. extern int fncargs[];
  133. int idflag;
  134. int id_cnt;
  135.  
  136.  
  137.  
  138. #define yyclearin yychar = -1
  139. #define yyerrok yyerrflag = 0
  140. extern int yychar;
  141. extern int yyerrflag;
  142. #ifndef YYMAXDEPTH
  143. #define YYMAXDEPTH 150
  144. #endif
  145. #ifndef YYSTYPE
  146. #define YYSTYPE int
  147. #endif
  148. YYSTYPE yylval, yyval;
  149. # define YYERRCODE 256
  150.  
  151. # line 442 "tgram.g"
  152.  
  153.  
  154. /*
  155.  * xfree(p) -- used with free(p) macro to avoid compiler errors from
  156.  *  miscast free calls generated by Yacc.
  157.  */
  158. static novalue xfree(p)
  159. char *p;
  160. {
  161.    free(p);
  162. }
  163.  
  164. #define free(p) xfree((char*)p)
  165. int yyexca[] ={
  166. -1, 0,
  167.     262, 2,
  168.     273, 2,
  169.     276, 2,
  170.     277, 2,
  171.     282, 2,
  172.     283, 2,
  173.     -2, 0,
  174. -1, 1,
  175.     0, -1,
  176.     -2, 0,
  177. -1, 20,
  178.     270, 40,
  179.     363, 42,
  180.     -2, 0,
  181. -1, 86,
  182.     264, 42,
  183.     268, 42,
  184.     269, 42,
  185.     281, 42,
  186.     288, 42,
  187.     289, 42,
  188.     293, 42,
  189.     294, 42,
  190.     296, 42,
  191.     298, 42,
  192.     300, 42,
  193.     302, 42,
  194.     304, 42,
  195.     306, 42,
  196.     308, 42,
  197.     311, 42,
  198.     312, 42,
  199.     313, 42,
  200.     314, 42,
  201.     315, 42,
  202.     316, 42,
  203.     317, 42,
  204.     318, 42,
  205.     319, 42,
  206.     320, 42,
  207.     321, 42,
  208.     322, 42,
  209.     323, 42,
  210.     325, 42,
  211.     327, 42,
  212.     329, 42,
  213.     330, 42,
  214.     331, 42,
  215.     332, 42,
  216.     333, 42,
  217.     334, 42,
  218.     335, 42,
  219.     336, 42,
  220.     337, 42,
  221.     339, 42,
  222.     341, 42,
  223.     344, 42,
  224.     347, 42,
  225.     349, 42,
  226.     352, 42,
  227.     354, 42,
  228.     356, 42,
  229.     358, 42,
  230.     359, 42,
  231.     360, 42,
  232.     361, 42,
  233.     362, 42,
  234.     363, 42,
  235.     365, 42,
  236.     367, 42,
  237.     -2, 0,
  238. -1, 87,
  239.     358, 42,
  240.     360, 42,
  241.     -2, 0,
  242. -1, 88,
  243.     363, 42,
  244.     367, 42,
  245.     -2, 0,
  246. -1, 89,
  247.     360, 42,
  248.     365, 42,
  249.     -2, 0,
  250. -1, 96,
  251.     264, 42,
  252.     268, 42,
  253.     269, 42,
  254.     281, 42,
  255.     288, 42,
  256.     289, 42,
  257.     293, 42,
  258.     294, 42,
  259.     296, 42,
  260.     298, 42,
  261.     300, 42,
  262.     302, 42,
  263.     304, 42,
  264.     306, 42,
  265.     308, 42,
  266.     311, 42,
  267.     312, 42,
  268.     313, 42,
  269.     314, 42,
  270.     315, 42,
  271.     316, 42,
  272.     317, 42,
  273.     318, 42,
  274.     319, 42,
  275.     320, 42,
  276.     321, 42,
  277.     322, 42,
  278.     323, 42,
  279.     325, 42,
  280.     327, 42,
  281.     329, 42,
  282.     330, 42,
  283.     331, 42,
  284.     332, 42,
  285.     333, 42,
  286.     334, 42,
  287.     335, 42,
  288.     336, 42,
  289.     337, 42,
  290.     339, 42,
  291.     341, 42,
  292.     344, 42,
  293.     347, 42,
  294.     349, 42,
  295.     352, 42,
  296.     354, 42,
  297.     356, 42,
  298.     358, 42,
  299.     359, 42,
  300.     360, 42,
  301.     361, 42,
  302.     362, 42,
  303.     363, 42,
  304.     365, 42,
  305.     367, 42,
  306.     -2, 0,
  307. -1, 97,
  308.     264, 42,
  309.     268, 42,
  310.     269, 42,
  311.     281, 42,
  312.     288, 42,
  313.     289, 42,
  314.     293, 42,
  315.     294, 42,
  316.     296, 42,
  317.     298, 42,
  318.     300, 42,
  319.     302, 42,
  320.     304, 42,
  321.     306, 42,
  322.     308, 42,
  323.     311, 42,
  324.     312, 42,
  325.     313, 42,
  326.     314, 42,
  327.     315, 42,
  328.     316, 42,
  329.     317, 42,
  330.     318, 42,
  331.     319, 42,
  332.     320, 42,
  333.     321, 42,
  334.     322, 42,
  335.     323, 42,
  336.     325, 42,
  337.     327, 42,
  338.     329, 42,
  339.     330, 42,
  340.     331, 42,
  341.     332, 42,
  342.     333, 42,
  343.     334, 42,
  344.     335, 42,
  345.     336, 42,
  346.     337, 42,
  347.     339, 42,
  348.     341, 42,
  349.     344, 42,
  350.     347, 42,
  351.     349, 42,
  352.     352, 42,
  353.     354, 42,
  354.     356, 42,
  355.     358, 42,
  356.     359, 42,
  357.     360, 42,
  358.     361, 42,
  359.     362, 42,
  360.     363, 42,
  361.     365, 42,
  362.     367, 42,
  363.     -2, 0,
  364. -1, 111,
  365.     270, 40,
  366.     363, 42,
  367.     -2, 0,
  368. -1, 117,
  369.     270, 40,
  370.     363, 42,
  371.     -2, 0,
  372. -1, 182,
  373.     360, 42,
  374.     365, 42,
  375.     -2, 0,
  376. -1, 183,
  377.     360, 42,
  378.     -2, 0,
  379. -1, 184,
  380.     358, 42,
  381.     360, 42,
  382.     -2, 0,
  383. -1, 311,
  384.     358, 42,
  385.     360, 42,
  386.     365, 42,
  387.     -2, 0,
  388. -1, 313,
  389.     363, 42,
  390.     367, 42,
  391.     -2, 0,
  392. -1, 335,
  393.     360, 42,
  394.     367, 42,
  395.     -2, 0,
  396.     };
  397. # define YYNPROD 203
  398. # define YYLAST 728
  399. int yyact[]={
  400.  
  401.     38,    84,    91,    92,    93,    94,   312,    86,   185,    99,
  402.     83,   118,   335,   359,   341,   102,    95,   358,    98,   334,
  403.    311,   311,   355,    85,    51,   329,   314,    20,   103,    96,
  404.    118,    97,   313,   228,   101,   100,    56,   346,   118,    90,
  405.    118,    59,   117,    62,   360,    58,   108,    70,   336,    64,
  406.    311,    57,   228,    55,    60,   326,   184,   228,   310,   119,
  407.    311,   107,   106,   182,   345,   183,   324,   232,    65,   110,
  408.     67,   168,    69,   169,   352,   214,   118,   350,   328,   177,
  409.     41,   356,    71,   174,    50,   175,    73,    61,   325,    52,
  410.     53,   320,    54,   316,    63,    66,   176,    68,   327,    72,
  411.    118,    87,   332,   118,   333,   331,   319,   361,    89,   116,
  412.     88,   305,    38,    84,    91,    92,    93,    94,   118,    86,
  413.    181,    99,    83,   353,   317,   231,     3,   102,    95,   218,
  414.     98,   318,   105,   118,    19,    85,    51,   315,   118,    28,
  415.    103,    96,    29,    97,   217,   321,   101,   100,    56,   309,
  416.    170,    90,   172,    59,   173,    62,   171,    58,   118,    70,
  417.     30,    64,    18,    57,   118,    55,    60,    44,   180,    37,
  418.    179,   178,   113,    24,   104,   114,    25,   330,   351,   306,
  419.     65,   212,    67,   115,    69,    82,     2,    81,    80,    27,
  420.     17,    36,    23,    79,    71,    78,    50,    77,    73,    61,
  421.     76,    52,    53,    75,    54,    74,    63,    66,    49,    68,
  422.     47,    72,    42,    87,    38,    84,    91,    92,    93,    94,
  423.     89,    86,    88,    99,    83,    40,   112,   322,   109,   102,
  424.     95,    34,    98,   273,   274,   111,    33,    85,    51,    12,
  425.    233,    32,   103,    96,    21,    97,    22,    26,   101,   100,
  426.     56,    10,     9,    90,     8,    59,     7,    62,    31,    58,
  427.      6,    70,     5,    64,     1,    57,     0,    55,    60,    13,
  428.      0,   216,    15,    14,     0,   210,     0,     0,    16,    11,
  429.      0,     0,    65,     0,    67,   234,    69,   236,   239,   221,
  430.    222,   223,   224,   225,   226,   227,    71,   230,    50,   229,
  431.     73,    61,     0,    52,    53,   237,    54,     0,    63,    66,
  432.      0,    68,     0,    72,     0,    87,    46,    84,    91,    92,
  433.     93,    94,    89,    86,    88,    99,    83,    45,     0,     0,
  434.      0,   102,    95,     0,    98,     0,   289,   290,     0,    85,
  435.     51,     0,     0,   235,   103,    96,     0,    97,     0,   238,
  436.    101,   100,    56,     0,     0,    90,     0,    59,     0,    62,
  437.      0,    58,     4,    70,   303,    64,   308,    57,     0,    55,
  438.     60,     0,     0,    13,   304,     0,    15,    14,     0,     0,
  439.      0,     0,    16,    11,    65,     0,    67,     0,    69,   338,
  440.      0,   213,     0,     0,     0,     0,     0,     0,    71,    43,
  441.     50,     0,    73,    61,     0,    52,    53,   323,    54,   347,
  442.     63,    66,    35,    68,   152,    72,     0,    87,     0,   133,
  443.      0,   150,     0,   130,    89,   131,    88,   128,     0,   127,
  444.      0,   129,     0,   126,   362,     0,   132,   121,   120,     0,
  445.    140,   123,   122,     0,   147,   164,   146,     0,   139,   158,
  446.    135,   157,   143,   163,   136,   160,   138,   154,   137,   166,
  447.    145,   162,   144,   161,   149,   156,   151,   155,     0,   134,
  448.      0,     0,   124,     0,   125,     0,   153,   141,   211,   148,
  449.    215,   142,   165,    39,   159,     0,   167,     0,   219,   220,
  450.      0,   295,   296,   297,   298,   299,     0,     0,   291,   292,
  451.    293,   294,     0,    35,     0,     0,     0,   339,   340,    35,
  452.    342,   343,   344,     0,     0,     0,     0,     0,     0,     0,
  453.      0,     0,   348,     0,     0,     0,    48,     0,     0,     0,
  454.      0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
  455.      0,     0,   357,     0,     0,     0,     0,     0,     0,     0,
  456.      0,   354,   363,   364,   275,   276,   277,   278,   279,   280,
  457.    281,   282,   283,   284,   285,   286,   287,   288,     0,     0,
  458.      0,     0,     0,     0,     0,   307,     0,   186,   187,   188,
  459.    189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
  460.    199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
  461.    209,     0,     0,   240,   241,   242,   243,   244,   245,   246,
  462.    247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
  463.    257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
  464.    267,   268,   269,   270,   271,   272,     0,     0,     0,     0,
  465.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  466.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  467.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  468.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  469.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  470.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  471.      0,     0,     0,   337,     0,   215,   300,   301,   302,     0,
  472.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  473.      0,     0,     0,     0,     0,     0,     0,   349 };
  474. int yypact[]={
  475.  
  476.   -130, -1000,   100, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  477.  -1000,   -95,  -229, -1000,   -84,  -118,   -97,    -4, -1000, -1000,
  478.    -42,  -125,  -298, -1000, -1000, -1000,  -299, -1000, -1000,  -316,
  479.  -1000, -1000,  -288,  -103,  -161,  -321,  -219,  -279, -1000, -1000,
  480.    125, -1000,   131,  -275,  -151,  -214, -1000,  -172, -1000,  -301,
  481.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  482.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  483.     60,    60,    60,    60, -1000, -1000, -1000, -1000, -1000, -1000,
  484.  -1000, -1000, -1000,   -42, -1000, -1000,   -42,   -42,   -42,   -42,
  485.   -128, -1000, -1000, -1000, -1000, -1000,   -42,   -42,   -42,   -42,
  486.    -42,   -42,   -42,   -42,  -303, -1000,   -84,  -118,  -133,  -290,
  487.   -125,   -42,  -125,   -42, -1000, -1000, -1000,   -42,    60,    60,
  488.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  489.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  490.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  491.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  492.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  493.     60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
  494.     60,    60,   -42,  -256,   -42,  -108, -1000, -1000, -1000, -1000,
  495.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  496.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  497.   -219, -1000,  -300, -1000,  -361,  -331,  -339, -1000, -1000, -1000,
  498.  -1000,  -131,  -195,  -157,  -137,  -162,  -177,  -219,  -112, -1000,
  499.  -1000, -1000,  -125,  -292,  -303,  -182,  -308,  -265, -1000,  -279,
  500.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  501.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  502.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  503.  -1000, -1000, -1000,  -186, -1000,  -275,  -275,  -275,  -275,  -275,
  504.   -275,  -275,  -275,  -275,  -275,  -275,  -275,  -275,  -275,  -151,
  505.   -151,  -214,  -214,  -214,  -214, -1000, -1000, -1000, -1000, -1000,
  506.  -1000, -1000, -1000,  -340,  -257, -1000,  -348, -1000,  -310, -1000,
  507.  -1000,   -42, -1000,   -42, -1000,   -42,   -42,  -352,   -42,   -42,
  508.    -42, -1000,  -294,  -327, -1000, -1000, -1000, -1000,    60, -1000,
  509.    -42, -1000, -1000, -1000, -1000,   -42, -1000, -1000, -1000,  -219,
  510.   -192,  -144,  -219,  -219,  -219, -1000,  -343, -1000,  -284, -1000,
  511.    -42,  -350, -1000,  -318,  -255, -1000, -1000,  -219, -1000,  -144,
  512.    -42,   -42, -1000,  -219,  -219 };
  513. int yypgo[]={
  514.  
  515.      0,   264,   186,   262,   260,   256,   254,   252,   251,   247,
  516.    189,   246,   192,   244,   174,   241,   240,   239,   236,   235,
  517.    231,   228,   227,   226,   191,   391,   169,   483,   225,    80,
  518.    212,   399,   167,   327,   316,   210,   526,   208,   205,   203,
  519.    200,   197,   195,   193,   188,   187,   185,   181,    75,   179,
  520.    178,    74,   177 };
  521. int yyr1[]={
  522.  
  523.      0,     1,     2,     2,     3,     3,     3,     3,     3,     8,
  524.      9,     9,    10,    10,    10,     7,    11,    11,    12,    12,
  525.     13,     6,    15,     4,    16,    16,     5,    21,    17,    22,
  526.     22,    22,    14,    14,    18,    18,    23,    23,    19,    19,
  527.     20,    20,    25,    25,    24,    24,    26,    26,    27,    27,
  528.     27,    27,    27,    27,    27,    27,    27,    27,    27,    27,
  529.     27,    27,    27,    27,    27,    27,    27,    27,    27,    27,
  530.     27,    27,    27,    27,    27,    27,    27,    27,    27,    27,
  531.     27,    28,    28,    28,    29,    29,    30,    30,    30,    30,
  532.     30,    30,    30,    30,    30,    30,    30,    30,    30,    30,
  533.     30,    31,    31,    31,    32,    32,    32,    32,    32,    33,
  534.     33,    33,    33,    33,    34,    34,    35,    35,    35,    35,
  535.     36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
  536.     36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
  537.     36,    36,    36,    36,    36,    37,    37,    37,    37,    37,
  538.     37,    37,    37,    37,    37,    37,    37,    37,    37,    37,
  539.     37,    37,    37,    37,    37,    37,    37,    37,    43,    43,
  540.     44,    44,    45,    45,    46,    40,    40,    40,    40,    41,
  541.     41,    42,    50,    50,    51,    51,    47,    47,    49,    49,
  542.     38,    38,    38,    38,    39,    52,    52,    52,    48,    48,
  543.      1,     5,    24 };
  544. int yyr2[]={
  545.  
  546.      0,     5,     0,     4,     3,     3,     3,     3,     3,     5,
  547.      2,     7,     3,     3,     7,     5,     2,     7,     3,     3,
  548.      1,     7,     1,    13,     1,     3,    13,     1,    13,     1,
  549.      3,     7,     3,     7,     1,     9,     3,     3,     1,     7,
  550.      1,     7,     1,     2,     2,     7,     2,     7,     2,     7,
  551.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  552.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  553.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  554.      7,     2,     7,    11,     2,     7,     2,     7,     7,     7,
  555.      7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
  556.      7,     2,     7,     7,     2,     7,     7,     7,     7,     2,
  557.      7,     7,     7,     7,     2,     7,     2,     7,     7,     7,
  558.      2,     5,     5,     5,     5,     5,     5,     5,     5,     5,
  559.      5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
  560.      5,     5,     5,     5,     5,     2,     2,     2,     2,     2,
  561.      2,     2,     2,     2,     5,     3,     3,     5,     7,     7,
  562.      7,     9,     7,     9,     9,     7,     5,     5,     5,     9,
  563.      5,     9,     5,     9,     5,     3,     5,     5,     9,     9,
  564.     13,    13,     2,     7,     7,     7,     3,     7,     3,     7,
  565.      3,     3,     3,     3,    13,     3,     3,     3,     2,     7,
  566.      6,     8,     2 };
  567. int yychk[]={
  568.  
  569.  -1000,    -1,    -2,   256,   262,    -3,    -4,    -5,    -6,    -7,
  570.     -8,   283,   -17,   273,   277,   276,   282,    -2,   257,   363,
  571.    256,   -13,   -11,   -12,   257,   260,    -9,   -10,   257,   260,
  572.    257,   262,   -15,   -18,   -20,   -25,   -24,   -26,   256,   -27,
  573.    -28,   -29,   -30,   -31,   -32,   -33,   -34,   -35,   -36,   -37,
  574.    340,   280,   345,   346,   348,   309,   292,   307,   301,   297,
  575.    310,   343,   299,   350,   305,   324,   351,   326,   353,   328,
  576.    303,   338,   355,   342,   -38,   -39,   -40,   -41,   -42,   -43,
  577.    -44,   -45,   -46,   266,   257,   279,   263,   357,   366,   364,
  578.    295,   258,   259,   260,   261,   272,   285,   287,   274,   265,
  579.    291,   290,   271,   284,   -14,   257,   360,   360,   362,   -21,
  580.    357,   -19,   -23,   275,   278,   286,   270,   363,   295,   338,
  581.    313,   312,   317,   316,   347,   349,   308,   304,   302,   306,
  582.    298,   300,   311,   294,   344,   325,   329,   333,   331,   323,
  583.    315,   352,   356,   327,   337,   335,   321,   319,   354,   339,
  584.    296,   341,   289,   345,   326,   336,   334,   320,   318,   353,
  585.    324,   332,   330,   322,   314,   351,   328,   355,   346,   348,
  586.    301,   307,   303,   305,   297,   299,   310,   293,   343,   342,
  587.    340,   292,   364,   366,   357,   309,   -36,   -36,   -36,   -36,
  588.    -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
  589.    -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
  590.    -24,   -25,   -47,   -25,   -48,   -25,   -47,   272,   257,   -25,
  591.    -25,   -24,   -24,   -24,   -24,   -24,   -24,   -24,   360,   -12,
  592.    -10,   258,   357,   -16,   -14,   -20,   -14,   -24,   -20,   -26,
  593.    -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,
  594.    -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,
  595.    -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,   -27,
  596.    -27,   -27,   -27,   -29,   -29,   -31,   -31,   -31,   -31,   -31,
  597.    -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -32,
  598.    -32,   -33,   -33,   -33,   -33,   -34,   -34,   -34,   -34,   -34,
  599.    -36,   -36,   -36,   -47,   -24,   367,   -49,   -25,   -47,   257,
  600.    358,   360,   367,   363,   365,   268,   288,   281,   268,   268,
  601.    268,   257,   -22,   -14,   358,   270,   363,   363,   264,   365,
  602.    -52,   362,   359,   361,   367,   360,   358,   -25,   -48,   -24,
  603.    -24,   366,   -24,   -24,   -24,   358,   364,   -29,   -24,   -25,
  604.    269,   -50,   -51,   267,   -24,   365,   365,   -24,   367,   363,
  605.    362,   362,   -51,   -24,   -24 };
  606. int yydef[]={
  607.  
  608.     -2,    -2,     0,     2,     1,     3,     4,     5,     6,     7,
  609.      8,     0,     0,    20,     0,     0,     0,     0,    22,    34,
  610.     -2,     0,    15,    16,    18,    19,     9,    10,    12,    13,
  611.     27,   200,     0,    38,     0,     0,    43,    44,   202,    46,
  612.     48,    81,    84,    86,   101,   104,   109,   114,   116,   120,
  613.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  614.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  615.      0,     0,     0,     0,   145,   146,   147,   148,   149,   150,
  616.    151,   152,   153,     0,   155,   156,    -2,    -2,    -2,    -2,
  617.      0,   190,   191,   192,   193,   175,    -2,    -2,     0,     0,
  618.      0,     0,     0,     0,    21,    32,     0,     0,     0,     0,
  619.     24,    -2,     0,     0,    36,    37,   201,    -2,     0,     0,
  620.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  621.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  622.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  623.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  624.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  625.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  626.      0,     0,    -2,    -2,    -2,     0,   121,   122,   123,   124,
  627.    125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
  628.    135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
  629.    154,   157,     0,   186,     0,   198,     0,   166,   167,   176,
  630.    177,    43,     0,     0,   168,   170,   172,   174,     0,    17,
  631.     11,    14,    29,     0,    25,     0,     0,     0,    41,    45,
  632.     47,    49,    50,    51,    52,    53,    54,    55,    56,    57,
  633.     58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
  634.     68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
  635.     78,    79,    80,    82,    85,    87,    88,    89,    90,    91,
  636.     92,    93,    94,    95,    96,    97,    98,    99,   100,   102,
  637.    103,   105,   106,   107,   108,   110,   111,   112,   113,   115,
  638.    117,   118,   119,     0,    43,   162,     0,   188,     0,   165,
  639.    158,    -2,   159,    -2,   160,     0,     0,     0,     0,     0,
  640.      0,    33,     0,    30,    23,    26,    35,    39,     0,   161,
  641.      0,   195,   196,   197,   163,    -2,   164,   187,   199,   178,
  642.    179,     0,   169,   171,   173,    28,     0,    83,     0,   189,
  643.      0,     0,   182,     0,     0,    31,   194,   180,   181,     0,
  644.      0,     0,   183,   184,   185 };
  645. typedef struct { char *t_name; int t_val; } yytoktype;
  646. #ifndef YYDEBUG
  647. #    define YYDEBUG    0    /* don't allow debugging */
  648. #endif
  649.  
  650. #if YYDEBUG
  651.  
  652. yytoktype yytoks[] =
  653. {
  654.     "IDENT",    257,
  655.     "INTLIT",    258,
  656.     "REALLIT",    259,
  657.     "STRINGLIT",    260,
  658.     "CSETLIT",    261,
  659.     "EOFX",    262,
  660.     "BREAK",    263,
  661.     "BY",    264,
  662.     "CASE",    265,
  663.     "CREATE",    266,
  664.     "DEFAULT",    267,
  665.     "DO",    268,
  666.     "ELSE",    269,
  667.     "END",    270,
  668.     "EVERY",    271,
  669.     "FAIL",    272,
  670.     "GLOBAL",    273,
  671.     "IF",    274,
  672.     "INITIAL",    275,
  673.     "INVOCABLE",    276,
  674.     "LINK",    277,
  675.     "LOCAL",    278,
  676.     "NEXT",    279,
  677.     "NOT",    280,
  678.     "OF",    281,
  679.     "PROCEDURE",    282,
  680.     "RECORD",    283,
  681.     "REPEAT",    284,
  682.     "RETURN",    285,
  683.     "STATIC",    286,
  684.     "SUSPEND",    287,
  685.     "THEN",    288,
  686.     "TO",    289,
  687.     "UNTIL",    290,
  688.     "WHILE",    291,
  689.     "BANG",    292,
  690.     "MOD",    293,
  691.     "AUGMOD",    294,
  692.     "AND",    295,
  693.     "AUGAND",    296,
  694.     "STAR",    297,
  695.     "AUGSTAR",    298,
  696.     "INTER",    299,
  697.     "AUGINTER",    300,
  698.     "PLUS",    301,
  699.     "AUGPLUS",    302,
  700.     "UNION",    303,
  701.     "AUGUNION",    304,
  702.     "MINUS",    305,
  703.     "AUGMINUS",    306,
  704.     "DIFF",    307,
  705.     "AUGDIFF",    308,
  706.     "DOT",    309,
  707.     "SLASH",    310,
  708.     "AUGSLASH",    311,
  709.     "ASSIGN",    312,
  710.     "SWAP",    313,
  711.     "NMLT",    314,
  712.     "AUGNMLT",    315,
  713.     "REVASSIGN",    316,
  714.     "REVSWAP",    317,
  715.     "SLT",    318,
  716.     "AUGSLT",    319,
  717.     "SLE",    320,
  718.     "AUGSLE",    321,
  719.     "NMLE",    322,
  720.     "AUGNMLE",    323,
  721.     "NMEQ",    324,
  722.     "AUGNMEQ",    325,
  723.     "SEQ",    326,
  724.     "AUGSEQ",    327,
  725.     "EQUIV",    328,
  726.     "AUGEQUIV",    329,
  727.     "NMGT",    330,
  728.     "AUGNMGT",    331,
  729.     "NMGE",    332,
  730.     "AUGNMGE",    333,
  731.     "SGT",    334,
  732.     "AUGSGT",    335,
  733.     "SGE",    336,
  734.     "AUGSGE",    337,
  735.     "QMARK",    338,
  736.     "AUGQMARK",    339,
  737.     "AT",    340,
  738.     "AUGAT",    341,
  739.     "BACKSLASH",    342,
  740.     "CARET",    343,
  741.     "AUGCARET",    344,
  742.     "BAR",    345,
  743.     "CONCAT",    346,
  744.     "AUGCONCAT",    347,
  745.     "LCONCAT",    348,
  746.     "AUGLCONCAT",    349,
  747.     "TILDE",    350,
  748.     "NMNE",    351,
  749.     "AUGNMNE",    352,
  750.     "SNE",    353,
  751.     "AUGSNE",    354,
  752.     "NEQUIV",    355,
  753.     "AUGNEQUIV",    356,
  754.     "LPAREN",    357,
  755.     "RPAREN",    358,
  756.     "PCOLON",    359,
  757.     "COMMA",    360,
  758.     "MCOLON",    361,
  759.     "COLON",    362,
  760.     "SEMICOL",    363,
  761.     "LBRACK",    364,
  762.     "RBRACK",    365,
  763.     "LBRACE",    366,
  764.     "RBRACE",    367,
  765.     "-unknown-",    -1    /* ends search */
  766. };
  767.  
  768. char * yyreds[] =
  769. {
  770.     "-no such reduction-",
  771.     "program : decls EOFX",
  772.     "decls : /* empty */",
  773.     "decls : decls decl",
  774.     "decl : record",
  775.     "decl : proc",
  776.     "decl : global",
  777.     "decl : link",
  778.     "decl : invocable",
  779.     "invocable : INVOCABLE invoclist",
  780.     "invoclist : invocop",
  781.     "invoclist : invoclist COMMA invocop",
  782.     "invocop : IDENT",
  783.     "invocop : STRINGLIT",
  784.     "invocop : STRINGLIT COLON INTLIT",
  785.     "link : LINK lnklist",
  786.     "lnklist : lnkfile",
  787.     "lnklist : lnklist COMMA lnkfile",
  788.     "lnkfile : IDENT",
  789.     "lnkfile : STRINGLIT",
  790.     "global : GLOBAL",
  791.     "global : GLOBAL idlist",
  792.     "record : RECORD IDENT",
  793.     "record : RECORD IDENT LPAREN fldlist RPAREN",
  794.     "fldlist : /* empty */",
  795.     "fldlist : idlist",
  796.     "proc : prochead SEMICOL locals initial procbody END",
  797.     "prochead : PROCEDURE IDENT",
  798.     "prochead : PROCEDURE IDENT LPAREN arglist RPAREN",
  799.     "arglist : /* empty */",
  800.     "arglist : idlist",
  801.     "arglist : idlist LBRACK RBRACK",
  802.     "idlist : IDENT",
  803.     "idlist : idlist COMMA IDENT",
  804.     "locals : /* empty */",
  805.     "locals : locals retention idlist SEMICOL",
  806.     "retention : LOCAL",
  807.     "retention : STATIC",
  808.     "initial : /* empty */",
  809.     "initial : INITIAL expr SEMICOL",
  810.     "procbody : /* empty */",
  811.     "procbody : nexpr SEMICOL procbody",
  812.     "nexpr : /* empty */",
  813.     "nexpr : expr",
  814.     "expr : expr1a",
  815.     "expr : expr AND expr1a",
  816.     "expr1a : expr1",
  817.     "expr1a : expr1a QMARK expr1",
  818.     "expr1 : expr2",
  819.     "expr1 : expr2 SWAP expr1",
  820.     "expr1 : expr2 ASSIGN expr1",
  821.     "expr1 : expr2 REVSWAP expr1",
  822.     "expr1 : expr2 REVASSIGN expr1",
  823.     "expr1 : expr2 AUGCONCAT expr1",
  824.     "expr1 : expr2 AUGLCONCAT expr1",
  825.     "expr1 : expr2 AUGDIFF expr1",
  826.     "expr1 : expr2 AUGUNION expr1",
  827.     "expr1 : expr2 AUGPLUS expr1",
  828.     "expr1 : expr2 AUGMINUS expr1",
  829.     "expr1 : expr2 AUGSTAR expr1",
  830.     "expr1 : expr2 AUGINTER expr1",
  831.     "expr1 : expr2 AUGSLASH expr1",
  832.     "expr1 : expr2 AUGMOD expr1",
  833.     "expr1 : expr2 AUGCARET expr1",
  834.     "expr1 : expr2 AUGNMEQ expr1",
  835.     "expr1 : expr2 AUGEQUIV expr1",
  836.     "expr1 : expr2 AUGNMGE expr1",
  837.     "expr1 : expr2 AUGNMGT expr1",
  838.     "expr1 : expr2 AUGNMLE expr1",
  839.     "expr1 : expr2 AUGNMLT expr1",
  840.     "expr1 : expr2 AUGNMNE expr1",
  841.     "expr1 : expr2 AUGNEQUIV expr1",
  842.     "expr1 : expr2 AUGSEQ expr1",
  843.     "expr1 : expr2 AUGSGE expr1",
  844.     "expr1 : expr2 AUGSGT expr1",
  845.     "expr1 : expr2 AUGSLE expr1",
  846.     "expr1 : expr2 AUGSLT expr1",
  847.     "expr1 : expr2 AUGSNE expr1",
  848.     "expr1 : expr2 AUGQMARK expr1",
  849.     "expr1 : expr2 AUGAND expr1",
  850.     "expr1 : expr2 AUGAT expr1",
  851.     "expr2 : expr3",
  852.     "expr2 : expr2 TO expr3",
  853.     "expr2 : expr2 TO expr3 BY expr3",
  854.     "expr3 : expr4",
  855.     "expr3 : expr4 BAR expr3",
  856.     "expr4 : expr5",
  857.     "expr4 : expr4 SEQ expr5",
  858.     "expr4 : expr4 SGE expr5",
  859.     "expr4 : expr4 SGT expr5",
  860.     "expr4 : expr4 SLE expr5",
  861.     "expr4 : expr4 SLT expr5",
  862.     "expr4 : expr4 SNE expr5",
  863.     "expr4 : expr4 NMEQ expr5",
  864.     "expr4 : expr4 NMGE expr5",
  865.     "expr4 : expr4 NMGT expr5",
  866.     "expr4 : expr4 NMLE expr5",
  867.     "expr4 : expr4 NMLT expr5",
  868.     "expr4 : expr4 NMNE expr5",
  869.     "expr4 : expr4 EQUIV expr5",
  870.     "expr4 : expr4 NEQUIV expr5",
  871.     "expr5 : expr6",
  872.     "expr5 : expr5 CONCAT expr6",
  873.     "expr5 : expr5 LCONCAT expr6",
  874.     "expr6 : expr7",
  875.     "expr6 : expr6 PLUS expr7",
  876.     "expr6 : expr6 DIFF expr7",
  877.     "expr6 : expr6 UNION expr7",
  878.     "expr6 : expr6 MINUS expr7",
  879.     "expr7 : expr8",
  880.     "expr7 : expr7 STAR expr8",
  881.     "expr7 : expr7 INTER expr8",
  882.     "expr7 : expr7 SLASH expr8",
  883.     "expr7 : expr7 MOD expr8",
  884.     "expr8 : expr9",
  885.     "expr8 : expr9 CARET expr8",
  886.     "expr9 : expr10",
  887.     "expr9 : expr9 BACKSLASH expr10",
  888.     "expr9 : expr9 AT expr10",
  889.     "expr9 : expr9 BANG expr10",
  890.     "expr10 : expr11",
  891.     "expr10 : AT expr10",
  892.     "expr10 : NOT expr10",
  893.     "expr10 : BAR expr10",
  894.     "expr10 : CONCAT expr10",
  895.     "expr10 : LCONCAT expr10",
  896.     "expr10 : DOT expr10",
  897.     "expr10 : BANG expr10",
  898.     "expr10 : DIFF expr10",
  899.     "expr10 : PLUS expr10",
  900.     "expr10 : STAR expr10",
  901.     "expr10 : SLASH expr10",
  902.     "expr10 : CARET expr10",
  903.     "expr10 : INTER expr10",
  904.     "expr10 : TILDE expr10",
  905.     "expr10 : MINUS expr10",
  906.     "expr10 : NMEQ expr10",
  907.     "expr10 : NMNE expr10",
  908.     "expr10 : SEQ expr10",
  909.     "expr10 : SNE expr10",
  910.     "expr10 : EQUIV expr10",
  911.     "expr10 : UNION expr10",
  912.     "expr10 : QMARK expr10",
  913.     "expr10 : NEQUIV expr10",
  914.     "expr10 : BACKSLASH expr10",
  915.     "expr11 : literal",
  916.     "expr11 : section",
  917.     "expr11 : return",
  918.     "expr11 : if",
  919.     "expr11 : case",
  920.     "expr11 : while",
  921.     "expr11 : until",
  922.     "expr11 : every",
  923.     "expr11 : repeat",
  924.     "expr11 : CREATE expr",
  925.     "expr11 : IDENT",
  926.     "expr11 : NEXT",
  927.     "expr11 : BREAK nexpr",
  928.     "expr11 : LPAREN exprlist RPAREN",
  929.     "expr11 : LBRACE compound RBRACE",
  930.     "expr11 : LBRACK exprlist RBRACK",
  931.     "expr11 : expr11 LBRACK exprlist RBRACK",
  932.     "expr11 : expr11 LBRACE RBRACE",
  933.     "expr11 : expr11 LBRACE pdcolist RBRACE",
  934.     "expr11 : expr11 LPAREN exprlist RPAREN",
  935.     "expr11 : expr11 DOT IDENT",
  936.     "expr11 : AND FAIL",
  937.     "expr11 : AND IDENT",
  938.     "while : WHILE expr",
  939.     "while : WHILE expr DO expr",
  940.     "until : UNTIL expr",
  941.     "until : UNTIL expr DO expr",
  942.     "every : EVERY expr",
  943.     "every : EVERY expr DO expr",
  944.     "repeat : REPEAT expr",
  945.     "return : FAIL",
  946.     "return : RETURN nexpr",
  947.     "return : SUSPEND nexpr",
  948.     "return : SUSPEND expr DO expr",
  949.     "if : IF expr THEN expr",
  950.     "if : IF expr THEN expr ELSE expr",
  951.     "case : CASE expr OF LBRACE caselist RBRACE",
  952.     "caselist : cclause",
  953.     "caselist : caselist SEMICOL cclause",
  954.     "cclause : DEFAULT COLON expr",
  955.     "cclause : expr COLON expr",
  956.     "exprlist : nexpr",
  957.     "exprlist : exprlist COMMA nexpr",
  958.     "pdcolist : nexpr",
  959.     "pdcolist : pdcolist COMMA nexpr",
  960.     "literal : INTLIT",
  961.     "literal : REALLIT",
  962.     "literal : STRINGLIT",
  963.     "literal : CSETLIT",
  964.     "section : expr11 LBRACK expr sectop expr RBRACK",
  965.     "sectop : COLON",
  966.     "sectop : PCOLON",
  967.     "sectop : MCOLON",
  968.     "compound : nexpr",
  969.     "compound : nexpr SEMICOL compound",
  970.     "program : error decls EOFX",
  971.     "proc : prochead error procbody END",
  972.     "expr : error",
  973. };
  974. #endif
  975. #line 1 "/usr/lib/yaccpar"
  976. /*    @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10    */
  977.  
  978. /*
  979. ** Skeleton parser driver for yacc output
  980. */
  981.  
  982. /*
  983. ** yacc user known macros and defines
  984. */
  985. #define YYERROR        goto yyerrlab
  986. #define YYACCEPT    { free(yys); free(yyv); return(0); }
  987. #define YYABORT        { free(yys); free(yyv); return(1); }
  988. #define YYBACKUP( newtoken, newvalue )\
  989. {\
  990.     if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  991.     {\
  992.         tsyserr("parser: syntax error - cannot backup" );\
  993.         goto yyerrlab;\
  994.     }\
  995.     yychar = newtoken;\
  996.     yystate = *yyps;\
  997.     yylval = newvalue;\
  998.     goto yynewstate;\
  999. }
  1000. #define YYRECOVERING()    (!!yyerrflag)
  1001. #ifndef YYDEBUG
  1002. #    define YYDEBUG    1    /* make debugging available */
  1003. #endif
  1004.  
  1005. /*
  1006. ** user known globals
  1007. */
  1008. int yydebug;            /* set to 1 to get debugging */
  1009.  
  1010. /*
  1011. ** driver internal defines
  1012. */
  1013. #define YYFLAG        (-1000)
  1014.  
  1015. /*
  1016. ** static variables used by the parser
  1017. */
  1018. static YYSTYPE *yyv;            /* value stack */
  1019. static int *yys;            /* state stack */
  1020.  
  1021. static YYSTYPE *yypv;            /* top of value stack */
  1022. static int *yyps;            /* top of state stack */
  1023.  
  1024. static int yystate;            /* current state */
  1025. static int yytmp;            /* extra var (lasts between blocks) */
  1026.  
  1027. int yynerrs;            /* number of errors */
  1028.  
  1029. int yyerrflag;            /* error recovery flag */
  1030. int yychar;            /* current input token number */
  1031.  
  1032.  
  1033. /*
  1034. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  1035. */
  1036. int
  1037. yyparse()
  1038. {
  1039.     register YYSTYPE *yypvt;    /* top of value stack for $vars */
  1040.     unsigned yymaxdepth = YYMAXDEPTH;
  1041.  
  1042.     /*
  1043.     ** Initialize externals - yyparse may be called more than once
  1044.     */
  1045.     yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
  1046.     yys = (int*)malloc(yymaxdepth*sizeof(int));
  1047.     if (!yyv || !yys)
  1048.     {
  1049.         tsyserr("parser: out of memory" );
  1050.         return(1);
  1051.     }
  1052.     yypv = &yyv[-1];
  1053.     yyps = &yys[-1];
  1054.     yystate = 0;
  1055.     yytmp = 0;
  1056.     yynerrs = 0;
  1057.     yyerrflag = 0;
  1058.     yychar = -1;
  1059.  
  1060.     goto yystack;
  1061.     {
  1062.         register YYSTYPE *yy_pv;    /* top of value stack */
  1063.         register int *yy_ps;        /* top of state stack */
  1064.         register int yy_state;        /* current state */
  1065.         register int  yy_n;        /* internal state number info */
  1066.  
  1067.         /*
  1068.         ** get globals into registers.
  1069.         ** branch to here only if YYBACKUP was called.
  1070.         */
  1071.     yynewstate:
  1072.         yy_pv = yypv;
  1073.         yy_ps = yyps;
  1074.         yy_state = yystate;
  1075.         goto yy_newstate;
  1076.  
  1077.         /*
  1078.         ** get globals into registers.
  1079.         ** either we just started, or we just finished a reduction
  1080.         */
  1081.     yystack:
  1082.         yy_pv = yypv;
  1083.         yy_ps = yyps;
  1084.         yy_state = yystate;
  1085.  
  1086.         /*
  1087.         ** top of for (;;) loop while no reductions done
  1088.         */
  1089.     yy_stack:
  1090.         /*
  1091.         ** put a state and value onto the stacks
  1092.         */
  1093. #if YYDEBUG
  1094.         /*
  1095.         ** if debugging, look up token value in list of value vs.
  1096.         ** name pairs.  0 and negative (-1) are special values.
  1097.         ** Note: linear search is used since time is not a real
  1098.         ** consideration while debugging.
  1099.         */
  1100.         if ( yydebug )
  1101.         {
  1102.             register int yy_i;
  1103.  
  1104.             (void)printf( "State %d, token ", yy_state );
  1105.             if ( yychar == 0 )
  1106.                 (void)printf( "end-of-file\n" );
  1107.             else if ( yychar < 0 )
  1108.                 (void)printf( "-none-\n" );
  1109.             else
  1110.             {
  1111.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1112.                     yy_i++ )
  1113.                 {
  1114.                     if ( yytoks[yy_i].t_val == yychar )
  1115.                         break;
  1116.                 }
  1117.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1118.             }
  1119.         }
  1120. #endif
  1121.         if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  1122.         {
  1123.             /*
  1124.             ** reallocate and recover.  Note that pointers
  1125.             ** have to be reset, or bad things will happen
  1126.             */
  1127.             int yyps_index = (yy_ps - yys);
  1128.             int yypv_index = (yy_pv - yyv);
  1129.             int yypvt_index = (yypvt - yyv);
  1130.             yymaxdepth += YYMAXDEPTH;
  1131.             yyv = (YYSTYPE*)realloc((char*)yyv,
  1132.                 yymaxdepth * sizeof(YYSTYPE));
  1133.             yys = (int*)realloc((char*)yys,
  1134.                 yymaxdepth * sizeof(int));
  1135.             if (!yyv || !yys)
  1136.             {
  1137.                 tsyserr("parse stack overflow" );
  1138.                 return(1);
  1139.             }
  1140.             yy_ps = yys + yyps_index;
  1141.             yy_pv = yyv + yypv_index;
  1142.             yypvt = yyv + yypvt_index;
  1143.         }
  1144.         *yy_ps = yy_state;
  1145.         *++yy_pv = yyval;
  1146.  
  1147.         /*
  1148.         ** we have a new state - find out what to do
  1149.         */
  1150.     yy_newstate:
  1151.         if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  1152.             goto yydefault;        /* simple state */
  1153. #if YYDEBUG
  1154.         /*
  1155.         ** if debugging, need to mark whether new token grabbed
  1156.         */
  1157.         yytmp = yychar < 0;
  1158. #endif
  1159.         if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1160.             yychar = 0;        /* reached EOF */
  1161. #if YYDEBUG
  1162.         if ( yydebug && yytmp )
  1163.         {
  1164.             register int yy_i;
  1165.  
  1166.             (void)printf( "Received token " );
  1167.             if ( yychar == 0 )
  1168.                 (void)printf( "end-of-file\n" );
  1169.             else if ( yychar < 0 )
  1170.                 (void)printf( "-none-\n" );
  1171.             else
  1172.             {
  1173.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1174.                     yy_i++ )
  1175.                 {
  1176.                     if ( yytoks[yy_i].t_val == yychar )
  1177.                         break;
  1178.                 }
  1179.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1180.             }
  1181.         }
  1182. #endif
  1183.         if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  1184.             goto yydefault;
  1185.         if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  1186.         {
  1187.             yychar = -1;
  1188.             yyval = yylval;
  1189.             yy_state = yy_n;
  1190.             if ( yyerrflag > 0 )
  1191.                 yyerrflag--;
  1192.             goto yy_stack;
  1193.         }
  1194.  
  1195.     yydefault:
  1196.         if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  1197.         {
  1198. #if YYDEBUG
  1199.             yytmp = yychar < 0;
  1200. #endif
  1201.             if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1202.                 yychar = 0;        /* reached EOF */
  1203. #if YYDEBUG
  1204.             if ( yydebug && yytmp )
  1205.             {
  1206.                 register int yy_i;
  1207.  
  1208.                 (void)printf( "Received token " );
  1209.                 if ( yychar == 0 )
  1210.                     (void)printf( "end-of-file\n" );
  1211.                 else if ( yychar < 0 )
  1212.                     (void)printf( "-none-\n" );
  1213.                 else
  1214.                 {
  1215.                     for ( yy_i = 0;
  1216.                         yytoks[yy_i].t_val >= 0;
  1217.                         yy_i++ )
  1218.                     {
  1219.                         if ( yytoks[yy_i].t_val
  1220.                             == yychar )
  1221.                         {
  1222.                             break;
  1223.                         }
  1224.                     }
  1225.                     (void)printf( "%s\n", yytoks[yy_i].t_name );
  1226.                 }
  1227.             }
  1228. #endif
  1229.             /*
  1230.             ** look through exception table
  1231.             */
  1232.             {
  1233.                 register int *yyxi = yyexca;
  1234.  
  1235.                 while ( ( *yyxi != -1 ) ||
  1236.                     ( yyxi[1] != yy_state ) )
  1237.                 {
  1238.                     yyxi += 2;
  1239.                 }
  1240.                 while ( ( *(yyxi += 2) >= 0 ) &&
  1241.                     ( *yyxi != yychar ) )
  1242.                     ;
  1243.                 if ( ( yy_n = yyxi[1] ) < 0 )
  1244.                     YYACCEPT;
  1245.             }
  1246.         }
  1247.  
  1248.         /*
  1249.         ** check for syntax error
  1250.         */
  1251.         if ( yy_n == 0 )    /* have an error */
  1252.         {
  1253.             /* no worry about speed here! */
  1254.             switch ( yyerrflag )
  1255.             {
  1256.             case 0:        /* new error */
  1257.                 yyerror(yychar, yylval, yy_state );
  1258.                 goto skip_init;
  1259.             yyerrlab:
  1260.                 /*
  1261.                 ** get globals into registers.
  1262.                 ** we have a user generated syntax type error
  1263.                 */
  1264.                 yy_pv = yypv;
  1265.                 yy_ps = yyps;
  1266.                 yy_state = yystate;
  1267.                 yynerrs++;
  1268.             skip_init:
  1269.             case 1:
  1270.             case 2:        /* incompletely recovered error */
  1271.                     /* try again... */
  1272.                 yyerrflag = 3;
  1273.                 /*
  1274.                 ** find state where "error" is a legal
  1275.                 ** shift action
  1276.                 */
  1277.                 while ( yy_ps >= yys )
  1278.                 {
  1279.                     yy_n = yypact[ *yy_ps ] + YYERRCODE;
  1280.                     if ( yy_n >= 0 && yy_n < YYLAST &&
  1281.                         yychk[yyact[yy_n]] == YYERRCODE)                    {
  1282.                         /*
  1283.                         ** simulate shift of "error"
  1284.                         */
  1285.                         yy_state = yyact[ yy_n ];
  1286.                         goto yy_stack;
  1287.                     }
  1288.                     /*
  1289.                     ** current state has no shift on
  1290.                     ** "error", pop stack
  1291.                     */
  1292. #if YYDEBUG
  1293. #    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  1294.                     if ( yydebug )
  1295.                         (void)printf( _POP_, *yy_ps,
  1296.                             yy_ps[-1] );
  1297. #    undef _POP_
  1298. #endif
  1299.                     yy_ps--;
  1300.                     yy_pv--;
  1301.                 }
  1302.                 /*
  1303.                 ** there is no state on stack with "error" as
  1304.                 ** a valid shift.  give up.
  1305.                 */
  1306.                 YYABORT;
  1307.             case 3:        /* no shift yet; eat a token */
  1308. #if YYDEBUG
  1309.                 /*
  1310.                 ** if debugging, look up token in list of
  1311.                 ** pairs.  0 and negative shouldn't occur,
  1312.                 ** but since timing doesn't matter when
  1313.                 ** debugging, it doesn't hurt to leave the
  1314.                 ** tests here.
  1315.                 */
  1316.                 if ( yydebug )
  1317.                 {
  1318.                     register int yy_i;
  1319.  
  1320.                     (void)printf( "Error recovery discards " );
  1321.                     if ( yychar == 0 )
  1322.                         (void)printf( "token end-of-file\n" );
  1323.                     else if ( yychar < 0 )
  1324.                         (void)printf( "token -none-\n" );
  1325.                     else
  1326.                     {
  1327.                         for ( yy_i = 0;
  1328.                             yytoks[yy_i].t_val >= 0;
  1329.                             yy_i++ )
  1330.                         {
  1331.                             if ( yytoks[yy_i].t_val
  1332.                                 == yychar )
  1333.                             {
  1334.                                 break;
  1335.                             }
  1336.                         }
  1337.                         (void)printf( "token %s\n",
  1338.                             yytoks[yy_i].t_name );
  1339.                     }
  1340.                 }
  1341. #endif
  1342.                 if ( yychar == 0 )    /* reached EOF. quit */
  1343.                     YYABORT;
  1344.                 yychar = -1;
  1345.                 goto yy_newstate;
  1346.             }
  1347.         }/* end if ( yy_n == 0 ) */
  1348.         /*
  1349.         ** reduction by production yy_n
  1350.         ** put stack tops, etc. so things right after switch
  1351.         */
  1352. #if YYDEBUG
  1353.         /*
  1354.         ** if debugging, print the string that is the user's
  1355.         ** specification of the reduction which is just about
  1356.         ** to be done.
  1357.         */
  1358.         if ( yydebug )
  1359.             (void)printf( "Reduce by (%d) \"%s\"\n",
  1360.                 yy_n, yyreds[ yy_n ] );
  1361. #endif
  1362.         yytmp = yy_n;            /* value to switch over */
  1363.         yypvt = yy_pv;            /* $vars top of value stack */
  1364.         /*
  1365.         ** Look in goto table for next state
  1366.         ** Sorry about using yy_state here as temporary
  1367.         ** register variable, but why not, if it works...
  1368.         ** If yyr2[ yy_n ] doesn't have the low order bit
  1369.         ** set, then there is no action to be done for
  1370.         ** this reduction.  So, no saving & unsaving of
  1371.         ** registers done.  The only difference between the
  1372.         ** code just after the if and the body of the if is
  1373.         ** the goto yy_stack in the body.  This way the test
  1374.         ** can be made before the choice of what to do is needed.
  1375.         */
  1376.         {
  1377.             /* length of production doubled with extra bit */
  1378.             register int yy_len = yyr2[ yy_n ];
  1379.  
  1380.             if ( !( yy_len & 01 ) )
  1381.             {
  1382.                 yy_len >>= 1;
  1383.                 yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1384.                 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1385.                     *( yy_ps -= yy_len ) + 1;
  1386.                 if ( yy_state >= YYLAST ||
  1387.                     yychk[ yy_state =
  1388.                     yyact[ yy_state ] ] != -yy_n )
  1389.                 {
  1390.                     yy_state = yyact[ yypgo[ yy_n ] ];
  1391.                 }
  1392.                 goto yy_stack;
  1393.             }
  1394.             yy_len >>= 1;
  1395.             yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1396.             yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1397.                 *( yy_ps -= yy_len ) + 1;
  1398.             if ( yy_state >= YYLAST ||
  1399.                 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1400.             {
  1401.                 yy_state = yyact[ yypgo[ yy_n ] ];
  1402.             }
  1403.         }
  1404.                     /* save until reenter driver code */
  1405.         yystate = yy_state;
  1406.         yyps = yy_ps;
  1407.         yypv = yy_pv;
  1408.     }
  1409.     /*
  1410.     ** code supplied by user is placed in this switch
  1411.     */
  1412.     switch( yytmp )
  1413.     {
  1414.         
  1415. case 1:
  1416. # line 179 "tgram.g"
  1417. {gout(globfile);} break;
  1418. case 4:
  1419. # line 184 "tgram.g"
  1420. {if (!nocode) rout(globfile, Str0(yypvt[-0])); nocode = 0; loc_init();} break;
  1421. case 5:
  1422. # line 185 "tgram.g"
  1423. {if (!nocode) codegen(yypvt[-0]); nocode = 0; loc_init();} break;
  1424. case 6:
  1425. # line 186 "tgram.g"
  1426. {;} break;
  1427. case 7:
  1428. # line 187 "tgram.g"
  1429. {;} break;
  1430. case 8:
  1431. # line 188 "tgram.g"
  1432. {;} break;
  1433. case 9:
  1434. # line 190 "tgram.g"
  1435. {;} break;
  1436. case 11:
  1437. # line 193 "tgram.g"
  1438. {;} break;
  1439. case 12:
  1440. # line 195 "tgram.g"
  1441. {addinvk(Str0(yypvt[-0]),1);} break;
  1442. case 13:
  1443. # line 196 "tgram.g"
  1444. {addinvk(Str0(yypvt[-0]),2);} break;
  1445. case 14:
  1446. # line 197 "tgram.g"
  1447. {addinvk(Str0(yypvt[-2]),3);} break;
  1448. case 15:
  1449. # line 199 "tgram.g"
  1450. {;} break;
  1451. case 17:
  1452. # line 202 "tgram.g"
  1453. {;} break;
  1454. case 18:
  1455. # line 204 "tgram.g"
  1456. {addlfile(Str0(yypvt[-0]));} break;
  1457. case 19:
  1458. # line 205 "tgram.g"
  1459. {addlfile(Str0(yypvt[-0]));} break;
  1460. case 20:
  1461. # line 207 "tgram.g"
  1462. {idflag = F_Global;} break;
  1463. case 21:
  1464. # line 207 "tgram.g"
  1465. {;} break;
  1466. case 22:
  1467. # line 209 "tgram.g"
  1468. {idflag = F_Argument;} break;
  1469. case 23:
  1470. # line 209 "tgram.g"
  1471. {
  1472.         install(Str0(yypvt[-4]),F_Record|F_Global,id_cnt); yyval = yypvt[-4];
  1473.         } break;
  1474. case 24:
  1475. # line 213 "tgram.g"
  1476. {id_cnt = 0;} break;
  1477. case 25:
  1478. # line 214 "tgram.g"
  1479. {;} break;
  1480. case 26:
  1481. # line 216 "tgram.g"
  1482. {
  1483.         yyval = tree6(N_Proc,yypvt[-5],yypvt[-5],yypvt[-2],yypvt[-1],yypvt[-0]);
  1484.         } break;
  1485. case 27:
  1486. # line 220 "tgram.g"
  1487. {idflag = F_Argument;} break;
  1488. case 28:
  1489. # line 220 "tgram.g"
  1490. {
  1491.         yyval = yypvt[-4]; install(Str0(yypvt[-4]),F_Proc|F_Global,id_cnt);
  1492.         } break;
  1493. case 29:
  1494. # line 224 "tgram.g"
  1495. {id_cnt = 0;} break;
  1496. case 30:
  1497. # line 225 "tgram.g"
  1498. {;} break;
  1499. case 31:
  1500. # line 226 "tgram.g"
  1501. {id_cnt = -id_cnt;} break;
  1502. case 32:
  1503. # line 229 "tgram.g"
  1504. {
  1505.         install(Str0(yypvt[-0]),idflag,0); id_cnt = 1;
  1506.         } break;
  1507. case 33:
  1508. # line 232 "tgram.g"
  1509. {
  1510.         install(Str0(yypvt[-0]),idflag,0); ++id_cnt;
  1511.         } break;
  1512. case 34:
  1513. # line 236 "tgram.g"
  1514. {;} break;
  1515. case 35:
  1516. # line 237 "tgram.g"
  1517. {;} break;
  1518. case 36:
  1519. # line 239 "tgram.g"
  1520. {idflag = F_Dynamic;} break;
  1521. case 37:
  1522. # line 240 "tgram.g"
  1523. {idflag = F_Static;} break;
  1524. case 38:
  1525. # line 242 "tgram.g"
  1526. {yyval = tree1(N_Empty);} break;
  1527. case 39:
  1528. # line 243 "tgram.g"
  1529. {yyval = yypvt[-1];} break;
  1530. case 40:
  1531. # line 245 "tgram.g"
  1532. {yyval = tree1(N_Empty);} break;
  1533. case 41:
  1534. # line 246 "tgram.g"
  1535. {yyval = tree4(N_Slist,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1536. case 42:
  1537. # line 248 "tgram.g"
  1538. {yyval = tree1(N_Empty);} break;
  1539. case 45:
  1540. # line 252 "tgram.g"
  1541. {yyval = tree5(N_Conj,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1542. case 47:
  1543. # line 255 "tgram.g"
  1544. {yyval = tree5(N_Scan,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1545. case 49:
  1546. # line 258 "tgram.g"
  1547. case 50:
  1548. # line 259 "tgram.g"
  1549. case 51:
  1550. # line 260 "tgram.g"
  1551. case 52:
  1552. # line 261 "tgram.g"
  1553. {yyval = tree5(N_Binop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1554. case 53:
  1555. # line 262 "tgram.g"
  1556. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1557. case 54:
  1558. # line 263 "tgram.g"
  1559. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1560. case 55:
  1561. # line 264 "tgram.g"
  1562. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1563. case 56:
  1564. # line 265 "tgram.g"
  1565. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1566. case 57:
  1567. # line 266 "tgram.g"
  1568. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1569. case 58:
  1570. # line 267 "tgram.g"
  1571. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1572. case 59:
  1573. # line 268 "tgram.g"
  1574. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1575. case 60:
  1576. # line 269 "tgram.g"
  1577. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1578. case 61:
  1579. # line 270 "tgram.g"
  1580. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1581. case 62:
  1582. # line 271 "tgram.g"
  1583. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1584. case 63:
  1585. # line 272 "tgram.g"
  1586. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1587. case 64:
  1588. # line 273 "tgram.g"
  1589. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1590. case 65:
  1591. # line 274 "tgram.g"
  1592. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1593. case 66:
  1594. # line 275 "tgram.g"
  1595. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1596. case 67:
  1597. # line 276 "tgram.g"
  1598. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1599. case 68:
  1600. # line 277 "tgram.g"
  1601. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1602. case 69:
  1603. # line 278 "tgram.g"
  1604. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1605. case 70:
  1606. # line 279 "tgram.g"
  1607. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1608. case 71:
  1609. # line 280 "tgram.g"
  1610. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1611. case 72:
  1612. # line 281 "tgram.g"
  1613. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1614. case 73:
  1615. # line 282 "tgram.g"
  1616. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1617. case 74:
  1618. # line 283 "tgram.g"
  1619. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1620. case 75:
  1621. # line 284 "tgram.g"
  1622. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1623. case 76:
  1624. # line 285 "tgram.g"
  1625. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1626. case 77:
  1627. # line 286 "tgram.g"
  1628. {yyval = tree5(N_Augop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1629. case 78:
  1630. # line 287 "tgram.g"
  1631. {yyval = tree5(N_Scan,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1632. case 79:
  1633. # line 288 "tgram.g"
  1634. {yyval = tree5(N_Conj,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1635. case 80:
  1636. # line 289 "tgram.g"
  1637. {yyval = tree5(N_Activat,yypvt[-1],yypvt[-1],yypvt[-0],yypvt[-2]);} break;
  1638. case 82:
  1639. # line 292 "tgram.g"
  1640. {yyval = tree4(N_To,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1641. case 83:
  1642. # line 293 "tgram.g"
  1643. {yyval = tree5(N_ToBy,yypvt[-3],yypvt[-4],yypvt[-2],yypvt[-0]);} break;
  1644. case 85:
  1645. # line 296 "tgram.g"
  1646. {yyval = tree4(N_Alt,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1647. case 87:
  1648. # line 299 "tgram.g"
  1649. case 88:
  1650. # line 300 "tgram.g"
  1651. case 89:
  1652. # line 301 "tgram.g"
  1653. case 90:
  1654. # line 302 "tgram.g"
  1655. case 91:
  1656. # line 303 "tgram.g"
  1657. case 92:
  1658. # line 304 "tgram.g"
  1659. case 93:
  1660. # line 305 "tgram.g"
  1661. case 94:
  1662. # line 306 "tgram.g"
  1663. case 95:
  1664. # line 307 "tgram.g"
  1665. case 96:
  1666. # line 308 "tgram.g"
  1667. case 97:
  1668. # line 309 "tgram.g"
  1669. case 98:
  1670. # line 310 "tgram.g"
  1671. case 99:
  1672. # line 311 "tgram.g"
  1673. case 100:
  1674. # line 312 "tgram.g"
  1675. case 102:
  1676. # line 315 "tgram.g"
  1677. case 103:
  1678. # line 316 "tgram.g"
  1679. case 105:
  1680. # line 319 "tgram.g"
  1681. case 106:
  1682. # line 320 "tgram.g"
  1683. case 107:
  1684. # line 321 "tgram.g"
  1685. case 108:
  1686. # line 322 "tgram.g"
  1687. case 110:
  1688. # line 325 "tgram.g"
  1689. case 111:
  1690. # line 326 "tgram.g"
  1691. case 112:
  1692. # line 327 "tgram.g"
  1693. case 113:
  1694. # line 328 "tgram.g"
  1695. case 115:
  1696. # line 331 "tgram.g"
  1697. {yyval = tree5(N_Binop,yypvt[-1],yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1698. case 117:
  1699. # line 334 "tgram.g"
  1700. {yyval = tree4(N_Limit,yypvt[-2],yypvt[-2],yypvt[-0]);} break;
  1701. case 118:
  1702. # line 335 "tgram.g"
  1703. {yyval = tree5(N_Activat,yypvt[-1],yypvt[-1],yypvt[-0],yypvt[-2]);} break;
  1704. case 119:
  1705. # line 336 "tgram.g"
  1706. {yyval = tree4(N_Apply,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1707. case 121:
  1708. # line 339 "tgram.g"
  1709. {yyval = tree5(N_Activat,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty));} break;
  1710. case 122:
  1711. # line 340 "tgram.g"
  1712. {yyval = tree3(N_Not,yypvt[-0],yypvt[-0]);} break;
  1713. case 123:
  1714. # line 341 "tgram.g"
  1715. {yyval = tree3(N_Bar,yypvt[-0],yypvt[-0]);} break;
  1716. case 124:
  1717. # line 342 "tgram.g"
  1718. {yyval = tree3(N_Bar,yypvt[-0],yypvt[-0]);} break;
  1719. case 125:
  1720. # line 343 "tgram.g"
  1721. {yyval = tree3(N_Bar,yypvt[-0],yypvt[-0]);} break;
  1722. case 126:
  1723. # line 344 "tgram.g"
  1724. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1725. case 127:
  1726. # line 345 "tgram.g"
  1727. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1728. case 128:
  1729. # line 346 "tgram.g"
  1730. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1731. case 129:
  1732. # line 347 "tgram.g"
  1733. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1734. case 130:
  1735. # line 348 "tgram.g"
  1736. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1737. case 131:
  1738. # line 349 "tgram.g"
  1739. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1740. case 132:
  1741. # line 350 "tgram.g"
  1742. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1743. case 133:
  1744. # line 351 "tgram.g"
  1745. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1746. case 134:
  1747. # line 352 "tgram.g"
  1748. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1749. case 135:
  1750. # line 353 "tgram.g"
  1751. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1752. case 136:
  1753. # line 354 "tgram.g"
  1754. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1755. case 137:
  1756. # line 355 "tgram.g"
  1757. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1758. case 138:
  1759. # line 356 "tgram.g"
  1760. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1761. case 139:
  1762. # line 357 "tgram.g"
  1763. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1764. case 140:
  1765. # line 358 "tgram.g"
  1766. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1767. case 141:
  1768. # line 359 "tgram.g"
  1769. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1770. case 142:
  1771. # line 360 "tgram.g"
  1772. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1773. case 143:
  1774. # line 361 "tgram.g"
  1775. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1776. case 144:
  1777. # line 362 "tgram.g"
  1778. {yyval = tree4(N_Unop,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1779. case 154:
  1780. # line 373 "tgram.g"
  1781. {yyval = tree3(N_Create,yypvt[-1],yypvt[-0]);} break;
  1782. case 155:
  1783. # line 374 "tgram.g"
  1784. {Val0(yypvt[-0]) = putloc(Str0(yypvt[-0]),0);} break;
  1785. case 156:
  1786. # line 375 "tgram.g"
  1787. {yyval = tree2(N_Next,yypvt[-0]);} break;
  1788. case 157:
  1789. # line 376 "tgram.g"
  1790. {yyval = tree3(N_Break,yypvt[-1],yypvt[-0]);} break;
  1791. case 158:
  1792. # line 377 "tgram.g"
  1793. {if ((yypvt[-1])->n_type == N_Elist) yyval = tree4(N_Invok,yypvt[-2],tree1(N_Empty),yypvt[-1]); else yyval = yypvt[-1];} break;
  1794. case 159:
  1795. # line 378 "tgram.g"
  1796. {yyval = yypvt[-1];} break;
  1797. case 160:
  1798. # line 379 "tgram.g"
  1799. {yyval = tree3(N_List,yypvt[-2],yypvt[-1]);} break;
  1800. case 161:
  1801. # line 380 "tgram.g"
  1802. {yyval = buildarray(yypvt[-3],yypvt[-2],yypvt[-1],yypvt[-0]);} break;
  1803. case 162:
  1804. # line 381 "tgram.g"
  1805. {yyval = tree4(N_Invok,yypvt[-1],yypvt[-2], tree3(N_List,yypvt[-1],tree1(N_Empty)));} break;
  1806. case 163:
  1807. # line 382 "tgram.g"
  1808. {yyval = tree4(N_Invok,yypvt[-2],yypvt[-3],tree3(N_List,yypvt[-2],yypvt[-1]));} break;
  1809. case 164:
  1810. # line 383 "tgram.g"
  1811. {yyval = tree4(N_Invok,yypvt[-2],yypvt[-3],yypvt[-1]);} break;
  1812. case 165:
  1813. # line 384 "tgram.g"
  1814. {yyval = tree4(N_Field,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1815. case 166:
  1816. # line 385 "tgram.g"
  1817. {yyval = c_str_leaf(N_Key,yypvt[-1],"fail");} break;
  1818. case 167:
  1819. # line 386 "tgram.g"
  1820. {if (klookup(Str0(yypvt[-0])) == 0) tfatal("invalid keyword",Str0(yypvt[-0])); yyval = c_str_leaf(N_Key,yypvt[-1],Str0(yypvt[-0]));} break;
  1821. case 168:
  1822. # line 388 "tgram.g"
  1823. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty));} break;
  1824. case 169:
  1825. # line 389 "tgram.g"
  1826. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]);} break;
  1827. case 170:
  1828. # line 391 "tgram.g"
  1829. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty));} break;
  1830. case 171:
  1831. # line 392 "tgram.g"
  1832. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]);} break;
  1833. case 172:
  1834. # line 394 "tgram.g"
  1835. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty));} break;
  1836. case 173:
  1837. # line 395 "tgram.g"
  1838. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]);} break;
  1839. case 174:
  1840. # line 397 "tgram.g"
  1841. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty));} break;
  1842. case 175:
  1843. # line 399 "tgram.g"
  1844. {yyval = tree4(N_Ret,yypvt[-0],yypvt[-0],tree1(N_Empty));} break;
  1845. case 176:
  1846. # line 400 "tgram.g"
  1847. {yyval = tree4(N_Ret,yypvt[-1],yypvt[-1],yypvt[-0]);} break;
  1848. case 177:
  1849. # line 401 "tgram.g"
  1850. {yyval = tree5(N_Loop,yypvt[-1],yypvt[-1],yypvt[-0],tree1(N_Empty));} break;
  1851. case 178:
  1852. # line 402 "tgram.g"
  1853. {yyval = tree5(N_Loop,yypvt[-3],yypvt[-3],yypvt[-2],yypvt[-0]);} break;
  1854. case 179:
  1855. # line 404 "tgram.g"
  1856. {yyval = tree5(N_If,yypvt[-3],yypvt[-2],yypvt[-0],tree1(N_Empty));} break;
  1857. case 180:
  1858. # line 405 "tgram.g"
  1859. {yyval = tree5(N_If,yypvt[-5],yypvt[-4],yypvt[-2],yypvt[-0]);} break;
  1860. case 181:
  1861. # line 407 "tgram.g"
  1862. {yyval = tree4(N_Case,yypvt[-5],yypvt[-4],yypvt[-1]);} break;
  1863. case 183:
  1864. # line 410 "tgram.g"
  1865. {yyval = tree4(N_Clist,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1866. case 184:
  1867. # line 412 "tgram.g"
  1868. {yyval = tree4(N_Ccls,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1869. case 185:
  1870. # line 413 "tgram.g"
  1871. {yyval = tree4(N_Ccls,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1872. case 186:
  1873. # line 415 "tgram.g"
  1874. {;} break;
  1875. case 187:
  1876. # line 416 "tgram.g"
  1877. {yyval = tree4(N_Elist,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1878. case 188:
  1879. # line 418 "tgram.g"
  1880. {
  1881.         yyval = tree3(N_Create,yypvt[-0],yypvt[-0]);
  1882.         } break;
  1883. case 189:
  1884. # line 421 "tgram.g"
  1885. {
  1886.         yyval = tree4(N_Elist,yypvt[-1],yypvt[-2],tree3(N_Create,yypvt[-1],yypvt[-0]));
  1887.         } break;
  1888. case 190:
  1889. # line 425 "tgram.g"
  1890. {Val0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_IntLit,0);} break;
  1891. case 191:
  1892. # line 426 "tgram.g"
  1893. {Val0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_RealLit,0);} break;
  1894. case 192:
  1895. # line 427 "tgram.g"
  1896. {Val0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_StrLit,(int)Val1(yypvt[-0]));} break;
  1897. case 193:
  1898. # line 428 "tgram.g"
  1899. {Val0(yypvt[-0]) = putlit(Str0(yypvt[-0]),F_CsetLit,(int)Val1(yypvt[-0]));} break;
  1900. case 194:
  1901. # line 430 "tgram.g"
  1902. {yyval = tree6(N_Sect,yypvt[-2],yypvt[-2],yypvt[-5],yypvt[-3],yypvt[-1]);} break;
  1903. case 195:
  1904. # line 432 "tgram.g"
  1905. {yyval = yypvt[-0];} break;
  1906. case 196:
  1907. # line 433 "tgram.g"
  1908. {yyval = yypvt[-0];} break;
  1909. case 197:
  1910. # line 434 "tgram.g"
  1911. {yyval = yypvt[-0];} break;
  1912. case 199:
  1913. # line 437 "tgram.g"
  1914. {yyval = tree4(N_Slist,yypvt[-1],yypvt[-2],yypvt[-0]);} break;
  1915.     }
  1916.     goto yystack;        /* reset registers in driver code */
  1917. }
  1918.