x/internal/pic/parser.go
2020-06-11 21:26:57 -07:00

1484 lines
43 KiB
Go
Executable File

package pic
// type yySymType struct{
// yys int
// str string
// result Result
// }
// /*
// * Changes by Gunnar Ritter, Freiburg i. Br., Germany, October 2005.
// *
// * Derived from Plan 9 v4 /sys/src/cmd/pic/
// *
// * Copyright (C) 2003, Lucent Technologies Inc. and others.
// * All Rights Reserved.
// *
// * Distributed under the terms of the Lucent Public License Version 1.02.
// */
// /* Sccsid @(#)picy.y 1.4 (gritter) 11/28/05 */
// // #include <stdio.h>
// // #include "pic.h"
// // #include <math.h>
// // #include <stdlib.h>
// // #include <string.h>
// // #ifndef RAND_MAX
// // #define RAND_MAX 32767
// // #endif
// // YYSTYPE y;
// // extern void yyerror(char *);
// // extern int yylex(void);
// const BOX = 1
// const LINE = 2
// const ARROW = 3
// const CIRCLE = 4
// const ELLIPSE = 5
// const ARC = 6
// const SPLINE = 7
// const BLOCK = 8
// const TEXT = 9
// const TROFF = 10
// const MOVE = 11
// const BLOCKEND = 12
// const PLACE = 13
// const PRINT = 57359
// const RESET = 57360
// const THRU = 57361
// const UNTIL = 57362
// const FOR = 57363
// const IF = 57364
// const COPY = 57365
// const THENSTR = 57366
// const ELSESTR = 57367
// const DOSTR = 57368
// const PLACENAME = 57369
// const VARNAME = 57370
// const SPRINTF = 57371
// const DEFNAME = 57372
// const ATTR = 57373
// const TEXTATTR = 57374
// const LEFT = 57375
// const RIGHT = 57376
// const UP = 57377
// const DOWN = 57378
// const FROM = 57379
// const TO = 57380
// const AT = 57381
// const BY = 57382
// const WITH = 57383
// const HEAD = 57384
// const CW = 57385
// const CCW = 57386
// const THEN = 57387
// const HEIGHT = 57388
// const WIDTH = 57389
// const RADIUS = 57390
// const DIAMETER = 57391
// const LENGTH = 57392
// const SIZE = 57393
// const CORNER = 57394
// const HERE = 57395
// const LAST = 57396
// const NTH = 57397
// const SAME = 57398
// const BETWEEN = 57399
// const AND = 57400
// const EAST = 57401
// const WEST = 57402
// const NORTH = 57403
// const SOUTH = 57404
// const NE = 57405
// const NW = 57406
// const SE = 57407
// const SW = 57408
// const START = 57409
// const END = 57410
// const DOTX = 57411
// const DOTY = 57412
// const DOTHT = 57413
// const DOTWID = 57414
// const DOTRAD = 57415
// const NUMBER = 57416
// const LOG = 57417
// const EXP = 57418
// const SIN = 57419
// const COS = 57420
// const ATAN2 = 57421
// const SQRT = 57422
// const RAND = 57423
// const MIN = 57424
// const MAX = 57425
// const INT = 57426
// const DIR = 57427
// const DOT = 57428
// const DASH = 57429
// const CHOP = 57430
// const FILL = 57431
// const NOEDGE = 57432
// const ST = 57433
// const OROR = 57434
// const ANDAND = 57435
// const GT = 57436
// const LT = 57437
// const LE = 57438
// const GE = 57439
// const EQ = 57440
// const NEQ = 57441
// const UMINUS = 57442
// const NOT = 57443
// var yyToknames = [...]string{
// "$end",
// "error",
// "$unk",
// "BOX",
// "LINE",
// "ARROW",
// "CIRCLE",
// "ELLIPSE",
// "ARC",
// "SPLINE",
// "BLOCK",
// "TEXT",
// "TROFF",
// "MOVE",
// "BLOCKEND",
// "PLACE",
// "PRINT",
// "RESET",
// "THRU",
// "UNTIL",
// "FOR",
// "IF",
// "COPY",
// "THENSTR",
// "ELSESTR",
// "DOSTR",
// "PLACENAME",
// "VARNAME",
// "SPRINTF",
// "DEFNAME",
// "ATTR",
// "TEXTATTR",
// "LEFT",
// "RIGHT",
// "UP",
// "DOWN",
// "FROM",
// "TO",
// "AT",
// "BY",
// "WITH",
// "HEAD",
// "CW",
// "CCW",
// "THEN",
// "HEIGHT",
// "WIDTH",
// "RADIUS",
// "DIAMETER",
// "LENGTH",
// "SIZE",
// "CORNER",
// "HERE",
// "LAST",
// "NTH",
// "SAME",
// "BETWEEN",
// "AND",
// "EAST",
// "WEST",
// "NORTH",
// "SOUTH",
// "NE",
// "NW",
// "SE",
// "SW",
// "START",
// "END",
// "DOTX",
// "DOTY",
// "DOTHT",
// "DOTWID",
// "DOTRAD",
// "NUMBER",
// "LOG",
// "EXP",
// "SIN",
// "COS",
// "ATAN2",
// "SQRT",
// "RAND",
// "MIN",
// "MAX",
// "INT",
// "DIR",
// "DOT",
// "DASH",
// "CHOP",
// "FILL",
// "NOEDGE",
// "ST",
// "'='",
// "OROR",
// "ANDAND",
// "GT",
// "LT",
// "LE",
// "GE",
// "EQ",
// "NEQ",
// "'+'",
// "'-'",
// "'*'",
// "'/'",
// "'%'",
// "UMINUS",
// "NOT",
// "'^'",
// "'}'",
// "':'",
// "','",
// "'{'",
// "']'",
// "'['",
// "'.'",
// "'('",
// "')'",
// }
// var yyStatenames = [...]string{}
// const yyEofCode = 1
// const yyErrCode = 2
// const yyInitialStackSize = 16
// var yyExca = [...]int{
// -1, 0,
// 1, 2,
// -2, 0,
// -1, 1,
// 1, -1,
// -2, 0,
// -1, 206,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 159,
// -1, 213,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 158,
// -1, 214,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 160,
// -1, 215,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 161,
// -1, 216,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 162,
// -1, 217,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 163,
// -1, 264,
// 69, 112,
// 70, 112,
// 71, 112,
// 72, 112,
// 73, 112,
// -2, 85,
// -1, 270,
// 95, 0,
// 96, 0,
// 97, 0,
// 98, 0,
// 99, 0,
// 100, 0,
// -2, 159,
// }
// const yyPrivate = 57344
// const yyLast = 1654
// var yyAct = [...]int{
// 173, 334, 139, 32, 53, 68, 312, 242, 124, 125,
// 137, 42, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 95, 227, 122, 162, 320, 81, 43,
// 274, 137, 92, 319, 51, 299, 273, 161, 137, 160,
// 159, 105, 158, 157, 156, 155, 154, 153, 98, 127,
// 128, 131, 109, 298, 246, 235, 152, 149, 233, 40,
// 112, 113, 114, 122, 51, 122, 41, 72, 40, 194,
// 102, 164, 166, 138, 130, 110, 111, 112, 113, 114,
// 129, 83, 122, 169, 190, 73, 74, 75, 76, 77,
// 78, 79, 80, 276, 246, 200, 110, 111, 112, 113,
// 114, 138, 126, 122, 124, 125, 107, 38, 204, 206,
// 105, 208, 209, 210, 211, 212, 213, 214, 215, 216,
// 217, 218, 219, 220, 195, 221, 224, 132, 133, 134,
// 135, 136, 51, 51, 124, 125, 124, 125, 205, 207,
// 198, 199, 34, 316, 275, 321, 168, 85, 223, 226,
// 234, 124, 125, 44, 236, 237, 238, 239, 240, 241,
// 203, 243, 244, 245, 232, 167, 170, 247, 249, 228,
// 124, 125, 86, 252, 93, 253, 105, 105, 105, 105,
// 105, 96, 97, 123, 261, 262, 263, 265, 335, 336,
// 337, 338, 81, 124, 125, 267, 268, 192, 270, 51,
// 51, 51, 51, 51, 251, 254, 255, 256, 257, 260,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 278, 90, 122, 280, 86, 311, 282,
// 287, 193, 191, 283, 229, 132, 133, 134, 135, 136,
// 71, 201, 142, 146, 147, 143, 144, 145, 148, 250,
// 285, 35, 281, 300, 66, 67, 69, 284, 87, 88,
// 287, 288, 35, 164, 166, 269, 2, 4, 36, 230,
// 37, 285, 286, 39, 163, 305, 105, 105, 308, 36,
// 310, 196, 188, 24, 171, 24, 266, 149, 84, 24,
// 230, 231, 151, 82, 313, 70, 314, 315, 1, 51,
// 51, 69, 165, 317, 318, 306, 307, 37, 100, 24,
// 322, 5, 323, 142, 146, 147, 143, 144, 145, 148,
// 248, 331, 24, 24, 26, 6, 12, 13, 14, 304,
// 89, 339, 91, 0, 301, 340, 0, 0, 0, 0,
// 341, 271, 272, 16, 20, 21, 17, 18, 19, 22,
// 37, 35, 25, 23, 52, 46, 10, 11, 0, 0,
// 30, 31, 29, 141, 0, 24, 103, 46, 36, 202,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
// 67, 69, 54, 0, 24, 0, 0, 0, 0, 0,
// 0, 66, 67, 69, 54, 0, 0, 0, 0, 0,
// 0, 45, 56, 57, 58, 59, 60, 61, 62, 64,
// 63, 65, 0, 45, 56, 57, 58, 59, 60, 61,
// 62, 64, 63, 65, 9, 0, 0, 0, 49, 48,
// 101, 0, 303, 0, 55, 0, 0, 0, 0, 0,
// 49, 48, 35, 94, 0, 0, 55, 0, 0, 0,
// 0, 27, 0, 33, 0, 50, 0, 52, 46, 36,
// 0, 172, 181, 0, 0, 0, 0, 175, 176, 177,
// 178, 179, 182, 0, 142, 146, 147, 143, 144, 145,
// 148, 150, 66, 67, 69, 54, 180, 121, 120, 115,
// 197, 116, 117, 118, 119, 110, 111, 112, 113, 114,
// 0, 0, 122, 0, 45, 56, 57, 58, 59, 60,
// 61, 62, 64, 63, 65, 174, 183, 184, 185, 186,
// 187, 0, 0, 35, 151, 0, 0, 0, 0, 0,
// 0, 49, 48, 0, 35, 0, 0, 55, 52, 46,
// 36, 0, 0, 0, 0, 0, 94, 0, 0, 52,
// 46, 36, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 66, 67, 69, 54, 0, 0, 0,
// 0, 0, 0, 0, 66, 67, 69, 54, 0, 0,
// 0, 0, 0, 0, 0, 45, 56, 57, 58, 59,
// 60, 61, 62, 64, 63, 65, 45, 56, 57, 58,
// 59, 60, 61, 62, 64, 63, 65, 52, 46, 0,
// 0, 0, 49, 48, 0, 0, 0, 0, 55, 52,
// 46, 0, 0, 49, 48, 0, 0, 94, 0, 55,
// 0, 0, 258, 67, 69, 54, 0, 0, 50, 0,
// 0, 0, 0, 0, 66, 67, 69, 54, 0, 0,
// 0, 0, 0, 0, 45, 56, 57, 58, 59, 60,
// 61, 62, 64, 63, 65, 0, 45, 56, 57, 58,
// 59, 60, 61, 62, 64, 63, 65, 264, 46, 0,
// 0, 49, 48, 0, 0, 0, 0, 55, 52, 46,
// 0, 0, 0, 49, 48, 259, 50, 0, 0, 55,
// 0, 0, 66, 67, 69, 54, 0, 0, 50, 0,
// 0, 0, 0, 66, 67, 69, 54, 0, 0, 0,
// 0, 0, 0, 0, 45, 56, 57, 58, 59, 60,
// 61, 62, 64, 63, 65, 45, 56, 57, 58, 59,
// 60, 61, 62, 64, 63, 65, 52, 46, 0, 0,
// 0, 49, 48, 0, 0, 0, 0, 55, 0, 0,
// 0, 0, 49, 48, 0, 0, 94, 0, 55, 0,
// 0, 66, 67, 69, 54, 0, 0, 225, 120, 115,
// 197, 116, 117, 118, 119, 110, 111, 112, 113, 114,
// 0, 0, 122, 45, 56, 57, 58, 59, 60, 61,
// 62, 64, 63, 65, 0, 16, 20, 21, 17, 18,
// 19, 22, 0, 35, 25, 23, 0, 0, 10, 11,
// 49, 48, 30, 31, 29, 0, 55, 0, 7, 28,
// 36, 0, 0, 0, 0, 222, 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, 3, 0, 16, 20, 21, 17, 18, 19,
// 22, 0, 35, 25, 23, 0, 0, 10, 11, 0,
// 0, 30, 31, 29, 0, 0, 9, 7, 28, 36,
// 0, 0, 15, 0, 0, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 0, 0,
// 122, 0, 0, 27, 189, 33, 0, 9, 0, 333,
// 0, 0, 0, 15, 121, 120, 115, 197, 116, 117,
// 118, 119, 110, 111, 112, 113, 114, 0, 0, 122,
// 0, 99, 109, 0, 27, 9, 33, 0, 332, 0,
// 0, 15, 16, 20, 21, 17, 18, 19, 22, 0,
// 35, 25, 23, 0, 0, 10, 11, 0, 0, 30,
// 31, 29, 27, 0, 33, 7, 28, 36, 121, 120,
// 115, 108, 116, 117, 118, 119, 110, 111, 112, 113,
// 114, 0, 0, 122, 0, 0, 107, 0, 0, 0,
// 0, 0, 229, 121, 120, 115, 197, 116, 117, 118,
// 119, 110, 111, 112, 113, 114, 0, 0, 122, 0,
// 0, 309, 0, 0, 0, 0, 0, 229, 0, 0,
// 0, 0, 0, 9, 0, 0, 0, 0, 0, 15,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 0, 122, 0, 0, 0, 0,
// 27, 0, 33, 0, 326, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 0, 0,
// 122, 142, 146, 147, 143, 144, 145, 148, 140, 325,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 0, 122, 0, 0, 0, 0,
// 0, 0, 0, 0, 324, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 0, 0,
// 122, 141, 0, 0, 0, 0, 0, 0, 0, 297,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 0, 122, 0, 0, 0, 0,
// 0, 0, 0, 0, 294, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 0, 0,
// 122, 0, 0, 0, 0, 0, 0, 0, 0, 292,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 0, 122, 0, 0, 0, 0,
// 0, 0, 0, 0, 291, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 0, 0,
// 122, 0, 0, 0, 0, 0, 0, 0, 0, 290,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 109, 122, 0, 0, 0, 0,
// 0, 0, 0, 0, 289, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 109, 0,
// 122, 0, 0, 0, 0, 0, 0, 0, 106, 229,
// 121, 120, 115, 108, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 0, 122, 0, 0, 107, 0,
// 0, 0, 0, 0, 121, 120, 115, 108, 116, 117,
// 118, 119, 110, 111, 112, 113, 114, 0, 0, 122,
// 0, 0, 107, 121, 120, 115, 197, 116, 117, 118,
// 119, 110, 111, 112, 113, 114, 0, 0, 122, 0,
// 0, 296, 121, 120, 115, 197, 116, 117, 118, 119,
// 110, 111, 112, 113, 114, 0, 0, 122, 0, 0,
// 295, 121, 120, 115, 197, 116, 117, 118, 119, 110,
// 111, 112, 113, 114, 0, 0, 122, 343, 0, 293,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 342, 0, 122, 0, 0, 279, 121,
// 120, 115, 197, 116, 117, 118, 119, 110, 111, 112,
// 113, 114, 330, 0, 122, 0, 0, 277, 0, 0,
// 0, 0, 0, 0, 0, 0, 329, 0, 328, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 327, 0, 121, 120, 115, 197, 116, 117,
// 118, 119, 110, 111, 112, 113, 114, 302, 0, 122,
// 121, 120, 115, 197, 116, 117, 118, 119, 110, 111,
// 112, 113, 114, 0, 0, 122, 0, 0, 0, 121,
// 120, 115, 197, 116, 117, 118, 119, 110, 111, 112,
// 113, 114, 0, 0, 122, 121, 120, 115, 197, 116,
// 117, 118, 119, 110, 111, 112, 113, 114, 0, 0,
// 122, 0, 121, 120, 115, 197, 116, 117, 118, 119,
// 110, 111, 112, 113, 114, 0, 0, 122, 121, 120,
// 115, 197, 116, 117, 118, 119, 110, 111, 112, 113,
// 114, 47, 8, 122, 8, 0, 0, 0, 8, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 8, 104, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 8,
// }
// var yyPact = [...]int{
// 860, -1000, 948, -1000, -1000, 16, 948, -51, -25, -1000,
// 522, 212, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
// -1000, -1000, -1000, -1000, 250, -1000, 948, -1000, -11, 239,
// 196, 511, 149, -1000, 150, -1000, -68, -1000, -1000, 832,
// 339, -1000, 1197, 92, 11, -1000, -11, -1000, 327, 327,
// 592, 166, -14, 1077, 470, 327, -69, -70, -71, -72,
// -73, -74, -76, -77, -79, -90, 247, -1000, 113, -1000,
// 55, -1000, 430, 430, 430, 430, 430, 430, 430, 430,
// 430, 149, 801, 327, 239, -1000, -1000, 167, 250, 32,
// -1000, 257, 1445, 41, 327, 166, -1000, -1000, 250, -1000,
// -1000, 948, 69, -42, -25, 1221, -1000, 327, 592, 592,
// 327, 327, 327, 327, 327, 327, 327, 327, 327, 327,
// 327, 327, 327, -1000, 719, 661, -1000, -45, -45, -93,
// 58, 885, -1000, -1000, -1000, -1000, -1000, -1000, 263, 112,
// -57, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 98,
// -60, -1000, -45, 327, 327, 327, 327, 327, 327, -110,
// 327, 327, 327, -61, 309, 238, -1000, -1000, -1000, -1000,
// 176, -1000, 327, 1445, 327, 592, 592, 592, 592, 580,
// -1000, -1000, -1000, 327, 327, 650, 327, -1000, 250, -1000,
// 1445, -1000, -1000, -1000, 327, 327, 240, 327, 250, 250,
// 1172, -81, -1000, -1000, 1445, 33, -5, 35, -43, -43,
// -45, -45, -45, -26, -26, -26, -26, -26, -83, 684,
// -45, 1316, 327, 166, 1297, 327, 166, -1000, 202, -1000,
// -1000, -1000, -1000, 244, -1000, 233, 1147, 1122, 1097, 1072,
// 1278, 1047, -1000, 1259, 1240, 1022, 242, -1000, -62, -1000,
// -80, -1000, 1445, 1445, 3, 3, 3, 3, 247, 226,
// 3, 1445, 1445, 1445, -14, 1445, -1000, 1429, 394, -1000,
// -26, -1000, -1000, -1000, 327, 592, 592, 327, 910, 327,
// 117, -111, -21, 309, 238, -1000, -1000, -1000, -1000, -1000,
// -1000, -1000, -1000, 327, -1000, 327, 327, -1000, 223, 203,
// 91, 430, 327, 327, -84, 1445, 50, 3, 1445, 327,
// 1445, 327, -1000, 997, 972, 947, -1000, 1412, 1396, -1000,
// 327, -1000, 831, 802, -1000, -1000, -1000, 87, -1000, 87,
// -1000, 1445, -1000, -1000, 327, -1000, -1000, -1000, -1000, 327,
// 1377, 1361, -1000, -1000,
// }
// var yyPgo = [...]int{
// 0, 0, 332, 1551, 330, 142, 1, 329, 328, 327,
// 326, 325, 267, 266, 29, 324, 311, 23, 5, 282,
// 3, 4, 2, 298, 295, 288, 147, 67, 286, 284,
// }
// var yyR1 = [...]int{
// 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, 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, 1,
// }
// var yyR2 = [...]int{
// 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, 2, 1, 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, 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,
// }
// var yyChk = [...]int{
// -1000, -23, -13, 2, -12, -16, -11, 27, -3, 85,
// 17, 18, -10, -9, -8, 91, 4, 7, 8, 9,
// 5, 6, 10, 14, -19, 13, -15, 112, 28, 23,
// 21, 22, -20, 114, -5, 12, 29, -12, 91, -13,
// 110, 91, -1, -14, -5, 74, 28, -3, 102, 101,
// 116, -17, 27, -21, 55, 107, 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, 92, -25, -26, -5, 19, 20, -4,
// 28, -2, -1, -5, 116, -17, 32, 32, 116, 109,
// -12, 91, -14, 27, -3, -1, 91, 111, 96, 57,
// 101, 102, 103, 104, 105, 95, 97, 98, 99, 100,
// 94, 93, 108, 91, 101, 102, 91, -1, -1, -14,
// -17, -1, 69, 70, 71, 72, 73, 52, 115, -22,
// 11, 54, 4, 7, 8, 9, 5, 6, 10, -22,
// 11, 54, -1, 116, 116, 116, 116, 116, 116, 116,
// 116, 116, 116, 27, -21, 55, -18, 52, 91, 28,
// 111, -29, 31, -1, 85, 37, 38, 39, 40, 41,
// 56, 32, 42, 86, 87, 88, 89, 90, -19, 113,
// -1, -26, 30, -5, 37, 92, 24, 96, 99, 100,
// -1, -5, -12, 91, -1, -14, -1, -14, -1, -1,
// -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
// -1, -1, 116, -17, -1, 116, -17, 117, 111, 117,
// 27, 28, 52, 115, 52, 115, -1, -1, -1, -1,
// -1, -1, 117, -1, -1, -1, 115, -22, 11, -22,
// 11, 28, -1, -1, -14, -14, -14, -14, 52, 115,
// -14, -1, -1, -1, 27, -1, -28, -1, -1, 25,
// -1, -5, -5, 117, 111, 111, 58, 111, -1, 111,
// -1, -17, 27, -21, 55, 27, 28, 27, 28, 117,
// 117, 117, 117, 111, 117, 111, 111, 117, 115, 115,
// 27, -27, 38, 38, -7, -1, -14, -14, -1, 111,
// -1, 111, 117, -1, -1, -1, 52, -1, -1, 117,
// 111, 95, -1, -1, 117, 117, 117, 40, 26, 40,
// 26, -1, 117, 117, -6, 101, 102, 103, 104, -6,
// -1, -1, 26, 26,
// }
// var yyDef = [...]int{
// -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, 90, 60, 92, 95, 0, 5, 6, 0,
// 0, 11, 0, 0, 0, 139, 140, 141, 0, 0,
// 0, 100, 112, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 115, 122, 130,
// 0, 22, 48, 49, 50, 51, 52, 53, 54, 55,
// 56, 91, 0, 0, 26, 27, 29, 0, 0, 0,
// 41, 0, 38, 0, 0, 0, 94, 93, 0, 7,
// 8, 20, 0, 112, 141, 0, 13, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 14, 0, 0, 15, 147, 148, 0,
// 100, 0, 150, 151, 152, 153, 154, 113, 0, 116,
// 138, 128, 131, 132, 133, 134, 135, 136, 137, 119,
// 138, 129, 166, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 114, 0, 0, 124, 123, 16, 23,
// 0, 61, 64, 65, 67, 0, 0, 0, 0, 0,
// 76, 77, 78, 80, 82, 84, 87, 88, 89, 58,
// 25, 28, 30, 31, 0, 0, 37, 0, 0, 0,
// 0, 0, 9, 10, 102, 0, -2, 0, 142, 143,
// 144, 145, 146, -2, -2, -2, -2, -2, 164, 165,
// 169, 0, 0, 107, 0, 0, 108, 101, 0, 149,
// 127, 155, 117, 0, 120, 0, 0, 0, 0, 0,
// 0, 0, 174, 0, 0, 0, 0, 118, 138, 121,
// 138, 24, 63, 66, 68, 69, 70, 71, 72, 0,
// 75, 79, 81, 83, -2, 86, 62, 0, 0, 36,
// -2, 39, 40, 96, 0, 0, 0, 0, 0, 0,
// 0, 0, 112, 0, 0, 125, 156, 126, 157, 167,
// 168, 170, 171, 0, 173, 0, 0, 177, 0, 0,
// 73, 59, 0, 0, 0, 98, 0, 111, 103, 0,
// 104, 0, 109, 0, 0, 0, 74, 0, 0, 97,
// 0, 110, 0, 0, 172, 175, 176, 46, 33, 46,
// 35, 99, 105, 106, 0, 42, 43, 44, 45, 0,
// 0, 0, 32, 34,
// }
// var yyTok1 = [...]int{
// 1, 4, 5, 6, 7, 8, 9, 10, 11, 12,
// 13, 14, 15, 16, 3, 3, 3, 3, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 105, 3, 3,
// 116, 117, 103, 101, 111, 102, 115, 104, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 3, 110, 3,
// 3, 92, 3, 3, 3, 3, 3, 3, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 3, 114, 3, 113, 108, 3, 3, 3, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 3, 3, 3, 112, 3, 109,
// }
// var yyTok2 = [...]int{
// 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, 91,
// 93, 94, 95, 96, 97, 98, 99, 100, 106, 107,
// }
// var yyTok3 = [...]int{
// 0,
// }
// var yyErrorMessages = [...]struct {
// state int
// token int
// msg string
// }{
// }
// /* parser for yacc output */
// var (
// yyDebug = 0
// yyErrorVerbose = false
// )
// type yyLexer interface {
// Lex(lval *yySymType) int
// Error(s string)
// }
// type yyParser interface {
// Parse(yyLexer) int
// Lookahead() int
// }
// type yyParserImpl struct {
// lval yySymType
// stack [yyInitialStackSize]yySymType
// char int
// }
// func (p *yyParserImpl) Lookahead() int {
// return p.char
// }
// func yyNewParser() yyParser {
// return &yyParserImpl{}
// }
// const yyFlag = -1000
// func yyTokname(c int) string {
// if c >= 1 && c-1 < len(yyToknames) {
// if yyToknames[c-1] != "" {
// return yyToknames[c-1]
// }
// }
// return __yyfmt__.Sprintf("tok-%v", c)
// }
// func yyStatname(s int) string {
// if s >= 0 && s < len(yyStatenames) {
// if yyStatenames[s] != "" {
// return yyStatenames[s]
// }
// }
// return __yyfmt__.Sprintf("state-%v", s)
// }
// func yyErrorMessage(state, lookAhead int) string {
// const TOKSTART = 4
// if !yyErrorVerbose {
// return "syntax error"
// }
// for _, e := range yyErrorMessages {
// if e.state == state && e.token == lookAhead {
// return "syntax error: " + e.msg
// }
// }
// res := "syntax error: unexpected " + yyTokname(lookAhead)
// // To match Bison, suggest at most four expected tokens.
// expected := make([]int, 0, 4)
// // Look for shiftable tokens.
// base := yyPact[state]
// for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
// if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
// if len(expected) == cap(expected) {
// return res
// }
// expected = append(expected, tok)
// }
// }
// if yyDef[state] == -2 {
// i := 0
// for yyExca[i] != -1 || yyExca[i+1] != state {
// i += 2
// }
// // Look for tokens that we accept or reduce.
// for i += 2; yyExca[i] >= 0; i += 2 {
// tok := yyExca[i]
// if tok < TOKSTART || yyExca[i+1] == 0 {
// continue
// }
// if len(expected) == cap(expected) {
// return res
// }
// expected = append(expected, tok)
// }
// // If the default action is to accept or reduce, give up.
// if yyExca[i+1] != 0 {
// return res
// }
// }
// for i, tok := range expected {
// if i == 0 {
// res += ", expecting "
// } else {
// res += " or "
// }
// res += yyTokname(tok)
// }
// return res
// }
// func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
// token = 0
// char = lex.Lex(lval)
// if char <= 0 {
// token = yyTok1[0]
// goto out
// }
// if char < len(yyTok1) {
// token = yyTok1[char]
// goto out
// }
// if char >= yyPrivate {
// if char < yyPrivate+len(yyTok2) {
// token = yyTok2[char-yyPrivate]
// goto out
// }
// }
// for i := 0; i < len(yyTok3); i += 2 {
// token = yyTok3[i+0]
// if token == char {
// token = yyTok3[i+1]
// goto out
// }
// }
// out:
// if token == 0 {
// token = yyTok2[1] /* unknown char */
// }
// if yyDebug >= 3 {
// __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
// }
// return char, token
// }
// func yyParse(yylex yyLexer) int {
// return yyNewParser().Parse(yylex)
// }
// func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
// var yyn int
// var yyVAL yySymType
// var yyDollar []yySymType
// _ = yyDollar // silence set and not used
// yyS := yyrcvr.stack[:]
// Nerrs := 0 /* number of errors */
// Errflag := 0 /* error recovery flag */
// yystate := 0
// yyrcvr.char = -1
// yytoken := -1 // yyrcvr.char translated into internal numbering
// defer func() {
// // Make sure we report no lookahead when not parsing.
// yystate = -1
// yyrcvr.char = -1
// yytoken = -1
// }()
// yyp := -1
// goto yystack
// ret0:
// return 0
// ret1:
// return 1
// yystack:
// /* put a state and value onto the stack */
// if yyDebug >= 4 {
// __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
// }
// yyp++
// if yyp >= len(yyS) {
// nyys := make([]yySymType, len(yyS)*2)
// copy(nyys, yyS)
// yyS = nyys
// }
// yyS[yyp] = yyVAL
// yyS[yyp].yys = yystate
// yynewstate:
// yyn = yyPact[yystate]
// if yyn <= yyFlag {
// goto yydefault /* simple state */
// }
// if yyrcvr.char < 0 {
// yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
// }
// yyn += yytoken
// if yyn < 0 || yyn >= yyLast {
// goto yydefault
// }
// yyn = yyAct[yyn]
// if yyChk[yyn] == yytoken { /* valid shift */
// yyrcvr.char = -1
// yytoken = -1
// yyVAL = yyrcvr.lval
// yystate = yyn
// if Errflag > 0 {
// Errflag--
// }
// goto yystack
// }
// yydefault:
// /* default state action */
// yyn = yyDef[yystate]
// if yyn == -2 {
// if yyrcvr.char < 0 {
// yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
// }
// /* look through exception table */
// xi := 0
// for {
// if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
// break
// }
// xi += 2
// }
// for xi += 2; ; xi += 2 {
// yyn = yyExca[xi+0]
// if yyn < 0 || yyn == yytoken {
// break
// }
// }
// yyn = yyExca[xi+1]
// if yyn < 0 {
// goto ret0
// }
// }
// if yyn == 0 {
// /* error ... attempt to resume parsing */
// switch Errflag {
// case 0: /* brand new error */
// yylex.Error(yyErrorMessage(yystate, yytoken))
// Nerrs++
// if yyDebug >= 1 {
// __yyfmt__.Printf("%s", yyStatname(yystate))
// __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
// }
// fallthrough
// case 1, 2: /* incompletely recovered error ... try again */
// Errflag = 3
// /* find a state where "error" is a legal shift action */
// for yyp >= 0 {
// yyn = yyPact[yyS[yyp].yys] + yyErrCode
// if yyn >= 0 && yyn < yyLast {
// yystate = yyAct[yyn] /* simulate a shift of "error" */
// if yyChk[yystate] == yyErrCode {
// goto yystack
// }
// }
// /* the current p has no shift on "error", pop stack */
// if yyDebug >= 2 {
// __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].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 >= 2 {
// __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
// }
// if yytoken == yyEofCode {
// goto ret1
// }
// yyrcvr.char = -1
// yytoken = -1
// goto yynewstate /* try again in the same state */
// }
// }
// /* reduction by production yyn */
// if yyDebug >= 2 {
// __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
// }
// yynt := yyn
// yypt := yyp
// _ = yypt // guard against "declared and not used"
// yyp -= yyR2[yyn]
// // yyp is now the index of $0. Perform the default action. Iff the
// // reduced production is ε, $1 is possibly out of range.
// if yyp+1 >= len(yyS) {
// nyys := make([]yySymType, len(yyS)*2)
// copy(nyys, yyS)
// yyS = nyys
// }
// yyVAL = yyS[yyp+1]
// /* consult goto table to find next state */
// yyn = yyR1[yyn]
// yyg := yyPgo[yyn]
// yyj := yyg + yyS[yyp].yys + 1
// if yyj >= yyLast {
// yystate = yyAct[yyg]
// } else {
// yystate = yyAct[yyj]
// if yyChk[yystate] != -yyn {
// yystate = yyAct[yyg]
// }
// }
// // dummy call; replaced with literal code
// switch yynt {
// case 3:
// yyDollar = yyS[yypt-1:yypt+1]
// { WARNING("syntax error"); }
// case 6:
// yyDollar = yyS[yypt-2:yypt+1]
// { codegen = 1; makeiattr(0, 0); }
// case 7:
// yyDollar = yyS[yypt-3:yypt+1]
// { rightthing(yyDollar[1].o, '}'); yyVAL.o = yyDollar[2].o; }
// case 8:
// yyDollar = yyS[yypt-3:yypt+1]
// { y.o=yyDollar[3].o; makevar(yyDollar[1].p,PLACENAME,y); yyVAL.o = yyDollar[3].o; }
// case 9:
// yyDollar = yyS[yypt-4:yypt+1]
// { y.o=yyDollar[4].o; makevar(yyDollar[1].p,PLACENAME,y); yyVAL.o = yyDollar[4].o; }
// case 10:
// yyDollar = yyS[yypt-4:yypt+1]
// { y.o=yyDollar[3].o; makevar(yyDollar[1].p,PLACENAME,y); yyVAL.o = yyDollar[3].o; }
// case 11:
// yyDollar = yyS[yypt-2:yypt+1]
// { y.f = yyDollar[1].f; yyVAL.o = y.o; yyVAL.o = makenode(PLACE, 0); }
// case 12:
// yyDollar = yyS[yypt-1:yypt+1]
// { setdir(yyDollar[1].i); yyVAL.o = makenode(PLACE, 0); }
// case 13:
// yyDollar = yyS[yypt-3:yypt+1]
// { printexpr(yyDollar[2].f); yyVAL.o = makenode(PLACE, 0); }
// case 14:
// yyDollar = yyS[yypt-3:yypt+1]
// { printpos(yyDollar[2].o); yyVAL.o = makenode(PLACE, 0); }
// case 15:
// yyDollar = yyS[yypt-3:yypt+1]
// { printf("%s\n", yyDollar[2].p); free(yyDollar[2].p); yyVAL.o = makenode(PLACE, 0); }
// case 16:
// yyDollar = yyS[yypt-3:yypt+1]
// { resetvar(); makeiattr(0, 0); yyVAL.o = makenode(PLACE, 0); }
// case 22:
// yyDollar = yyS[yypt-1:yypt+1]
// { makevattr(yyDollar[1].p); }
// case 23:
// yyDollar = yyS[yypt-2:yypt+1]
// { makevattr(yyDollar[2].p); }
// case 24:
// yyDollar = yyS[yypt-3:yypt+1]
// { makevattr(yyDollar[3].p); }
// case 25:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f=y.f=yyDollar[3].f; makevar(yyDollar[1].p,VARNAME,y); checkscale(yyDollar[1].p); }
// case 26:
// yyDollar = yyS[yypt-2:yypt+1]
// { copy(); }
// case 29:
// yyDollar = yyS[yypt-1:yypt+1]
// { copyfile(yyDollar[1].p); }
// case 30:
// yyDollar = yyS[yypt-2:yypt+1]
// { copydef(yyDollar[2].st); }
// case 31:
// yyDollar = yyS[yypt-2:yypt+1]
// { copyuntil(yyDollar[2].p); }
// case 32:
// yyDollar = yyS[yypt-10:yypt+1]
// { forloop(yyDollar[2].p, yyDollar[4].f, yyDollar[6].f, yyDollar[8].i, yyDollar[9].f, yyDollar[10].p); }
// case 33:
// yyDollar = yyS[yypt-7:yypt+1]
// { forloop(yyDollar[2].p, yyDollar[4].f, yyDollar[6].f, '+', 1.0, yyDollar[7].p); }
// case 34:
// yyDollar = yyS[yypt-10:yypt+1]
// { forloop(yyDollar[2].p, yyDollar[4].f, yyDollar[6].f, yyDollar[8].i, yyDollar[9].f, yyDollar[10].p); }
// case 35:
// yyDollar = yyS[yypt-7:yypt+1]
// { forloop(yyDollar[2].p, yyDollar[4].f, yyDollar[6].f, '+', 1.0, yyDollar[7].p); }
// case 36:
// yyDollar = yyS[yypt-4:yypt+1]
// { ifstat(yyDollar[2].f, yyDollar[3].p, yyDollar[4].p); }
// case 37:
// yyDollar = yyS[yypt-3:yypt+1]
// { ifstat(yyDollar[2].f, yyDollar[3].p, (char *) 0); }
// case 39:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = strcmp(yyDollar[1].p,yyDollar[3].p) == 0; free(yyDollar[1].p); free(yyDollar[3].p); }
// case 40:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = strcmp(yyDollar[1].p,yyDollar[3].p) != 0; free(yyDollar[1].p); free(yyDollar[3].p); }
// case 41:
// yyDollar = yyS[yypt-1:yypt+1]
// { y.f = 0; makevar(yyDollar[1].p, VARNAME, y); }
// case 42:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.i = '+'; }
// case 43:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.i = '-'; }
// case 44:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.i = '*'; }
// case 45:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.i = '/'; }
// case 46:
// yyDollar = yyS[yypt-0:yypt+1]
// { yyVAL.i = ' '; }
// case 47:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.o = leftthing('{'); }
// case 48:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = boxgen(); }
// case 49:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = circgen(yyDollar[1].i); }
// case 50:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = circgen(yyDollar[1].i); }
// case 51:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = arcgen(yyDollar[1].i); }
// case 52:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = linegen(yyDollar[1].i); }
// case 53:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = linegen(yyDollar[1].i); }
// case 54:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = linegen(yyDollar[1].i); }
// case 55:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = movegen(); }
// case 56:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = textgen(); }
// case 57:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.o = troffgen(yyDollar[1].p); }
// case 58:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o=rightthing(yyDollar[1].o,']'); }
// case 59:
// yyDollar = yyS[yypt-5:yypt+1]
// { yyVAL.o = blockgen(yyDollar[1].o, yyDollar[4].o); }
// case 60:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.o = leftthing('['); }
// case 63:
// yyDollar = yyS[yypt-2:yypt+1]
// { makefattr(yyDollar[1].i, !DEFAULT, yyDollar[2].f); }
// case 64:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(yyDollar[1].i, DEFAULT, 0.0); }
// case 65:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(curdir(), !DEFAULT, yyDollar[1].f); }
// case 66:
// yyDollar = yyS[yypt-2:yypt+1]
// { makefattr(yyDollar[1].i, !DEFAULT, yyDollar[2].f); }
// case 67:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(yyDollar[1].i, DEFAULT, 0.0); }
// case 68:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeoattr(yyDollar[1].i, yyDollar[2].o); }
// case 69:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeoattr(yyDollar[1].i, yyDollar[2].o); }
// case 70:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeoattr(yyDollar[1].i, yyDollar[2].o); }
// case 71:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeoattr(yyDollar[1].i, yyDollar[2].o); }
// case 72:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeiattr(WITH, yyDollar[2].i); }
// case 73:
// yyDollar = yyS[yypt-3:yypt+1]
// { makeoattr(PLACE, getblock(getlast(1,BLOCK), yyDollar[3].p)); }
// case 74:
// yyDollar = yyS[yypt-4:yypt+1]
// { makeoattr(PLACE, getpos(getblock(getlast(1,BLOCK), yyDollar[3].p), yyDollar[4].i)); }
// case 75:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeoattr(PLACE, yyDollar[2].o); }
// case 76:
// yyDollar = yyS[yypt-1:yypt+1]
// { makeiattr(SAME, yyDollar[1].i); }
// case 77:
// yyDollar = yyS[yypt-1:yypt+1]
// { maketattr(yyDollar[1].i, (char *) 0); }
// case 78:
// yyDollar = yyS[yypt-1:yypt+1]
// { makeiattr(HEAD, yyDollar[1].i); }
// case 79:
// yyDollar = yyS[yypt-2:yypt+1]
// { makefattr(DOT, !DEFAULT, yyDollar[2].f); }
// case 80:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(DOT, DEFAULT, 0.0); }
// case 81:
// yyDollar = yyS[yypt-2:yypt+1]
// { makefattr(DASH, !DEFAULT, yyDollar[2].f); }
// case 82:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(DASH, DEFAULT, 0.0); }
// case 83:
// yyDollar = yyS[yypt-2:yypt+1]
// { makefattr(CHOP, !DEFAULT, yyDollar[2].f); }
// case 84:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(CHOP, DEFAULT, 0.0); }
// case 85:
// yyDollar = yyS[yypt-2:yypt+1]
// { makeattr(CHOP, PLACENAME, getvar(yyDollar[2].p)); }
// case 86:
// yyDollar = yyS[yypt-2:yypt+1]
// { makefattr(FILL, !DEFAULT, yyDollar[2].f); }
// case 87:
// yyDollar = yyS[yypt-1:yypt+1]
// { makefattr(FILL, DEFAULT, 0.0); }
// case 88:
// yyDollar = yyS[yypt-1:yypt+1]
// { makeiattr(NOEDGE, 0); }
// case 92:
// yyDollar = yyS[yypt-1:yypt+1]
// { maketattr(CENTER, yyDollar[1].p); }
// case 93:
// yyDollar = yyS[yypt-2:yypt+1]
// { maketattr(yyDollar[2].i, yyDollar[1].p); }
// case 94:
// yyDollar = yyS[yypt-2:yypt+1]
// { addtattr(yyDollar[2].i); }
// case 96:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.p = sprintgen(yyDollar[3].p); }
// case 97:
// yyDollar = yyS[yypt-6:yypt+1]
// { yyVAL.p = sprintgen(yyDollar[3].p); }
// case 98:
// yyDollar = yyS[yypt-1:yypt+1]
// { exprsave(yyDollar[1].f); yyVAL.i = 0; }
// case 99:
// yyDollar = yyS[yypt-3:yypt+1]
// { exprsave(yyDollar[3].f); }
// case 101:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = yyDollar[2].o; }
// case 102:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = makepos(yyDollar[1].f, yyDollar[3].f); }
// case 103:
// yyDollar = yyS[yypt-5:yypt+1]
// { yyVAL.o = fixpos(yyDollar[1].o, yyDollar[3].f, yyDollar[5].f); }
// case 104:
// yyDollar = yyS[yypt-5:yypt+1]
// { yyVAL.o = fixpos(yyDollar[1].o, -yyDollar[3].f, -yyDollar[5].f); }
// case 105:
// yyDollar = yyS[yypt-7:yypt+1]
// { yyVAL.o = fixpos(yyDollar[1].o, yyDollar[4].f, yyDollar[6].f); }
// case 106:
// yyDollar = yyS[yypt-7:yypt+1]
// { yyVAL.o = fixpos(yyDollar[1].o, -yyDollar[4].f, -yyDollar[6].f); }
// case 107:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = addpos(yyDollar[1].o, yyDollar[3].o); }
// case 108:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = subpos(yyDollar[1].o, yyDollar[3].o); }
// case 109:
// yyDollar = yyS[yypt-5:yypt+1]
// { yyVAL.o = makepos(getcomp(yyDollar[2].o,DOTX), getcomp(yyDollar[4].o,DOTY)); }
// case 110:
// yyDollar = yyS[yypt-6:yypt+1]
// { yyVAL.o = makebetween(yyDollar[1].f, yyDollar[3].o, yyDollar[5].o); }
// case 111:
// yyDollar = yyS[yypt-5:yypt+1]
// { yyVAL.o = makebetween(yyDollar[1].f, yyDollar[3].o, yyDollar[5].o); }
// case 112:
// yyDollar = yyS[yypt-1:yypt+1]
// { y = getvar(yyDollar[1].p); yyVAL.o = y.o; }
// case 113:
// yyDollar = yyS[yypt-2:yypt+1]
// { y = getvar(yyDollar[1].p); yyVAL.o = getpos(y.o, yyDollar[2].i); }
// case 114:
// yyDollar = yyS[yypt-2:yypt+1]
// { y = getvar(yyDollar[2].p); yyVAL.o = getpos(y.o, yyDollar[1].i); }
// case 115:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.o = gethere(); }
// case 116:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = getlast(yyDollar[1].i, yyDollar[2].i); }
// case 117:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = getpos(getlast(yyDollar[1].i, yyDollar[2].i), yyDollar[3].i); }
// case 118:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = getpos(getlast(yyDollar[2].i, yyDollar[3].i), yyDollar[1].i); }
// case 119:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = getfirst(yyDollar[1].i, yyDollar[2].i); }
// case 120:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = getpos(getfirst(yyDollar[1].i, yyDollar[2].i), yyDollar[3].i); }
// case 121:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.o = getpos(getfirst(yyDollar[2].i, yyDollar[3].i), yyDollar[1].i); }
// case 123:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = getpos(yyDollar[1].o, yyDollar[2].i); }
// case 124:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.o = getpos(yyDollar[2].o, yyDollar[1].i); }
// case 125:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.o = getblock(getlast(yyDollar[1].i,yyDollar[2].i), yyDollar[4].p); }
// case 126:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.o = getblock(getfirst(yyDollar[1].i,yyDollar[2].i), yyDollar[4].p); }
// case 127:
// yyDollar = yyS[yypt-3:yypt+1]
// { y = getvar(yyDollar[1].p); yyVAL.o = getblock(y.o, yyDollar[3].p); }
// case 128:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.i = yyDollar[1].i + 1; }
// case 129:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.i = yyDollar[1].i; }
// case 130:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.i = 1; }
// case 140:
// yyDollar = yyS[yypt-1:yypt+1]
// { yyVAL.f = getfval(yyDollar[1].p); }
// case 142:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f + yyDollar[3].f; }
// case 143:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f - yyDollar[3].f; }
// case 144:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f * yyDollar[3].f; }
// case 145:
// yyDollar = yyS[yypt-3:yypt+1]
// { if (yyDollar[3].f == 0.0) {
// WARNING("division by 0"); yyDollar[3].f = 1; }
// yyVAL.f = yyDollar[1].f / yyDollar[3].f; }
// case 146:
// yyDollar = yyS[yypt-3:yypt+1]
// { if ((long)yyDollar[3].f == 0) {
// WARNING("mod division by 0"); yyDollar[3].f = 1; }
// yyVAL.f = (long)yyDollar[1].f % (long)yyDollar[3].f; }
// case 147:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = -yyDollar[2].f; }
// case 148:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = yyDollar[2].f; }
// case 149:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[2].f; }
// case 150:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = getcomp(yyDollar[1].o, yyDollar[2].i); }
// case 151:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = getcomp(yyDollar[1].o, yyDollar[2].i); }
// case 152:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = getcomp(yyDollar[1].o, yyDollar[2].i); }
// case 153:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = getcomp(yyDollar[1].o, yyDollar[2].i); }
// case 154:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = getcomp(yyDollar[1].o, yyDollar[2].i); }
// case 155:
// yyDollar = yyS[yypt-3:yypt+1]
// { y = getvar(yyDollar[1].p); yyVAL.f = getblkvar(y.o, yyDollar[3].p); }
// case 156:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = getblkvar(getlast(yyDollar[1].i,yyDollar[2].i), yyDollar[4].p); }
// case 157:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = getblkvar(getfirst(yyDollar[1].i,yyDollar[2].i), yyDollar[4].p); }
// case 158:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f > yyDollar[3].f; }
// case 159:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f < yyDollar[3].f; }
// case 160:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f <= yyDollar[3].f; }
// case 161:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f >= yyDollar[3].f; }
// case 162:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f == yyDollar[3].f; }
// case 163:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f != yyDollar[3].f; }
// case 164:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f && yyDollar[3].f; }
// case 165:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = yyDollar[1].f || yyDollar[3].f; }
// case 166:
// yyDollar = yyS[yypt-2:yypt+1]
// { yyVAL.f = !(yyDollar[2].f); }
// case 167:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = Log10(yyDollar[3].f); }
// case 168:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = Exp(yyDollar[3].f * log(10.0)); }
// case 169:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = pow(yyDollar[1].f, yyDollar[3].f); }
// case 170:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = sin(yyDollar[3].f); }
// case 171:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = cos(yyDollar[3].f); }
// case 172:
// yyDollar = yyS[yypt-6:yypt+1]
// { yyVAL.f = atan2(yyDollar[3].f, yyDollar[5].f); }
// case 173:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = Sqrt(yyDollar[3].f); }
// case 174:
// yyDollar = yyS[yypt-3:yypt+1]
// { yyVAL.f = (float)rand() / RAND_MAX; }
// case 175:
// yyDollar = yyS[yypt-6:yypt+1]
// { yyVAL.f = yyDollar[3].f >= yyDollar[5].f ? yyDollar[3].f : yyDollar[5].f; }
// case 176:
// yyDollar = yyS[yypt-6:yypt+1]
// { yyVAL.f = yyDollar[3].f <= yyDollar[5].f ? yyDollar[3].f : yyDollar[5].f; }
// case 177:
// yyDollar = yyS[yypt-4:yypt+1]
// { yyVAL.f = (long) yyDollar[3].f; }
// }
// goto yystack /* stack new state and value */
// }