parse.c
上传用户:wqdrylgs
上传日期:2007-02-09
资源大小:65k
文件大小:44k
源码类别:

汇编语言

开发平台:

WINDOWS

  1. /****************************************************************************
  2. *                     U N R E G I S T E R E D   C O P Y
  3. * You are on day 85 of your 30 day trial period.
  4. * This file was produced by an UNREGISTERED COPY of Parser Generator. It is
  5. * for evaluation purposes only. If you continue to use Parser Generator 30
  6. * days after installation then you are required to purchase a license. For
  7. * more information see the online help or go to the Bumble-Bee Software
  8. * homepage at:
  9. * http://www.bumblebeesoftware.com
  10. * This notice must remain present in the file. It cannot be removed.
  11. ****************************************************************************/
  12. /****************************************************************************
  13. * parse.c
  14. * C source file generated from parse.y.
  15. * Date: 06/24/03
  16. * Time: 17:07:53
  17. * AYACC Version: 2.05
  18. ****************************************************************************/
  19. #include <yypars.h>
  20. /* namespaces */
  21. #if defined(__cplusplus) && defined(YYSTDCPPLIB)
  22. using namespace std;
  23. #endif
  24. #if defined(__cplusplus) && defined(YYNAMESPACE)
  25. using namespace yl;
  26. #endif
  27. #define YYFASTPARSER
  28. #line 1 ".\parse.y"
  29. #define YYPARSER /* distinguishes Yacc output from other code files */
  30. #include "globals.h"
  31. #include "util.h"
  32. #include "scan.h"
  33. #include "parse.h"
  34. static char * savedFunName; /* for use in assignments */
  35. static char * savedIdName;
  36. static int savedLineNo;  /* ditto */
  37. static TreeNode * savedTree; /* stores syntax tree for later return */
  38. #line 56 "parse.c"
  39. /* repeated because of possible precompiled header */
  40. #include <yypars.h>
  41. /* namespaces */
  42. #if defined(__cplusplus) && defined(YYSTDCPPLIB)
  43. using namespace std;
  44. #endif
  45. #if defined(__cplusplus) && defined(YYNAMESPACE)
  46. using namespace yl;
  47. #endif
  48. #define YYFASTPARSER
  49. #include ".parse.h"
  50. #ifndef YYSTYPE
  51. #define YYSTYPE int
  52. #endif
  53. #ifndef YYSTACK_SIZE
  54. #define YYSTACK_SIZE 100
  55. #endif
  56. #ifndef YYSTACK_MAX
  57. #define YYSTACK_MAX 0
  58. #endif
  59. /* (state) stack */
  60. #if (YYSTACK_SIZE) != 0
  61. static yystack_t YYNEAR yystack[(YYSTACK_SIZE)];
  62. yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = yystack;
  63. yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = yystack;
  64. #else
  65. yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = NULL;
  66. yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = NULL;
  67. #endif
  68. /* attribute stack */
  69. #if (YYSTACK_SIZE) != 0
  70. static YYSTYPE YYNEAR yyattributestack[(YYSTACK_SIZE)];
  71. #ifdef YYPROTOTYPE
  72. void YYFAR *YYNEAR YYDCDECL yysattributestackptr = yyattributestack;
  73. void YYFAR *YYNEAR YYDCDECL yyattributestackptr = yyattributestack;
  74. #else
  75. char YYFAR *YYNEAR YYDCDECL yysattributestackptr = (char YYFAR *) yyattributestack;
  76. char YYFAR *YYNEAR YYDCDECL yyattributestackptr = (char YYFAR *) yyattributestack;
  77. #endif
  78. #else
  79. #ifdef YYPROTOTYPE
  80. void YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL;
  81. void YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL;
  82. #else
  83. char YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL;
  84. char YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL;
  85. #endif
  86. #endif
  87. int YYNEAR YYDCDECL yysstack_size = (YYSTACK_SIZE);
  88. int YYNEAR YYDCDECL yystack_size = (YYSTACK_SIZE);
  89. int YYNEAR YYDCDECL yystack_max = (YYSTACK_MAX);
  90. /* attributes */
  91. YYSTYPE YYNEAR yyval;
  92. YYSTYPE YYNEAR yylval;
  93. #ifdef YYPROTOTYPE
  94. void YYFAR *YYNEAR YYDCDECL yyvalptr = &yyval;
  95. void YYFAR *YYNEAR YYDCDECL yylvalptr = &yylval;
  96. #else
  97. char YYFAR *YYNEAR YYDCDECL yyvalptr = (char *) &yyval;
  98. char YYFAR *YYNEAR YYDCDECL yylvalptr = (char *) &yylval;
  99. #endif
  100. size_t YYNEAR YYDCDECL yyattribute_size = sizeof(YYSTYPE);
  101. /* yyattribute */
  102. #ifdef YYDEBUG
  103. #ifdef YYPROTOTYPE
  104. static YYSTYPE YYFAR *yyattribute1(int index)
  105. #else
  106. static YYSTYPE YYFAR *yyattribute1(index)
  107. int index;
  108. #endif
  109. {
  110. YYSTYPE YYFAR *p = &((YYSTYPE YYFAR *) yyattributestackptr)[yytop + index];
  111. return p;
  112. }
  113. #define yyattribute(index) (*yyattribute1(index))
  114. #else
  115. #define yyattribute(index) (((YYSTYPE YYFAR *) yyattributestackptr)[yytop + (index)])
  116. #endif
  117. #ifdef YYDEBUG
  118. #ifdef YYPROTOTYPE
  119. static void yyinitdebug(YYSTYPE YYFAR **p, int count)
  120. #else
  121. static void yyinitdebug(p, count)
  122. YYSTYPE YYFAR **p;
  123. int count;
  124. #endif
  125. {
  126. int i;
  127. yyassert(p != NULL);
  128. yyassert(count >= 1);
  129. for (i = 0; i < count; i++) {
  130. p[i] = &((YYSTYPE YYFAR *) yyattributestackptr)[yytop + i - (count - 1)];
  131. }
  132. }
  133. #endif
  134. #ifdef YYPROTOTYPE
  135. void YYCDECL yyparseraction(int action)
  136. #else
  137. void YYCDECL yyparseraction(action)
  138. int action;
  139. #endif
  140. {
  141. switch (action) {
  142. case 0:
  143. {
  144. #ifdef YYDEBUG
  145. YYSTYPE YYFAR *yya[2];
  146. yyinitdebug(yya, 2);
  147. #endif
  148. {
  149. #line 52 ".\parse.y"
  150.  savedTree = yyattribute(1 - 1).ptree;
  151. #line 182 "parse.c"
  152. }
  153. }
  154. break;
  155. case 1:
  156. {
  157. #ifdef YYDEBUG
  158. YYSTYPE YYFAR *yya[3];
  159. yyinitdebug(yya, 3);
  160. #endif
  161. {
  162. #line 55 ".\parse.y"
  163.  TreeNode * t = yyattribute(1 - 2).ptree;
  164.   if (t != NULL)
  165.   { while (t->sibling != NULL)
  166. t = t->sibling;
  167. t->sibling = yyattribute(2 - 2).ptree;
  168. yyval.ptree = yyattribute(1 - 2).ptree; }
  169.   else yyval.ptree = yyattribute(2 - 2).ptree;
  170. #line 202 "parse.c"
  171. }
  172. }
  173. break;
  174. case 2:
  175. {
  176. #ifdef YYDEBUG
  177. YYSTYPE YYFAR *yya[2];
  178. yyinitdebug(yya, 2);
  179. #endif
  180. {
  181. #line 64 ".\parse.y"
  182.  yyval.ptree = yyattribute(1 - 1).ptree; 
  183. #line 215 "parse.c"
  184. }
  185. }
  186. break;
  187. case 3:
  188. {
  189. #ifdef YYDEBUG
  190. YYSTYPE YYFAR *yya[2];
  191. yyinitdebug(yya, 2);
  192. #endif
  193. {
  194. #line 66 ".\parse.y"
  195.  yyval.ptree = yyattribute(1 - 1).ptree; 
  196. #line 228 "parse.c"
  197. }
  198. }
  199. break;
  200. case 4:
  201. {
  202. #ifdef YYDEBUG
  203. YYSTYPE YYFAR *yya[2];
  204. yyinitdebug(yya, 2);
  205. #endif
  206. {
  207. #line 67 ".\parse.y"
  208.  yyval.ptree = yyattribute(1 - 1).ptree; 
  209. #line 241 "parse.c"
  210. }
  211. }
  212. break;
  213. case 5:
  214. {
  215. #ifdef YYDEBUG
  216. YYSTYPE YYFAR *yya[2];
  217. yyinitdebug(yya, 2);
  218. #endif
  219. {
  220. #line 68 ".\parse.y"
  221.  yyval.ptree = yyattribute(1 - 1).ptree; 
  222. #line 254 "parse.c"
  223. }
  224. }
  225. break;
  226. case 6:
  227. {
  228. #ifdef YYDEBUG
  229. YYSTYPE YYFAR *yya[2];
  230. yyinitdebug(yya, 2);
  231. #endif
  232. {
  233. #line 70 ".\parse.y"
  234.  savedIdName = copyString(tokenString); 
  235. #line 267 "parse.c"
  236. }
  237. }
  238. break;
  239. case 7:
  240. {
  241. #line 72 ".\parse.y"
  242.  savedFunName = savedIdName; 
  243. #line 275 "parse.c"
  244. }
  245. break;
  246. case 8:
  247. {
  248. #ifdef YYDEBUG
  249. YYSTYPE YYFAR *yya[4];
  250. yyinitdebug(yya, 4);
  251. #endif
  252. {
  253. #line 75 ".\parse.y"
  254.  if(yyattribute(1 - 3).type == Void)
  255.   ;
  256.   // err
  257.   else
  258.     {
  259.   yyval.ptree = newDecNode(VarK); 
  260.   yyval.ptree -> type = yyattribute(1 - 3).type;
  261.   yyval.ptree -> child[0] = yyattribute(2 - 3).ptree;
  262. }
  263. #line 296 "parse.c"
  264. }
  265. }
  266. break;
  267. case 9:
  268. {
  269. #ifdef YYDEBUG
  270. YYSTYPE YYFAR *yya[4];
  271. yyinitdebug(yya, 4);
  272. #endif
  273. {
  274. #line 87 ".\parse.y"
  275.  
  276.                   TreeNode * t = yyattribute(1 - 3).ptree;
  277.   if (t != NULL)
  278.   { while (t->sibling != NULL)
  279. t = t->sibling;
  280. t->sibling = yyattribute(3 - 3).ptree;
  281. yyval.ptree = yyattribute(1 - 3).ptree; }
  282.   else yyval.ptree = yyattribute(3 - 3).ptree;
  283.                 
  284. #line 317 "parse.c"
  285. }
  286. }
  287. break;
  288. case 10:
  289. {
  290. #ifdef YYDEBUG
  291. YYSTYPE YYFAR *yya[2];
  292. yyinitdebug(yya, 2);
  293. #endif
  294. {
  295. #line 96 ".\parse.y"
  296.  yyval.ptree = yyattribute(1 - 1).ptree; 
  297. #line 330 "parse.c"
  298. }
  299. }
  300. break;
  301. case 11:
  302. {
  303. #ifdef YYDEBUG
  304. YYSTYPE YYFAR *yya[6];
  305. yyinitdebug(yya, 6);
  306. #endif
  307. {
  308. #line 98 ".\parse.y"
  309.  
  310.   TreeNode * new_node = newStmtNode(AssignK);
  311.   TreeNode * t = yyattribute(1 - 5).ptree;
  312.   if (t != NULL)
  313.   { while (t->sibling != NULL)
  314. t = t->sibling;
  315. t->sibling = new_node;
  316. yyval.ptree = yyattribute(1 - 5).ptree; }
  317.   else yyval.ptree = new_node;
  318.               
  319. #line 352 "parse.c"
  320. }
  321. }
  322. break;
  323. case 12:
  324. {
  325. #ifdef YYDEBUG
  326. YYSTYPE YYFAR *yya[4];
  327. yyinitdebug(yya, 4);
  328. #endif
  329. {
  330. #line 109 ".\parse.y"
  331.  
  332.  yyval.ptree = newStmtNode(AssignK);
  333.  yyval.ptree -> child[0] = newExpNode(IdK);
  334.  yyval.ptree -> child[0] -> attr.name = savedIdName;
  335.  yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  336.               
  337. #line 370 "parse.c"
  338. }
  339. }
  340. break;
  341. case 13:
  342. {
  343. #ifdef YYDEBUG
  344. YYSTYPE YYFAR *yya[2];
  345. yyinitdebug(yya, 2);
  346. #endif
  347. {
  348. #line 116 ".\parse.y"
  349.  yyval.type = Integer; 
  350. #line 383 "parse.c"
  351. }
  352. }
  353. break;
  354. case 14:
  355. {
  356. #ifdef YYDEBUG
  357. YYSTYPE YYFAR *yya[2];
  358. yyinitdebug(yya, 2);
  359. #endif
  360. {
  361. #line 117 ".\parse.y"
  362.  yyval.type = Float; 
  363. #line 396 "parse.c"
  364. }
  365. }
  366. break;
  367. case 15:
  368. {
  369. #ifdef YYDEBUG
  370. YYSTYPE YYFAR *yya[2];
  371. yyinitdebug(yya, 2);
  372. #endif
  373. {
  374. #line 118 ".\parse.y"
  375.  yyval.type = Char; 
  376. #line 409 "parse.c"
  377. }
  378. }
  379. break;
  380. case 16:
  381. {
  382. #ifdef YYDEBUG
  383. YYSTYPE YYFAR *yya[2];
  384. yyinitdebug(yya, 2);
  385. #endif
  386. {
  387. #line 119 ".\parse.y"
  388.  yyval.type = Void; 
  389. #line 422 "parse.c"
  390. }
  391. }
  392. break;
  393. case 17:
  394. {
  395. #ifdef YYDEBUG
  396. YYSTYPE YYFAR *yya[8];
  397. yyinitdebug(yya, 8);
  398. #endif
  399. {
  400. #line 122 ".\parse.y"
  401.  yyval.ptree = newDecNode(FunDefK);
  402.   yyval.ptree -> attr.name = savedFunName;
  403.   yyval.ptree -> type = yyattribute(1 - 7).type;
  404.   yyval.ptree -> child[0] = yyattribute(5 - 7).ptree;
  405.   yyval.ptree -> child[1] = yyattribute(7 - 7).ptree; 
  406. #line 440 "parse.c"
  407. }
  408. }
  409. break;
  410. case 18:
  411. {
  412. #ifdef YYDEBUG
  413. YYSTYPE YYFAR *yya[7];
  414. yyinitdebug(yya, 7);
  415. #endif
  416. {
  417. #line 129 ".\parse.y"
  418.  yyval.ptree = newDecNode(FunDefK);
  419.   yyval.ptree -> attr.name = savedFunName;
  420.   yyval.ptree -> type = Void;
  421.   yyval.ptree -> child[0] = yyattribute(4 - 6).ptree;
  422.   yyval.ptree -> child[1] = yyattribute(6 - 6).ptree; 
  423. #line 458 "parse.c"
  424. }
  425. }
  426. break;
  427. case 19:
  428. {
  429. #ifdef YYDEBUG
  430. YYSTYPE YYFAR *yya[8];
  431. yyinitdebug(yya, 8);
  432. #endif
  433. {
  434. #line 137 ".\parse.y"
  435.  yyval.ptree = newDecNode(FunDecK);
  436.   yyval.ptree -> attr.name = savedFunName;
  437.   yyval.ptree -> type = yyattribute(1 - 7).type;
  438.   yyval.ptree -> child[0] = yyattribute(5 - 7).ptree;
  439.   yyval.ptree -> child[1] = NULL;
  440. #line 476 "parse.c"
  441. }
  442. }
  443. break;
  444. case 20:
  445. {
  446. #ifdef YYDEBUG
  447. YYSTYPE YYFAR *yya[7];
  448. yyinitdebug(yya, 7);
  449. #endif
  450. {
  451. #line 144 ".\parse.y"
  452.  yyval.ptree = newDecNode(FunDecK);
  453.   yyval.ptree -> attr.name = savedFunName;
  454.   yyval.ptree -> type = Void;
  455.   yyval.ptree -> child[0] = yyattribute(4 - 6).ptree;
  456.   yyval.ptree -> child[1] = NULL;
  457. #line 494 "parse.c"
  458. }
  459. }
  460. break;
  461. case 21:
  462. {
  463. #ifdef YYDEBUG
  464. YYSTYPE YYFAR *yya[2];
  465. yyinitdebug(yya, 2);
  466. #endif
  467. {
  468. #line 152 ".\parse.y"
  469.  yyval.ptree = yyattribute(1 - 1).ptree; 
  470. #line 507 "parse.c"
  471. }
  472. }
  473. break;
  474. case 22:
  475. {
  476. #line 154 ".\parse.y"
  477.  yyval.ptree = NULL; 
  478. #line 515 "parse.c"
  479. }
  480. break;
  481. case 23:
  482. {
  483. #ifdef YYDEBUG
  484. YYSTYPE YYFAR *yya[4];
  485. yyinitdebug(yya, 4);
  486. #endif
  487. {
  488. #line 157 ".\parse.y"
  489.  TreeNode * t = yyattribute(1 - 3).ptree;
  490.   if (t != NULL)
  491.   { while (t->sibling != NULL)
  492. t = t->sibling;
  493. t->sibling = yyattribute(3 - 3).ptree;
  494. yyval.ptree = yyattribute(1 - 3).ptree; }
  495.   else yyval.ptree = yyattribute(3 - 3).ptree;
  496. #line 534 "parse.c"
  497. }
  498. }
  499. break;
  500. case 24:
  501. {
  502. #ifdef YYDEBUG
  503. YYSTYPE YYFAR *yya[2];
  504. yyinitdebug(yya, 2);
  505. #endif
  506. {
  507. #line 166 ".\parse.y"
  508.  yyval.ptree = yyattribute(1 - 1).ptree; 
  509. #line 547 "parse.c"
  510. }
  511. }
  512. break;
  513. case 25:
  514. {
  515. #ifdef YYDEBUG
  516. YYSTYPE YYFAR *yya[2];
  517. yyinitdebug(yya, 2);
  518. #endif
  519. {
  520. #line 169 ".\parse.y"
  521.  yyval.ptree = newDecNode(ParamK);
  522.                   yyval.ptree -> type = yyattribute(1 - 1).type;
  523.                 
  524. #line 562 "parse.c"
  525. }
  526. }
  527. break;
  528. case 26:
  529. {
  530. #ifdef YYDEBUG
  531. YYSTYPE YYFAR *yya[3];
  532. yyinitdebug(yya, 3);
  533. #endif
  534. {
  535. #line 173 ".\parse.y"
  536.  yyval.ptree = newDecNode(ParamK);
  537.                   yyval.ptree -> type = yyattribute(1 - 2).type;
  538.                   yyval.ptree -> attr.name = savedIdName;
  539.                 
  540. #line 578 "parse.c"
  541. }
  542. }
  543. break;
  544. case 27:
  545. {
  546. #ifdef YYDEBUG
  547. YYSTYPE YYFAR *yya[5];
  548. yyinitdebug(yya, 5);
  549. #endif
  550. {
  551. #line 178 ".\parse.y"
  552.  yyval.ptree = newDecNode(ParamK);
  553.                   yyval.ptree -> type = yyattribute(1 - 4).type;
  554.                   yyval.ptree -> attr.name = savedIdName;
  555.                 
  556. #line 594 "parse.c"
  557. }
  558. }
  559. break;
  560. case 28:
  561. {
  562. #ifdef YYDEBUG
  563. YYSTYPE YYFAR *yya[6];
  564. yyinitdebug(yya, 6);
  565. #endif
  566. {
  567. #line 183 ".\parse.y"
  568.  yyval.ptree = newDecNode(ParamK);
  569.                   yyval.ptree -> type = yyattribute(1 - 5).type;
  570.                   yyval.ptree -> attr.name = savedIdName;
  571.                   yyval.ptree -> child[0] = yyattribute(4 - 5).ptree;
  572.                 
  573. #line 611 "parse.c"
  574. }
  575. }
  576. break;
  577. case 29:
  578. {
  579. #ifdef YYDEBUG
  580. YYSTYPE YYFAR *yya[5];
  581. yyinitdebug(yya, 5);
  582. #endif
  583. {
  584. #line 190 ".\parse.y"
  585.  yyval.ptree = newDecNode(CompK);
  586.                   yyval.ptree -> child[0] = yyattribute(2 - 4).ptree;
  587.                   yyval.ptree -> child[1] = yyattribute(3 - 4).ptree;
  588.                 
  589. #line 627 "parse.c"
  590. }
  591. }
  592. break;
  593. case 30:
  594. {
  595. #ifdef YYDEBUG
  596. YYSTYPE YYFAR *yya[3];
  597. yyinitdebug(yya, 3);
  598. #endif
  599. {
  600. #line 196 ".\parse.y"
  601.  TreeNode * t = yyattribute(1 - 2).ptree;
  602.   if (t != NULL)
  603.   { while (t->sibling != NULL)
  604. t = t->sibling;
  605. t->sibling = yyattribute(2 - 2).ptree;
  606. yyval.ptree = yyattribute(1 - 2).ptree; }
  607.   else yyval.ptree = yyattribute(2 - 2).ptree;
  608. #line 647 "parse.c"
  609. }
  610. }
  611. break;
  612. case 31:
  613. {
  614. #line 205 ".\parse.y"
  615.  yyval.ptree = NULL; 
  616. #line 655 "parse.c"
  617. }
  618. break;
  619. case 32:
  620. {
  621. #ifdef YYDEBUG
  622. YYSTYPE YYFAR *yya[3];
  623. yyinitdebug(yya, 3);
  624. #endif
  625. {
  626. #line 208 ".\parse.y"
  627.  TreeNode * t = yyattribute(1 - 2).ptree;
  628.   if (t != NULL)
  629.   { while (t->sibling != NULL)
  630. t = t->sibling;
  631. t->sibling = yyattribute(2 - 2).ptree;
  632. yyval.ptree = yyattribute(1 - 2).ptree; }
  633.   else yyval.ptree = yyattribute(2 - 2).ptree;
  634. #line 674 "parse.c"
  635. }
  636. }
  637. break;
  638. case 33:
  639. {
  640. #line 217 ".\parse.y"
  641.  yyval.ptree = NULL; 
  642. #line 682 "parse.c"
  643. }
  644. break;
  645. case 34:
  646. {
  647. #ifdef YYDEBUG
  648. YYSTYPE YYFAR *yya[2];
  649. yyinitdebug(yya, 2);
  650. #endif
  651. {
  652. #line 219 ".\parse.y"
  653.  yyval.ptree = yyattribute(1 - 1).ptree; 
  654. #line 694 "parse.c"
  655. }
  656. }
  657. break;
  658. case 35:
  659. {
  660. #ifdef YYDEBUG
  661. YYSTYPE YYFAR *yya[2];
  662. yyinitdebug(yya, 2);
  663. #endif
  664. {
  665. #line 220 ".\parse.y"
  666.  yyval.ptree = yyattribute(1 - 1).ptree; 
  667. #line 707 "parse.c"
  668. }
  669. }
  670. break;
  671. case 36:
  672. {
  673. #ifdef YYDEBUG
  674. YYSTYPE YYFAR *yya[2];
  675. yyinitdebug(yya, 2);
  676. #endif
  677. {
  678. #line 221 ".\parse.y"
  679.  yyval.ptree = yyattribute(1 - 1).ptree; 
  680. #line 720 "parse.c"
  681. }
  682. }
  683. break;
  684. case 37:
  685. {
  686. #ifdef YYDEBUG
  687. YYSTYPE YYFAR *yya[2];
  688. yyinitdebug(yya, 2);
  689. #endif
  690. {
  691. #line 222 ".\parse.y"
  692.  yyval.ptree = yyattribute(1 - 1).ptree; 
  693. #line 733 "parse.c"
  694. }
  695. }
  696. break;
  697. case 38:
  698. {
  699. #ifdef YYDEBUG
  700. YYSTYPE YYFAR *yya[2];
  701. yyinitdebug(yya, 2);
  702. #endif
  703. {
  704. #line 223 ".\parse.y"
  705.  yyval.ptree = yyattribute(1 - 1).ptree; 
  706. #line 746 "parse.c"
  707. }
  708. }
  709. break;
  710. case 39:
  711. {
  712. #ifdef YYDEBUG
  713. YYSTYPE YYFAR *yya[3];
  714. yyinitdebug(yya, 3);
  715. #endif
  716. {
  717. #line 224 ".\parse.y"
  718.  yyval.ptree = newStmtNode(ContinueK); 
  719. #line 759 "parse.c"
  720. }
  721. }
  722. break;
  723. case 40:
  724. {
  725. #ifdef YYDEBUG
  726. YYSTYPE YYFAR *yya[3];
  727. yyinitdebug(yya, 3);
  728. #endif
  729. {
  730. #line 225 ".\parse.y"
  731.  yyval.ptree = newStmtNode(BreakK); 
  732. #line 772 "parse.c"
  733. }
  734. }
  735. break;
  736. case 41:
  737. {
  738. #ifdef YYDEBUG
  739. YYSTYPE YYFAR *yya[3];
  740. yyinitdebug(yya, 3);
  741. #endif
  742. {
  743. #line 228 ".\parse.y"
  744.  yyval.ptree = yyattribute(1 - 2).ptree; 
  745. #line 785 "parse.c"
  746. }
  747. }
  748. break;
  749. case 42:
  750. {
  751. #ifdef YYDEBUG
  752. YYSTYPE YYFAR *yya[2];
  753. yyinitdebug(yya, 2);
  754. #endif
  755. {
  756. #line 230 ".\parse.y"
  757.  yyval.ptree = NULL; 
  758. #line 798 "parse.c"
  759. }
  760. }
  761. break;
  762. case 43:
  763. {
  764. #ifdef YYDEBUG
  765. YYSTYPE YYFAR *yya[6];
  766. yyinitdebug(yya, 6);
  767. #endif
  768. {
  769. #line 233 ".\parse.y"
  770.  yyval.ptree = newStmtNode(IfK);
  771.                   yyval.ptree -> child[0] = yyattribute(3 - 5).ptree;
  772.                   yyval.ptree -> child[1] = yyattribute(5 - 5).ptree;
  773.                 
  774. #line 814 "parse.c"
  775. }
  776. }
  777. break;
  778. case 44:
  779. {
  780. #ifdef YYDEBUG
  781. YYSTYPE YYFAR *yya[8];
  782. yyinitdebug(yya, 8);
  783. #endif
  784. {
  785. #line 238 ".\parse.y"
  786.  yyval.ptree = newStmtNode(IfK);
  787.                   yyval.ptree -> child[0] = yyattribute(3 - 7).ptree;
  788.                   yyval.ptree -> child[1] = yyattribute(5 - 7).ptree;
  789.   yyval.ptree -> child[2] = yyattribute(7 - 7).ptree;
  790.                 
  791. #line 831 "parse.c"
  792. }
  793. }
  794. break;
  795. case 45:
  796. {
  797. #ifdef YYDEBUG
  798. YYSTYPE YYFAR *yya[6];
  799. yyinitdebug(yya, 6);
  800. #endif
  801. {
  802. #line 245 ".\parse.y"
  803.  yyval.ptree = newStmtNode(WhileK);
  804.                   yyval.ptree -> child[0] = yyattribute(3 - 5).ptree;
  805.                   yyval.ptree -> child[1] = yyattribute(5 - 5).ptree;
  806.                 
  807. #line 847 "parse.c"
  808. }
  809. }
  810. break;
  811. case 46:
  812. {
  813. #ifdef YYDEBUG
  814. YYSTYPE YYFAR *yya[3];
  815. yyinitdebug(yya, 3);
  816. #endif
  817. {
  818. #line 251 ".\parse.y"
  819.  yyval.ptree = newStmtNode(ReturnK);
  820.                   yyval.ptree -> child[0] = NULL;
  821.                 
  822. #line 862 "parse.c"
  823. }
  824. }
  825. break;
  826. case 47:
  827. {
  828. #ifdef YYDEBUG
  829. YYSTYPE YYFAR *yya[4];
  830. yyinitdebug(yya, 4);
  831. #endif
  832. {
  833. #line 255 ".\parse.y"
  834.  yyval.ptree = newStmtNode(ReturnK);
  835.                   yyval.ptree -> child[0] = yyattribute(2 - 3).ptree;
  836.                 
  837. #line 877 "parse.c"
  838. }
  839. }
  840. break;
  841. case 48:
  842. {
  843. #ifdef YYDEBUG
  844. YYSTYPE YYFAR *yya[4];
  845. yyinitdebug(yya, 4);
  846. #endif
  847. {
  848. #line 260 ".\parse.y"
  849.  yyval.ptree = newStmtNode(AssignK);
  850.                   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  851.                   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  852.                 
  853. #line 893 "parse.c"
  854. }
  855. }
  856. break;
  857. case 49:
  858. {
  859. #ifdef YYDEBUG
  860. YYSTYPE YYFAR *yya[2];
  861. yyinitdebug(yya, 2);
  862. #endif
  863. {
  864. #line 265 ".\parse.y"
  865.  yyval.ptree = yyattribute(1 - 1).ptree; 
  866. #line 906 "parse.c"
  867. }
  868. }
  869. break;
  870. case 50:
  871. {
  872. #ifdef YYDEBUG
  873. YYSTYPE YYFAR *yya[2];
  874. yyinitdebug(yya, 2);
  875. #endif
  876. {
  877. #line 268 ".\parse.y"
  878.  yyval.ptree = newExpNode(IdK);
  879.                   yyval.ptree -> attr.name = savedIdName;
  880.                 
  881. #line 921 "parse.c"
  882. }
  883. }
  884. break;
  885. case 51:
  886. {
  887. #ifdef YYDEBUG
  888. YYSTYPE YYFAR *yya[5];
  889. yyinitdebug(yya, 5);
  890. #endif
  891. {
  892. #line 272 ".\parse.y"
  893.  yyval.ptree = newExpNode(IdK);
  894.   yyval.ptree -> attr.name = savedIdName;
  895.                   yyval.ptree -> child[0] = yyattribute(3 - 4).ptree;
  896.                 
  897. #line 937 "parse.c"
  898. }
  899. }
  900. break;
  901. case 52:
  902. {
  903. #ifdef YYDEBUG
  904. YYSTYPE YYFAR *yya[4];
  905. yyinitdebug(yya, 4);
  906. #endif
  907. {
  908. #line 278 ".\parse.y"
  909.  yyval.ptree = newExpNode(OpK);
  910.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  911.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  912.   yyval.ptree -> attr.op = OR;
  913. #line 954 "parse.c"
  914. }
  915. }
  916. break;
  917. case 53:
  918. {
  919. #ifdef YYDEBUG
  920. YYSTYPE YYFAR *yya[4];
  921. yyinitdebug(yya, 4);
  922. #endif
  923. {
  924. #line 284 ".\parse.y"
  925.  yyval.ptree = newExpNode(OpK);
  926.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  927.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  928.   yyval.ptree -> attr.op = AND;
  929. #line 971 "parse.c"
  930. }
  931. }
  932. break;
  933. case 54:
  934. {
  935. #ifdef YYDEBUG
  936. YYSTYPE YYFAR *yya[4];
  937. yyinitdebug(yya, 4);
  938. #endif
  939. {
  940. #line 290 ".\parse.y"
  941.  yyval.ptree = newExpNode(OpK);
  942.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  943.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  944.   yyval.ptree -> attr.op = LT;
  945.   yyval.ptree -> type = Boolean;
  946. #line 989 "parse.c"
  947. }
  948. }
  949. break;
  950. case 55:
  951. {
  952. #ifdef YYDEBUG
  953. YYSTYPE YYFAR *yya[4];
  954. yyinitdebug(yya, 4);
  955. #endif
  956. {
  957. #line 297 ".\parse.y"
  958.  yyval.ptree = newExpNode(OpK);
  959.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  960.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  961.   yyval.ptree -> attr.op = LE;
  962.   yyval.ptree -> type = Boolean;
  963. #line 1007 "parse.c"
  964. }
  965. }
  966. break;
  967. case 56:
  968. {
  969. #ifdef YYDEBUG
  970. YYSTYPE YYFAR *yya[4];
  971. yyinitdebug(yya, 4);
  972. #endif
  973. {
  974. #line 304 ".\parse.y"
  975.  yyval.ptree = newExpNode(OpK);
  976.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  977.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  978.   yyval.ptree -> attr.op = GT;
  979.   yyval.ptree -> type = Boolean;
  980. #line 1025 "parse.c"
  981. }
  982. }
  983. break;
  984. case 57:
  985. {
  986. #ifdef YYDEBUG
  987. YYSTYPE YYFAR *yya[4];
  988. yyinitdebug(yya, 4);
  989. #endif
  990. {
  991. #line 311 ".\parse.y"
  992.  yyval.ptree = newExpNode(OpK);
  993.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  994.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  995.   yyval.ptree -> attr.op = GE;
  996.   yyval.ptree -> type = Boolean;
  997. #line 1043 "parse.c"
  998. }
  999. }
  1000. break;
  1001. case 58:
  1002. {
  1003. #ifdef YYDEBUG
  1004. YYSTYPE YYFAR *yya[4];
  1005. yyinitdebug(yya, 4);
  1006. #endif
  1007. {
  1008. #line 318 ".\parse.y"
  1009.  yyval.ptree = newExpNode(OpK);
  1010.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  1011.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  1012.   yyval.ptree -> attr.op = EQ;
  1013.   yyval.ptree -> type = Boolean;
  1014. #line 1061 "parse.c"
  1015. }
  1016. }
  1017. break;
  1018. case 59:
  1019. {
  1020. #ifdef YYDEBUG
  1021. YYSTYPE YYFAR *yya[4];
  1022. yyinitdebug(yya, 4);
  1023. #endif
  1024. {
  1025. #line 325 ".\parse.y"
  1026.  yyval.ptree = newExpNode(OpK);
  1027.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  1028.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  1029.   yyval.ptree -> attr.op = NEQ;
  1030.   yyval.ptree -> type = Boolean;
  1031. #line 1079 "parse.c"
  1032. }
  1033. }
  1034. break;
  1035. case 60:
  1036. {
  1037. #ifdef YYDEBUG
  1038. YYSTYPE YYFAR *yya[4];
  1039. yyinitdebug(yya, 4);
  1040. #endif
  1041. {
  1042. #line 332 ".\parse.y"
  1043.  yyval.ptree = newExpNode(OpK);
  1044.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  1045.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  1046.   yyval.ptree -> attr.op = PLUS;
  1047. #line 1096 "parse.c"
  1048. }
  1049. }
  1050. break;
  1051. case 61:
  1052. {
  1053. #ifdef YYDEBUG
  1054. YYSTYPE YYFAR *yya[4];
  1055. yyinitdebug(yya, 4);
  1056. #endif
  1057. {
  1058. #line 338 ".\parse.y"
  1059.  yyval.ptree = newExpNode(OpK);
  1060.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  1061.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  1062.   yyval.ptree -> attr.op = SUB;
  1063. #line 1113 "parse.c"
  1064. }
  1065. }
  1066. break;
  1067. case 62:
  1068. {
  1069. #ifdef YYDEBUG
  1070. YYSTYPE YYFAR *yya[4];
  1071. yyinitdebug(yya, 4);
  1072. #endif
  1073. {
  1074. #line 344 ".\parse.y"
  1075.  yyval.ptree = newExpNode(OpK);
  1076.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  1077.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  1078.   yyval.ptree -> attr.op = MUT;
  1079. #line 1130 "parse.c"
  1080. }
  1081. }
  1082. break;
  1083. case 63:
  1084. {
  1085. #ifdef YYDEBUG
  1086. YYSTYPE YYFAR *yya[4];
  1087. yyinitdebug(yya, 4);
  1088. #endif
  1089. {
  1090. #line 350 ".\parse.y"
  1091.  yyval.ptree = newExpNode(OpK);
  1092.   yyval.ptree -> child[0] = yyattribute(1 - 3).ptree;
  1093.   yyval.ptree -> child[1] = yyattribute(3 - 3).ptree;
  1094.   yyval.ptree -> attr.op = DIV;
  1095. #line 1147 "parse.c"
  1096. }
  1097. }
  1098. break;
  1099. case 64:
  1100. {
  1101. #ifdef YYDEBUG
  1102. YYSTYPE YYFAR *yya[2];
  1103. yyinitdebug(yya, 2);
  1104. #endif
  1105. {
  1106. #line 356 ".\parse.y"
  1107.  yyval.ptree = yyattribute(1 - 1).ptree; 
  1108. #line 1160 "parse.c"
  1109. }
  1110. }
  1111. break;
  1112. case 65:
  1113. {
  1114. #ifdef YYDEBUG
  1115. YYSTYPE YYFAR *yya[4];
  1116. yyinitdebug(yya, 4);
  1117. #endif
  1118. {
  1119. #line 360 ".\parse.y"
  1120.  yyval.ptree = yyattribute(2 - 3).ptree; 
  1121. #line 1173 "parse.c"
  1122. }
  1123. }
  1124. break;
  1125. case 66:
  1126. {
  1127. #ifdef YYDEBUG
  1128. YYSTYPE YYFAR *yya[2];
  1129. yyinitdebug(yya, 2);
  1130. #endif
  1131. {
  1132. #line 362 ".\parse.y"
  1133.  yyval.ptree = yyattribute(1 - 1).ptree; 
  1134. #line 1186 "parse.c"
  1135. }
  1136. }
  1137. break;
  1138. case 67:
  1139. {
  1140. #ifdef YYDEBUG
  1141. YYSTYPE YYFAR *yya[2];
  1142. yyinitdebug(yya, 2);
  1143. #endif
  1144. {
  1145. #line 364 ".\parse.y"
  1146.  yyval.ptree = yyattribute(1 - 1).ptree; 
  1147. #line 1199 "parse.c"
  1148. }
  1149. }
  1150. break;
  1151. case 68:
  1152. {
  1153. #ifdef YYDEBUG
  1154. YYSTYPE YYFAR *yya[2];
  1155. yyinitdebug(yya, 2);
  1156. #endif
  1157. {
  1158. #line 366 ".\parse.y"
  1159.  yyval.ptree = newExpNode(NumK);
  1160.       yyval.ptree -> type = Integer;
  1161.       yyval.ptree -> attr.val.i = atoi(tokenString);
  1162.     
  1163. #line 1215 "parse.c"
  1164. }
  1165. }
  1166. break;
  1167. case 69:
  1168. {
  1169. #ifdef YYDEBUG
  1170. YYSTYPE YYFAR *yya[2];
  1171. yyinitdebug(yya, 2);
  1172. #endif
  1173. {
  1174. #line 371 ".\parse.y"
  1175.  yyval.ptree = newExpNode(FnumK);
  1176.       yyval.ptree -> type = Float;
  1177.       yyval.ptree -> attr.val.f = atof(tokenString);
  1178.     
  1179. #line 1231 "parse.c"
  1180. }
  1181. }
  1182. break;
  1183. case 70:
  1184. {
  1185. #ifdef YYDEBUG
  1186. YYSTYPE YYFAR *yya[2];
  1187. yyinitdebug(yya, 2);
  1188. #endif
  1189. {
  1190. #line 376 ".\parse.y"
  1191.  yyval.ptree = newExpNode(CharK);
  1192.       yyval.ptree -> type = Char;
  1193.       yyval.ptree -> attr.val.i = *(tokenString + 1);
  1194.     
  1195. #line 1247 "parse.c"
  1196. }
  1197. }
  1198. break;
  1199. case 71:
  1200. {
  1201. #ifdef YYDEBUG
  1202. YYSTYPE YYFAR *yya[3];
  1203. yyinitdebug(yya, 3);
  1204. #endif
  1205. {
  1206. #line 381 ".\parse.y"
  1207.  yyval.ptree = yyattribute(2 - 2).ptree;
  1208.       yyval.ptree -> attr.op = NOT;
  1209.     
  1210. #line 1262 "parse.c"
  1211. }
  1212. }
  1213. break;
  1214. case 72:
  1215. {
  1216. #ifdef YYDEBUG
  1217. YYSTYPE YYFAR *yya[5];
  1218. yyinitdebug(yya, 5);
  1219. #endif
  1220. {
  1221. #line 386 ".\parse.y"
  1222.  yyval.ptree = newStmtNode(CallK);
  1223.   yyval.ptree -> attr.name = yyattribute(1 - 4).ptree -> attr.name;
  1224.                   yyval.ptree -> child[0] = yyattribute(3 - 4).ptree;
  1225.                 
  1226. #line 1278 "parse.c"
  1227. }
  1228. }
  1229. break;
  1230. case 73:
  1231. {
  1232. #ifdef YYDEBUG
  1233. YYSTYPE YYFAR *yya[4];
  1234. yyinitdebug(yya, 4);
  1235. #endif
  1236. {
  1237. #line 392 ".\parse.y"
  1238.  TreeNode * t = yyattribute(1 - 3).ptree;
  1239.   if (t != NULL)
  1240.   { while (t->sibling != NULL)
  1241. t = t->sibling;
  1242. t->sibling = yyattribute(3 - 3).ptree;
  1243. yyval.ptree = yyattribute(1 - 3).ptree; }
  1244.   else yyval.ptree = yyattribute(3 - 3).ptree;
  1245. #line 1298 "parse.c"
  1246. }
  1247. }
  1248. break;
  1249. case 74:
  1250. {
  1251. #ifdef YYDEBUG
  1252. YYSTYPE YYFAR *yya[2];
  1253. yyinitdebug(yya, 2);
  1254. #endif
  1255. {
  1256. #line 401 ".\parse.y"
  1257.  yyval.ptree = yyattribute(1 - 1).ptree; 
  1258. #line 1311 "parse.c"
  1259. }
  1260. }
  1261. break;
  1262. case 75:
  1263. {
  1264. #ifdef YYDEBUG
  1265. YYSTYPE YYFAR *yya[2];
  1266. yyinitdebug(yya, 2);
  1267. #endif
  1268. {
  1269. #line 404 ".\parse.y"
  1270.  yyval.ptree = yyattribute(1 - 1).ptree; 
  1271. #line 1324 "parse.c"
  1272. }
  1273. }
  1274. break;
  1275. case 76:
  1276. {
  1277. #line 406 ".\parse.y"
  1278.  yyval.ptree = NULL; 
  1279. #line 1332 "parse.c"
  1280. }
  1281. break;
  1282. default:
  1283. yyassert(0);
  1284. break;
  1285. }
  1286. }
  1287. #ifdef YYDEBUG
  1288. YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
  1289. { "$end", 0 },
  1290. { "error", 256 },
  1291. { "INT", 259 },
  1292. { "CHAR", 260 },
  1293. { "FLOAT", 261 },
  1294. { "IF", 262 },
  1295. { "ELSE", 263 },
  1296. { "WHILE", 264 },
  1297. { "VOID", 265 },
  1298. { "RETURN", 266 },
  1299. { "BREAK", 267 },
  1300. { "CONTINUE", 268 },
  1301. { "ID", 269 },
  1302. { "NUM", 270 },
  1303. { "FNUM", 271 },
  1304. { "SCHAR", 272 },
  1305. { "PLUS", 273 },
  1306. { "SUB", 274 },
  1307. { "MUT", 275 },
  1308. { "DIV", 276 },
  1309. { "LT", 277 },
  1310. { "LE", 278 },
  1311. { "GT", 279 },
  1312. { "GE", 280 },
  1313. { "EQ", 281 },
  1314. { "NEQ", 282 },
  1315. { "AND", 283 },
  1316. { "OR", 284 },
  1317. { "NOT", 285 },
  1318. { "ASSIGN", 286 },
  1319. { "SEMI", 287 },
  1320. { "COMMA", 288 },
  1321. { "LP", 289 },
  1322. { "RP", 290 },
  1323. { "LSP", 291 },
  1324. { "RSP", 292 },
  1325. { "LFP", 293 },
  1326. { "RFP", 294 },
  1327. { NULL, 0 }
  1328. };
  1329. YYCONST char *YYCONST YYNEARFAR YYBASED_CODE YYDCDECL yyrule[] = {
  1330. "$accept: program",
  1331. "program: dec_list",
  1332. "dec_list: dec_list dec",
  1333. "dec_list: dec",
  1334. "dec: var_dec",
  1335. "dec: fun_dec",
  1336. "dec: fun_def",
  1337. "id: ID",
  1338. "fid:",
  1339. "var_dec: type_spec id_list SEMI",
  1340. "id_list: id_list COMMA var",
  1341. "id_list: var",
  1342. "id_list: id_list COMMA id ASSIGN simple_exp",
  1343. "id_list: id ASSIGN simple_exp",
  1344. "type_spec: INT",
  1345. "type_spec: FLOAT",
  1346. "type_spec: CHAR",
  1347. "type_spec: VOID",
  1348. "fun_def: type_spec id fid LP params RP comp_stmt",
  1349. "fun_def: id fid LP params RP comp_stmt",
  1350. "fun_dec: type_spec id fid LP params RP SEMI",
  1351. "fun_dec: id fid LP params RP SEMI",
  1352. "params: param_list",
  1353. "params:",
  1354. "param_list: param_list COMMA param",
  1355. "param_list: param",
  1356. "param: type_spec",
  1357. "param: type_spec id",
  1358. "param: type_spec id LSP RSP",
  1359. "param: type_spec id LSP simple_exp RSP",
  1360. "comp_stmt: LFP local_dec stmt_list RFP",
  1361. "local_dec: local_dec var_dec",
  1362. "local_dec:",
  1363. "stmt_list: stmt_list stmt",
  1364. "stmt_list:",
  1365. "stmt: exp_stmt",
  1366. "stmt: sele_stmt",
  1367. "stmt: iter_stmt",
  1368. "stmt: return_stmt",
  1369. "stmt: comp_stmt",
  1370. "stmt: CONTINUE SEMI",
  1371. "stmt: BREAK SEMI",
  1372. "exp_stmt: exp SEMI",
  1373. "exp_stmt: SEMI",
  1374. "sele_stmt: IF LP exp RP stmt",
  1375. "sele_stmt: IF LP exp RP stmt ELSE stmt",
  1376. "iter_stmt: WHILE LP exp RP stmt",
  1377. "return_stmt: RETURN SEMI",
  1378. "return_stmt: RETURN exp SEMI",
  1379. "exp: var ASSIGN exp",
  1380. "exp: simple_exp",
  1381. "var: id",
  1382. "var: id LSP simple_exp RSP",
  1383. "simple_exp: simple_exp OR simple_exp",
  1384. "simple_exp: simple_exp AND simple_exp",
  1385. "simple_exp: simple_exp LT simple_exp",
  1386. "simple_exp: simple_exp LE simple_exp",
  1387. "simple_exp: simple_exp GT simple_exp",
  1388. "simple_exp: simple_exp GE simple_exp",
  1389. "simple_exp: simple_exp EQ simple_exp",
  1390. "simple_exp: simple_exp NEQ simple_exp",
  1391. "simple_exp: simple_exp PLUS simple_exp",
  1392. "simple_exp: simple_exp SUB simple_exp",
  1393. "simple_exp: simple_exp MUT simple_exp",
  1394. "simple_exp: simple_exp DIV simple_exp",
  1395. "simple_exp: factor",
  1396. "factor: LP exp RP",
  1397. "factor: var",
  1398. "factor: call",
  1399. "factor: NUM",
  1400. "factor: FNUM",
  1401. "factor: SCHAR",
  1402. "factor: NOT factor",
  1403. "call: var LP args RP",
  1404. "arg_list: arg_list COMMA exp",
  1405. "arg_list: exp",
  1406. "args: arg_list",
  1407. "args:"
  1408. };
  1409. #endif
  1410. YYCONST yyreduction_t YYNEARFAR YYBASED_CODE YYDCDECL yyreduction[] = {
  1411. { 0, 1, -1 },
  1412. { 1, 1, 0 },
  1413. { 2, 2, 1 },
  1414. { 2, 1, 2 },
  1415. { 3, 1, 3 },
  1416. { 3, 1, 4 },
  1417. { 3, 1, 5 },
  1418. { 4, 1, 6 },
  1419. { 5, 0, 7 },
  1420. { 6, 3, 8 },
  1421. { 7, 3, 9 },
  1422. { 7, 1, 10 },
  1423. { 7, 5, 11 },
  1424. { 7, 3, 12 },
  1425. { 8, 1, 13 },
  1426. { 8, 1, 14 },
  1427. { 8, 1, 15 },
  1428. { 8, 1, 16 },
  1429. { 9, 7, 17 },
  1430. { 9, 6, 18 },
  1431. { 10, 7, 19 },
  1432. { 10, 6, 20 },
  1433. { 11, 1, 21 },
  1434. { 11, 0, 22 },
  1435. { 12, 3, 23 },
  1436. { 12, 1, 24 },
  1437. { 13, 1, 25 },
  1438. { 13, 2, 26 },
  1439. { 13, 4, 27 },
  1440. { 13, 5, 28 },
  1441. { 14, 4, 29 },
  1442. { 15, 2, 30 },
  1443. { 15, 0, 31 },
  1444. { 16, 2, 32 },
  1445. { 16, 0, 33 },
  1446. { 17, 1, 34 },
  1447. { 17, 1, 35 },
  1448. { 17, 1, 36 },
  1449. { 17, 1, 37 },
  1450. { 17, 1, 38 },
  1451. { 17, 2, 39 },
  1452. { 17, 2, 40 },
  1453. { 18, 2, 41 },
  1454. { 18, 1, 42 },
  1455. { 19, 5, 43 },
  1456. { 19, 7, 44 },
  1457. { 20, 5, 45 },
  1458. { 21, 2, 46 },
  1459. { 21, 3, 47 },
  1460. { 22, 3, 48 },
  1461. { 22, 1, 49 },
  1462. { 23, 1, 50 },
  1463. { 23, 4, 51 },
  1464. { 24, 3, 52 },
  1465. { 24, 3, 53 },
  1466. { 24, 3, 54 },
  1467. { 24, 3, 55 },
  1468. { 24, 3, 56 },
  1469. { 24, 3, 57 },
  1470. { 24, 3, 58 },
  1471. { 24, 3, 59 },
  1472. { 24, 3, 60 },
  1473. { 24, 3, 61 },
  1474. { 24, 3, 62 },
  1475. { 24, 3, 63 },
  1476. { 24, 1, 64 },
  1477. { 25, 3, 65 },
  1478. { 25, 1, 66 },
  1479. { 25, 1, 67 },
  1480. { 25, 1, 68 },
  1481. { 25, 1, 69 },
  1482. { 25, 1, 70 },
  1483. { 25, 2, 71 },
  1484. { 26, 4, 72 },
  1485. { 27, 3, 73 },
  1486. { 27, 1, 74 },
  1487. { 28, 1, 75 },
  1488. { 28, 0, 76 }
  1489. };
  1490. int YYNEAR YYDCDECL yytokenaction_size = 187;
  1491. YYCONST yytokenaction_t YYNEARFAR YYBASED_CODE YYDCDECL yytokenaction[] = {
  1492. { 97, YYAT_SHIFT, 49 },
  1493. { 97, YYAT_SHIFT, 50 },
  1494. { 97, YYAT_SHIFT, 51 },
  1495. { 97, YYAT_SHIFT, 52 },
  1496. { 97, YYAT_SHIFT, 53 },
  1497. { 97, YYAT_SHIFT, 54 },
  1498. { 97, YYAT_SHIFT, 55 },
  1499. { 97, YYAT_SHIFT, 56 },
  1500. { 97, YYAT_SHIFT, 57 },
  1501. { 97, YYAT_SHIFT, 58 },
  1502. { 97, YYAT_SHIFT, 59 },
  1503. { 97, YYAT_SHIFT, 60 },
  1504. { 95, YYAT_SHIFT, 1 },
  1505. { 95, YYAT_SHIFT, 2 },
  1506. { 95, YYAT_SHIFT, 3 },
  1507. { 73, YYAT_SHIFT, 51 },
  1508. { 73, YYAT_SHIFT, 52 },
  1509. { 130, YYAT_SHIFT, 132 },
  1510. { 95, YYAT_SHIFT, 4 },
  1511. { 97, YYAT_SHIFT, 102 },
  1512. { 66, YYAT_SHIFT, 49 },
  1513. { 66, YYAT_SHIFT, 50 },
  1514. { 66, YYAT_SHIFT, 51 },
  1515. { 66, YYAT_SHIFT, 52 },
  1516. { 66, YYAT_SHIFT, 53 },
  1517. { 66, YYAT_SHIFT, 54 },
  1518. { 66, YYAT_SHIFT, 55 },
  1519. { 66, YYAT_SHIFT, 56 },
  1520. { 66, YYAT_SHIFT, 57 },
  1521. { 66, YYAT_SHIFT, 58 },
  1522. { 66, YYAT_SHIFT, 59 },
  1523. { 66, YYAT_SHIFT, 60 },
  1524. { 47, YYAT_SHIFT, 49 },
  1525. { 47, YYAT_SHIFT, 50 },
  1526. { 47, YYAT_SHIFT, 51 },
  1527. { 47, YYAT_SHIFT, 52 },
  1528. { 47, YYAT_SHIFT, 53 },
  1529. { 47, YYAT_SHIFT, 54 },
  1530. { 47, YYAT_SHIFT, 55 },
  1531. { 47, YYAT_SHIFT, 56 },
  1532. { 47, YYAT_SHIFT, 57 },
  1533. { 47, YYAT_SHIFT, 58 },
  1534. { 47, YYAT_SHIFT, 59 },
  1535. { 47, YYAT_SHIFT, 60 },
  1536. { 33, YYAT_SHIFT, 49 },
  1537. { 33, YYAT_SHIFT, 50 },
  1538. { 33, YYAT_SHIFT, 51 },
  1539. { 33, YYAT_SHIFT, 52 },
  1540. { 33, YYAT_SHIFT, 53 },
  1541. { 33, YYAT_SHIFT, 54 },
  1542. { 33, YYAT_SHIFT, 55 },
  1543. { 33, YYAT_SHIFT, 56 },
  1544. { 33, YYAT_SHIFT, 57 },
  1545. { 33, YYAT_SHIFT, 58 },
  1546. { 33, YYAT_SHIFT, 59 },
  1547. { 33, YYAT_SHIFT, 60 },
  1548. { 83, YYAT_SHIFT, 49 },
  1549. { 83, YYAT_SHIFT, 50 },
  1550. { 83, YYAT_SHIFT, 51 },
  1551. { 83, YYAT_SHIFT, 52 },
  1552. { 83, YYAT_SHIFT, 53 },
  1553. { 83, YYAT_SHIFT, 54 },
  1554. { 83, YYAT_SHIFT, 55 },
  1555. { 83, YYAT_SHIFT, 56 },
  1556. { 83, YYAT_SHIFT, 57 },
  1557. { 83, YYAT_SHIFT, 58 },
  1558. { 83, YYAT_SHIFT, 59 },
  1559. { 82, YYAT_SHIFT, 49 },
  1560. { 82, YYAT_SHIFT, 50 },
  1561. { 82, YYAT_SHIFT, 51 },
  1562. { 82, YYAT_SHIFT, 52 },
  1563. { 82, YYAT_SHIFT, 53 },
  1564. { 82, YYAT_SHIFT, 54 },
  1565. { 82, YYAT_SHIFT, 55 },
  1566. { 82, YYAT_SHIFT, 56 },
  1567. { 82, YYAT_SHIFT, 57 },
  1568. { 82, YYAT_SHIFT, 58 },
  1569. { 132, YYAT_SHIFT, 103 },
  1570. { 126, YYAT_SHIFT, 129 },
  1571. { 132, YYAT_SHIFT, 104 },
  1572. { 125, YYAT_SHIFT, 128 },
  1573. { 132, YYAT_SHIFT, 105 },
  1574. { 132, YYAT_SHIFT, 106 },
  1575. { 132, YYAT_SHIFT, 107 },
  1576. { 81, YYAT_SHIFT, 49 },
  1577. { 81, YYAT_SHIFT, 50 },
  1578. { 81, YYAT_SHIFT, 51 },
  1579. { 81, YYAT_SHIFT, 52 },
  1580. { 81, YYAT_SHIFT, 53 },
  1581. { 81, YYAT_SHIFT, 54 },
  1582. { 81, YYAT_SHIFT, 55 },
  1583. { 81, YYAT_SHIFT, 56 },
  1584. { 80, YYAT_SHIFT, 49 },
  1585. { 80, YYAT_SHIFT, 50 },
  1586. { 80, YYAT_SHIFT, 51 },
  1587. { 80, YYAT_SHIFT, 52 },
  1588. { 80, YYAT_SHIFT, 53 },
  1589. { 80, YYAT_SHIFT, 54 },
  1590. { 80, YYAT_SHIFT, 55 },
  1591. { 80, YYAT_SHIFT, 56 },
  1592. { 121, YYAT_SHIFT, 127 },
  1593. { 84, YYAT_SHIFT, 93 },
  1594. { 132, YYAT_SHIFT, 108 },
  1595. { 48, YYAT_SHIFT, 5 },
  1596. { 48, YYAT_SHIFT, 27 },
  1597. { 48, YYAT_SHIFT, 28 },
  1598. { 48, YYAT_SHIFT, 29 },
  1599. { 84, YYAT_SHIFT, 86 },
  1600. { 132, YYAT_SHIFT, 86 },
  1601. { 119, YYAT_SHIFT, 27 },
  1602. { 119, YYAT_SHIFT, 28 },
  1603. { 119, YYAT_SHIFT, 29 },
  1604. { 7, YYAT_SHIFT, 1 },
  1605. { 7, YYAT_SHIFT, 2 },
  1606. { 7, YYAT_SHIFT, 3 },
  1607. { 64, YYAT_SHIFT, 1 },
  1608. { 64, YYAT_SHIFT, 2 },
  1609. { 64, YYAT_SHIFT, 3 },
  1610. { 7, YYAT_SHIFT, 4 },
  1611. { 48, YYAT_SHIFT, 30 },
  1612. { 116, YYAT_SHIFT, 124 },
  1613. { 64, YYAT_SHIFT, 4 },
  1614. { 7, YYAT_SHIFT, 5 },
  1615. { 48, YYAT_SHIFT, 31 },
  1616. { 119, YYAT_SHIFT, 30 },
  1617. { 38, YYAT_SHIFT, 1 },
  1618. { 38, YYAT_SHIFT, 2 },
  1619. { 38, YYAT_SHIFT, 3 },
  1620. { 119, YYAT_SHIFT, 31 },
  1621. { 107, YYAT_SHIFT, 123 },
  1622. { 117, YYAT_SHIFT, 21 },
  1623. { 38, YYAT_SHIFT, 4 },
  1624. { 24, YYAT_SHIFT, 1 },
  1625. { 24, YYAT_SHIFT, 2 },
  1626. { 24, YYAT_SHIFT, 3 },
  1627. { 117, YYAT_SHIFT, 22 },
  1628. { 72, YYAT_SHIFT, 51 },
  1629. { 72, YYAT_SHIFT, 52 },
  1630. { 24, YYAT_SHIFT, 4 },
  1631. { 79, YYAT_SHIFT, 49 },
  1632. { 79, YYAT_SHIFT, 50 },
  1633. { 79, YYAT_SHIFT, 51 },
  1634. { 79, YYAT_SHIFT, 52 },
  1635. { 78, YYAT_SHIFT, 49 },
  1636. { 78, YYAT_SHIFT, 50 },
  1637. { 78, YYAT_SHIFT, 51 },
  1638. { 78, YYAT_SHIFT, 52 },
  1639. { 77, YYAT_SHIFT, 49 },
  1640. { 77, YYAT_SHIFT, 50 },
  1641. { 77, YYAT_SHIFT, 51 },
  1642. { 77, YYAT_SHIFT, 52 },
  1643. { 76, YYAT_SHIFT, 49 },
  1644. { 76, YYAT_SHIFT, 50 },
  1645. { 76, YYAT_SHIFT, 51 },
  1646. { 76, YYAT_SHIFT, 52 },
  1647. { 17, YYAT_SHIFT, 21 },
  1648. { 26, YYAT_SHIFT, 43 },
  1649. { 106, YYAT_SHIFT, 122 },
  1650. { 17, YYAT_REDUCE, 8 },
  1651. { 46, YYAT_SHIFT, 68 },
  1652. { 17, YYAT_SHIFT, 22 },
  1653. { 26, YYAT_SHIFT, 22 },
  1654. { 46, YYAT_SHIFT, 48 },
  1655. { 16, YYAT_SHIFT, 19 },
  1656. { 16, YYAT_SHIFT, 20 },
  1657. { 105, YYAT_SHIFT, 120 },
  1658. { 104, YYAT_SHIFT, 119 },
  1659. { 103, YYAT_SHIFT, 118 },
  1660. { 101, YYAT_SHIFT, 5 },
  1661. { 100, YYAT_SHIFT, 109 },
  1662. { 89, YYAT_SHIFT, 96 },
  1663. { 71, YYAT_SHIFT, 92 },
  1664. { 70, YYAT_SHIFT, 91 },
  1665. { 65, YYAT_SHIFT, 89 },
  1666. { 63, YYAT_SHIFT, 85 },
  1667. { 62, YYAT_SHIFT, 84 },
  1668. { 45, YYAT_SHIFT, 67 },
  1669. { 42, YYAT_SHIFT, 5 },
  1670. { 40, YYAT_SHIFT, 64 },
  1671. { 39, YYAT_SHIFT, 63 },
  1672. { 37, YYAT_SHIFT, 61 },
  1673. { 36, YYAT_SHIFT, 22 },
  1674. { 32, YYAT_SHIFT, 48 },
  1675. { 23, YYAT_SHIFT, 38 },
  1676. { 18, YYAT_SHIFT, 24 },
  1677. { 6, YYAT_ACCEPT, 0 },
  1678. { 0, YYAT_SHIFT, 5 }
  1679. };
  1680. YYCONST yystateaction_t YYNEARFAR YYBASED_CODE YYDCDECL yystateaction[] = {
  1681. { -83, 1, YYAT_DEFAULT, 64 },
  1682. { 0, 0, YYAT_REDUCE, 14 },
  1683. { 0, 0, YYAT_REDUCE, 16 },
  1684. { 0, 0, YYAT_REDUCE, 15 },
  1685. { 0, 0, YYAT_REDUCE, 17 },
  1686. { 0, 0, YYAT_REDUCE, 7 },
  1687. { 185, 1, YYAT_ERROR, 0 },
  1688. { -147, 1, YYAT_REDUCE, 1 },
  1689. { 0, 0, YYAT_REDUCE, 3 },
  1690. { 0, 0, YYAT_REDUCE, 4 },
  1691. { 0, 0, YYAT_REDUCE, 5 },
  1692. { 0, 0, YYAT_REDUCE, 6 },
  1693. { 0, 0, YYAT_DEFAULT, 101 },
  1694. { 0, 0, YYAT_REDUCE, 8 },
  1695. { 0, 0, YYAT_REDUCE, 2 },
  1696. { 0, 0, YYAT_REDUCE, 11 },
  1697. { -124, 1, YYAT_ERROR, 0 },
  1698. { -131, 1, YYAT_REDUCE, 51 },
  1699. { -105, 1, YYAT_ERROR, 0 },
  1700. { 0, 0, YYAT_REDUCE, 9 },
  1701. { 0, 0, YYAT_DEFAULT, 101 },
  1702. { 0, 0, YYAT_DEFAULT, 119 },
  1703. { 0, 0, YYAT_DEFAULT, 119 },
  1704. { -106, 1, YYAT_ERROR, 0 },
  1705. { -127, 1, YYAT_REDUCE, 23 },
  1706. { 0, 0, YYAT_REDUCE, 10 },
  1707. { -130, 1, YYAT_REDUCE, 51 },
  1708. { 0, 0, YYAT_REDUCE, 69 },
  1709. { 0, 0, YYAT_REDUCE, 70 },
  1710. { 0, 0, YYAT_REDUCE, 71 },
  1711. { 0, 0, YYAT_DEFAULT, 119 },
  1712. { 0, 0, YYAT_DEFAULT, 119 },
  1713. { -107, 1, YYAT_REDUCE, 67 },
  1714. { -229, 1, YYAT_REDUCE, 13 },
  1715. { 0, 0, YYAT_REDUCE, 65 },
  1716. { 0, 0, YYAT_REDUCE, 68 },
  1717. { -110, 1, YYAT_REDUCE, 51 },
  1718. { -112, 1, YYAT_DEFAULT, 97 },
  1719. { -134, 1, YYAT_REDUCE, 23 },
  1720. { -111, 1, YYAT_ERROR, 0 },
  1721. { -110, 1, YYAT_REDUCE, 22 },
  1722. { 0, 0, YYAT_REDUCE, 25 },
  1723. { -92, 1, YYAT_REDUCE, 26 },
  1724. { 0, 0, YYAT_DEFAULT, 119 },
  1725. { 0, 0, YYAT_REDUCE, 72 },
  1726. { -114, 1, YYAT_ERROR, 0 },
  1727. { -127, 1, YYAT_REDUCE, 67 },
  1728. { -241, 1, YYAT_REDUCE, 50 },
  1729. { -166, 1, YYAT_REDUCE, 77 },
  1730. { 0, 0, YYAT_DEFAULT, 119 },
  1731. { 0, 0, YYAT_DEFAULT, 119 },
  1732. { 0, 0, YYAT_DEFAULT, 119 },
  1733. { 0, 0, YYAT_DEFAULT, 119 },
  1734. { 0, 0, YYAT_DEFAULT, 119 },
  1735. { 0, 0, YYAT_DEFAULT, 119 },
  1736. { 0, 0, YYAT_DEFAULT, 119 },
  1737. { 0, 0, YYAT_DEFAULT, 119 },
  1738. { 0, 0, YYAT_DEFAULT, 119 },
  1739. { 0, 0, YYAT_DEFAULT, 119 },
  1740. { 0, 0, YYAT_DEFAULT, 119 },
  1741. { 0, 0, YYAT_DEFAULT, 119 },
  1742. { 0, 0, YYAT_REDUCE, 52 },
  1743. { -115, 1, YYAT_ERROR, 0 },
  1744. { -113, 1, YYAT_DEFAULT, 84 },
  1745. { -144, 1, YYAT_ERROR, 0 },
  1746. { -118, 1, YYAT_REDUCE, 27 },
  1747. { -253, 1, YYAT_REDUCE, 12 },
  1748. { 0, 0, YYAT_REDUCE, 66 },
  1749. { 0, 0, YYAT_DEFAULT, 119 },
  1750. { 0, 0, YYAT_REDUCE, 75 },
  1751. { -118, 1, YYAT_ERROR, 0 },
  1752. { -117, 1, YYAT_REDUCE, 76 },
  1753. { -139, 1, YYAT_REDUCE, 61 },
  1754. { -260, 1, YYAT_REDUCE, 62 },
  1755. { 0, 0, YYAT_REDUCE, 63 },
  1756. { 0, 0, YYAT_REDUCE, 64 },
  1757. { -122, 1, YYAT_REDUCE, 55 },
  1758. { -126, 1, YYAT_REDUCE, 56 },
  1759. { -130, 1, YYAT_REDUCE, 57 },
  1760. { -134, 1, YYAT_REDUCE, 58 },
  1761. { -181, 1, YYAT_REDUCE, 59 },
  1762. { -189, 1, YYAT_REDUCE, 60 },
  1763. { -206, 1, YYAT_REDUCE, 54 },
  1764. { -217, 1, YYAT_REDUCE, 53 },
  1765. { -186, 1, YYAT_ERROR, 0 },
  1766. { 0, 0, YYAT_REDUCE, 21 },
  1767. { 0, 0, YYAT_REDUCE, 32 },
  1768. { 0, 0, YYAT_REDUCE, 19 },
  1769. { 0, 0, YYAT_REDUCE, 24 },
  1770. { -122, 1, YYAT_DEFAULT, 119 },
  1771. { 0, 0, YYAT_REDUCE, 49 },
  1772. { 0, 0, YYAT_REDUCE, 73 },
  1773. { 0, 0, YYAT_DEFAULT, 119 },
  1774. { 0, 0, YYAT_REDUCE, 20 },
  1775. { 0, 0, YYAT_REDUCE, 18 },
  1776. { -247, 1, YYAT_REDUCE, 34 },
  1777. { 0, 0, YYAT_REDUCE, 28 },
  1778. { -273, 1, YYAT_ERROR, 0 },
  1779. { 0, 0, YYAT_REDUCE, 74 },
  1780. { 0, 0, YYAT_REDUCE, 31 },
  1781. { -125, 1, YYAT_DEFAULT, 132 },
  1782. { -101, 1, YYAT_ERROR, 0 },
  1783. { 0, 0, YYAT_REDUCE, 29 },
  1784. { -122, 1, YYAT_ERROR, 0 },
  1785. { -123, 1, YYAT_ERROR, 0 },
  1786. { -122, 1, YYAT_DEFAULT, 119 },
  1787. { -130, 1, YYAT_ERROR, 0 },
  1788. { -158, 1, YYAT_ERROR, 0 },
  1789. { 0, 0, YYAT_REDUCE, 43 },
  1790. { 0, 0, YYAT_REDUCE, 30 },
  1791. { 0, 0, YYAT_REDUCE, 39 },
  1792. { 0, 0, YYAT_REDUCE, 33 },
  1793. { 0, 0, YYAT_REDUCE, 35 },
  1794. { 0, 0, YYAT_REDUCE, 36 },
  1795. { 0, 0, YYAT_REDUCE, 37 },
  1796. { 0, 0, YYAT_REDUCE, 38 },
  1797. { -167, 1, YYAT_ERROR, 0 },
  1798. { -156, 1, YYAT_REDUCE, 51 },
  1799. { 0, 0, YYAT_DEFAULT, 119 },
  1800. { -161, 1, YYAT_DEFAULT, 101 },
  1801. { 0, 0, YYAT_REDUCE, 47 },
  1802. { -187, 1, YYAT_ERROR, 0 },
  1803. { 0, 0, YYAT_REDUCE, 41 },
  1804. { 0, 0, YYAT_REDUCE, 40 },
  1805. { 0, 0, YYAT_REDUCE, 42 },
  1806. { -210, 1, YYAT_ERROR, 0 },
  1807. { -212, 1, YYAT_ERROR, 0 },
  1808. { 0, 0, YYAT_REDUCE, 48 },
  1809. { 0, 0, YYAT_DEFAULT, 132 },
  1810. { 0, 0, YYAT_DEFAULT, 132 },
  1811. { -246, 1, YYAT_REDUCE, 44 },
  1812. { 0, 0, YYAT_REDUCE, 46 },
  1813. { -185, 1, YYAT_DEFAULT, 119 },
  1814. { 0, 0, YYAT_REDUCE, 45 }
  1815. };
  1816. int YYNEAR YYDCDECL yynontermgoto_size = 74;
  1817. YYCONST yynontermgoto_t YYNEARFAR YYBASED_CODE YYDCDECL yynontermgoto[] = {
  1818. { 119, 36 },
  1819. { 132, 110 },
  1820. { 30, -1 },
  1821. { 30, 44 },
  1822. { 132, 133 },
  1823. { 132, 112 },
  1824. { 132, 113 },
  1825. { 132, 114 },
  1826. { 132, 115 },
  1827. { 132, 116 },
  1828. { 7, 14 },
  1829. { 7, 13 },
  1830. { 20, 26 },
  1831. { 7, 9 },
  1832. { 129, 131 },
  1833. { 7, 12 },
  1834. { 7, 11 },
  1835. { 7, 10 },
  1836. { 119, 126 },
  1837. { 119, 46 },
  1838. { 119, 47 },
  1839. { 119, 34 },
  1840. { 119, 35 },
  1841. { 101, 117 },
  1842. { 48, 69 },
  1843. { 95, 99 },
  1844. { 101, 16 },
  1845. { 95, 101 },
  1846. { 64, 42 },
  1847. { 48, 71 },
  1848. { 48, 70 },
  1849. { 20, 25 },
  1850. { 128, 130 },
  1851. { 64, 88 },
  1852. { 118, 125 },
  1853. { 95, 100 },
  1854. { 89, -1 },
  1855. { 89, 32 },
  1856. { 89, 97 },
  1857. { 38, 62 },
  1858. { 38, 40 },
  1859. { 38, 41 },
  1860. { 101, 15 },
  1861. { 0, 6 },
  1862. { 0, 7 },
  1863. { 0, 8 },
  1864. { 105, 121 },
  1865. { 100, 111 },
  1866. { 92, 98 },
  1867. { 86, 95 },
  1868. { 84, 94 },
  1869. { 68, 90 },
  1870. { 63, 87 },
  1871. { 60, 83 },
  1872. { 59, 82 },
  1873. { 58, 81 },
  1874. { 57, 80 },
  1875. { 56, 79 },
  1876. { 55, 78 },
  1877. { 54, 77 },
  1878. { 53, 76 },
  1879. { 52, 75 },
  1880. { 51, 74 },
  1881. { 50, 73 },
  1882. { 49, 72 },
  1883. { 43, 66 },
  1884. { 42, 65 },
  1885. { 31, 45 },
  1886. { 24, 39 },
  1887. { 22, 37 },
  1888. { 21, 33 },
  1889. { 17, 23 },
  1890. { 13, 18 },
  1891. { 12, 17 }
  1892. };
  1893. YYCONST yystategoto_t YYNEARFAR YYBASED_CODE YYDCDECL yystategoto[] = {
  1894. { 42, 7 },
  1895. { 0, -1 },
  1896. { 0, -1 },
  1897. { 0, -1 },
  1898. { 0, -1 },
  1899. { 0, -1 },
  1900. { 0, -1 },
  1901. { 7, -1 },
  1902. { 0, -1 },
  1903. { 0, -1 },
  1904. { 0, -1 },
  1905. { 0, -1 },
  1906. { 69, 101 },
  1907. { 67, -1 },
  1908. { 0, -1 },
  1909. { 0, -1 },
  1910. { 0, -1 },
  1911. { 66, -1 },
  1912. { 0, -1 },
  1913. { 0, -1 },
  1914. { 8, -1 },
  1915. { 46, 89 },
  1916. { 45, 89 },
  1917. { 0, -1 },
  1918. { 57, 38 },
  1919. { 0, -1 },
  1920. { 0, -1 },
  1921. { 0, -1 },
  1922. { 0, -1 },
  1923. { 0, -1 },
  1924. { -22, 89 },
  1925. { 45, 119 },
  1926. { 0, -1 },
  1927. { 0, -1 },
  1928. { 0, -1 },
  1929. { 0, -1 },
  1930. { 0, -1 },
  1931. { 0, -1 },
  1932. { 28, 64 },
  1933. { 0, -1 },
  1934. { 0, -1 },
  1935. { 0, -1 },
  1936. { 62, -1 },
  1937. { 41, 89 },
  1938. { 0, -1 },
  1939. { 0, -1 },
  1940. { 0, -1 },
  1941. { 0, -1 },
  1942. { 2, 119 },
  1943. { 40, 89 },
  1944. { 39, 89 },
  1945. { 38, 89 },
  1946. { 37, 89 },
  1947. { 36, 89 },
  1948. { 35, 89 },
  1949. { 34, 89 },
  1950. { 33, 89 },
  1951. { 32, 89 },
  1952. { 31, 89 },
  1953. { 30, 89 },
  1954. { 29, 89 },
  1955. { 0, -1 },
  1956. { 0, -1 },
  1957. { 38, -1 },
  1958. { 20, -1 },
  1959. { 0, -1 },
  1960. { 0, -1 },
  1961. { 0, -1 },
  1962. { 29, 119 },
  1963. { 0, -1 },
  1964. { 0, -1 },
  1965. { 0, -1 },
  1966. { 0, -1 },
  1967. { 0, -1 },
  1968. { 0, -1 },
  1969. { 0, -1 },
  1970. { 0, -1 },
  1971. { 0, -1 },
  1972. { 0, -1 },
  1973. { 0, -1 },
  1974. { 0, -1 },
  1975. { 0, -1 },
  1976. { 0, -1 },
  1977. { 0, -1 },
  1978. { 36, -1 },
  1979. { 0, -1 },
  1980. { 34, -1 },
  1981. { 0, -1 },
  1982. { 0, -1 },
  1983. { 14, 119 },
  1984. { 0, -1 },
  1985. { 0, -1 },
  1986. { 26, 119 },
  1987. { 0, -1 },
  1988. { 0, -1 },
  1989. { 19, -1 },
  1990. { 0, -1 },
  1991. { 0, -1 },
  1992. { 0, -1 },
  1993. { 0, -1 },
  1994. { 30, 132 },
  1995. { 19, -1 },
  1996. { 0, -1 },
  1997. { 0, -1 },
  1998. { 0, -1 },
  1999. { 24, 119 },
  2000. { 0, -1 },
  2001. { 0, -1 },
  2002. { 0, -1 },
  2003. { 0, -1 },
  2004. { 0, -1 },
  2005. { 0, -1 },
  2006. { 0, -1 },
  2007. { 0, -1 },
  2008. { 0, -1 },
  2009. { 0, -1 },
  2010. { 0, -1 },
  2011. { 0, -1 },
  2012. { 12, 119 },
  2013. { -4, -1 },
  2014. { 0, -1 },
  2015. { 0, -1 },
  2016. { 0, -1 },
  2017. { 0, -1 },
  2018. { 0, -1 },
  2019. { 0, -1 },
  2020. { 0, -1 },
  2021. { 0, -1 },
  2022. { 15, 132 },
  2023. { -3, 132 },
  2024. { 0, -1 },
  2025. { 0, -1 },
  2026. { -13, 119 },
  2027. { 0, -1 }
  2028. };
  2029. YYCONST yydestructor_t YYNEARFAR *YYNEAR YYDCDECL yydestructorptr = NULL;
  2030. YYCONST yytokendest_t YYNEARFAR *YYNEAR YYDCDECL yytokendestptr = NULL;
  2031. int YYNEAR YYDCDECL yytokendest_size = 0;
  2032. YYCONST yytokendestbase_t YYNEARFAR *YYNEAR YYDCDECL yytokendestbaseptr = NULL;
  2033. int YYNEAR YYDCDECL yytokendestbase_size = 0;
  2034. #line 408 ".\parse.y"
  2035. void yyerror(const char * message)
  2036. { fprintf(listing,"Syntax error at line %d: %sn",lineno,message);
  2037.   fprintf(listing,"Current token: ");
  2038.   printToken(yychar,tokenString);
  2039.   Error = TRUE;
  2040. }
  2041. /* yylex calls getToken to make Yacc/Bison output
  2042.  * compatible with ealier versions of the TINY scanner
  2043.  */
  2044. #ifdef YYPROTOTYPE
  2045. int YYCDECL yygettoken(void)
  2046. #else
  2047. int YYCDECL yygettoken()
  2048. #endif
  2049. {
  2050. return yylex();
  2051. }
  2052. static TokenType yylex(void)
  2053. { return getToken(); }
  2054. TreeNode * parse(void)
  2055. { yyparse();
  2056.   return savedTree;
  2057. }