#line 2 "/sys/src/cmd/tex/tpic/picy.y" #include #include "pic.h" #include 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 */ }