xref: /plan9/sys/src/cmd/eqn/eqn.c (revision 5e91980f0bca263e952809e3dc0cfc5dde74b999)
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