Plan 9 from Bell Labs’s /usr/web/sources/contrib/steve/root/sys/src/cmd/tex/tpic/picy.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.



#line	2	"/sys/src/cmd/tex/tpic/picy.y"
#include <stdio.h>
#include "pic.h"
#include <math.h>
YYSTYPE	y;
extern	int	yyerrflag;
#ifndef	YYMAXDEPTH
#define	YYMAXDEPTH	150
#endif
YYSTYPE	yylval;
YYSTYPE	yyval;
#define	BOX	1
#define	LINE	2
#define	ARROW	3
#define	CIRCLE	4
#define	ELLIPSE	5
#define	ARC	6
#define	SPLINE	7
#define	BLOCK	8
#define	TEXT	9
#define	TROFF	10
#define	MOVE	11
#define	BLOCKEND	12
#define	PLACE	13
#define	PRINT	57359
#define	RESET	57360
#define	THRU	57361
#define	UNTIL	57362
#define	FOR	57363
#define	IF	57364
#define	COPY	57365
#define	THENSTR	57366
#define	ELSESTR	57367
#define	DOSTR	57368
#define	PLACENAME	57369
#define	VARNAME	57370
#define	SPRINTF	57371
#define	DEFNAME	57372
#define	ATTR	57373
#define	TEXTATTR	57374
#define	LEFT	57375
#define	RIGHT	57376
#define	UP	57377
#define	DOWN	57378
#define	FROM	57379
#define	TO	57380
#define	AT	57381
#define	BY	57382
#define	WITH	57383
#define	HEAD	57384
#define	CW	57385
#define	CCW	57386
#define	THEN	57387
#define	HEIGHT	57388
#define	WIDTH	57389
#define	RADIUS	57390
#define	DIAMETER	57391
#define	LENGTH	57392
#define	SIZE	57393
#define	CORNER	57394
#define	HERE	57395
#define	LAST	57396
#define	NTH	57397
#define	SAME	57398
#define	BETWEEN	57399
#define	AND	57400
#define	EAST	57401
#define	WEST	57402
#define	NORTH	57403
#define	SOUTH	57404
#define	NE	57405
#define	NW	57406
#define	SE	57407
#define	SW	57408
#define	START	57409
#define	END	57410
#define	DOTX	57411
#define	DOTY	57412
#define	DOTHT	57413
#define	DOTWID	57414
#define	DOTRAD	57415
#define	NUMBER	57416
#define	LOG	57417
#define	EXP	57418
#define	SIN	57419
#define	COS	57420
#define	ATAN2	57421
#define	SQRT	57422
#define	RAND	57423
#define	MIN	57424
#define	MAX	57425
#define	INT	57426
#define	DIR	57427
#define	DOT	57428
#define	DASH	57429
#define	CHOP	57430
#define	FILL	57431
#define	ST	57432
#define	OROR	57433
#define	ANDAND	57434
#define	GT	57435
#define	LT	57436
#define	LE	57437
#define	GE	57438
#define	EQ	57439
#define	NEQ	57440
#define	UMINUS	57441
#define	NOT	57442
#define YYEOFCODE 1
#define YYERRCODE 2
short	yyexca[] =
{-1, 0,
	1, 2,
	-2, 0,
-1, 1,
	1, -1,
	-2, 0,
-1, 203,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 156,
-1, 210,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 155,
-1, 211,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 157,
-1, 212,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 158,
-1, 213,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 159,
-1, 214,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 160,
-1, 266,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 156,
};
#define	YYNPROD	175
#define	YYPRIVATE 57344
#define	YYLAST	1551
short	yyact[] =
{
 171, 330, 137,  52, 316,  67, 270, 123, 124, 308,
 315,  42, 269, 239, 108,  32, 135, 160, 135, 159,
 158, 157,  94, 224, 130, 131, 132, 133, 134,  43,
 156, 155,  91,  50, 154, 153, 152, 151, 135,  97,
  80, 104, 295, 294, 243, 232, 230,  40, 121, 126,
 129,  82, 123, 124, 312, 150, 147, 109, 110, 111,
 112, 113, 271,  50, 121, 225,  71, 106,  41, 162,
 101, 164, 128,  40, 331, 332, 333, 334, 136, 127,
 243, 167, 191, 187,  72,  73,  74,  75,  76,  77,
  78,  79, 272, 200, 197, 109, 110, 111, 112, 113,
 136, 125, 121, 123, 124, 123, 124, 201, 203, 104,
 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
 215, 216, 217,  38, 218, 221, 231, 111, 112, 113,
  50,  50, 121, 317, 123, 124, 192, 202, 204, 123,
 124, 195, 196, 166,  84, 229, 220, 223, 165,  95,
  96,  35, 233, 234, 235, 236, 237, 238,  34, 240,
 241, 242, 189, 168, 283, 244, 246, 281,  36,  44,
 122, 249, 248, 250, 104, 104, 104, 104, 104,  89,
 123, 124, 258, 259, 260, 261,   4,  70,  85,  37,
  92, 296, 263, 264, 227, 266,  50,  50,  50,  50,
  50,  80, 265, 251, 252, 253, 254, 257, 119, 114,
 194, 115, 116, 117, 118, 109, 110, 111, 112, 113,
 274, 169, 121, 276, 283, 284,  37,  99, 188, 279,
 114, 194, 115, 116, 117, 118, 109, 110, 111, 112,
 113, 262,  85, 121, 281, 282, 190,  35, 277, 130,
 131, 132, 133, 134,  86,  87, 198, 227, 228, 162,
 193, 164,   2,  83,  36,  69,   1,   5,  37,  39,
 161, 301, 104, 104, 304,  26, 306,   6, 185,  24,
  12,  24,  13, 147,  14,  24, 300, 199,  88,  81,
 309,  90, 310, 311,  50,  50, 278,  68, 163, 313,
 314, 302, 303,   0,   0,  24, 318,   0, 319, 140,
 144, 145, 141, 142, 143, 146, 247, 327,  24,  24,
   0,  65,  66,  68, 280,   0,   0, 335,   0, 297,
   0, 336,   0,   0,   0,   0, 337,   0,   0,  16,
  20,  21,  17,  18,  19,  22,   0,  35,  25,  23,
  51,  46,  10,  11, 267, 268,  30,  31,  29, 149,
  24,   0, 102,  46,  36,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  65,  66,  68,  53,  24,
   0,   0,   0,   0,   0,   0,   0,  65,  66,  68,
  53,   0,   0,   0,   0,   0,   0,  45,  55,  56,
  57,  58,  59,  60,  61,  63,  62,  64,   0,  45,
  55,  56,  57,  58,  59,  60,  61,  63,  62,  64,
   9,   0,   0,   0,  48, 100,   0,   0, 299,  54,
   0,   0,   0,   0,   0,   0,  48,  35,  93,   0,
   0,  54,   0,   0,   0,   0,  27,   0,  33,   0,
  49,   0,  51,  46,  36,   0, 170, 179,   0,   0,
   0,   0, 173, 174, 175, 176, 177, 180, 140, 144,
 145, 141, 142, 143, 146, 245,   0,  65,  66,  68,
  53, 178, 120, 119, 114, 194, 115, 116, 117, 118,
 109, 110, 111, 112, 113,   0,   0, 121,   0,  45,
  55,  56,  57,  58,  59,  60,  61,  63,  62,  64,
 172, 181, 182, 183, 184,   0,   0,  35, 139,   0,
   0,   0,  47,   8,   0,   8,  48,   0,  35,   8,
   0,  54,  51,  46,  36,   0,   0,   0,   0,   0,
  93,   0,   0,  51,  46,  36,   0,   0,   0,   8,
   0,   0,   0,   0,   0,   0,   0,  65,  66,  68,
  53,   0,   8, 103,   0,   0, 339,   0,  65,  66,
  68,  53,   0,   0,   0,   0,   0,   0,   0,  45,
  55,  56,  57,  58,  59,  60,  61,  63,  62,  64,
  45,  55,  56,  57,  58,  59,  60,  61,  63,  62,
  64,  51,  46,   0,   8,   0,  48,   0,   0,   0,
   0,  54,   0,   0,   0,   0,   0,  48,   0,   0,
  93,   0,  54,   8,   0,   0, 255,  66,  68,  53,
   0,  49, 120, 119, 114, 194, 115, 116, 117, 118,
 109, 110, 111, 112, 113,   0,   0, 121,  45,  55,
  56,  57,  58,  59,  60,  61,  63,  62,  64,  16,
  20,  21,  17,  18,  19,  22,   0,  35,  25,  23,
   0,   0,  10,  11,   0,  48,  30,  31,  29,   0,
  54,   0,   7,  28,  36,   0,   0,   0, 256,  49,
  16,  20,  21,  17,  18,  19,  22,   0,  35,  25,
  23,   0,   0,  10,  11,   0,   0,  30,  31,  29,
   0,   0,   0,   7,  28,  36,   0,   3,   0,  16,
  20,  21,  17,  18,  19,  22,   0,  35,  25,  23,
  51,  46,  10,  11,   0,   0,  30,  31,  29,   0,
   9,   0,   7,  28,  36,  15, 140, 144, 145, 141,
 142, 143, 146, 148,   0,  65,  66,  68,  53,   0,
   0,   0,   0,   0,   0,   0,  27, 186,  33,   0,
   0,   9,   0,   0,   0,   0,  15,  45,  55,  56,
  57,  58,  59,  60,  61,  63,  62,  64,  51,  46,
   0,   0,   0,   0,  98,   0, 149,  27,   0,  33,
   9,   0,   0,   0,  48,  15,   0,   0,   0,  54,
   0,   0,   0,  65,  66,  68,  53,   0,  49,   0,
   0,   0,   0,   0,   0,   0,  27,   0,  33,   0,
  51,  46,   0,   0,   0,  45,  55,  56,  57,  58,
  59,  60,  61,  63,  62,  64,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  65,  66,  68,  53,   0,
   0,   0,  48,   0,   0,   0,   0,  54,   0,   0,
   0,   0,   0,   0,   0,   0, 222,  45,  55,  56,
  57,  58,  59,  60,  61,  63,  62,  64,  16,  20,
  21,  17,  18,  19,  22, 108,  35,  25,  23,   0,
   0,  10,  11,   0,  48,  30,  31,  29,   0,  54,
   0,   7,  28,  36,   0,   0,   0,   0, 219,   0,
   0, 140, 144, 145, 141, 142, 143, 146, 138,   0,
 120, 119, 114, 107, 115, 116, 117, 118, 109, 110,
 111, 112, 113,   0,   0, 121,   0,   0, 106,   0,
   0,   0,   0,   0, 226, 120, 119, 114, 194, 115,
 116, 117, 118, 109, 110, 111, 112, 113,   0,   9,
 121, 139,   0, 307,  15,   0,   0,   0,   0, 226,
   0, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113,   0,  27, 121,  33,   0, 305,
   0,   0,   0,   0,   0, 226, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,
 329, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113,   0,   0, 121,   0,   0,   0,
   0,   0,   0,   0,   0, 328, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,
 322, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113,   0,   0, 121,   0,   0,   0,
   0,   0,   0,   0,   0, 321, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,
 320, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113,   0,   0, 121,   0,   0,   0,
   0,   0,   0,   0,   0, 293, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,
 290, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113,   0,   0, 121,   0,   0,   0,
   0,   0,   0,   0,   0, 288, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,
 287, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113,   0,   0, 121,   0,   0,   0,
   0,   0,   0,   0,   0, 286, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121,   0, 108,   0,   0,   0,   0,   0,   0,
 285, 120, 119, 114, 194, 115, 116, 117, 118, 109,
 110, 111, 112, 113, 108,   0, 121,   0,   0,   0,
   0,   0,   0,   0,   0, 226, 105,   0, 120, 119,
 114, 107, 115, 116, 117, 118, 109, 110, 111, 112,
 113,   0,   0, 121,   0,   0, 106,   0,   0, 120,
 119, 114, 107, 115, 116, 117, 118, 109, 110, 111,
 112, 113,   0,   0, 121,   0,   0, 106, 120, 119,
 114, 194, 115, 116, 117, 118, 109, 110, 111, 112,
 113,   0,   0, 121,   0,   0, 292, 120, 119, 114,
 194, 115, 116, 117, 118, 109, 110, 111, 112, 113,
   0,   0, 121,   0,   0, 291, 120, 119, 114, 194,
 115, 116, 117, 118, 109, 110, 111, 112, 113,   0,
   0, 121, 338,   0, 289, 120, 119, 114, 194, 115,
 116, 117, 118, 109, 110, 111, 112, 113,   0,   0,
 121,   0,   0, 275, 120, 119, 114, 194, 115, 116,
 117, 118, 109, 110, 111, 112, 113, 326,   0, 121,
   0,   0, 273,   0,   0,   0,   0,   0,   0,   0,
   0, 325,   0, 324,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 323, 120, 119,
 114, 194, 115, 116, 117, 118, 109, 110, 111, 112,
 113, 298,   0, 121, 120, 119, 114, 194, 115, 116,
 117, 118, 109, 110, 111, 112, 113,   0,   0, 121,
   0,   0,   0, 120, 119, 114, 194, 115, 116, 117,
 118, 109, 110, 111, 112, 113,   0,   0, 121, 120,
 119, 114, 194, 115, 116, 117, 118, 109, 110, 111,
 112, 113,   0,   0, 121, 120, 119, 114, 194, 115,
 116, 117, 118, 109, 110, 111, 112, 113,   0,   0,
 121
};
short	yypact[] =
{
 715,-1000, 884,-1000,-1000,  33, 884, -62, -22,-1000,
 516, 159,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000, 139,-1000, 884,-1000, -40, 235,
 151, 505, 117,-1000, 118,-1000, -76,-1000,-1000, 686,
 335,-1000,1216,  80,  11,-1000, -40,-1000, 323, 703,
 180, -14, 917, 742, 323, -78, -79, -80, -81, -84,
 -85, -94, -95, -96, -98, 243,-1000,  96,-1000,  53,
-1000, 425, 425, 425, 425, 425, 425, 425, 425, 425,
 117, 655, 323, 235,-1000,-1000, 132, 139,  45,-1000,
 236,1392,  43, 323, 180,-1000,-1000, 139,-1000,-1000,
 884,   3, -36, -22,1237,-1000, 323, 703, 703, 323,
 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
 323, 323,-1000, 803, 761,-1000, -59, -93, -45, 838,
-1000,-1000,-1000,-1000,-1000,-1000, 230,  93, -68,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,  74, -69,-1000,
 -59, 323, 323, 323, 323, 323, 323,-103, 323, 323,
 323, -70, 464, 305,-1000,-1000,-1000,-1000, 144,-1000,
 323,1392, 323, 703, 703, 703, 703, 574,-1000,-1000,
-1000, 323, 323, 323, 323, 139,-1000,1392,-1000,-1000,
-1000, 323, 323, 177, 323, 139, 139,1189,-104,-1000,
-1000,1392, -48, -43,  34,  25,  25, -59, -59, -59,
  -5,  -5,  -5,  -5,  -5, 136, 115, -59,1332, 323,
 180,1313, 323, 180,-1000, 269,-1000,-1000,-1000,-1000,
 217,-1000, 197,1164,1139,1114,1089,1294,1064,-1000,
1275,1256,1039, 167,-1000, -71,-1000, -72,-1000,1392,
1392,   5,   5,   5,   5, 243, 164,   5,1392,1392,
1392,1392,-1000,1443, 390,-1000,  -5,-1000,-1000,-1000,
 323, 703, 703, 323, 889, 323, 863,-107, -34, 464,
 305,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 323,
-1000, 323, 323,-1000, 140, 137,   2, 425, 323, 323,
-106,1392,  39,   5,1392, 323,1392, 323,-1000,1014,
 989, 964,-1000,1427,1411,-1000, 323,-1000, 939, 914,
-1000,-1000,-1000, -26,-1000, -26,-1000,1392,-1000,-1000,
 323,-1000,-1000,-1000,-1000, 323,1376, 540,-1000,-1000
};
short	yypgo[] =
{
   0,   0, 291, 522, 288, 158,   1, 286, 284, 282,
 280, 277, 186, 262,  29, 275, 267,  22,   5, 278,
  15,   3,   2, 266, 265, 263, 144,  66, 241, 221
};
short	yyr1[] =
{
   0,  23,  23,  23,  13,  13,  12,  12,  12,  12,
  12,  12,  12,  12,  12,  12,  12,  12,  12,  12,
  12,  24,  24,  24,  24,   3,  10,  25,  25,  26,
  26,  26,   9,   9,   9,   9,   8,   8,   2,   2,
   2,   4,   6,   6,   6,   6,   6,  11,  16,  16,
  16,  16,  16,  16,  16,  16,  16,  16,  28,  16,
  15,  27,  27,  29,  29,  29,  29,  29,  29,  29,
  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
  29,  29,  29,  29,  29,  29,  29,  29,  19,  19,
  20,  20,  20,   5,   5,   5,   7,   7,  14,  14,
  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,
  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,
  17,  17,  17,  18,  18,  18,  21,  21,  21,  22,
  22,  22,  22,  22,  22,  22,  22,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1
};
short	yyr2[] =
{
   0,   1,   0,   1,   1,   2,   2,   3,   3,   4,
   4,   2,   1,   3,   3,   3,   3,   1,   1,   1,
   1,   0,   1,   2,   3,   3,   2,   1,   2,   1,
   2,   2,  10,   7,  10,   7,   4,   3,   1,   3,
   3,   1,   1,   1,   1,   1,   0,   1,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   1,   0,   5,
   1,   2,   0,   2,   1,   1,   2,   1,   2,   2,
   2,   2,   2,   3,   4,   2,   1,   1,   1,   2,
   1,   2,   1,   2,   1,   2,   1,   1,   1,   2,
   1,   2,   2,   1,   4,   6,   1,   3,   1,   3,
   3,   5,   5,   7,   7,   3,   3,   5,   6,   5,
   1,   2,   2,   1,   2,   3,   3,   2,   3,   3,
   1,   2,   2,   4,   4,   3,   2,   2,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   3,   3,   3,   3,   3,   2,   3,   2,   2,   2,
   2,   2,   3,   4,   4,   3,   3,   3,   3,   3,
   3,   3,   3,   2,   4,   4,   3,   4,   4,   6,
   4,   3,   6,   6,   4
};
short	yychk[] =
{
-1000, -23, -13,   2, -12, -16, -11,  27,  -3,  85,
  17,  18, -10,  -9,  -8,  90,   4,   7,   8,   9,
   5,   6,  10,  14, -19,  13, -15, 111,  28,  23,
  21,  22, -20, 113,  -5,  12,  29, -12,  90, -13,
 109,  90,  -1, -14,  -5,  74,  28,  -3, 101, 115,
 -17,  27, -21,  55, 106,  75,  76,  77,  78,  79,
  80,  81,  83,  82,  84,  52,  53, -18,  54, -24,
  28, -27, -27, -27, -27, -27, -27, -27, -27, -27,
 -20, -13,  91, -25, -26,  -5,  19,  20,  -4,  28,
  -2,  -1,  -5, 115, -17,  32,  32, 115, 108, -12,
  90, -14,  27,  -3,  -1,  90, 110,  95,  57, 100,
 101, 102, 103, 104,  94,  96,  97,  98,  99,  93,
  92, 107,  90, 100, 101,  90,  -1, -14, -17,  -1,
  69,  70,  71,  72,  73,  52, 114, -22,  11,  54,
   4,   7,   8,   9,   5,   6,  10, -22,  11,  54,
  -1, 115, 115, 115, 115, 115, 115, 115, 115, 115,
 115,  27, -21,  55, -18,  52,  90,  28, 110, -29,
  31,  -1,  85,  37,  38,  39,  40,  41,  56,  32,
  42,  86,  87,  88,  89, -19, 112,  -1, -26,  30,
  -5,  37,  91,  24,  95,  98,  99,  -1,  -5, -12,
  90,  -1, -14,  -1, -14,  -1,  -1,  -1,  -1,  -1,
  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 115,
 -17,  -1, 115, -17, 116, 110, 116,  27,  28,  52,
 114,  52, 114,  -1,  -1,  -1,  -1,  -1,  -1, 116,
  -1,  -1,  -1, 114, -22,  11, -22,  11,  28,  -1,
  -1, -14, -14, -14, -14,  52, 114, -14,  -1,  -1,
  -1,  -1, -28,  -1,  -1,  25,  -1,  -5,  -5, 116,
 110, 110,  58, 110,  -1, 110,  -1, -17,  27, -21,
  55,  27,  28,  27,  28, 116, 116, 116, 116, 110,
 116, 110, 110, 116, 114, 114,  27, -27,  38,  38,
  -7,  -1, -14, -14,  -1, 110,  -1, 110, 116,  -1,
  -1,  -1,  52,  -1,  -1, 116, 110,  94,  -1,  -1,
 116, 116, 116,  40,  26,  40,  26,  -1, 116, 116,
  -6, 100, 101, 102, 103,  -6,  -1,  -1,  26,  26
};
short	yydef[] =
{
  -2,  -2,   1,   3,   4,   0,   0,   0,   0,  12,
   0,  21,  17,  18,  19,  20,  62,  62,  62,  62,
  62,  62,  62,  62,  62,  57,   0,  47,   0,   0,
   0,   0,  88,  60,  90,  93,   0,   5,   6,   0,
   0,  11,   0,   0,   0, 137, 138, 139,   0,   0,
  98, 110,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0, 113, 120, 128,   0,
  22,  48,  49,  50,  51,  52,  53,  54,  55,  56,
  89,   0,   0,  26,  27,  29,   0,   0,   0,  41,
   0,  38,   0,   0,   0,  92,  91,   0,   7,   8,
  20,   0, 110, 139,   0,  13,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  14,   0,   0,  15, 145,   0,  98,   0,
 147, 148, 149, 150, 151, 111,   0, 114, 136, 126,
 129, 130, 131, 132, 133, 134, 135, 117, 136, 127,
 163,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 112,   0,   0, 122, 121,  16,  23,   0,  61,
  64,  65,  67,   0,   0,   0,   0,   0,  76,  77,
  78,  80,  82,  84,  86,  87,  58,  25,  28,  30,
  31,   0,   0,  37,   0,   0,   0,   0,   0,   9,
  10, 100,   0,  -2,   0, 140, 141, 142, 143, 144,
  -2,  -2,  -2,  -2,  -2, 161, 162, 166,   0,   0,
 105,   0,   0, 106,  99,   0, 146, 125, 152, 115,
   0, 118,   0,   0,   0,   0,   0,   0,   0, 171,
   0,   0,   0,   0, 116, 136, 119, 136,  24,  63,
  66,  68,  69,  70,  71,  72,   0,  75,  79,  81,
  83,  85,  62,   0,   0,  36,  -2,  39,  40,  94,
   0,   0,   0,   0,   0,   0,   0,   0, 110,   0,
   0, 123, 153, 124, 154, 164, 165, 167, 168,   0,
 170,   0,   0, 174,   0,   0,  73,  59,   0,   0,
   0,  96,   0, 109, 101,   0, 102,   0, 107,   0,
   0,   0,  74,   0,   0,  95,   0, 108,   0,   0,
 169, 172, 173,  46,  33,  46,  35,  97, 103, 104,
   0,  42,  43,  44,  45,   0,   0,   0,  32,  34
};
short	yytok1[] =
{
   1,   4,   5,   6,   7,   8,   9,  10,  11,  12,
  13,  14,  15,  16,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 104,   0,   0,
 115, 116, 102, 100, 110, 101, 114, 103,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0, 109,   0,
   0,  91,   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, 113,   0, 112, 107,   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, 111,   0, 108
};
short	yytok2[] =
{
   2,   3,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  17,  18,  19,  20,  21,
  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
  82,  83,  84,  85,  86,  87,  88,  89,  90,  92,
  93,  94,  95,  96,  97,  98,  99, 105, 106
};
long	yytok3[] =
{
   0
};
#define YYFLAG 		-1000
#define YYERROR		goto yyerrlab
#define YYACCEPT	return(0)
#define YYABORT		return(1)
#define	yyclearin	yychar = -1
#define	yyerrok		yyerrflag = 0

#ifdef	yydebug
#include	"y.debug"
#else
#define	yydebug		0
char*	yytoknames[1];		/* for debugging */
char*	yystates[1];		/* for debugging */
#endif

/*	parser for yacc output	*/

int	yynerrs = 0;		/* number of errors */
int	yyerrflag = 0;		/* error recovery flag */

char*
yytokname(int yyc)
{
	static char x[16];

	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
	if(yytoknames[yyc-1])
		return yytoknames[yyc-1];
	sprintf(x, "<%d>", yyc);
	return x;
}

char*
yystatname(int yys)
{
	static char x[16];

	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
	if(yystates[yys])
		return yystates[yys];
	sprintf(x, "<%d>\n", yys);
	return x;
}

long
yylex1(void)
{
	long yychar;
	long *t3p;
	int c;

	yychar = yylex();
	if(yychar <= 0) {
		c = yytok1[0];
		goto out;
	}
	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
		c = yytok1[yychar];
		goto out;
	}
	if(yychar >= YYPRIVATE)
		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
			c = yytok2[yychar-YYPRIVATE];
			goto out;
		}
	for(t3p=yytok3;; t3p+=2) {
		c = t3p[0];
		if(c == yychar) {
			c = t3p[1];
			goto out;
		}
		if(c == 0)
			break;
	}
	c = 0;

out:
	if(c == 0)
		c = yytok2[1];	/* unknown char */
	if(yydebug >= 3)
		printf("lex %.4lX %s\n", yychar, yytokname(c));
	return c;
}

int
yyparse(void)
{
	struct
	{
		YYSTYPE	yyv;
		int	yys;
	} yys[YYMAXDEPTH], *yyp, *yypt;
	short *yyxi;
	int yyj, yym, yystate, yyn, yyg;
	YYSTYPE save1, save2;
	int save3, save4;
	long yychar;

	save1 = yylval;
	save2 = yyval;
	save3 = yynerrs;
	save4 = yyerrflag;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyp = &yys[-1];
	goto yystack;

ret0:
	yyn = 0;
	goto ret;

ret1:
	yyn = 1;
	goto ret;

ret:
	yylval = save1;
	yyval = save2;
	yynerrs = save3;
	yyerrflag = save4;
	return yyn;

yystack:
	/* put a state and value onto the stack */
	if(yydebug >= 4)
		printf("char %s in %s", yytokname(yychar), yystatname(yystate));

	yyp++;
	if(yyp >= &yys[YYMAXDEPTH]) {
		yyerror("yacc stack overflow");
		goto ret1;
	}
	yyp->yys = yystate;
	yyp->yyv = yyval;

yynewstate:
	yyn = yypact[yystate];
	if(yyn <= YYFLAG)
		goto yydefault; /* simple state */
	if(yychar < 0)
		yychar = yylex1();
	yyn += yychar;
	if(yyn < 0 || yyn >= YYLAST)
		goto yydefault;
	yyn = yyact[yyn];
	if(yychk[yyn] == yychar) { /* valid shift */
		yychar = -1;
		yyval = yylval;
		yystate = yyn;
		if(yyerrflag > 0)
			yyerrflag--;
		goto yystack;
	}

yydefault:
	/* default state action */
	yyn = yydef[yystate];
	if(yyn == -2) {
		if(yychar < 0)
			yychar = yylex1();

		/* look through exception table */
		for(yyxi=yyexca;; yyxi+=2)
			if(yyxi[0] == -1 && yyxi[1] == yystate)
				break;
		for(yyxi += 2;; yyxi += 2) {
			yyn = yyxi[0];
			if(yyn < 0 || yyn == yychar)
				break;
		}
		yyn = yyxi[1];
		if(yyn < 0)
			goto ret0;
	}
	if(yyn == 0) {
		/* error ... attempt to resume parsing */
		switch(yyerrflag) {
		case 0:   /* brand new error */
			yyerror("syntax error");
			if(yydebug >= 1) {
				printf("%s", yystatname(yystate));
				printf("saw %s\n", yytokname(yychar));
			}
yyerrlab:
			yynerrs++;

		case 1:
		case 2: /* incompletely recovered error ... try again */
			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */
			while(yyp >= yys) {
				yyn = yypact[yyp->yys] + YYERRCODE;
				if(yyn >= 0 && yyn < YYLAST) {
					yystate = yyact[yyn];  /* simulate a shift of "error" */
					if(yychk[yystate] == YYERRCODE)
						goto yystack;
				}

				/* the current yyp has no shift onn "error", pop stack */
				if(yydebug >= 2)
					printf("error recovery pops state %d, uncovers %d\n",
						yyp->yys, (yyp-1)->yys );
				yyp--;
			}
			/* there is no state on the stack with an error shift ... abort */
			goto ret1;

		case 3:  /* no shift yet; clobber input char */
			if(yydebug >= YYEOFCODE)
				printf("error recovery discards %s\n", yytokname(yychar));
			if(yychar == YYEOFCODE)
				goto ret1;
			yychar = -1;
			goto yynewstate;   /* try again in the same state */
		}
	}

	/* reduction by production yyn */
	if(yydebug >= 2)
		printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));

	yypt = yyp;
	yyp -= yyr2[yyn];
	yyval = (yyp+1)->yyv;
	yym = yyn;

	/* consult goto table to find next state */
	yyn = yyr1[yyn];
	yyg = yypgo[yyn];
	yyj = yyg + yyp->yys + 1;

	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
		yystate = yyact[yyg];
	switch(yym) {
		
case 3:
#line	62	"/sys/src/cmd/tex/tpic/picy.y"
{ ERROR "syntax error" WARNING; } break;
case 6:
#line	71	"/sys/src/cmd/tex/tpic/picy.y"
{ codegen = 1; makeiattr(0, 0); } break;
case 7:
#line	72	"/sys/src/cmd/tex/tpic/picy.y"
{ rightthing(yypt[-2].yyv.o, '}'); yyval.o = yypt[-1].yyv.o; } break;
case 8:
#line	73	"/sys/src/cmd/tex/tpic/picy.y"
{ y.o=yypt[-0].yyv.o; makevar(yypt[-2].yyv.p,PLACENAME,y); yyval.o = yypt[-0].yyv.o; } break;
case 9:
#line	74	"/sys/src/cmd/tex/tpic/picy.y"
{ y.o=yypt[-0].yyv.o; makevar(yypt[-3].yyv.p,PLACENAME,y); yyval.o = yypt[-0].yyv.o; } break;
case 10:
#line	75	"/sys/src/cmd/tex/tpic/picy.y"
{ y.o=yypt[-1].yyv.o; makevar(yypt[-3].yyv.p,PLACENAME,y); yyval.o = yypt[-1].yyv.o; } break;
case 11:
#line	76	"/sys/src/cmd/tex/tpic/picy.y"
{ y.f = yypt[-1].yyv.f; yyval.o = y.o; yyval.o = makenode(PLACE, 0); } break;
case 12:
#line	77	"/sys/src/cmd/tex/tpic/picy.y"
{ setdir(yypt[-0].yyv.i); yyval.o = makenode(PLACE, 0); } break;
case 13:
#line	78	"/sys/src/cmd/tex/tpic/picy.y"
{ printexpr(yypt[-1].yyv.f); yyval.o = makenode(PLACE, 0); } break;
case 14:
#line	79	"/sys/src/cmd/tex/tpic/picy.y"
{ printpos(yypt[-1].yyv.o); yyval.o = makenode(PLACE, 0); } break;
case 15:
#line	80	"/sys/src/cmd/tex/tpic/picy.y"
{ printf("%s\n", yypt[-1].yyv.p); free(yypt[-1].yyv.p); yyval.o = makenode(PLACE, 0); } break;
case 16:
#line	81	"/sys/src/cmd/tex/tpic/picy.y"
{ resetvar(); makeiattr(0, 0); yyval.o = makenode(PLACE, 0); } break;
case 22:
#line	90	"/sys/src/cmd/tex/tpic/picy.y"
{ makevattr(yypt[-0].yyv.p); } break;
case 23:
#line	91	"/sys/src/cmd/tex/tpic/picy.y"
{ makevattr(yypt[-0].yyv.p); } break;
case 24:
#line	92	"/sys/src/cmd/tex/tpic/picy.y"
{ makevattr(yypt[-0].yyv.p); } break;
case 25:
#line	96	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f=y.f=yypt[-0].yyv.f; makevar(yypt[-2].yyv.p,VARNAME,y); checkscale(yypt[-2].yyv.p); } break;
case 26:
#line	100	"/sys/src/cmd/tex/tpic/picy.y"
{ copy(); } break;
case 29:
#line	107	"/sys/src/cmd/tex/tpic/picy.y"
{ copyfile(yypt[-0].yyv.p); } break;
case 30:
#line	108	"/sys/src/cmd/tex/tpic/picy.y"
{ copydef(yypt[-0].yyv.st); } break;
case 31:
#line	109	"/sys/src/cmd/tex/tpic/picy.y"
{ copyuntil(yypt[-0].yyv.p); } break;
case 32:
#line	114	"/sys/src/cmd/tex/tpic/picy.y"
{ forloop(yypt[-8].yyv.p, yypt[-6].yyv.f, yypt[-4].yyv.f, yypt[-2].yyv.i, yypt[-1].yyv.f, yypt[-0].yyv.p); } break;
case 33:
#line	116	"/sys/src/cmd/tex/tpic/picy.y"
{ forloop(yypt[-5].yyv.p, yypt[-3].yyv.f, yypt[-1].yyv.f, '+', 1.0, yypt[-0].yyv.p); } break;
case 34:
#line	118	"/sys/src/cmd/tex/tpic/picy.y"
{ forloop(yypt[-8].yyv.p, yypt[-6].yyv.f, yypt[-4].yyv.f, yypt[-2].yyv.i, yypt[-1].yyv.f, yypt[-0].yyv.p); } break;
case 35:
#line	120	"/sys/src/cmd/tex/tpic/picy.y"
{ forloop(yypt[-5].yyv.p, yypt[-3].yyv.f, yypt[-1].yyv.f, '+', 1.0, yypt[-0].yyv.p); } break;
case 36:
#line	124	"/sys/src/cmd/tex/tpic/picy.y"
{ ifstat(yypt[-2].yyv.f, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 37:
#line	125	"/sys/src/cmd/tex/tpic/picy.y"
{ ifstat(yypt[-1].yyv.f, yypt[-0].yyv.p, (char *) 0); } break;
case 39:
#line	129	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = strcmp(yypt[-2].yyv.p,yypt[-0].yyv.p) == 0; free(yypt[-2].yyv.p); free(yypt[-0].yyv.p); } break;
case 40:
#line	130	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = strcmp(yypt[-2].yyv.p,yypt[-0].yyv.p) != 0; free(yypt[-2].yyv.p); free(yypt[-0].yyv.p); } break;
case 41:
#line	134	"/sys/src/cmd/tex/tpic/picy.y"
{ y.f = 0; makevar(yypt[-0].yyv.p, VARNAME, y); } break;
case 42:
#line	137	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = '+'; } break;
case 43:
#line	138	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = '-'; } break;
case 44:
#line	139	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = '*'; } break;
case 45:
#line	140	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = '/'; } break;
case 46:
#line	141	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = ' '; } break;
case 47:
#line	146	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = leftthing('{'); } break;
case 48:
#line	150	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = boxgen(); } break;
case 49:
#line	151	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = circgen(yypt[-1].yyv.i); } break;
case 50:
#line	152	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = circgen(yypt[-1].yyv.i); } break;
case 51:
#line	153	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = arcgen(yypt[-1].yyv.i); } break;
case 52:
#line	154	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = linegen(yypt[-1].yyv.i); } break;
case 53:
#line	155	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = linegen(yypt[-1].yyv.i); } break;
case 54:
#line	156	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = linegen(yypt[-1].yyv.i); } break;
case 55:
#line	157	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = movegen(); } break;
case 56:
#line	158	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = textgen(); } break;
case 57:
#line	159	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = troffgen(yypt[-0].yyv.p); } break;
case 58:
#line	160	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o=rightthing(yypt[-2].yyv.o,']'); } break;
case 59:
#line	161	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = blockgen(yypt[-4].yyv.o, yypt[-1].yyv.o); } break;
case 60:
#line	165	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = leftthing('['); } break;
case 63:
#line	174	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(yypt[-1].yyv.i, !DEFAULT, yypt[-0].yyv.f); } break;
case 64:
#line	175	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(yypt[-0].yyv.i, DEFAULT, 0.0); } break;
case 65:
#line	176	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(curdir(), !DEFAULT, yypt[-0].yyv.f); } break;
case 66:
#line	177	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(yypt[-1].yyv.i, !DEFAULT, yypt[-0].yyv.f); } break;
case 67:
#line	178	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(yypt[-0].yyv.i, DEFAULT, 0.0); } break;
case 68:
#line	179	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(yypt[-1].yyv.i, yypt[-0].yyv.o); } break;
case 69:
#line	180	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(yypt[-1].yyv.i, yypt[-0].yyv.o); } break;
case 70:
#line	181	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(yypt[-1].yyv.i, yypt[-0].yyv.o); } break;
case 71:
#line	182	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(yypt[-1].yyv.i, yypt[-0].yyv.o); } break;
case 72:
#line	183	"/sys/src/cmd/tex/tpic/picy.y"
{ makeiattr(WITH, yypt[-0].yyv.i); } break;
case 73:
#line	184	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(PLACE, getblock(getlast(1,BLOCK), yypt[-0].yyv.p)); } break;
case 74:
#line	186	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(PLACE, getpos(getblock(getlast(1,BLOCK), yypt[-1].yyv.p), yypt[-0].yyv.i)); } break;
case 75:
#line	187	"/sys/src/cmd/tex/tpic/picy.y"
{ makeoattr(PLACE, yypt[-0].yyv.o); } break;
case 76:
#line	188	"/sys/src/cmd/tex/tpic/picy.y"
{ makeiattr(SAME, yypt[-0].yyv.i); } break;
case 77:
#line	189	"/sys/src/cmd/tex/tpic/picy.y"
{ maketattr(yypt[-0].yyv.i, (char *) 0); } break;
case 78:
#line	190	"/sys/src/cmd/tex/tpic/picy.y"
{ makeiattr(HEAD, yypt[-0].yyv.i); } break;
case 79:
#line	191	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(DOT, !DEFAULT, yypt[-0].yyv.f); } break;
case 80:
#line	192	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(DOT, DEFAULT, 0.0); } break;
case 81:
#line	193	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(DASH, !DEFAULT, yypt[-0].yyv.f); } break;
case 82:
#line	194	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(DASH, DEFAULT, 0.0); } break;
case 83:
#line	195	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(CHOP, !DEFAULT, yypt[-0].yyv.f); } break;
case 84:
#line	196	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(CHOP, DEFAULT, 0.0); } break;
case 85:
#line	197	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(FILL, !DEFAULT, yypt[-0].yyv.f); } break;
case 86:
#line	198	"/sys/src/cmd/tex/tpic/picy.y"
{ makefattr(FILL, DEFAULT, 0.0); } break;
case 90:
#line	207	"/sys/src/cmd/tex/tpic/picy.y"
{ maketattr(CENTER, yypt[-0].yyv.p); } break;
case 91:
#line	208	"/sys/src/cmd/tex/tpic/picy.y"
{ maketattr(yypt[-0].yyv.i, yypt[-1].yyv.p); } break;
case 92:
#line	209	"/sys/src/cmd/tex/tpic/picy.y"
{ addtattr(yypt[-0].yyv.i); } break;
case 94:
#line	213	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.p = sprintgen(yypt[-1].yyv.p); } break;
case 95:
#line	214	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.p = sprintgen(yypt[-3].yyv.p); } break;
case 96:
#line	218	"/sys/src/cmd/tex/tpic/picy.y"
{ exprsave(yypt[-0].yyv.f); yyval.i = 0; } break;
case 97:
#line	219	"/sys/src/cmd/tex/tpic/picy.y"
{ exprsave(yypt[-0].yyv.f); } break;
case 99:
#line	224	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = yypt[-1].yyv.o; } break;
case 100:
#line	225	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = makepos(yypt[-2].yyv.f, yypt[-0].yyv.f); } break;
case 101:
#line	226	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = fixpos(yypt[-4].yyv.o, yypt[-2].yyv.f, yypt[-0].yyv.f); } break;
case 102:
#line	227	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = fixpos(yypt[-4].yyv.o, -yypt[-2].yyv.f, -yypt[-0].yyv.f); } break;
case 103:
#line	228	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = fixpos(yypt[-6].yyv.o, yypt[-3].yyv.f, yypt[-1].yyv.f); } break;
case 104:
#line	229	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = fixpos(yypt[-6].yyv.o, -yypt[-3].yyv.f, -yypt[-1].yyv.f); } break;
case 105:
#line	230	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = addpos(yypt[-2].yyv.o, yypt[-0].yyv.o); } break;
case 106:
#line	231	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = subpos(yypt[-2].yyv.o, yypt[-0].yyv.o); } break;
case 107:
#line	232	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = makepos(getcomp(yypt[-3].yyv.o,DOTX), getcomp(yypt[-1].yyv.o,DOTY)); } break;
case 108:
#line	233	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = makebetween(yypt[-5].yyv.f, yypt[-3].yyv.o, yypt[-1].yyv.o); } break;
case 109:
#line	234	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = makebetween(yypt[-4].yyv.f, yypt[-2].yyv.o, yypt[-0].yyv.o); } break;
case 110:
#line	238	"/sys/src/cmd/tex/tpic/picy.y"
{ y = getvar(yypt[-0].yyv.p); yyval.o = y.o; } break;
case 111:
#line	239	"/sys/src/cmd/tex/tpic/picy.y"
{ y = getvar(yypt[-1].yyv.p); yyval.o = getpos(y.o, yypt[-0].yyv.i); } break;
case 112:
#line	240	"/sys/src/cmd/tex/tpic/picy.y"
{ y = getvar(yypt[-0].yyv.p); yyval.o = getpos(y.o, yypt[-1].yyv.i); } break;
case 113:
#line	241	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = gethere(); } break;
case 114:
#line	242	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getlast(yypt[-1].yyv.i, yypt[-0].yyv.i); } break;
case 115:
#line	243	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getpos(getlast(yypt[-2].yyv.i, yypt[-1].yyv.i), yypt[-0].yyv.i); } break;
case 116:
#line	244	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getpos(getlast(yypt[-1].yyv.i, yypt[-0].yyv.i), yypt[-2].yyv.i); } break;
case 117:
#line	245	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getfirst(yypt[-1].yyv.i, yypt[-0].yyv.i); } break;
case 118:
#line	246	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getpos(getfirst(yypt[-2].yyv.i, yypt[-1].yyv.i), yypt[-0].yyv.i); } break;
case 119:
#line	247	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getpos(getfirst(yypt[-1].yyv.i, yypt[-0].yyv.i), yypt[-2].yyv.i); } break;
case 121:
#line	249	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getpos(yypt[-1].yyv.o, yypt[-0].yyv.i); } break;
case 122:
#line	250	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getpos(yypt[-0].yyv.o, yypt[-1].yyv.i); } break;
case 123:
#line	254	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getblock(getlast(yypt[-3].yyv.i,yypt[-2].yyv.i), yypt[-0].yyv.p); } break;
case 124:
#line	255	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.o = getblock(getfirst(yypt[-3].yyv.i,yypt[-2].yyv.i), yypt[-0].yyv.p); } break;
case 125:
#line	256	"/sys/src/cmd/tex/tpic/picy.y"
{ y = getvar(yypt[-2].yyv.p); yyval.o = getblock(y.o, yypt[-0].yyv.p); } break;
case 126:
#line	260	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = yypt[-1].yyv.i + 1; } break;
case 127:
#line	261	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = yypt[-1].yyv.i; } break;
case 128:
#line	262	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.i = 1; } break;
case 138:
#line	278	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getfval(yypt[-0].yyv.p); } break;
case 140:
#line	280	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f + yypt[-0].yyv.f; } break;
case 141:
#line	281	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f - yypt[-0].yyv.f; } break;
case 142:
#line	282	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f * yypt[-0].yyv.f; } break;
case 143:
#line	283	"/sys/src/cmd/tex/tpic/picy.y"
{ if (yypt[-0].yyv.f == 0.0) {
					ERROR "division by 0" WARNING; yypt[-0].yyv.f = 1; }
				  yyval.f = yypt[-2].yyv.f / yypt[-0].yyv.f; } break;
case 144:
#line	286	"/sys/src/cmd/tex/tpic/picy.y"
{ if ((long)yypt[-0].yyv.f == 0) {
					ERROR "mod division by 0" WARNING; yypt[-0].yyv.f = 1; }
				  yyval.f = (long)yypt[-2].yyv.f % (long)yypt[-0].yyv.f; } break;
case 145:
#line	289	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = -yypt[-0].yyv.f; } break;
case 146:
#line	290	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-1].yyv.f; } break;
case 147:
#line	291	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getcomp(yypt[-1].yyv.o, yypt[-0].yyv.i); } break;
case 148:
#line	292	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getcomp(yypt[-1].yyv.o, yypt[-0].yyv.i); } break;
case 149:
#line	293	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getcomp(yypt[-1].yyv.o, yypt[-0].yyv.i); } break;
case 150:
#line	294	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getcomp(yypt[-1].yyv.o, yypt[-0].yyv.i); } break;
case 151:
#line	295	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getcomp(yypt[-1].yyv.o, yypt[-0].yyv.i); } break;
case 152:
#line	296	"/sys/src/cmd/tex/tpic/picy.y"
{ y = getvar(yypt[-2].yyv.p); yyval.f = getblkvar(y.o, yypt[-0].yyv.p); } break;
case 153:
#line	297	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getblkvar(getlast(yypt[-3].yyv.i,yypt[-2].yyv.i), yypt[-0].yyv.p); } break;
case 154:
#line	298	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = getblkvar(getfirst(yypt[-3].yyv.i,yypt[-2].yyv.i), yypt[-0].yyv.p); } break;
case 155:
#line	299	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f > yypt[-0].yyv.f; } break;
case 156:
#line	300	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f < yypt[-0].yyv.f; } break;
case 157:
#line	301	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f <= yypt[-0].yyv.f; } break;
case 158:
#line	302	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f >= yypt[-0].yyv.f; } break;
case 159:
#line	303	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f == yypt[-0].yyv.f; } break;
case 160:
#line	304	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f != yypt[-0].yyv.f; } break;
case 161:
#line	305	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f && yypt[-0].yyv.f; } break;
case 162:
#line	306	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-2].yyv.f || yypt[-0].yyv.f; } break;
case 163:
#line	307	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = !(yypt[-0].yyv.f); } break;
case 164:
#line	308	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = Log10(yypt[-1].yyv.f); } break;
case 165:
#line	309	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = Exp(yypt[-1].yyv.f * log(10.0)); } break;
case 166:
#line	310	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = pow(yypt[-2].yyv.f, yypt[-0].yyv.f); } break;
case 167:
#line	311	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = sin(yypt[-1].yyv.f); } break;
case 168:
#line	312	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = cos(yypt[-1].yyv.f); } break;
case 169:
#line	313	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = atan2(yypt[-3].yyv.f, yypt[-1].yyv.f); } break;
case 170:
#line	314	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = Sqrt(yypt[-1].yyv.f); } break;
case 171:
#line	315	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = (float)rand() / 32767.0; /* might be 2^31-1 */ } break;
case 172:
#line	316	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-3].yyv.f >= yypt[-1].yyv.f ? yypt[-3].yyv.f : yypt[-1].yyv.f; } break;
case 173:
#line	317	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = yypt[-3].yyv.f <= yypt[-1].yyv.f ? yypt[-3].yyv.f : yypt[-1].yyv.f; } break;
case 174:
#line	318	"/sys/src/cmd/tex/tpic/picy.y"
{ yyval.f = (long) yypt[-1].yyv.f; } break;
	}
	goto yystack;  /* stack new state and value */
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].