13e12c5d1SDavid du Colombier #define CONTIG 57346
23e12c5d1SDavid du Colombier #define QTEXT 57347
33e12c5d1SDavid du Colombier #define SPACE 57348
43e12c5d1SDavid du Colombier #define THIN 57349
53e12c5d1SDavid du Colombier #define TAB 57350
63e12c5d1SDavid du Colombier #define MATRIX 57351
73e12c5d1SDavid du Colombier #define LCOL 57352
83e12c5d1SDavid du Colombier #define CCOL 57353
93e12c5d1SDavid du Colombier #define RCOL 57354
103e12c5d1SDavid du Colombier #define COL 57355
113e12c5d1SDavid du Colombier #define ABOVE 57356
123e12c5d1SDavid du Colombier #define MARK 57357
133e12c5d1SDavid du Colombier #define LINEUP 57358
143e12c5d1SDavid du Colombier #define SUM 57359
153e12c5d1SDavid du Colombier #define INT 57360
163e12c5d1SDavid du Colombier #define PROD 57361
173e12c5d1SDavid du Colombier #define UNION 57362
183e12c5d1SDavid du Colombier #define INTER 57363
193e12c5d1SDavid du Colombier #define DEFINE 57364
203e12c5d1SDavid du Colombier #define TDEFINE 57365
213e12c5d1SDavid du Colombier #define NDEFINE 57366
223e12c5d1SDavid du Colombier #define DELIM 57367
233e12c5d1SDavid du Colombier #define GSIZE 57368
243e12c5d1SDavid du Colombier #define GFONT 57369
253e12c5d1SDavid du Colombier #define INCLUDE 57370
263e12c5d1SDavid du Colombier #define IFDEF 57371
273e12c5d1SDavid du Colombier #define DOTEQ 57372
283e12c5d1SDavid du Colombier #define DOTEN 57373
293e12c5d1SDavid du Colombier #define FROM 57374
303e12c5d1SDavid du Colombier #define TO 57375
313e12c5d1SDavid du Colombier #define OVER 57376
323e12c5d1SDavid du Colombier #define SQRT 57377
333e12c5d1SDavid du Colombier #define SUP 57378
343e12c5d1SDavid du Colombier #define SUB 57379
353e12c5d1SDavid du Colombier #define SIZE 57380
363e12c5d1SDavid du Colombier #define FONT 57381
373e12c5d1SDavid du Colombier #define ROMAN 57382
383e12c5d1SDavid du Colombier #define ITALIC 57383
393e12c5d1SDavid du Colombier #define BOLD 57384
403e12c5d1SDavid du Colombier #define FAT 57385
413e12c5d1SDavid du Colombier #define UP 57386
423e12c5d1SDavid du Colombier #define DOWN 57387
433e12c5d1SDavid du Colombier #define BACK 57388
443e12c5d1SDavid du Colombier #define FWD 57389
453e12c5d1SDavid du Colombier #define LEFT 57390
463e12c5d1SDavid du Colombier #define RIGHT 57391
473e12c5d1SDavid du Colombier #define DOT 57392
483e12c5d1SDavid du Colombier #define DOTDOT 57393
493e12c5d1SDavid du Colombier #define HAT 57394
503e12c5d1SDavid du Colombier #define TILDE 57395
513e12c5d1SDavid du Colombier #define BAR 57396
523e12c5d1SDavid du Colombier #define LOWBAR 57397
533e12c5d1SDavid du Colombier #define HIGHBAR 57398
543e12c5d1SDavid du Colombier #define UNDER 57399
553e12c5d1SDavid du Colombier #define VEC 57400
563e12c5d1SDavid du Colombier #define DYAD 57401
573e12c5d1SDavid du Colombier #define UTILDE 57402
583e12c5d1SDavid du Colombier
597dd7cddfSDavid du Colombier #line 17 "/sys/src/cmd/eqn/eqn.y"
603e12c5d1SDavid du Colombier #include "e.h"
613e12c5d1SDavid du Colombier
623e12c5d1SDavid du Colombier int yylex(void);
633e12c5d1SDavid du Colombier extern int yyerrflag;
643e12c5d1SDavid du Colombier #ifndef YYMAXDEPTH
653e12c5d1SDavid du Colombier #define YYMAXDEPTH 150
663e12c5d1SDavid du Colombier #endif
673e12c5d1SDavid du Colombier #ifndef YYSTYPE
683e12c5d1SDavid du Colombier #define YYSTYPE int
693e12c5d1SDavid du Colombier #endif
703e12c5d1SDavid du Colombier YYSTYPE yylval;
713e12c5d1SDavid du Colombier YYSTYPE yyval;
72bd389b36SDavid du Colombier #define YYEOFCODE 1
73bd389b36SDavid du Colombier #define YYERRCODE 2
743e12c5d1SDavid du Colombier
757dd7cddfSDavid du Colombier #line 140 "/sys/src/cmd/eqn/eqn.y"
763e12c5d1SDavid du Colombier
773e12c5d1SDavid du Colombier short yyexca[] =
783e12c5d1SDavid du Colombier {-1, 0,
793e12c5d1SDavid du Colombier 1, 3,
803e12c5d1SDavid du Colombier -2, 0,
813e12c5d1SDavid du Colombier -1, 1,
823e12c5d1SDavid du Colombier 1, -1,
833e12c5d1SDavid du Colombier -2, 0,
843e12c5d1SDavid du Colombier };
853e12c5d1SDavid du Colombier #define YYNPROD 90
863e12c5d1SDavid du Colombier #define YYPRIVATE 57344
873e12c5d1SDavid du Colombier #define YYLAST 469
883e12c5d1SDavid du Colombier short yyact[] =
893e12c5d1SDavid du Colombier {
903e12c5d1SDavid du Colombier 4, 103, 119, 45, 27, 118, 104, 2, 102, 41,
913e12c5d1SDavid du Colombier 42, 43, 44, 65, 80, 81, 79, 66, 67, 68,
923e12c5d1SDavid du Colombier 69, 70, 50, 49, 74, 75, 76, 77, 105, 73,
933e12c5d1SDavid du Colombier 40, 80, 81, 80, 81, 114, 61, 64, 54, 62,
943e12c5d1SDavid du Colombier 57, 58, 59, 60, 55, 56, 63, 78, 91, 92,
953e12c5d1SDavid du Colombier 82, 26, 83, 85, 86, 87, 88, 90, 51, 52,
963e12c5d1SDavid du Colombier 48, 124, 50, 49, 117, 25, 45, 117, 72, 71,
973e12c5d1SDavid du Colombier 80, 81, 113, 24, 45, 23, 61, 64, 54, 62,
983e12c5d1SDavid du Colombier 57, 58, 59, 60, 55, 56, 63, 53, 89, 100,
993e12c5d1SDavid du Colombier 84, 22, 96, 95, 106, 107, 108, 109, 99, 110,
1003e12c5d1SDavid du Colombier 111, 41, 42, 43, 44, 45, 98, 115, 21, 94,
1013e12c5d1SDavid du Colombier 93, 18, 130, 123, 17, 116, 121, 46, 112, 125,
1023e12c5d1SDavid du Colombier 127, 128, 1, 129, 126, 0, 0, 45, 8, 7,
1033e12c5d1SDavid du Colombier 9, 10, 11, 28, 41, 42, 43, 44, 0, 16,
1043e12c5d1SDavid du Colombier 47, 12, 34, 13, 14, 15, 61, 64, 54, 62,
1053e12c5d1SDavid du Colombier 57, 58, 59, 60, 55, 56, 63, 0, 0, 20,
1063e12c5d1SDavid du Colombier 0, 0, 29, 33, 30, 31, 32, 19, 37, 39,
1073e12c5d1SDavid du Colombier 38, 36, 35, 0, 0, 0, 0, 0, 0, 0,
1083e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 6, 97, 8, 7, 9,
1093e12c5d1SDavid du Colombier 10, 11, 28, 41, 42, 43, 44, 0, 16, 47,
1103e12c5d1SDavid du Colombier 12, 34, 13, 14, 15, 0, 0, 0, 0, 0,
1113e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 20, 0,
1123e12c5d1SDavid du Colombier 0, 29, 33, 30, 31, 32, 19, 37, 39, 38,
1133e12c5d1SDavid du Colombier 36, 35, 101, 0, 0, 0, 0, 0, 0, 0,
1143e12c5d1SDavid du Colombier 0, 0, 0, 3, 6, 8, 7, 9, 10, 11,
1153e12c5d1SDavid du Colombier 28, 41, 42, 43, 44, 0, 16, 5, 12, 34,
1163e12c5d1SDavid du Colombier 13, 14, 15, 0, 0, 0, 0, 0, 0, 0,
1173e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 20, 0, 0, 29,
1183e12c5d1SDavid du Colombier 33, 30, 31, 32, 19, 37, 39, 38, 36, 35,
1193e12c5d1SDavid du Colombier 0, 0, 8, 7, 9, 10, 11, 28, 41, 42,
1203e12c5d1SDavid du Colombier 43, 44, 6, 16, 47, 12, 34, 13, 14, 15,
1213e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1223e12c5d1SDavid du Colombier 0, 0, 0, 20, 0, 0, 29, 33, 30, 31,
1233e12c5d1SDavid du Colombier 32, 19, 37, 39, 38, 36, 35, 0, 0, 8,
1243e12c5d1SDavid du Colombier 7, 9, 10, 11, 28, 41, 42, 43, 44, 6,
1253e12c5d1SDavid du Colombier 16, 5, 12, 34, 13, 14, 15, 0, 0, 0,
1263e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1273e12c5d1SDavid du Colombier 20, 0, 0, 29, 33, 30, 31, 32, 19, 37,
1283e12c5d1SDavid du Colombier 39, 38, 36, 35, 8, 7, 9, 10, 11, 28,
1293e12c5d1SDavid du Colombier 41, 42, 43, 44, 0, 16, 6, 12, 34, 13,
1303e12c5d1SDavid du Colombier 14, 15, 0, 0, 0, 0, 0, 0, 0, 0,
1313e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 20, 0, 0, 29, 33,
1323e12c5d1SDavid du Colombier 30, 31, 32, 19, 37, 39, 38, 36, 35, 51,
1333e12c5d1SDavid du Colombier 122, 48, 0, 50, 49, 0, 0, 0, 0, 0,
1343e12c5d1SDavid du Colombier 0, 6, 0, 0, 120, 49, 0, 61, 64, 54,
1353e12c5d1SDavid du Colombier 62, 57, 58, 59, 60, 55, 56, 63, 61, 64,
1363e12c5d1SDavid du Colombier 54, 62, 57, 58, 59, 60, 55, 56, 63
1373e12c5d1SDavid du Colombier };
1383e12c5d1SDavid du Colombier short yypact[] =
1393e12c5d1SDavid du Colombier {
1403e12c5d1SDavid du Colombier 241,-1000, 288,-1000, 26,-1000, 335,-1000,-1000,-1000,
1413e12c5d1SDavid du Colombier -1000,-1000,-1000,-1000,-1000,-1000, 380, 380, 380, 380,
1423e12c5d1SDavid du Colombier 380, 32, 335, 380, 380, 380, 380,-1000,-1000, 66,
1433e12c5d1SDavid du Colombier -1000,-1000,-1000, 66,-1000, 29, 66, 66, 66, 66,
1443e12c5d1SDavid du Colombier 27,-1000,-1000,-1000,-1000, 26,-1000, 380, 380,-1000,
1453e12c5d1SDavid du Colombier -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1463e12c5d1SDavid du Colombier -1000,-1000,-1000,-1000,-1000, 124, 26, 96, 96, 96,
1473e12c5d1SDavid du Colombier -14,-1000,-1000, 183, 96, 96, 96, 96, -53,-1000,
1483e12c5d1SDavid du Colombier -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 335,
1493e12c5d1SDavid du Colombier -1000, 26, -14, 380, 380, 380, 380,-1000, 380, 380,
1503e12c5d1SDavid du Colombier -1000, 10, 91, 53, 288, -56, 408, -14, 397, 26,
1513e12c5d1SDavid du Colombier 408, -14,-1000,-1000, -1,-1000,-1000, 335, 335,-1000,
1523e12c5d1SDavid du Colombier 380,-1000, 380,-1000,-1000,-1000, 288, 50, -14, 26,
1533e12c5d1SDavid du Colombier -1000
1543e12c5d1SDavid du Colombier };
1553e12c5d1SDavid du Colombier short yypgo[] =
1563e12c5d1SDavid du Colombier {
1573e12c5d1SDavid du Colombier 0, 122, 6, 0, 117, 2, 116, 114, 111, 110,
1583e12c5d1SDavid du Colombier 109, 108, 106, 98, 93, 92, 91, 89, 87, 75,
1593e12c5d1SDavid du Colombier 73, 65, 51, 4, 47, 35, 16, 30, 1, 28
1603e12c5d1SDavid du Colombier };
1613e12c5d1SDavid du Colombier short yyr1[] =
1623e12c5d1SDavid du Colombier {
1633e12c5d1SDavid du Colombier 0, 1, 1, 1, 2, 2, 2, 2, 4, 5,
1643e12c5d1SDavid du Colombier 5, 6, 6, 3, 3, 3, 3, 3, 3, 3,
1653e12c5d1SDavid du Colombier 3, 3, 3, 3, 3, 3, 3, 3, 3, 9,
1663e12c5d1SDavid du Colombier 3, 10, 3, 12, 3, 13, 3, 3, 14, 3,
1673e12c5d1SDavid du Colombier 15, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1683e12c5d1SDavid du Colombier 24, 3, 11, 19, 20, 21, 22, 18, 18, 18,
1693e12c5d1SDavid du Colombier 18, 18, 18, 18, 18, 18, 18, 18, 16, 16,
1703e12c5d1SDavid du Colombier 17, 17, 25, 25, 23, 29, 23, 27, 27, 27,
1713e12c5d1SDavid du Colombier 27, 28, 28, 7, 8, 8, 8, 8, 26, 26
1723e12c5d1SDavid du Colombier };
1733e12c5d1SDavid du Colombier short yyr2[] =
1743e12c5d1SDavid du Colombier {
1753e12c5d1SDavid du Colombier 0, 1, 1, 0, 1, 2, 2, 1, 2, 2,
1763e12c5d1SDavid du Colombier 0, 2, 0, 3, 1, 1, 1, 1, 1, 1,
1773e12c5d1SDavid du Colombier 1, 1, 1, 3, 2, 2, 2, 2, 2, 0,
1783e12c5d1SDavid du Colombier 5, 0, 4, 0, 5, 0, 4, 1, 0, 5,
1793e12c5d1SDavid du Colombier 0, 4, 3, 2, 2, 2, 2, 2, 2, 1,
1803e12c5d1SDavid du Colombier 0, 5, 1, 2, 2, 2, 2, 1, 1, 1,
1813e12c5d1SDavid du Colombier 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
1823e12c5d1SDavid du Colombier 2, 2, 1, 2, 4, 0, 6, 1, 1, 1,
1833e12c5d1SDavid du Colombier 1, 1, 3, 2, 1, 1, 1, 2, 1, 1
1843e12c5d1SDavid du Colombier };
1853e12c5d1SDavid du Colombier short yychk[] =
1863e12c5d1SDavid du Colombier {
1873e12c5d1SDavid du Colombier -1000, -1, -2, 2, -3, 16, 61, 5, 4, 6,
1883e12c5d1SDavid du Colombier 7, 8, 17, 19, 20, 21, 15, -7, -8, 43,
1893e12c5d1SDavid du Colombier 35, -11, -16, -19, -20, -21, -22, -23, 9, 38,
1903e12c5d1SDavid du Colombier 40, 41, 42, 39, 18, 48, 47, 44, 46, 45,
1913e12c5d1SDavid du Colombier -27, 10, 11, 12, 13, -3, -4, 16, 34, 37,
1923e12c5d1SDavid du Colombier 36, 32, 33, -18, 52, 58, 59, 54, 55, 56,
1933e12c5d1SDavid du Colombier 57, 50, 53, 60, 51, -2, -3, -3, -3, -3,
1943e12c5d1SDavid du Colombier -3, 37, 36, -2, -3, -3, -3, -3, -24, -26,
1953e12c5d1SDavid du Colombier 4, 5, -26, -26, 61, -26, -26, -26, -26, 61,
1963e12c5d1SDavid du Colombier -26, -3, -3, -9, -10, -14, -15, 62, -12, -13,
1973e12c5d1SDavid du Colombier -17, 49, 61, -28, -2, -29, -3, -3, -3, -3,
1983e12c5d1SDavid du Colombier -3, -3, -26, 62, -25, -23, 62, 14, 61, -5,
1993e12c5d1SDavid du Colombier 36, -6, 33, -5, 62, -23, -2, -28, -3, -3,
2003e12c5d1SDavid du Colombier 62
2013e12c5d1SDavid du Colombier };
2023e12c5d1SDavid du Colombier short yydef[] =
2033e12c5d1SDavid du Colombier {
2043e12c5d1SDavid du Colombier -2, -2, 1, 2, 4, 7, 0, 14, 15, 16,
2053e12c5d1SDavid du Colombier 17, 18, 19, 20, 21, 22, 0, 0, 0, 0,
2063e12c5d1SDavid du Colombier 0, 37, 0, 0, 0, 0, 0, 49, 50, 0,
2073e12c5d1SDavid du Colombier 84, 85, 86, 0, 52, 0, 0, 0, 0, 0,
2083e12c5d1SDavid du Colombier 0, 77, 78, 79, 80, 5, 6, 0, 0, 29,
2093e12c5d1SDavid du Colombier 31, 38, 40, 44, 57, 58, 59, 60, 61, 62,
2103e12c5d1SDavid du Colombier 63, 64, 65, 66, 67, 0, 24, 25, 26, 27,
2113e12c5d1SDavid du Colombier 28, 33, 35, 43, 45, 46, 47, 48, 0, 83,
2123e12c5d1SDavid du Colombier 88, 89, 87, 68, 69, 53, 54, 55, 56, 0,
2133e12c5d1SDavid du Colombier 75, 8, 23, 0, 0, 0, 0, 13, 0, 0,
2143e12c5d1SDavid du Colombier 42, 0, 0, 0, 81, 0, 10, 32, 12, 41,
2153e12c5d1SDavid du Colombier 10, 36, 70, 71, 0, 72, 74, 0, 0, 30,
2163e12c5d1SDavid du Colombier 0, 39, 0, 34, 51, 73, 82, 0, 9, 11,
2173e12c5d1SDavid du Colombier 76
2183e12c5d1SDavid du Colombier };
2193e12c5d1SDavid du Colombier short yytok1[] =
2203e12c5d1SDavid du Colombier {
2213e12c5d1SDavid du Colombier 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2243e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2283e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2293e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2303e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2313e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2323e12c5d1SDavid du Colombier 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2333e12c5d1SDavid du Colombier 0, 0, 0, 61, 0, 62
2343e12c5d1SDavid du Colombier };
2353e12c5d1SDavid du Colombier short yytok2[] =
2363e12c5d1SDavid du Colombier {
2373e12c5d1SDavid du Colombier 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
2383e12c5d1SDavid du Colombier 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
2393e12c5d1SDavid du Colombier 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2403e12c5d1SDavid du Colombier 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
2413e12c5d1SDavid du Colombier 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
2423e12c5d1SDavid du Colombier 52, 53, 54, 55, 56, 57, 58, 59, 60
2433e12c5d1SDavid du Colombier };
2443e12c5d1SDavid du Colombier long yytok3[] =
2453e12c5d1SDavid du Colombier {
2463e12c5d1SDavid du Colombier 0
2473e12c5d1SDavid du Colombier };
2483e12c5d1SDavid du Colombier #define YYFLAG -1000
2493e12c5d1SDavid du Colombier #define YYERROR goto yyerrlab
2503e12c5d1SDavid du Colombier #define YYACCEPT return(0)
2513e12c5d1SDavid du Colombier #define YYABORT return(1)
2523e12c5d1SDavid du Colombier #define yyclearin yychar = -1
2533e12c5d1SDavid du Colombier #define yyerrok yyerrflag = 0
2543e12c5d1SDavid du Colombier
2553e12c5d1SDavid du Colombier #ifdef yydebug
2563e12c5d1SDavid du Colombier #include "y.debug"
2573e12c5d1SDavid du Colombier #else
2583e12c5d1SDavid du Colombier #define yydebug 0
2597dd7cddfSDavid du Colombier char* yytoknames[1]; /* for debugging */
2607dd7cddfSDavid du Colombier char* yystates[1]; /* for debugging */
2613e12c5d1SDavid du Colombier #endif
2623e12c5d1SDavid du Colombier
2633e12c5d1SDavid du Colombier /* parser for yacc output */
2643e12c5d1SDavid du Colombier
2653e12c5d1SDavid du Colombier int yynerrs = 0; /* number of errors */
2663e12c5d1SDavid du Colombier int yyerrflag = 0; /* error recovery flag */
2673e12c5d1SDavid du Colombier
2683e12c5d1SDavid du Colombier char*
yytokname(int yyc)2693e12c5d1SDavid du Colombier yytokname(int yyc)
2703e12c5d1SDavid du Colombier {
271*5e91980fSDavid du Colombier static char x[16];
2723e12c5d1SDavid du Colombier
2733e12c5d1SDavid du Colombier if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
2743e12c5d1SDavid du Colombier if(yytoknames[yyc-1])
2753e12c5d1SDavid du Colombier return yytoknames[yyc-1];
2763e12c5d1SDavid du Colombier sprintf(x, "<%d>", yyc);
2773e12c5d1SDavid du Colombier return x;
2783e12c5d1SDavid du Colombier }
2793e12c5d1SDavid du Colombier
2803e12c5d1SDavid du Colombier char*
yystatname(int yys)2813e12c5d1SDavid du Colombier yystatname(int yys)
2823e12c5d1SDavid du Colombier {
283*5e91980fSDavid du Colombier static char x[16];
2843e12c5d1SDavid du Colombier
2853e12c5d1SDavid du Colombier if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
2863e12c5d1SDavid du Colombier if(yystates[yys])
2873e12c5d1SDavid du Colombier return yystates[yys];
2883e12c5d1SDavid du Colombier sprintf(x, "<%d>\n", yys);
2893e12c5d1SDavid du Colombier return x;
2903e12c5d1SDavid du Colombier }
2913e12c5d1SDavid du Colombier
2923e12c5d1SDavid du Colombier long
yylex1(void)2933e12c5d1SDavid du Colombier yylex1(void)
2943e12c5d1SDavid du Colombier {
2953e12c5d1SDavid du Colombier long yychar;
2963e12c5d1SDavid du Colombier long *t3p;
2973e12c5d1SDavid du Colombier int c;
2983e12c5d1SDavid du Colombier
2993e12c5d1SDavid du Colombier yychar = yylex();
3003e12c5d1SDavid du Colombier if(yychar <= 0) {
3013e12c5d1SDavid du Colombier c = yytok1[0];
3023e12c5d1SDavid du Colombier goto out;
3033e12c5d1SDavid du Colombier }
304219b2ee8SDavid du Colombier if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
3053e12c5d1SDavid du Colombier c = yytok1[yychar];
3063e12c5d1SDavid du Colombier goto out;
3073e12c5d1SDavid du Colombier }
3083e12c5d1SDavid du Colombier if(yychar >= YYPRIVATE)
3093e12c5d1SDavid du Colombier if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
3103e12c5d1SDavid du Colombier c = yytok2[yychar-YYPRIVATE];
3113e12c5d1SDavid du Colombier goto out;
3123e12c5d1SDavid du Colombier }
3133e12c5d1SDavid du Colombier for(t3p=yytok3;; t3p+=2) {
3143e12c5d1SDavid du Colombier c = t3p[0];
3153e12c5d1SDavid du Colombier if(c == yychar) {
3163e12c5d1SDavid du Colombier c = t3p[1];
3173e12c5d1SDavid du Colombier goto out;
3183e12c5d1SDavid du Colombier }
3193e12c5d1SDavid du Colombier if(c == 0)
3203e12c5d1SDavid du Colombier break;
3213e12c5d1SDavid du Colombier }
322bd389b36SDavid du Colombier c = 0;
3233e12c5d1SDavid du Colombier
3243e12c5d1SDavid du Colombier out:
325bd389b36SDavid du Colombier if(c == 0)
326bd389b36SDavid du Colombier c = yytok2[1]; /* unknown char */
3273e12c5d1SDavid du Colombier if(yydebug >= 3)
328dc5a79c1SDavid du Colombier printf("lex %.4lX %s\n", yychar, yytokname(c));
3293e12c5d1SDavid du Colombier return c;
3303e12c5d1SDavid du Colombier }
3313e12c5d1SDavid du Colombier
3323e12c5d1SDavid du Colombier int
yyparse(void)3333e12c5d1SDavid du Colombier yyparse(void)
3343e12c5d1SDavid du Colombier {
3353e12c5d1SDavid du Colombier struct
3363e12c5d1SDavid du Colombier {
3373e12c5d1SDavid du Colombier YYSTYPE yyv;
3383e12c5d1SDavid du Colombier int yys;
3393e12c5d1SDavid du Colombier } yys[YYMAXDEPTH], *yyp, *yypt;
3403e12c5d1SDavid du Colombier short *yyxi;
3413e12c5d1SDavid du Colombier int yyj, yym, yystate, yyn, yyg;
342219b2ee8SDavid du Colombier YYSTYPE save1, save2;
343219b2ee8SDavid du Colombier int save3, save4;
3447dd7cddfSDavid du Colombier long yychar;
345219b2ee8SDavid du Colombier
346219b2ee8SDavid du Colombier save1 = yylval;
347219b2ee8SDavid du Colombier save2 = yyval;
348219b2ee8SDavid du Colombier save3 = yynerrs;
349219b2ee8SDavid du Colombier save4 = yyerrflag;
3503e12c5d1SDavid du Colombier
3513e12c5d1SDavid du Colombier yystate = 0;
3523e12c5d1SDavid du Colombier yychar = -1;
3533e12c5d1SDavid du Colombier yynerrs = 0;
3543e12c5d1SDavid du Colombier yyerrflag = 0;
3553e12c5d1SDavid du Colombier yyp = &yys[-1];
356219b2ee8SDavid du Colombier goto yystack;
357219b2ee8SDavid du Colombier
358219b2ee8SDavid du Colombier ret0:
359219b2ee8SDavid du Colombier yyn = 0;
360219b2ee8SDavid du Colombier goto ret;
361219b2ee8SDavid du Colombier
362219b2ee8SDavid du Colombier ret1:
363219b2ee8SDavid du Colombier yyn = 1;
364219b2ee8SDavid du Colombier goto ret;
365219b2ee8SDavid du Colombier
366219b2ee8SDavid du Colombier ret:
367219b2ee8SDavid du Colombier yylval = save1;
368219b2ee8SDavid du Colombier yyval = save2;
369219b2ee8SDavid du Colombier yynerrs = save3;
370219b2ee8SDavid du Colombier yyerrflag = save4;
371219b2ee8SDavid du Colombier return yyn;
3723e12c5d1SDavid du Colombier
3733e12c5d1SDavid du Colombier yystack:
3743e12c5d1SDavid du Colombier /* put a state and value onto the stack */
3753e12c5d1SDavid du Colombier if(yydebug >= 4)
3763e12c5d1SDavid du Colombier printf("char %s in %s", yytokname(yychar), yystatname(yystate));
3773e12c5d1SDavid du Colombier
3783e12c5d1SDavid du Colombier yyp++;
3793e12c5d1SDavid du Colombier if(yyp >= &yys[YYMAXDEPTH]) {
3803e12c5d1SDavid du Colombier yyerror("yacc stack overflow");
381219b2ee8SDavid du Colombier goto ret1;
3823e12c5d1SDavid du Colombier }
3833e12c5d1SDavid du Colombier yyp->yys = yystate;
3843e12c5d1SDavid du Colombier yyp->yyv = yyval;
3853e12c5d1SDavid du Colombier
3863e12c5d1SDavid du Colombier yynewstate:
3873e12c5d1SDavid du Colombier yyn = yypact[yystate];
3883e12c5d1SDavid du Colombier if(yyn <= YYFLAG)
3893e12c5d1SDavid du Colombier goto yydefault; /* simple state */
3903e12c5d1SDavid du Colombier if(yychar < 0)
3913e12c5d1SDavid du Colombier yychar = yylex1();
3923e12c5d1SDavid du Colombier yyn += yychar;
3933e12c5d1SDavid du Colombier if(yyn < 0 || yyn >= YYLAST)
3943e12c5d1SDavid du Colombier goto yydefault;
3953e12c5d1SDavid du Colombier yyn = yyact[yyn];
3963e12c5d1SDavid du Colombier if(yychk[yyn] == yychar) { /* valid shift */
3973e12c5d1SDavid du Colombier yychar = -1;
3983e12c5d1SDavid du Colombier yyval = yylval;
3993e12c5d1SDavid du Colombier yystate = yyn;
4003e12c5d1SDavid du Colombier if(yyerrflag > 0)
4013e12c5d1SDavid du Colombier yyerrflag--;
4023e12c5d1SDavid du Colombier goto yystack;
4033e12c5d1SDavid du Colombier }
4043e12c5d1SDavid du Colombier
4053e12c5d1SDavid du Colombier yydefault:
4063e12c5d1SDavid du Colombier /* default state action */
4073e12c5d1SDavid du Colombier yyn = yydef[yystate];
4083e12c5d1SDavid du Colombier if(yyn == -2) {
4093e12c5d1SDavid du Colombier if(yychar < 0)
4103e12c5d1SDavid du Colombier yychar = yylex1();
4113e12c5d1SDavid du Colombier
4123e12c5d1SDavid du Colombier /* look through exception table */
4133e12c5d1SDavid du Colombier for(yyxi=yyexca;; yyxi+=2)
4143e12c5d1SDavid du Colombier if(yyxi[0] == -1 && yyxi[1] == yystate)
4153e12c5d1SDavid du Colombier break;
4163e12c5d1SDavid du Colombier for(yyxi += 2;; yyxi += 2) {
4173e12c5d1SDavid du Colombier yyn = yyxi[0];
4183e12c5d1SDavid du Colombier if(yyn < 0 || yyn == yychar)
4193e12c5d1SDavid du Colombier break;
4203e12c5d1SDavid du Colombier }
4213e12c5d1SDavid du Colombier yyn = yyxi[1];
4223e12c5d1SDavid du Colombier if(yyn < 0)
423219b2ee8SDavid du Colombier goto ret0;
4243e12c5d1SDavid du Colombier }
4253e12c5d1SDavid du Colombier if(yyn == 0) {
4263e12c5d1SDavid du Colombier /* error ... attempt to resume parsing */
4273e12c5d1SDavid du Colombier switch(yyerrflag) {
4283e12c5d1SDavid du Colombier case 0: /* brand new error */
4293e12c5d1SDavid du Colombier yyerror("syntax error");
4303e12c5d1SDavid du Colombier if(yydebug >= 1) {
4313e12c5d1SDavid du Colombier printf("%s", yystatname(yystate));
4323e12c5d1SDavid du Colombier printf("saw %s\n", yytokname(yychar));
4333e12c5d1SDavid du Colombier }
434bd389b36SDavid du Colombier yyerrlab:
4353e12c5d1SDavid du Colombier yynerrs++;
4363e12c5d1SDavid du Colombier
4373e12c5d1SDavid du Colombier case 1:
4383e12c5d1SDavid du Colombier case 2: /* incompletely recovered error ... try again */
4393e12c5d1SDavid du Colombier yyerrflag = 3;
4403e12c5d1SDavid du Colombier
4413e12c5d1SDavid du Colombier /* find a state where "error" is a legal shift action */
4423e12c5d1SDavid du Colombier while(yyp >= yys) {
4433e12c5d1SDavid du Colombier yyn = yypact[yyp->yys] + YYERRCODE;
4443e12c5d1SDavid du Colombier if(yyn >= 0 && yyn < YYLAST) {
4453e12c5d1SDavid du Colombier yystate = yyact[yyn]; /* simulate a shift of "error" */
4463e12c5d1SDavid du Colombier if(yychk[yystate] == YYERRCODE)
4473e12c5d1SDavid du Colombier goto yystack;
4483e12c5d1SDavid du Colombier }
4493e12c5d1SDavid du Colombier
4503e12c5d1SDavid du Colombier /* the current yyp has no shift onn "error", pop stack */
4513e12c5d1SDavid du Colombier if(yydebug >= 2)
4523e12c5d1SDavid du Colombier printf("error recovery pops state %d, uncovers %d\n",
4533e12c5d1SDavid du Colombier yyp->yys, (yyp-1)->yys );
4543e12c5d1SDavid du Colombier yyp--;
4553e12c5d1SDavid du Colombier }
4563e12c5d1SDavid du Colombier /* there is no state on the stack with an error shift ... abort */
457219b2ee8SDavid du Colombier goto ret1;
4583e12c5d1SDavid du Colombier
4593e12c5d1SDavid du Colombier case 3: /* no shift yet; clobber input char */
460bd389b36SDavid du Colombier if(yydebug >= YYEOFCODE)
4613e12c5d1SDavid du Colombier printf("error recovery discards %s\n", yytokname(yychar));
4627dd7cddfSDavid du Colombier if(yychar == YYEOFCODE)
463219b2ee8SDavid du Colombier goto ret1;
4643e12c5d1SDavid du Colombier yychar = -1;
4653e12c5d1SDavid du Colombier goto yynewstate; /* try again in the same state */
4663e12c5d1SDavid du Colombier }
4673e12c5d1SDavid du Colombier }
4683e12c5d1SDavid du Colombier
4693e12c5d1SDavid du Colombier /* reduction by production yyn */
4703e12c5d1SDavid du Colombier if(yydebug >= 2)
4713e12c5d1SDavid du Colombier printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));
4723e12c5d1SDavid du Colombier
4733e12c5d1SDavid du Colombier yypt = yyp;
4743e12c5d1SDavid du Colombier yyp -= yyr2[yyn];
4753e12c5d1SDavid du Colombier yyval = (yyp+1)->yyv;
4763e12c5d1SDavid du Colombier yym = yyn;
4773e12c5d1SDavid du Colombier
4783e12c5d1SDavid du Colombier /* consult goto table to find next state */
4793e12c5d1SDavid du Colombier yyn = yyr1[yyn];
4803e12c5d1SDavid du Colombier yyg = yypgo[yyn];
4813e12c5d1SDavid du Colombier yyj = yyg + yyp->yys + 1;
4823e12c5d1SDavid du Colombier
4833e12c5d1SDavid du Colombier if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
4843e12c5d1SDavid du Colombier yystate = yyact[yyg];
4853e12c5d1SDavid du Colombier switch(yym) {
4863e12c5d1SDavid du Colombier
4873e12c5d1SDavid du Colombier case 1:
4887dd7cddfSDavid du Colombier #line 24 "/sys/src/cmd/eqn/eqn.y"
4893e12c5d1SDavid du Colombier { putout(yypt[-0].yyv); } break;
4903e12c5d1SDavid du Colombier case 2:
4917dd7cddfSDavid du Colombier #line 25 "/sys/src/cmd/eqn/eqn.y"
4923e12c5d1SDavid du Colombier { ERROR "syntax error" WARNING; } break;
4933e12c5d1SDavid du Colombier case 3:
4947dd7cddfSDavid du Colombier #line 26 "/sys/src/cmd/eqn/eqn.y"
4953e12c5d1SDavid du Colombier { eqnreg = 0; } break;
4963e12c5d1SDavid du Colombier case 5:
4977dd7cddfSDavid du Colombier #line 30 "/sys/src/cmd/eqn/eqn.y"
4983e12c5d1SDavid du Colombier { eqnbox(yypt[-1].yyv, yypt[-0].yyv, 0); } break;
4993e12c5d1SDavid du Colombier case 6:
5007dd7cddfSDavid du Colombier #line 31 "/sys/src/cmd/eqn/eqn.y"
5013e12c5d1SDavid du Colombier { eqnbox(yypt[-1].yyv, yypt[-0].yyv, 1); } break;
5023e12c5d1SDavid du Colombier case 7:
5037dd7cddfSDavid du Colombier #line 32 "/sys/src/cmd/eqn/eqn.y"
5043e12c5d1SDavid du Colombier { lineup(0); } break;
5053e12c5d1SDavid du Colombier case 8:
5067dd7cddfSDavid du Colombier #line 35 "/sys/src/cmd/eqn/eqn.y"
5073e12c5d1SDavid du Colombier { yyval = yypt[-0].yyv; lineup(1); } break;
5083e12c5d1SDavid du Colombier case 9:
5097dd7cddfSDavid du Colombier #line 38 "/sys/src/cmd/eqn/eqn.y"
5103e12c5d1SDavid du Colombier { yyval = yypt[-0].yyv; } break;
5113e12c5d1SDavid du Colombier case 10:
5127dd7cddfSDavid du Colombier #line 39 "/sys/src/cmd/eqn/eqn.y"
5133e12c5d1SDavid du Colombier { yyval = 0; } break;
5143e12c5d1SDavid du Colombier case 11:
5157dd7cddfSDavid du Colombier #line 42 "/sys/src/cmd/eqn/eqn.y"
5163e12c5d1SDavid du Colombier { yyval = yypt[-0].yyv; } break;
5173e12c5d1SDavid du Colombier case 12:
5187dd7cddfSDavid du Colombier #line 43 "/sys/src/cmd/eqn/eqn.y"
5193e12c5d1SDavid du Colombier { yyval = 0; } break;
5203e12c5d1SDavid du Colombier case 13:
5217dd7cddfSDavid du Colombier #line 46 "/sys/src/cmd/eqn/eqn.y"
5223e12c5d1SDavid du Colombier { yyval = yypt[-1].yyv; } break;
5233e12c5d1SDavid du Colombier case 14:
5247dd7cddfSDavid du Colombier #line 47 "/sys/src/cmd/eqn/eqn.y"
5253e12c5d1SDavid du Colombier { text(QTEXT, (char *) yypt[-0].yyv); } break;
5263e12c5d1SDavid du Colombier case 15:
5277dd7cddfSDavid du Colombier #line 48 "/sys/src/cmd/eqn/eqn.y"
5283e12c5d1SDavid du Colombier { text(CONTIG, (char *) yypt[-0].yyv); } break;
5293e12c5d1SDavid du Colombier case 16:
5307dd7cddfSDavid du Colombier #line 49 "/sys/src/cmd/eqn/eqn.y"
5313e12c5d1SDavid du Colombier { text(SPACE, (char *) 0); } break;
5323e12c5d1SDavid du Colombier case 17:
5337dd7cddfSDavid du Colombier #line 50 "/sys/src/cmd/eqn/eqn.y"
5343e12c5d1SDavid du Colombier { text(THIN, (char *) 0); } break;
5353e12c5d1SDavid du Colombier case 18:
5367dd7cddfSDavid du Colombier #line 51 "/sys/src/cmd/eqn/eqn.y"
5373e12c5d1SDavid du Colombier { text(TAB, (char *) 0); } break;
5383e12c5d1SDavid du Colombier case 19:
5397dd7cddfSDavid du Colombier #line 52 "/sys/src/cmd/eqn/eqn.y"
5403e12c5d1SDavid du Colombier { funny(SUM); } break;
5413e12c5d1SDavid du Colombier case 20:
5427dd7cddfSDavid du Colombier #line 53 "/sys/src/cmd/eqn/eqn.y"
5433e12c5d1SDavid du Colombier { funny(PROD); } break;
5443e12c5d1SDavid du Colombier case 21:
5457dd7cddfSDavid du Colombier #line 54 "/sys/src/cmd/eqn/eqn.y"
5463e12c5d1SDavid du Colombier { funny(UNION); } break;
5473e12c5d1SDavid du Colombier case 22:
5487dd7cddfSDavid du Colombier #line 55 "/sys/src/cmd/eqn/eqn.y"
5493e12c5d1SDavid du Colombier { funny(INTER); } break;
5503e12c5d1SDavid du Colombier case 23:
5517dd7cddfSDavid du Colombier #line 56 "/sys/src/cmd/eqn/eqn.y"
5523e12c5d1SDavid du Colombier { boverb(yypt[-2].yyv, yypt[-0].yyv); } break;
5533e12c5d1SDavid du Colombier case 24:
5547dd7cddfSDavid du Colombier #line 57 "/sys/src/cmd/eqn/eqn.y"
5553e12c5d1SDavid du Colombier { mark(yypt[-0].yyv); } break;
5563e12c5d1SDavid du Colombier case 25:
5577dd7cddfSDavid du Colombier #line 58 "/sys/src/cmd/eqn/eqn.y"
5583e12c5d1SDavid du Colombier { size(yypt[-1].yyv, yypt[-0].yyv); } break;
5593e12c5d1SDavid du Colombier case 26:
5607dd7cddfSDavid du Colombier #line 59 "/sys/src/cmd/eqn/eqn.y"
5613e12c5d1SDavid du Colombier { font(yypt[-1].yyv, yypt[-0].yyv); } break;
5623e12c5d1SDavid du Colombier case 27:
5637dd7cddfSDavid du Colombier #line 60 "/sys/src/cmd/eqn/eqn.y"
5643e12c5d1SDavid du Colombier { fatbox(yypt[-0].yyv); } break;
5653e12c5d1SDavid du Colombier case 28:
5667dd7cddfSDavid du Colombier #line 61 "/sys/src/cmd/eqn/eqn.y"
5673e12c5d1SDavid du Colombier { sqrt(yypt[-0].yyv); } break;
5683e12c5d1SDavid du Colombier case 29:
5697dd7cddfSDavid du Colombier #line 62 "/sys/src/cmd/eqn/eqn.y"
5703e12c5d1SDavid du Colombier {ps -= deltaps;} break;
5713e12c5d1SDavid du Colombier case 30:
5727dd7cddfSDavid du Colombier #line 62 "/sys/src/cmd/eqn/eqn.y"
5733e12c5d1SDavid du Colombier { subsup(yypt[-4].yyv, yypt[-1].yyv, yypt[-0].yyv); } break;
5743e12c5d1SDavid du Colombier case 31:
5757dd7cddfSDavid du Colombier #line 63 "/sys/src/cmd/eqn/eqn.y"
5763e12c5d1SDavid du Colombier {ps -= deltaps;} break;
5773e12c5d1SDavid du Colombier case 32:
5787dd7cddfSDavid du Colombier #line 63 "/sys/src/cmd/eqn/eqn.y"
5793e12c5d1SDavid du Colombier { subsup(yypt[-3].yyv, 0, yypt[-0].yyv); } break;
5803e12c5d1SDavid du Colombier case 33:
5817dd7cddfSDavid du Colombier #line 64 "/sys/src/cmd/eqn/eqn.y"
5823e12c5d1SDavid du Colombier {ps -= deltaps;} break;
5833e12c5d1SDavid du Colombier case 34:
5847dd7cddfSDavid du Colombier #line 64 "/sys/src/cmd/eqn/eqn.y"
5853e12c5d1SDavid du Colombier { integral(yypt[-4].yyv, yypt[-1].yyv, yypt[-0].yyv); } break;
5863e12c5d1SDavid du Colombier case 35:
5877dd7cddfSDavid du Colombier #line 65 "/sys/src/cmd/eqn/eqn.y"
5883e12c5d1SDavid du Colombier {ps -= deltaps;} break;
5893e12c5d1SDavid du Colombier case 36:
5907dd7cddfSDavid du Colombier #line 65 "/sys/src/cmd/eqn/eqn.y"
5913e12c5d1SDavid du Colombier { integral(yypt[-3].yyv, 0, yypt[-0].yyv); } break;
5923e12c5d1SDavid du Colombier case 37:
5937dd7cddfSDavid du Colombier #line 66 "/sys/src/cmd/eqn/eqn.y"
5943e12c5d1SDavid du Colombier { integral(yypt[-0].yyv, 0, 0); } break;
5953e12c5d1SDavid du Colombier case 38:
5967dd7cddfSDavid du Colombier #line 67 "/sys/src/cmd/eqn/eqn.y"
5973e12c5d1SDavid du Colombier {ps -= deltaps;} break;
5983e12c5d1SDavid du Colombier case 39:
5997dd7cddfSDavid du Colombier #line 67 "/sys/src/cmd/eqn/eqn.y"
6003e12c5d1SDavid du Colombier { fromto(yypt[-4].yyv, yypt[-1].yyv, yypt[-0].yyv); } break;
6013e12c5d1SDavid du Colombier case 40:
6027dd7cddfSDavid du Colombier #line 68 "/sys/src/cmd/eqn/eqn.y"
6033e12c5d1SDavid du Colombier {ps -= deltaps;} break;
6043e12c5d1SDavid du Colombier case 41:
6057dd7cddfSDavid du Colombier #line 68 "/sys/src/cmd/eqn/eqn.y"
6063e12c5d1SDavid du Colombier { fromto(yypt[-3].yyv, 0, yypt[-0].yyv); } break;
6073e12c5d1SDavid du Colombier case 42:
6087dd7cddfSDavid du Colombier #line 69 "/sys/src/cmd/eqn/eqn.y"
6093e12c5d1SDavid du Colombier { paren(yypt[-2].yyv, yypt[-1].yyv, yypt[-0].yyv); } break;
6103e12c5d1SDavid du Colombier case 43:
6117dd7cddfSDavid du Colombier #line 70 "/sys/src/cmd/eqn/eqn.y"
6123e12c5d1SDavid du Colombier { paren(yypt[-1].yyv, yypt[-0].yyv, 0); } break;
6133e12c5d1SDavid du Colombier case 44:
6147dd7cddfSDavid du Colombier #line 71 "/sys/src/cmd/eqn/eqn.y"
6153e12c5d1SDavid du Colombier { diacrit(yypt[-1].yyv, yypt[-0].yyv); } break;
6163e12c5d1SDavid du Colombier case 45:
6177dd7cddfSDavid du Colombier #line 72 "/sys/src/cmd/eqn/eqn.y"
6183e12c5d1SDavid du Colombier { move(FWD, yypt[-1].yyv, yypt[-0].yyv); } break;
6193e12c5d1SDavid du Colombier case 46:
6207dd7cddfSDavid du Colombier #line 73 "/sys/src/cmd/eqn/eqn.y"
6213e12c5d1SDavid du Colombier { move(UP, yypt[-1].yyv, yypt[-0].yyv); } break;
6223e12c5d1SDavid du Colombier case 47:
6237dd7cddfSDavid du Colombier #line 74 "/sys/src/cmd/eqn/eqn.y"
6243e12c5d1SDavid du Colombier { move(BACK, yypt[-1].yyv, yypt[-0].yyv); } break;
6253e12c5d1SDavid du Colombier case 48:
6267dd7cddfSDavid du Colombier #line 75 "/sys/src/cmd/eqn/eqn.y"
6273e12c5d1SDavid du Colombier { move(DOWN, yypt[-1].yyv, yypt[-0].yyv); } break;
6283e12c5d1SDavid du Colombier case 49:
6297dd7cddfSDavid du Colombier #line 76 "/sys/src/cmd/eqn/eqn.y"
6303e12c5d1SDavid du Colombier { pile(yypt[-0].yyv); ct = yypt[-0].yyv; } break;
6313e12c5d1SDavid du Colombier case 50:
6327dd7cddfSDavid du Colombier #line 77 "/sys/src/cmd/eqn/eqn.y"
6333e12c5d1SDavid du Colombier {yyval=ct;} break;
6343e12c5d1SDavid du Colombier case 51:
6357dd7cddfSDavid du Colombier #line 77 "/sys/src/cmd/eqn/eqn.y"
6363e12c5d1SDavid du Colombier { matrix(yypt[-3].yyv); ct = yypt[-3].yyv; } break;
6373e12c5d1SDavid du Colombier case 52:
6387dd7cddfSDavid du Colombier #line 80 "/sys/src/cmd/eqn/eqn.y"
6393e12c5d1SDavid du Colombier { setintegral(); } break;
6403e12c5d1SDavid du Colombier case 53:
6417dd7cddfSDavid du Colombier #line 83 "/sys/src/cmd/eqn/eqn.y"
6423e12c5d1SDavid du Colombier { yyval = atoi((char *) yypt[-1].yyv); } break;
6433e12c5d1SDavid du Colombier case 54:
6447dd7cddfSDavid du Colombier #line 84 "/sys/src/cmd/eqn/eqn.y"
6453e12c5d1SDavid du Colombier { yyval = atoi((char *) yypt[-1].yyv); } break;
6463e12c5d1SDavid du Colombier case 55:
6477dd7cddfSDavid du Colombier #line 85 "/sys/src/cmd/eqn/eqn.y"
6483e12c5d1SDavid du Colombier { yyval = atoi((char *) yypt[-1].yyv); } break;
6493e12c5d1SDavid du Colombier case 56:
6507dd7cddfSDavid du Colombier #line 86 "/sys/src/cmd/eqn/eqn.y"
6513e12c5d1SDavid du Colombier { yyval = atoi((char *) yypt[-1].yyv); } break;
6523e12c5d1SDavid du Colombier case 57:
6537dd7cddfSDavid du Colombier #line 88 "/sys/src/cmd/eqn/eqn.y"
6543e12c5d1SDavid du Colombier { yyval = HAT; } break;
6553e12c5d1SDavid du Colombier case 58:
6567dd7cddfSDavid du Colombier #line 89 "/sys/src/cmd/eqn/eqn.y"
6573e12c5d1SDavid du Colombier { yyval = VEC; } break;
6583e12c5d1SDavid du Colombier case 59:
6597dd7cddfSDavid du Colombier #line 90 "/sys/src/cmd/eqn/eqn.y"
6603e12c5d1SDavid du Colombier { yyval = DYAD; } break;
6613e12c5d1SDavid du Colombier case 60:
6627dd7cddfSDavid du Colombier #line 91 "/sys/src/cmd/eqn/eqn.y"
6633e12c5d1SDavid du Colombier { yyval = BAR; } break;
6643e12c5d1SDavid du Colombier case 61:
6657dd7cddfSDavid du Colombier #line 92 "/sys/src/cmd/eqn/eqn.y"
6663e12c5d1SDavid du Colombier { yyval = LOWBAR; } break;
6673e12c5d1SDavid du Colombier case 62:
6687dd7cddfSDavid du Colombier #line 93 "/sys/src/cmd/eqn/eqn.y"
6693e12c5d1SDavid du Colombier { yyval = HIGHBAR; } break;
6703e12c5d1SDavid du Colombier case 63:
6717dd7cddfSDavid du Colombier #line 94 "/sys/src/cmd/eqn/eqn.y"
6723e12c5d1SDavid du Colombier { yyval = UNDER; } break;
6733e12c5d1SDavid du Colombier case 64:
6747dd7cddfSDavid du Colombier #line 95 "/sys/src/cmd/eqn/eqn.y"
6753e12c5d1SDavid du Colombier { yyval = DOT; } break;
6763e12c5d1SDavid du Colombier case 65:
6777dd7cddfSDavid du Colombier #line 96 "/sys/src/cmd/eqn/eqn.y"
6783e12c5d1SDavid du Colombier { yyval = TILDE; } break;
6793e12c5d1SDavid du Colombier case 66:
6807dd7cddfSDavid du Colombier #line 97 "/sys/src/cmd/eqn/eqn.y"
6813e12c5d1SDavid du Colombier { yyval = UTILDE; } break;
6823e12c5d1SDavid du Colombier case 67:
6837dd7cddfSDavid du Colombier #line 98 "/sys/src/cmd/eqn/eqn.y"
6843e12c5d1SDavid du Colombier { yyval = DOTDOT; } break;
6853e12c5d1SDavid du Colombier case 68:
6867dd7cddfSDavid du Colombier #line 101 "/sys/src/cmd/eqn/eqn.y"
6873e12c5d1SDavid du Colombier { yyval = ((char *)yypt[-0].yyv)[0]; } break;
6883e12c5d1SDavid du Colombier case 69:
6897dd7cddfSDavid du Colombier #line 102 "/sys/src/cmd/eqn/eqn.y"
6903e12c5d1SDavid du Colombier { yyval = '{'; } break;
6913e12c5d1SDavid du Colombier case 70:
6927dd7cddfSDavid du Colombier #line 105 "/sys/src/cmd/eqn/eqn.y"
6933e12c5d1SDavid du Colombier { yyval = ((char *)yypt[-0].yyv)[0]; } break;
6943e12c5d1SDavid du Colombier case 71:
6957dd7cddfSDavid du Colombier #line 106 "/sys/src/cmd/eqn/eqn.y"
6963e12c5d1SDavid du Colombier { yyval = '}'; } break;
6973e12c5d1SDavid du Colombier case 74:
6987dd7cddfSDavid du Colombier #line 113 "/sys/src/cmd/eqn/eqn.y"
6993e12c5d1SDavid du Colombier { column(yypt[-3].yyv, DEFGAP); } break;
7003e12c5d1SDavid du Colombier case 75:
7017dd7cddfSDavid du Colombier #line 114 "/sys/src/cmd/eqn/eqn.y"
7023e12c5d1SDavid du Colombier {yyval=atoi((char*)yypt[-0].yyv);} break;
7033e12c5d1SDavid du Colombier case 76:
7047dd7cddfSDavid du Colombier #line 114 "/sys/src/cmd/eqn/eqn.y"
7053e12c5d1SDavid du Colombier { column(yypt[-5].yyv, yypt[-3].yyv); } break;
7063e12c5d1SDavid du Colombier case 77:
7077dd7cddfSDavid du Colombier #line 117 "/sys/src/cmd/eqn/eqn.y"
7083e12c5d1SDavid du Colombier { yyval = startcol(LCOL); } break;
7093e12c5d1SDavid du Colombier case 78:
7107dd7cddfSDavid du Colombier #line 118 "/sys/src/cmd/eqn/eqn.y"
7113e12c5d1SDavid du Colombier { yyval = startcol(CCOL); } break;
7123e12c5d1SDavid du Colombier case 79:
7137dd7cddfSDavid du Colombier #line 119 "/sys/src/cmd/eqn/eqn.y"
7143e12c5d1SDavid du Colombier { yyval = startcol(RCOL); } break;
7153e12c5d1SDavid du Colombier case 80:
7167dd7cddfSDavid du Colombier #line 120 "/sys/src/cmd/eqn/eqn.y"
7173e12c5d1SDavid du Colombier { yyval = startcol(COL); } break;
7183e12c5d1SDavid du Colombier case 81:
7197dd7cddfSDavid du Colombier #line 123 "/sys/src/cmd/eqn/eqn.y"
7203e12c5d1SDavid du Colombier { lp[ct++] = yypt[-0].yyv; } break;
7213e12c5d1SDavid du Colombier case 82:
7227dd7cddfSDavid du Colombier #line 124 "/sys/src/cmd/eqn/eqn.y"
7233e12c5d1SDavid du Colombier { lp[ct++] = yypt[-0].yyv; } break;
7243e12c5d1SDavid du Colombier case 83:
7257dd7cddfSDavid du Colombier #line 127 "/sys/src/cmd/eqn/eqn.y"
7263e12c5d1SDavid du Colombier { yyval = ps; setsize((char *) yypt[-0].yyv); } break;
7273e12c5d1SDavid du Colombier case 84:
7287dd7cddfSDavid du Colombier #line 130 "/sys/src/cmd/eqn/eqn.y"
7293e12c5d1SDavid du Colombier { static char R[]="R"; setfont(R); } break;
7303e12c5d1SDavid du Colombier case 85:
7317dd7cddfSDavid du Colombier #line 131 "/sys/src/cmd/eqn/eqn.y"
7323e12c5d1SDavid du Colombier { static char I[]="I"; setfont(I); } break;
7333e12c5d1SDavid du Colombier case 86:
7347dd7cddfSDavid du Colombier #line 132 "/sys/src/cmd/eqn/eqn.y"
7353e12c5d1SDavid du Colombier { static char B[]="B"; setfont(B); } break;
7363e12c5d1SDavid du Colombier case 87:
7377dd7cddfSDavid du Colombier #line 133 "/sys/src/cmd/eqn/eqn.y"
7383e12c5d1SDavid du Colombier { setfont((char *)yypt[-0].yyv); } break;
7393e12c5d1SDavid du Colombier }
7403e12c5d1SDavid du Colombier goto yystack; /* stack new state and value */
7413e12c5d1SDavid du Colombier }
742