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