home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / Aminet / util / gnu / groff_src.lha / groff-1.10src / eqn / eqn.cc < prev    next >
C/C++ Source or Header  |  1995-11-20  |  47KB  |  1,278 lines

  1. #if defined(__STDC__) || defined(__cplusplus)
  2. #define YYCONST const
  3. #define YYPARAMS(x) x
  4. #define YYDEFUN(name, arglist, args) name(args)
  5. #define YYAND ,
  6. #define YYPTR void *
  7. #else
  8. #define YYCONST
  9. #define YYPARAMS(x) ()
  10. #define YYDEFUN(name, arglist, args) name arglist args;
  11. #define YYAND ;
  12. #define YYPTR char *
  13. #endif
  14. #ifndef lint
  15. YYCONST static char yysccsid[] = "@(#)yaccpar    1.8 (Berkeley +Cygnus.28) 01/20/91";
  16. #endif
  17. #define YYBYACC 1
  18. #ifndef YYDONT_INCLUDE_STDIO
  19. #include <stdio.h>
  20. #endif
  21. #ifdef __cplusplus
  22. #include <stdlib.h> /* for malloc/realloc/free */
  23. #endif
  24. #line 20 "eqn.y"
  25. #include <stdio.h>
  26. #include <string.h>
  27. #include <stdlib.h>
  28.  
  29. #include "lib.h"
  30. #include "box.h"
  31. extern int non_empty_flag;
  32. char *strsave(const char *);
  33. int yylex();
  34. void yyerror(const char *);
  35. #line 32 "eqn.y"
  36. typedef union {
  37.     char *str;
  38.     box *b;
  39.     pile_box *pb;
  40.     matrix_box *mb;
  41.     int n;
  42.     column *col;
  43. } YYSTYPE;
  44. #line 45 "y.tab.c"
  45. #define OVER 257
  46. #define SMALLOVER 258
  47. #define SQRT 259
  48. #define SUB 260
  49. #define SUP 261
  50. #define LPILE 262
  51. #define RPILE 263
  52. #define CPILE 264
  53. #define PILE 265
  54. #define LEFT 266
  55. #define RIGHT 267
  56. #define TO 268
  57. #define FROM 269
  58. #define SIZE 270
  59. #define FONT 271
  60. #define ROMAN 272
  61. #define BOLD 273
  62. #define ITALIC 274
  63. #define FAT 275
  64. #define ACCENT 276
  65. #define BAR 277
  66. #define UNDER 278
  67. #define ABOVE 279
  68. #define TEXT 280
  69. #define QUOTED_TEXT 281
  70. #define FWD 282
  71. #define BACK 283
  72. #define DOWN 284
  73. #define UP 285
  74. #define MATRIX 286
  75. #define COL 287
  76. #define LCOL 288
  77. #define RCOL 289
  78. #define CCOL 290
  79. #define MARK 291
  80. #define LINEUP 292
  81. #define TYPE 293
  82. #define VCENTER 294
  83. #define PRIME 295
  84. #define SPLIT 296
  85. #define NOSPLIT 297
  86. #define UACCENT 298
  87. #define SPECIAL 299
  88. #define SPACE 300
  89. #define GFONT 301
  90. #define GSIZE 302
  91. #define DEFINE 303
  92. #define NDEFINE 304
  93. #define TDEFINE 305
  94. #define SDEFINE 306
  95. #define UNDEF 307
  96. #define IFDEF 308
  97. #define INCLUDE 309
  98. #define DELIM 310
  99. #define CHARTYPE 311
  100. #define SET 312
  101. #define GRFONT 313
  102. #define GBFONT 314
  103. #define YYERRCODE 256
  104. static YYCONST short yylhs[] = {                                        -1,
  105.     0,    0,    6,    6,    1,    1,    1,    2,    2,    2,
  106.     2,    2,    3,    3,    3,    3,    4,    4,    7,    7,
  107.     7,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  108.     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  109.     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  110.     5,    5,    5,    5,    8,   11,   11,   12,   12,   13,
  111.    13,   16,   16,   15,   15,   14,   14,   14,   14,    9,
  112.     9,   10,   10,   10,
  113. };
  114. static YYCONST short yylen[] = {                                         2,
  115.     0,    1,    1,    2,    1,    2,    2,    1,    3,    3,
  116.     5,    5,    1,    2,    3,    3,    1,    3,    1,    3,
  117.     5,    1,    1,    2,    2,    1,    1,    1,    3,    2,
  118.     2,    2,    2,    4,    5,    3,    2,    2,    2,    3,
  119.     3,    2,    2,    2,    2,    3,    3,    3,    3,    3,
  120.     3,    3,    2,    3,    1,    1,    3,    3,    4,    1,
  121.     2,    1,    3,    3,    4,    2,    2,    2,    2,    1,
  122.     1,    1,    1,    1,
  123. };
  124. static YYCONST short yydefred[] = {                                      0,
  125.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  126.     0,    0,   22,   23,    0,    0,    0,    0,    0,    0,
  127.     0,    0,    0,    0,    0,    0,   26,   27,   28,    0,
  128.     0,    3,    5,    0,   13,    0,    0,   17,   14,   70,
  129.    71,    0,    0,   55,   31,   32,   33,   30,   73,   74,
  130.    72,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  131.     0,    0,    0,    6,    7,    0,    0,   24,   25,    0,
  132.     0,    0,    0,    0,    0,    0,    0,    0,   37,   38,
  133.    39,    0,    4,    0,    0,    0,    0,    0,    0,    0,
  134.     0,    0,    0,    0,    0,    0,    0,    0,   60,    0,
  135.     0,   29,   15,   16,    9,    0,    0,   20,   18,   40,
  136.    41,    0,   58,    0,    0,    0,    0,   66,   67,   68,
  137.    69,   34,   61,    0,    0,    0,    0,   59,   35,    0,
  138.     0,    0,   11,   12,   21,    0,   64,    0,    0,   65,
  139. };
  140. static YYCONST short yydgoto[] = {                                      31,
  141.    32,   33,   34,   35,   36,   84,   38,   43,   44,   52,
  142.    85,   45,   98,   99,  118,  131,
  143. };
  144. static YYCONST short yysindex[] = {                                   1488,
  145.  1527, -120, -120, -120, -120, -123, -249, -249, 1566, 1566,
  146.  1566, 1566,    0,    0, -249, -249, -249, -249, -115, 1488,
  147.  1488, -249, 1566, -256, -251, -249,    0,    0,    0, 1488,
  148.     0,    0,    0, -221,    0, -233, 1488,    0,    0,    0,
  149.     0, 1488,  -85,    0,    0,    0,    0,    0,    0,    0,
  150.     0, 1488, 1566, 1566, -195, -195, -195, -195, 1566, 1566,
  151.  1566, 1566, -272,    0,    0, 1566, -195,    0,    0, 1566,
  152.  1402, 1527, 1527, 1527, 1527, 1566, 1566, 1566,    0,    0,
  153.     0, 1566,    0, 1488, -113, 1488, 1444, -195, -195, -195,
  154.  -195, -195, -195, -117, -117, -117, -117, -118,    0, -195,
  155.  -195,    0,    0,    0,    0, -167, -189,    0,    0,    0,
  156.     0, 1488,    0, -106, -123, 1488,  -83,    0,    0,    0,
  157.     0,    0,    0, 1527, 1527, 1566, 1488,    0,    0, 1488,
  158.  -105, 1488,    0,    0,    0, 1488,    0, -104, 1488,    0,
  159. };
  160. static YYCONST short yyrindex[] = {                                     41,
  161.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  162.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  163.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  164.     0,    0,    0,    1,    0, 1220,   46,    0,    0,    0,
  165.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  166.     0,    0,    0,    0,   85,  128,  363,  406,    0,    0,
  167.     0,    0,    0,    0,    0,    0,  449,    0,    0,    0,
  168.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  169.     0,    0,    0, -103,    0,    0,  185,  492,  727,  770,
  170.   813,  856, 1091,    0,    0,    0,    0,    0,    0, 1134,
  171.  1177,    0,    0,    0,    0,   42, 1220,    0,    0,    0,
  172.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  173.     0,    0,    0,    0,    0,    0, -102,    0,    0, -101,
  174.     0,    0,    0,    0,    0,    0,    0,    0,  -99,    0,
  175. };
  176. static YYCONST short yygindex[] = {                                      0,
  177.    -7,  -69,    3,  -66,  458,    9,  -26,   52,   27,  -63,
  178.   -32,   54,    0,  -35,    2,  -59,
  179. };
  180. #define YYTABLESIZE 1865
  181. static YYCONST short yytable[] = {                                      49,
  182.     8,   50,   42,   39,  105,  116,  122,   63,   37,    8,
  183.   109,  113,   64,   65,   94,   95,   96,   97,  128,  137,
  184.   140,   56,   57,   62,   68,   63,   76,   77,   69,   83,
  185.    40,   41,   51,   53,   54,   72,   73,   86,   71,  132,
  186.     1,   10,   78,   79,   80,    2,   74,   75,   66,  108,
  187.    10,  129,   70,  114,  133,  134,   46,   47,   48,  135,
  188.    87,   81,  123,   83,   82,    0,   59,   60,   61,   62,
  189.    76,  126,  138,    0,  103,  104,   83,  106,    0,   83,
  190.    78,   79,   80,    0,   42,    0,   78,   79,   80,   72,
  191.    73,    0,    0,   42,    8,    0,  119,  120,  121,   81,
  192.   124,  125,   82,    0,    0,   81,    0,    0,   82,    0,
  193.     0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
  194.   127,    0,   83,    8,  130,    8,    8,   43,    0,    0,
  195.     0,   83,    0,    0,    0,   10,   43,    0,    0,    0,
  196.   130,   51,    0,    0,  139,  117,  117,  117,  117,    0,
  197.     0,    0,    0,    0,    0,    0,   40,   41,    0,   40,
  198.    41,    0,   40,   41,   10,  112,   10,   10,   94,   95,
  199.    96,   97,  112,  136,  136,   56,   57,   62,   42,   63,
  200.     0,    0,    0,    0,   36,    0,    0,    0,    0,    0,
  201.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  202.     0,    0,    0,    0,    0,    0,    0,   42,    0,   42,
  203.    42,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  204.     0,   43,    0,    0,    0,    0,    0,    0,    0,    0,
  205.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  206.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  207.    43,    0,   43,   43,    0,    0,    0,    0,    0,    8,
  208.     8,    8,    8,    8,    8,    8,    8,    8,    0,    0,
  209.     8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
  210.     8,    8,    8,    8,    8,    8,    8,    0,    0,    0,
  211.     0,    8,    8,    8,    8,    8,    8,    8,    8,    8,
  212.    10,   10,   10,   10,   10,   10,   10,   10,   10,   36,
  213.     0,   10,   10,   10,   10,   10,   10,   10,   10,   10,
  214.    10,   10,   10,   10,   10,   10,   10,   10,    0,    0,
  215.     0,    0,   10,   10,   10,   10,   10,   10,   10,   10,
  216.    10,   42,   42,   42,   42,   42,   42,   42,   42,   42,
  217.    42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
  218.     0,    0,   44,   42,   42,   42,   42,   42,   42,   42,
  219.    42,   44,    0,    0,    0,   42,   42,   42,   42,    0,
  220.    42,   42,    0,   42,   43,   43,   43,   43,   43,   43,
  221.    43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
  222.    43,   43,   43,    0,    0,   45,   43,   43,   43,   43,
  223.    43,   43,   43,   43,   45,    0,    0,    0,   43,   43,
  224.    43,   43,    0,   43,   43,    0,   43,    0,    0,    0,
  225.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  226.     0,   36,   36,    0,   36,   36,    0,    0,   53,    0,
  227.     0,    0,   36,   36,    0,    0,   44,   53,    0,    0,
  228.    36,   36,   36,   36,    0,    0,   55,   56,   57,   58,
  229.     0,    0,    0,    0,    0,    0,    0,    0,    0,   36,
  230.    67,    0,   36,    0,    0,   44,    0,   44,   44,    0,
  231.     0,   47,    0,    0,    0,    0,    0,    0,    0,   45,
  232.    47,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  233.    88,   89,    0,    0,    0,    0,   90,   91,   92,   93,
  234.     0,    0,    0,  100,    0,    0,    0,  101,   45,    0,
  235.    45,   45,    0,  107,    0,  110,    0,    0,    0,  111,
  236.     0,    0,   53,    0,    0,    0,    0,    0,    0,    0,
  237.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  238.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  239.     0,   53,    0,   53,   53,    0,    0,    0,    0,    0,
  240.     0,    0,    0,    0,    0,   47,    0,    0,    0,    0,
  241.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  242.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  243.     0,    0,    0,    0,   47,    0,   47,   47,    0,   44,
  244.    44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
  245.    44,   44,   44,   44,   44,   44,   44,   44,    0,    0,
  246.     0,   44,   44,   44,   44,   44,   44,   44,   44,    0,
  247.     0,    0,    0,   44,   44,   44,   44,    0,   44,   44,
  248.     0,   44,   45,   45,   45,   45,   45,   45,   45,   45,
  249.    45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
  250.    45,    0,    0,    0,   45,   45,   45,   45,   45,   45,
  251.    45,   45,    0,    0,    0,    0,   45,   45,   45,   45,
  252.     0,   45,   45,    0,   45,   53,   53,   53,   53,   53,
  253.    53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
  254.    53,   53,   53,   53,    0,    0,   46,   53,   53,   53,
  255.    53,   53,   53,   53,   53,   46,    0,    0,    0,   53,
  256.    53,   53,   53,    0,   53,   53,    0,   53,   47,   47,
  257.    47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
  258.    47,   47,   47,   47,   47,   47,   47,    0,    0,   48,
  259.    47,   47,   47,   47,   47,   47,   47,   47,   48,    0,
  260.     0,    0,   47,   47,   47,   47,    0,   47,   47,    0,
  261.    47,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  262.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  263.     0,    0,   49,    0,    0,    0,    0,    0,    0,    0,
  264.    46,   49,    0,    0,    0,    0,    0,    0,    0,    0,
  265.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  266.     0,    0,    0,    0,    0,    0,    0,    0,    0,   46,
  267.     0,   46,   46,    0,    0,   51,    0,    0,    0,    0,
  268.     0,    0,    0,   48,   51,    0,    0,    0,    0,    0,
  269.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  270.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  271.     0,    0,   48,    0,   48,   48,    0,    0,    0,    0,
  272.     0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
  273.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  274.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  275.     0,    0,    0,    0,    0,   49,    0,   49,   49,    0,
  276.     0,    0,    0,    0,    0,    0,    0,    0,    0,   51,
  277.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  278.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  279.     0,    0,    0,    0,    0,    0,    0,    0,   51,    0,
  280.    51,   51,    0,   46,   46,   46,   46,   46,   46,   46,
  281.    46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
  282.    46,   46,    0,    0,    0,   46,   46,   46,   46,   46,
  283.    46,   46,   46,    0,    0,    0,    0,   46,   46,   46,
  284.    46,    0,   46,   46,    0,   46,   48,   48,   48,   48,
  285.    48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
  286.    48,   48,   48,   48,   48,    0,    0,    0,   48,   48,
  287.    48,   48,   48,   48,   48,   48,    0,    0,    0,    0,
  288.    48,   48,   48,   48,    0,   48,   48,    0,   48,   49,
  289.    49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
  290.    49,   49,   49,   49,   49,   49,   49,   49,    0,    0,
  291.    50,   49,   49,   49,   49,   49,   49,   49,   49,   50,
  292.     0,    0,    0,   49,   49,   49,   49,    0,   49,   49,
  293.     0,   49,   51,   51,   51,   51,   51,   51,   51,   51,
  294.    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
  295.    51,    0,    0,   52,   51,   51,   51,   51,   51,   51,
  296.    51,   51,   52,    0,    0,    0,   51,   51,   51,   51,
  297.     0,   51,   51,    0,   51,    0,    0,    0,    0,    0,
  298.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  299.     0,    0,    0,    0,    0,    0,   54,    0,    0,    0,
  300.     0,    0,    0,    0,   50,   54,    0,    0,    0,    0,
  301.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  302.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  303.     0,    0,    0,   50,    0,   50,   50,    0,    0,   19,
  304.     0,    0,    0,    0,    0,    0,    0,   52,   19,    0,
  305.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  306.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  307.     0,    0,    0,    0,    0,    0,   52,    0,   52,   52,
  308.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  309.    54,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  310.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  311.     0,    0,    0,    0,    0,    0,    0,    0,    0,   54,
  312.     0,   54,   54,    0,    0,    0,    0,    0,    0,    0,
  313.     0,    0,    0,   19,    0,    0,    0,    0,    0,    0,
  314.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  315.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  316.     0,    0,   19,    0,   19,   19,    0,   50,   50,   50,
  317.    50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
  318.    50,   50,   50,   50,   50,   50,    0,    0,    0,   50,
  319.    50,   50,   50,   50,   50,   50,   50,    0,    0,    0,
  320.     0,   50,   50,   50,   50,    0,   50,   50,    0,   50,
  321.    52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
  322.    52,   52,   52,   52,   52,   52,   52,   52,   52,    0,
  323.    29,    0,   52,   52,   52,   52,   52,   52,   52,   52,
  324.     0,    0,    0,    0,   52,   52,   52,   52,    0,   52,
  325.    52,    0,   52,   54,   54,   54,   54,   54,   54,   54,
  326.    54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
  327.    54,   54,   29,    0,    0,   54,   54,   54,   54,   54,
  328.    54,   54,   54,    0,    0,    0,    0,   54,   54,   54,
  329.    54,    0,   54,   54,    0,   54,   19,   19,   19,    0,
  330.     0,   19,   19,   19,   19,   19,   19,   19,   19,   19,
  331.    19,   19,   19,   19,   19,   27,   29,    0,   19,   19,
  332.    19,   19,   19,   19,   19,   19,    0,    0,    0,    0,
  333.    19,   19,   19,   19,    0,   19,   19,    0,   19,    0,
  334.     0,    0,    0,    0,   30,    0,  102,   28,    0,    0,
  335.     0,    0,    0,    0,    0,   29,    0,   27,    0,    0,
  336.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  337.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  338.     0,    0,    0,    0,    0,    0,   30,    0,    0,   28,
  339.     0,    0,    0,    0,   29,    0,    0,    0,    0,    0,
  340.     0,   27,    0,    0,    0,    0,    0,    0,    0,    0,
  341.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  342.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  343.    30,    0,    0,   28,    0,    0,    0,    0,    0,    0,
  344.    27,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  345.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  346.     0,    0,    0,    0,    0,    0,    0,    0,    0,   30,
  347.     0,    0,   28,    0,    0,    0,    0,    0,    0,   27,
  348.     1,    0,    0,    2,    3,    4,    5,    6,    0,    0,
  349.     0,    7,    8,    9,   10,   11,   12,    0,    0,    0,
  350.     0,   13,   14,   15,   16,   17,   18,   19,   30,    0,
  351.     0,   28,   20,   21,   22,   23,    0,   24,   25,    0,
  352.    26,    0,    1,    0,    0,    2,    3,    4,    5,    6,
  353.   115,    0,    0,    7,    8,    9,   10,   11,   12,    0,
  354.     0,    0,    0,   13,   14,   15,   16,   17,   18,   19,
  355.     0,    0,    0,    0,   20,   21,   22,   23,    0,   24,
  356.    25,    0,   26,    0,    0,    0,    1,    0,    0,    2,
  357.     3,    4,    5,    6,    0,    0,    0,    7,    8,    9,
  358.    10,   11,   12,    0,    0,    0,    0,   13,   14,   15,
  359.    16,   17,   18,   19,    0,    0,    0,    0,   20,   21,
  360.    22,   23,    0,   24,   25,    1,   26,    0,    2,    3,
  361.     4,    5,    6,    0,    0,    0,    7,    8,    9,   10,
  362.    11,   12,    0,    0,    0,    0,   13,   14,   15,   16,
  363.    17,   18,   19,    0,    0,    0,    0,    0,    0,   22,
  364.    23,    0,   24,   25,    0,   26,    0,    2,    3,    4,
  365.     5,    6,    0,    0,    0,    7,    8,    9,   10,   11,
  366.    12,    0,    0,    0,    0,   13,   14,   15,   16,   17,
  367.    18,   19,    0,    0,    0,    0,    0,    0,   22,   23,
  368.     0,   24,   25,    0,   26,
  369. };
  370. static YYCONST short yycheck[] = {                                     123,
  371.     0,  125,  123,    1,   74,  123,  125,  123,    0,    9,
  372.    77,  125,   20,   21,  287,  288,  289,  290,  125,  125,
  373.   125,  125,  125,  125,  281,  125,  260,  261,  280,   37,
  374.   280,  281,    6,    7,    8,  257,  258,  123,   30,  123,
  375.     0,    0,  276,  277,  278,    0,  268,  269,   22,   76,
  376.     9,  115,   26,   86,  124,  125,    3,    4,    5,  126,
  377.    52,  295,   98,   71,  298,   -1,   15,   16,   17,   18,
  378.   260,  261,  132,   -1,   72,   73,   84,   75,   -1,   87,
  379.   276,  277,  278,   -1,    0,   -1,  276,  277,  278,  257,
  380.   258,   -1,   -1,    9,   94,   -1,   95,   96,   97,  295,
  381.   268,  269,  298,   -1,   -1,  295,   -1,   -1,  298,   -1,
  382.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  127,
  383.   112,   -1,  130,  123,  116,  125,  126,    0,   -1,   -1,
  384.    -1,  139,   -1,   -1,   -1,   94,    9,   -1,   -1,   -1,
  385.   132,  115,   -1,   -1,  136,   94,   95,   96,   97,   -1,
  386.    -1,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,  280,
  387.   281,   -1,  280,  281,  123,  279,  125,  126,  287,  288,
  388.   289,  290,  279,  279,  279,  279,  279,  279,   94,  279,
  389.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
  390.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  391.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,  125,
  392.   126,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  393.    -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  394.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  395.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  396.   123,   -1,  125,  126,   -1,   -1,   -1,   -1,   -1,  259,
  397.   260,  261,  262,  263,  264,  265,  266,  267,   -1,   -1,
  398.   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  399.   280,  281,  282,  283,  284,  285,  286,   -1,   -1,   -1,
  400.    -1,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  401.   259,  260,  261,  262,  263,  264,  265,  266,  267,  125,
  402.    -1,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  403.   279,  280,  281,  282,  283,  284,  285,  286,   -1,   -1,
  404.    -1,   -1,  291,  292,  293,  294,  295,  296,  297,  298,
  405.   299,  257,  258,  259,  260,  261,  262,  263,  264,  265,
  406.   266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
  407.    -1,   -1,    0,  279,  280,  281,  282,  283,  284,  285,
  408.   286,    9,   -1,   -1,   -1,  291,  292,  293,  294,   -1,
  409.   296,  297,   -1,  299,  257,  258,  259,  260,  261,  262,
  410.   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
  411.   273,  274,  275,   -1,   -1,    0,  279,  280,  281,  282,
  412.   283,  284,  285,  286,    9,   -1,   -1,   -1,  291,  292,
  413.   293,  294,   -1,  296,  297,   -1,  299,   -1,   -1,   -1,
  414.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  415.    -1,  257,  258,   -1,  260,  261,   -1,   -1,    0,   -1,
  416.    -1,   -1,  268,  269,   -1,   -1,   94,    9,   -1,   -1,
  417.   276,  277,  278,  279,   -1,   -1,    9,   10,   11,   12,
  418.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  295,
  419.    23,   -1,  298,   -1,   -1,  123,   -1,  125,  126,   -1,
  420.    -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,
  421.     9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  422.    53,   54,   -1,   -1,   -1,   -1,   59,   60,   61,   62,
  423.    -1,   -1,   -1,   66,   -1,   -1,   -1,   70,  123,   -1,
  424.   125,  126,   -1,   76,   -1,   78,   -1,   -1,   -1,   82,
  425.    -1,   -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  426.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  427.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  428.    -1,  123,   -1,  125,  126,   -1,   -1,   -1,   -1,   -1,
  429.    -1,   -1,   -1,   -1,   -1,   94,   -1,   -1,   -1,   -1,
  430.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  431.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  432.    -1,   -1,   -1,   -1,  123,   -1,  125,  126,   -1,  257,
  433.   258,  259,  260,  261,  262,  263,  264,  265,  266,  267,
  434.   268,  269,  270,  271,  272,  273,  274,  275,   -1,   -1,
  435.    -1,  279,  280,  281,  282,  283,  284,  285,  286,   -1,
  436.    -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,  297,
  437.    -1,  299,  257,  258,  259,  260,  261,  262,  263,  264,
  438.   265,  266,  267,  268,  269,  270,  271,  272,  273,  274,
  439.   275,   -1,   -1,   -1,  279,  280,  281,  282,  283,  284,
  440.   285,  286,   -1,   -1,   -1,   -1,  291,  292,  293,  294,
  441.    -1,  296,  297,   -1,  299,  257,  258,  259,  260,  261,
  442.   262,  263,  264,  265,  266,  267,  268,  269,  270,  271,
  443.   272,  273,  274,  275,   -1,   -1,    0,  279,  280,  281,
  444.   282,  283,  284,  285,  286,    9,   -1,   -1,   -1,  291,
  445.   292,  293,  294,   -1,  296,  297,   -1,  299,  257,  258,
  446.   259,  260,  261,  262,  263,  264,  265,  266,  267,  268,
  447.   269,  270,  271,  272,  273,  274,  275,   -1,   -1,    0,
  448.   279,  280,  281,  282,  283,  284,  285,  286,    9,   -1,
  449.    -1,   -1,  291,  292,  293,  294,   -1,  296,  297,   -1,
  450.   299,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  451.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  452.    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  453.    94,    9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  454.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  455.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
  456.    -1,  125,  126,   -1,   -1,    0,   -1,   -1,   -1,   -1,
  457.    -1,   -1,   -1,   94,    9,   -1,   -1,   -1,   -1,   -1,
  458.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  459.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  460.    -1,   -1,  123,   -1,  125,  126,   -1,   -1,   -1,   -1,
  461.    -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,   -1,   -1,
  462.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  463.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  464.    -1,   -1,   -1,   -1,   -1,  123,   -1,  125,  126,   -1,
  465.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,
  466.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  467.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  468.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,
  469.   125,  126,   -1,  257,  258,  259,  260,  261,  262,  263,
  470.   264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  471.   274,  275,   -1,   -1,   -1,  279,  280,  281,  282,  283,
  472.   284,  285,  286,   -1,   -1,   -1,   -1,  291,  292,  293,
  473.   294,   -1,  296,  297,   -1,  299,  257,  258,  259,  260,
  474.   261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
  475.   271,  272,  273,  274,  275,   -1,   -1,   -1,  279,  280,
  476.   281,  282,  283,  284,  285,  286,   -1,   -1,   -1,   -1,
  477.   291,  292,  293,  294,   -1,  296,  297,   -1,  299,  257,
  478.   258,  259,  260,  261,  262,  263,  264,  265,  266,  267,
  479.   268,  269,  270,  271,  272,  273,  274,  275,   -1,   -1,
  480.     0,  279,  280,  281,  282,  283,  284,  285,  286,    9,
  481.    -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,  297,
  482.    -1,  299,  257,  258,  259,  260,  261,  262,  263,  264,
  483.   265,  266,  267,  268,  269,  270,  271,  272,  273,  274,
  484.   275,   -1,   -1,    0,  279,  280,  281,  282,  283,  284,
  485.   285,  286,    9,   -1,   -1,   -1,  291,  292,  293,  294,
  486.    -1,  296,  297,   -1,  299,   -1,   -1,   -1,   -1,   -1,
  487.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  488.    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
  489.    -1,   -1,   -1,   -1,   94,    9,   -1,   -1,   -1,   -1,
  490.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  491.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  492.    -1,   -1,   -1,  123,   -1,  125,  126,   -1,   -1,    0,
  493.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,    9,   -1,
  494.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  495.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  496.    -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,  125,  126,
  497.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  498.    94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  499.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  500.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
  501.    -1,  125,  126,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  502.    -1,   -1,   -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,
  503.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  504.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  505.    -1,   -1,  123,   -1,  125,  126,   -1,  257,  258,  259,
  506.   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,
  507.   270,  271,  272,  273,  274,  275,   -1,   -1,   -1,  279,
  508.   280,  281,  282,  283,  284,  285,  286,   -1,   -1,   -1,
  509.    -1,  291,  292,  293,  294,   -1,  296,  297,   -1,  299,
  510.   257,  258,  259,  260,  261,  262,  263,  264,  265,  266,
  511.   267,  268,  269,  270,  271,  272,  273,  274,  275,   -1,
  512.     9,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  513.    -1,   -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,
  514.   297,   -1,  299,  257,  258,  259,  260,  261,  262,  263,
  515.   264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  516.   274,  275,    9,   -1,   -1,  279,  280,  281,  282,  283,
  517.   284,  285,  286,   -1,   -1,   -1,   -1,  291,  292,  293,
  518.   294,   -1,  296,  297,   -1,  299,  257,  258,  259,   -1,
  519.    -1,  262,  263,  264,  265,  266,  267,  268,  269,  270,
  520.   271,  272,  273,  274,  275,   94,    9,   -1,  279,  280,
  521.   281,  282,  283,  284,  285,  286,   -1,   -1,   -1,   -1,
  522.   291,  292,  293,  294,   -1,  296,  297,   -1,  299,   -1,
  523.    -1,   -1,   -1,   -1,  123,   -1,  125,  126,   -1,   -1,
  524.    -1,   -1,   -1,   -1,   -1,    9,   -1,   94,   -1,   -1,
  525.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  526.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  527.    -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,   -1,  126,
  528.    -1,   -1,   -1,   -1,    9,   -1,   -1,   -1,   -1,   -1,
  529.    -1,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  530.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  531.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  532.   123,   -1,   -1,  126,   -1,   -1,   -1,   -1,   -1,   -1,
  533.    94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  534.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  535.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
  536.    -1,   -1,  126,   -1,   -1,   -1,   -1,   -1,   -1,   94,
  537.   259,   -1,   -1,  262,  263,  264,  265,  266,   -1,   -1,
  538.    -1,  270,  271,  272,  273,  274,  275,   -1,   -1,   -1,
  539.    -1,  280,  281,  282,  283,  284,  285,  286,  123,   -1,
  540.    -1,  126,  291,  292,  293,  294,   -1,  296,  297,   -1,
  541.   299,   -1,  259,   -1,   -1,  262,  263,  264,  265,  266,
  542.   267,   -1,   -1,  270,  271,  272,  273,  274,  275,   -1,
  543.    -1,   -1,   -1,  280,  281,  282,  283,  284,  285,  286,
  544.    -1,   -1,   -1,   -1,  291,  292,  293,  294,   -1,  296,
  545.   297,   -1,  299,   -1,   -1,   -1,  259,   -1,   -1,  262,
  546.   263,  264,  265,  266,   -1,   -1,   -1,  270,  271,  272,
  547.   273,  274,  275,   -1,   -1,   -1,   -1,  280,  281,  282,
  548.   283,  284,  285,  286,   -1,   -1,   -1,   -1,  291,  292,
  549.   293,  294,   -1,  296,  297,  259,  299,   -1,  262,  263,
  550.   264,  265,  266,   -1,   -1,   -1,  270,  271,  272,  273,
  551.   274,  275,   -1,   -1,   -1,   -1,  280,  281,  282,  283,
  552.   284,  285,  286,   -1,   -1,   -1,   -1,   -1,   -1,  293,
  553.   294,   -1,  296,  297,   -1,  299,   -1,  262,  263,  264,
  554.   265,  266,   -1,   -1,   -1,  270,  271,  272,  273,  274,
  555.   275,   -1,   -1,   -1,   -1,  280,  281,  282,  283,  284,
  556.   285,  286,   -1,   -1,   -1,   -1,   -1,   -1,  293,  294,
  557.    -1,  296,  297,   -1,  299,
  558. };
  559. #define YYFINAL 31
  560. #ifndef YYDEBUG
  561. #define YYDEBUG 0
  562. #endif
  563. #define YYMAXTOKEN 314
  564. #if YYDEBUG
  565. static YYCONST char *YYCONST yyname[] = {
  566. "end-of-file",0,0,0,0,0,0,0,0,"'\\t'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  567. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  568. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  569. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  570. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  571. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  572. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"OVER",
  573. "SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT",
  574. "TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER",
  575. "ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL",
  576. "RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT",
  577. "UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE",
  578. "SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT",
  579. };
  580. static YYCONST char *YYCONST yyrule[] = {
  581. "$accept : top",
  582. "top :",
  583. "top : equation",
  584. "equation : mark",
  585. "equation : equation mark",
  586. "mark : from_to",
  587. "mark : MARK mark",
  588. "mark : LINEUP mark",
  589. "from_to : sqrt_over",
  590. "from_to : sqrt_over TO from_to",
  591. "from_to : sqrt_over FROM sqrt_over",
  592. "from_to : sqrt_over FROM sqrt_over TO from_to",
  593. "from_to : sqrt_over FROM sqrt_over FROM from_to",
  594. "sqrt_over : script",
  595. "sqrt_over : SQRT sqrt_over",
  596. "sqrt_over : sqrt_over OVER sqrt_over",
  597. "sqrt_over : sqrt_over SMALLOVER sqrt_over",
  598. "script : nonsup",
  599. "script : simple SUP script",
  600. "nonsup : simple",
  601. "nonsup : simple SUB nonsup",
  602. "nonsup : simple SUB simple SUP script",
  603. "simple : TEXT",
  604. "simple : QUOTED_TEXT",
  605. "simple : SPLIT QUOTED_TEXT",
  606. "simple : NOSPLIT TEXT",
  607. "simple : '^'",
  608. "simple : '~'",
  609. "simple : '\\t'",
  610. "simple : '{' equation '}'",
  611. "simple : PILE pile_arg",
  612. "simple : LPILE pile_arg",
  613. "simple : RPILE pile_arg",
  614. "simple : CPILE pile_arg",
  615. "simple : MATRIX '{' column_list '}'",
  616. "simple : LEFT delim equation RIGHT delim",
  617. "simple : LEFT delim equation",
  618. "simple : simple BAR",
  619. "simple : simple UNDER",
  620. "simple : simple PRIME",
  621. "simple : simple ACCENT simple",
  622. "simple : simple UACCENT simple",
  623. "simple : ROMAN simple",
  624. "simple : BOLD simple",
  625. "simple : ITALIC simple",
  626. "simple : FAT simple",
  627. "simple : FONT text simple",
  628. "simple : SIZE text simple",
  629. "simple : FWD number simple",
  630. "simple : BACK number simple",
  631. "simple : UP number simple",
  632. "simple : DOWN number simple",
  633. "simple : TYPE text simple",
  634. "simple : VCENTER simple",
  635. "simple : SPECIAL text simple",
  636. "number : text",
  637. "pile_element_list : equation",
  638. "pile_element_list : pile_element_list ABOVE equation",
  639. "pile_arg : '{' pile_element_list '}'",
  640. "pile_arg : number '{' pile_element_list '}'",
  641. "column_list : column",
  642. "column_list : column_list column",
  643. "column_element_list : equation",
  644. "column_element_list : column_element_list ABOVE equation",
  645. "column_arg : '{' column_element_list '}'",
  646. "column_arg : number '{' column_element_list '}'",
  647. "column : COL column_arg",
  648. "column : LCOL column_arg",
  649. "column : RCOL column_arg",
  650. "column : CCOL column_arg",
  651. "text : TEXT",
  652. "text : QUOTED_TEXT",
  653. "delim : text",
  654. "delim : '{'",
  655. "delim : '}'",
  656. };
  657. #endif
  658. #define YYLEX yylex()
  659. #define YYEMPTY -1
  660. #define yyclearin (yychar=(YYEMPTY))
  661. #define yyerrok (yyerrflag=0)
  662. #ifndef YYINITDEPTH
  663. #define YYINITDEPTH 200
  664. #endif
  665. #ifdef YYSTACKSIZE
  666. #undef YYMAXDEPTH
  667. #define YYMAXDEPTH YYSTACKSIZE
  668. #else
  669. #ifdef YYMAXDEPTH
  670. #define YYSTACKSIZE YYMAXDEPTH
  671. #else
  672. #define YYSTACKSIZE 10000
  673. #define YYMAXDEPTH 10000
  674. #endif
  675. #endif
  676. int yydebug;
  677. int yynerrs;
  678. int yyerrflag;
  679. int yychar;
  680. YYSTYPE yyval;
  681. YYSTYPE yylval;
  682. static short *yyss;
  683. static YYSTYPE *yyvs;
  684. static int yystacksize;
  685. static int yygrow ();
  686. static YYPTR yymalloc YYPARAMS((unsigned));
  687. static YYPTR yyrealloc YYPARAMS((YYPTR, unsigned));
  688. #define yyfree(x) free(x)
  689. #define YYABORT goto yyabort
  690. #define YYACCEPT goto yyaccept
  691. #define YYERROR goto yyerrlab
  692.  
  693. #if YYDEBUG
  694. #ifdef __cplusplus
  695. extern "C" char *getenv();
  696. #else
  697. extern char *getenv();
  698. #endif
  699. #endif
  700.  
  701. int
  702. yyparse()
  703. {
  704.     register int yym, yyn, yystate;
  705.     register YYSTYPE *yyvsp;
  706.     register short *yyssp;
  707.     short *yysse;
  708. #if YYDEBUG
  709.     register YYCONST char *yys;
  710.  
  711.     if (yys = getenv("YYDEBUG"))
  712.     {
  713.         yyn = *yys;
  714.         if (yyn >= '0' && yyn <= '9')
  715.             yydebug = yyn - '0';
  716.     }
  717. #endif
  718.  
  719.     yynerrs = 0;
  720.     yyerrflag = 0;
  721.     yychar = (-1);
  722.  
  723.     if (yyss == 0)
  724.     {
  725.         yyss = (short *) yymalloc (YYINITDEPTH * sizeof (short));
  726.         if (yyss == 0)
  727.           goto yyabort;
  728.         yyvs = (YYSTYPE *) yymalloc (YYINITDEPTH * sizeof (YYSTYPE));
  729.         if (yyvs == 0)
  730.         {
  731.             yyfree (yyss);
  732.             goto yyabort;
  733.         }
  734.         yystacksize = YYINITDEPTH;
  735.     }
  736.     yysse = yyss + yystacksize - 1;
  737.     yyssp = yyss;
  738.     yyvsp = yyvs;
  739.     *yyssp = yystate = 0;
  740.  
  741. yyloop:
  742.     if (yyn = yydefred[yystate]) goto yyreduce;
  743.     if (yychar < 0)
  744.     {
  745.         if ((yychar = yylex()) < 0) yychar = 0;
  746. #if YYDEBUG
  747.         if (yydebug)
  748.         {
  749.             yys = 0;
  750.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  751.             if (!yys) yys = "illegal-symbol";
  752.             printf("yydebug: state %d, reading %d (%s)\n", yystate,
  753.                     yychar, yys);
  754.         }
  755. #endif
  756.     }
  757.     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
  758.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  759.     {
  760. #if YYDEBUG
  761.         if (yydebug)
  762.             printf("yydebug: state %d, shifting to state %d\n",
  763.                     yystate, yytable[yyn]);
  764. #endif
  765.         if (yyssp >= yysse)
  766.         {
  767.             /* FIXME: Rework so there's only one of these.  */
  768.             int depth = yyssp - yyss;
  769.             if (yygrow () != 0)
  770.               goto yyoverflow;
  771.             yysse = yyss + yystacksize - 1;
  772.             yyssp = yyss + depth;
  773.             yyvsp = yyvs + depth;
  774.         }
  775.         *++yyssp = yystate = yytable[yyn];
  776.         *++yyvsp = yylval;
  777.         yychar = (-1);
  778.         if (yyerrflag > 0)  --yyerrflag;
  779.         goto yyloop;
  780.     }
  781.     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
  782.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  783.     {
  784.         yyn = yytable[yyn];
  785.         goto yyreduce;
  786.     }
  787.     if (yyerrflag) goto yyinrecovery;
  788. #ifdef lint
  789.     goto yynewerror;
  790. #endif
  791. yynewerror:
  792.     yyerror("syntax error");
  793. #ifdef lint
  794.     goto yyerrlab;
  795. #endif
  796. yyerrlab:
  797.     ++yynerrs;
  798. yyinrecovery:
  799.     if (yyerrflag < 3)
  800.     {
  801.         yyerrflag = 3;
  802.         for (;;)
  803.         {
  804.             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
  805.                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
  806.             {
  807. #if YYDEBUG
  808.                 if (yydebug)
  809.                     printf("yydebug: state %d, error recovery shifting\
  810.  to state %d\n", *yyssp, yytable[yyn]);
  811. #endif
  812.                 if (yyssp >= yysse)
  813.                 {
  814.                     int depth = yyssp - yyss;
  815.                     if (yygrow () != 0)
  816.                       goto yyoverflow;
  817.                     yysse = yyss + yystacksize - 1;
  818.                     yyssp = yyss + depth;
  819.                     yyvsp = yyvs + depth;
  820.                 }
  821.                 *++yyssp = yystate = yytable[yyn];
  822.                 *++yyvsp = yylval;
  823.                 goto yyloop;
  824.             }
  825.             else
  826.             {
  827. #if YYDEBUG
  828.                 if (yydebug)
  829.                     printf("yydebug: error recovery discarding state %d\n",
  830.                             *yyssp);
  831. #endif
  832.                 if (yyssp <= yyss) goto yyabort;
  833.                 --yyssp;
  834.                 --yyvsp;
  835.             }
  836.         }
  837.     }
  838.     else
  839.     {
  840.         if (yychar == 0) goto yyabort;
  841. #if YYDEBUG
  842.         if (yydebug)
  843.         {
  844.             yys = 0;
  845.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  846.             if (!yys) yys = "illegal-symbol";
  847.             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
  848.                     yystate, yychar, yys);
  849.         }
  850. #endif
  851.         yychar = (-1);
  852.         goto yyloop;
  853.     }
  854. yyreduce:
  855. #if YYDEBUG
  856.     if (yydebug)
  857.         printf("yydebug: state %d, reducing by rule %d (%s)\n",
  858.                 yystate, yyn, yyrule[yyn]);
  859. #endif
  860.     yym = yylen[yyn];
  861.     yyval = yyvsp[1-yym];
  862.     switch (yyn)
  863.     {
  864. case 2:
  865. #line 126 "eqn.y"
  866. { yyvsp[0].b->top_level(); non_empty_flag = 1; }
  867. break;
  868. case 3:
  869. #line 131 "eqn.y"
  870. { yyval.b = yyvsp[0].b; }
  871. break;
  872. case 4:
  873. #line 133 "eqn.y"
  874. {
  875.           list_box *lb = yyvsp[-1].b->to_list_box();
  876.           if (!lb)
  877.             lb = new list_box(yyvsp[-1].b);
  878.           lb->append(yyvsp[0].b);
  879.           yyval.b = lb;
  880.         }
  881. break;
  882. case 5:
  883. #line 144 "eqn.y"
  884. { yyval.b = yyvsp[0].b; }
  885. break;
  886. case 6:
  887. #line 146 "eqn.y"
  888. { yyval.b = make_mark_box(yyvsp[0].b); }
  889. break;
  890. case 7:
  891. #line 148 "eqn.y"
  892. { yyval.b = make_lineup_box(yyvsp[0].b); }
  893. break;
  894. case 8:
  895. #line 153 "eqn.y"
  896. { yyval.b = yyvsp[0].b; }
  897. break;
  898. case 9:
  899. #line 155 "eqn.y"
  900. { yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); }
  901. break;
  902. case 10:
  903. #line 157 "eqn.y"
  904. { yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); }
  905. break;
  906. case 11:
  907. #line 159 "eqn.y"
  908. { yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
  909. break;
  910. case 12:
  911. #line 161 "eqn.y"
  912. { yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); }
  913. break;
  914. case 13:
  915. #line 166 "eqn.y"
  916. { yyval.b = yyvsp[0].b; }
  917. break;
  918. case 14:
  919. #line 168 "eqn.y"
  920. { yyval.b = make_sqrt_box(yyvsp[0].b); }
  921. break;
  922. case 15:
  923. #line 170 "eqn.y"
  924. { yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); }
  925. break;
  926. case 16:
  927. #line 172 "eqn.y"
  928. { yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); }
  929. break;
  930. case 17:
  931. #line 177 "eqn.y"
  932. { yyval.b = yyvsp[0].b; }
  933. break;
  934. case 18:
  935. #line 179 "eqn.y"
  936. { yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); }
  937. break;
  938. case 19:
  939. #line 184 "eqn.y"
  940. { yyval.b = yyvsp[0].b; }
  941. break;
  942. case 20:
  943. #line 186 "eqn.y"
  944. { yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); }
  945. break;
  946. case 21:
  947. #line 188 "eqn.y"
  948. { yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
  949. break;
  950. case 22:
  951. #line 193 "eqn.y"
  952. { yyval.b = split_text(yyvsp[0].str); }
  953. break;
  954. case 23:
  955. #line 195 "eqn.y"
  956. { yyval.b = new quoted_text_box(yyvsp[0].str); }
  957. break;
  958. case 24:
  959. #line 197 "eqn.y"
  960. { yyval.b = split_text(yyvsp[0].str); }
  961. break;
  962. case 25:
  963. #line 199 "eqn.y"
  964. { yyval.b = new quoted_text_box(yyvsp[0].str); }
  965. break;
  966. case 26:
  967. #line 201 "eqn.y"
  968. { yyval.b = new half_space_box; }
  969. break;
  970. case 27:
  971. #line 203 "eqn.y"
  972. { yyval.b = new space_box; }
  973. break;
  974. case 28:
  975. #line 205 "eqn.y"
  976. { yyval.b = new tab_box; }
  977. break;
  978. case 29:
  979. #line 207 "eqn.y"
  980. { yyval.b = yyvsp[-1].b; }
  981. break;
  982. case 30:
  983. #line 209 "eqn.y"
  984. { yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
  985. break;
  986. case 31:
  987. #line 211 "eqn.y"
  988. { yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; }
  989. break;
  990. case 32:
  991. #line 213 "eqn.y"
  992. { yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; }
  993. break;
  994. case 33:
  995. #line 215 "eqn.y"
  996. { yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
  997. break;
  998. case 34:
  999. #line 217 "eqn.y"
  1000. { yyval.b = yyvsp[-1].mb; }
  1001. break;
  1002. case 35:
  1003. #line 219 "eqn.y"
  1004. { yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); }
  1005. break;
  1006. case 36:
  1007. #line 221 "eqn.y"
  1008. { yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); }
  1009. break;
  1010. case 37:
  1011. #line 223 "eqn.y"
  1012. { yyval.b = make_overline_box(yyvsp[-1].b); }
  1013. break;
  1014. case 38:
  1015. #line 225 "eqn.y"
  1016. { yyval.b = make_underline_box(yyvsp[-1].b); }
  1017. break;
  1018. case 39:
  1019. #line 227 "eqn.y"
  1020. { yyval.b = make_prime_box(yyvsp[-1].b); }
  1021. break;
  1022. case 40:
  1023. #line 229 "eqn.y"
  1024. { yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); }
  1025. break;
  1026. case 41:
  1027. #line 231 "eqn.y"
  1028. { yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); }
  1029. break;
  1030. case 42:
  1031. #line 233 "eqn.y"
  1032. { yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); }
  1033. break;
  1034. case 43:
  1035. #line 235 "eqn.y"
  1036. { yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); }
  1037. break;
  1038. case 44:
  1039. #line 237 "eqn.y"
  1040. { yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); }
  1041. break;
  1042. case 45:
  1043. #line 239 "eqn.y"
  1044. { yyval.b = new fat_box(yyvsp[0].b); }
  1045. break;
  1046. case 46:
  1047. #line 241 "eqn.y"
  1048. { yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); }
  1049. break;
  1050. case 47:
  1051. #line 243 "eqn.y"
  1052. { yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); }
  1053. break;
  1054. case 48:
  1055. #line 245 "eqn.y"
  1056. { yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); }
  1057. break;
  1058. case 49:
  1059. #line 247 "eqn.y"
  1060. { yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
  1061. break;
  1062. case 50:
  1063. #line 249 "eqn.y"
  1064. { yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); }
  1065. break;
  1066. case 51:
  1067. #line 251 "eqn.y"
  1068. { yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
  1069. break;
  1070. case 52:
  1071. #line 253 "eqn.y"
  1072. { yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; }
  1073. break;
  1074. case 53:
  1075. #line 255 "eqn.y"
  1076. { yyval.b = new vcenter_box(yyvsp[0].b); }
  1077. break;
  1078. case 54:
  1079. #line 257 "eqn.y"
  1080. { yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); }
  1081. break;
  1082. case 55:
  1083. #line 262 "eqn.y"
  1084. {
  1085.           int n;
  1086.           if (sscanf(yyvsp[0].str, "%d", &n) == 1)
  1087.             yyval.n = n;
  1088.           a_delete yyvsp[0].str;
  1089.         }
  1090. break;
  1091. case 56:
  1092. #line 272 "eqn.y"
  1093. { yyval.pb = new pile_box(yyvsp[0].b); }
  1094. break;
  1095. case 57:
  1096. #line 274 "eqn.y"
  1097. { yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; }
  1098. break;
  1099. case 58:
  1100. #line 279 "eqn.y"
  1101. { yyval.pb = yyvsp[-1].pb; }
  1102. break;
  1103. case 59:
  1104. #line 281 "eqn.y"
  1105. { yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; }
  1106. break;
  1107. case 60:
  1108. #line 286 "eqn.y"
  1109. { yyval.mb = new matrix_box(yyvsp[0].col); }
  1110. break;
  1111. case 61:
  1112. #line 288 "eqn.y"
  1113. { yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; }
  1114. break;
  1115. case 62:
  1116. #line 293 "eqn.y"
  1117. { yyval.col = new column(yyvsp[0].b); }
  1118. break;
  1119. case 63:
  1120. #line 295 "eqn.y"
  1121. { yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; }
  1122. break;
  1123. case 64:
  1124. #line 300 "eqn.y"
  1125. { yyval.col = yyvsp[-1].col; }
  1126. break;
  1127. case 65:
  1128. #line 302 "eqn.y"
  1129. { yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; }
  1130. break;
  1131. case 66:
  1132. #line 307 "eqn.y"
  1133. { yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
  1134. break;
  1135. case 67:
  1136. #line 309 "eqn.y"
  1137. { yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; }
  1138. break;
  1139. case 68:
  1140. #line 311 "eqn.y"
  1141. { yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; }
  1142. break;
  1143. case 69:
  1144. #line 313 "eqn.y"
  1145. { yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
  1146. break;
  1147. case 70:
  1148. #line 317 "eqn.y"
  1149. { yyval.str = yyvsp[0].str; }
  1150. break;
  1151. case 71:
  1152. #line 319 "eqn.y"
  1153. { yyval.str = yyvsp[0].str; }
  1154. break;
  1155. case 72:
  1156. #line 324 "eqn.y"
  1157. { yyval.str = yyvsp[0].str; }
  1158. break;
  1159. case 73:
  1160. #line 326 "eqn.y"
  1161. { yyval.str = strsave("{"); }
  1162. break;
  1163. case 74:
  1164. #line 328 "eqn.y"
  1165. { yyval.str = strsave("}"); }
  1166. break;
  1167. #line 1168 "y.tab.c"
  1168.     }
  1169.     yyssp -= yym;
  1170.     yystate = *yyssp;
  1171.     yyvsp -= yym;
  1172.     yym = yylhs[yyn];
  1173.     if (yystate == 0 && yym == 0)
  1174.     {
  1175. #if YYDEBUG
  1176.         if (yydebug)
  1177.             printf("yydebug: after reduction, shifting from state 0 to\
  1178.  state %d\n", YYFINAL);
  1179. #endif
  1180.         yystate = YYFINAL;
  1181.         *++yyssp = YYFINAL;
  1182.         *++yyvsp = yyval;
  1183.         if (yychar < 0)
  1184.         {
  1185.             if ((yychar = yylex()) < 0) yychar = 0;
  1186. #if YYDEBUG
  1187.             if (yydebug)
  1188.             {
  1189.                 yys = 0;
  1190.                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1191.                 if (!yys) yys = "illegal-symbol";
  1192.                 printf("yydebug: state %d, reading %d (%s)\n",
  1193.                         YYFINAL, yychar, yys);
  1194.             }
  1195. #endif
  1196.         }
  1197.         if (yychar == 0) goto yyaccept;
  1198.         goto yyloop;
  1199.     }
  1200.     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
  1201.             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
  1202.         yystate = yytable[yyn];
  1203.     else
  1204.         yystate = yydgoto[yym];
  1205. #if YYDEBUG
  1206.     if (yydebug)
  1207.         printf("yydebug: after reduction, shifting from state %d \
  1208. to state %d\n", *yyssp, yystate);
  1209. #endif
  1210.     if (yyssp >= yysse)
  1211.     {
  1212.         int depth = yyssp - yyss;
  1213.         if (yygrow () != 0)
  1214.           goto yyoverflow;
  1215.         yysse = yyss + yystacksize - 1;
  1216.         yyssp = yyss + depth;
  1217.         yyvsp = yyvs + depth;
  1218.     }
  1219.     *++yyssp = yystate;
  1220.     *++yyvsp = yyval;
  1221.     goto yyloop;
  1222. yyoverflow:
  1223.     yyerror("yacc stack overflow");
  1224. yyabort:
  1225.     return (1);
  1226. yyaccept:
  1227.     return (0);
  1228. }
  1229.  
  1230. static int
  1231. yygrow ()
  1232. {
  1233.     int old_stacksize = yystacksize;
  1234.     short *new_yyss;
  1235.     YYSTYPE *new_yyvs;
  1236.  
  1237.     if (yystacksize >= YYMAXDEPTH)
  1238.         return (1);
  1239.     yystacksize *= 2;
  1240.     if (yystacksize > YYMAXDEPTH)
  1241.         yystacksize = YYMAXDEPTH;
  1242. #if YYDEBUG
  1243.     if (yydebug)
  1244.         printf("yydebug: growing stack size from %d to %d\n",
  1245.                old_stacksize, yystacksize);
  1246. #endif
  1247.     new_yyss = (short *) yyrealloc (yyss, yystacksize * sizeof (short));
  1248.     if (new_yyss == 0)
  1249.         return (1);
  1250.     new_yyvs = (YYSTYPE *) yyrealloc (yyvs, yystacksize * sizeof (YYSTYPE));
  1251.     if (new_yyvs == 0)
  1252.     {
  1253.         yyfree (new_yyss);
  1254.         return (1);
  1255.     }
  1256.     yyss = new_yyss;
  1257.     yyvs = new_yyvs;
  1258.     return (0);
  1259. }
  1260.  
  1261. static YYPTR
  1262. YYDEFUN (yymalloc, (bytes), unsigned bytes)
  1263. {
  1264.     YYPTR ptr = (YYPTR) malloc (bytes);
  1265.     if (ptr != 0) return (ptr);
  1266.     yyerror ("yyparse: memory exhausted");
  1267.     return (0);
  1268. }
  1269.  
  1270. static YYPTR
  1271. YYDEFUN (yyrealloc, (old, bytes), YYPTR old YYAND unsigned bytes)
  1272. {
  1273.     YYPTR ptr = (YYPTR) realloc (old, bytes);
  1274.     if (ptr != 0) return (ptr);
  1275.     yyerror ("yyparse: memory exhausted");
  1276.     return (0);
  1277. }
  1278.