Fossil SCM

Update the built-in "pikchr" to a version that supports the "this" objectname.

drh 2021-02-14 02:16 trunk
Commit f260b75fb931227b39f5a41f19983c148754cdf23c07ed49656128c8f1f9d4c4
1 file changed +1041 -1021
+1041 -1021
--- src/pikchr.c
+++ src/pikchr.c
@@ -566,20 +566,21 @@
566566
#define T_TOP 83
567567
#define T_BOTTOM 84
568568
#define T_START 85
569569
#define T_END 86
570570
#define T_IN 87
571
-#define T_DOT_U 88
572
-#define T_LAST 89
573
-#define T_NUMBER 90
574
-#define T_FUNC1 91
575
-#define T_FUNC2 92
576
-#define T_DIST 93
577
-#define T_DOT_XY 94
578
-#define T_X 95
579
-#define T_Y 96
580
-#define T_DOT_L 97
571
+#define T_THIS 88
572
+#define T_DOT_U 89
573
+#define T_LAST 90
574
+#define T_NUMBER 91
575
+#define T_FUNC1 92
576
+#define T_FUNC2 93
577
+#define T_DIST 94
578
+#define T_DOT_XY 95
579
+#define T_X 96
580
+#define T_Y 97
581
+#define T_DOT_L 98
581582
#endif
582583
/**************** End token definitions ***************************************/
583584
584585
/* The next sections is a series of control #defines.
585586
** various aspects of the generated parser.
@@ -635,22 +636,22 @@
635636
#ifndef INTERFACE
636637
# define INTERFACE 1
637638
#endif
638639
/************* Begin control #defines *****************************************/
639640
#define YYCODETYPE unsigned char
640
-#define YYNOCODE 134
641
+#define YYNOCODE 135
641642
#define YYACTIONTYPE unsigned short int
642643
#define pik_parserTOKENTYPE PToken
643644
typedef union {
644645
int yyinit;
645646
pik_parserTOKENTYPE yy0;
646
- PObj* yy38;
647
- PPoint yy43;
648
- short int yy44;
649
- PList* yy119;
650
- PRel yy200;
651
- PNum yy265;
647
+ PRel yy10;
648
+ PObj* yy36;
649
+ PPoint yy79;
650
+ PNum yy153;
651
+ short int yy164;
652
+ PList* yy227;
652653
} YYMINORTYPE;
653654
#ifndef YYSTACKDEPTH
654655
#define YYSTACKDEPTH 100
655656
#endif
656657
#define pik_parserARG_SDECL
@@ -663,21 +664,21 @@
663664
#define pik_parserCTX_PARAM ,p
664665
#define pik_parserCTX_FETCH Pik *p=yypParser->p;
665666
#define pik_parserCTX_STORE yypParser->p=p;
666667
#define YYFALLBACK 1
667668
#define YYNSTATE 164
668
-#define YYNRULE 155
669
-#define YYNRULE_WITH_ACTION 115
670
-#define YYNTOKEN 98
669
+#define YYNRULE 156
670
+#define YYNRULE_WITH_ACTION 116
671
+#define YYNTOKEN 99
671672
#define YY_MAX_SHIFT 163
672
-#define YY_MIN_SHIFTREDUCE 286
673
-#define YY_MAX_SHIFTREDUCE 440
674
-#define YY_ERROR_ACTION 441
675
-#define YY_ACCEPT_ACTION 442
676
-#define YY_NO_ACTION 443
677
-#define YY_MIN_REDUCE 444
678
-#define YY_MAX_REDUCE 598
673
+#define YY_MIN_SHIFTREDUCE 287
674
+#define YY_MAX_SHIFTREDUCE 442
675
+#define YY_ERROR_ACTION 443
676
+#define YY_ACCEPT_ACTION 444
677
+#define YY_NO_ACTION 445
678
+#define YY_MIN_REDUCE 446
679
+#define YY_MAX_REDUCE 601
679680
/************* End control #defines *******************************************/
680681
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
681682
682683
/* Define the yytestcase() macro to be a no-op if is not already defined
683684
** otherwise.
@@ -740,333 +741,341 @@
740741
** yy_reduce_ofst[] For each state, the offset into yy_action for
741742
** shifting non-terminals after a reduce.
742743
** yy_default[] Default action for each state.
743744
**
744745
*********** Begin parsing tables **********************************************/
745
-#define YY_ACTTAB_COUNT (1263)
746
+#define YY_ACTTAB_COUNT (1303)
746747
static const YYACTIONTYPE yy_action[] = {
747
- /* 0 */ 572, 493, 161, 119, 25, 450, 29, 74, 129, 148,
748
- /* 10 */ 572, 490, 161, 119, 451, 113, 120, 161, 119, 528,
749
- /* 20 */ 425, 426, 338, 556, 81, 30, 557, 558, 572, 64,
750
- /* 30 */ 63, 62, 61, 321, 322, 9, 8, 33, 149, 32,
751
- /* 40 */ 7, 71, 127, 38, 334, 66, 48, 37, 28, 338,
752
- /* 50 */ 338, 338, 338, 423, 424, 339, 340, 341, 342, 343,
753
- /* 60 */ 344, 345, 346, 347, 472, 526, 161, 119, 574, 77,
754
- /* 70 */ 574, 73, 374, 148, 472, 531, 161, 119, 112, 113,
755
- /* 80 */ 120, 161, 119, 128, 425, 426, 338, 305, 81, 376,
756
- /* 90 */ 158, 76, 472, 529, 161, 119, 31, 321, 322, 9,
757
- /* 100 */ 8, 33, 149, 32, 7, 71, 127, 329, 334, 66,
758
- /* 110 */ 576, 83, 36, 338, 338, 338, 338, 423, 424, 339,
759
- /* 120 */ 340, 341, 342, 343, 344, 345, 346, 347, 392, 433,
760
- /* 130 */ 309, 59, 60, 409, 410, 411, 412, 107, 84, 374,
761
- /* 140 */ 65, 108, 2, 46, 401, 162, 120, 161, 119, 117,
762
- /* 150 */ 476, 80, 118, 307, 79, 133, 35, 126, 439, 438,
763
- /* 160 */ 298, 123, 122, 402, 403, 404, 406, 80, 152, 307,
764
- /* 170 */ 79, 327, 409, 410, 411, 412, 392, 54, 51, 59,
765
- /* 180 */ 60, 64, 63, 62, 61, 312, 3, 102, 378, 157,
766
- /* 190 */ 42, 432, 446, 452, 29, 300, 301, 302, 448, 304,
767
- /* 200 */ 62, 61, 64, 63, 62, 61, 297, 47, 106, 163,
768
- /* 210 */ 434, 435, 436, 437, 27, 389, 117, 391, 155, 154,
769
- /* 220 */ 153, 392, 433, 49, 59, 60, 64, 63, 62, 61,
770
- /* 230 */ 532, 69, 374, 396, 397, 2, 376, 158, 356, 296,
771
- /* 240 */ 156, 156, 156, 67, 392, 433, 13, 59, 60, 4,
772
- /* 250 */ 107, 439, 438, 377, 159, 374, 106, 5, 2, 120,
773
- /* 260 */ 161, 119, 131, 449, 117, 391, 155, 154, 153, 392,
774
- /* 270 */ 532, 6, 59, 60, 439, 438, 532, 444, 422, 532,
775
- /* 280 */ 374, 152, 421, 42, 432, 1, 395, 36, 156, 156,
776
- /* 290 */ 156, 11, 12, 355, 64, 63, 62, 61, 430, 118,
777
- /* 300 */ 14, 106, 138, 434, 435, 436, 437, 432, 428, 117,
778
- /* 310 */ 391, 155, 154, 153, 16, 69, 142, 140, 64, 63,
779
- /* 320 */ 62, 61, 139, 18, 106, 15, 434, 435, 436, 437,
780
- /* 330 */ 45, 44, 117, 391, 155, 154, 153, 358, 19, 55,
781
- /* 340 */ 64, 63, 62, 61, 20, 147, 146, 68, 114, 106,
782
- /* 350 */ 23, 382, 43, 26, 425, 426, 338, 117, 391, 155,
783
- /* 360 */ 154, 153, 392, 57, 58, 59, 60, 390, 380, 375,
784
- /* 370 */ 381, 17, 160, 374, 70, 39, 42, 443, 443, 443,
785
- /* 380 */ 443, 22, 21, 338, 338, 338, 338, 423, 424, 24,
786
- /* 390 */ 443, 145, 141, 429, 142, 140, 64, 63, 62, 61,
787
- /* 400 */ 392, 471, 443, 59, 60, 443, 443, 132, 130, 389,
788
- /* 410 */ 443, 374, 443, 443, 42, 443, 443, 55, 443, 64,
789
- /* 420 */ 63, 62, 61, 147, 146, 392, 143, 443, 59, 60,
790
- /* 430 */ 43, 443, 389, 443, 443, 443, 374, 471, 443, 42,
791
- /* 440 */ 52, 443, 106, 443, 392, 144, 443, 59, 60, 443,
792
- /* 450 */ 117, 391, 155, 154, 153, 374, 443, 443, 42, 22,
793
- /* 460 */ 21, 121, 445, 452, 29, 443, 443, 24, 448, 145,
794
- /* 470 */ 141, 429, 142, 140, 64, 63, 62, 61, 443, 163,
795
- /* 480 */ 106, 443, 392, 442, 27, 59, 60, 443, 117, 391,
796
- /* 490 */ 155, 154, 153, 374, 443, 55, 42, 443, 443, 443,
797
- /* 500 */ 443, 147, 146, 443, 443, 106, 443, 392, 43, 443,
798
- /* 510 */ 59, 60, 443, 117, 391, 155, 154, 153, 102, 443,
799
- /* 520 */ 74, 42, 148, 443, 106, 443, 443, 124, 113, 120,
800
- /* 530 */ 161, 119, 117, 391, 155, 154, 153, 22, 21, 392,
801
- /* 540 */ 443, 443, 59, 60, 443, 24, 443, 145, 141, 429,
802
- /* 550 */ 374, 149, 392, 40, 443, 59, 60, 443, 85, 443,
803
- /* 560 */ 443, 443, 106, 374, 443, 443, 41, 120, 161, 119,
804
- /* 570 */ 117, 391, 155, 154, 153, 349, 349, 349, 349, 349,
805
- /* 580 */ 349, 349, 349, 349, 349, 443, 443, 106, 443, 152,
806
- /* 590 */ 443, 443, 88, 443, 443, 117, 391, 155, 154, 153,
807
- /* 600 */ 443, 120, 161, 119, 72, 443, 148, 10, 477, 477,
808
- /* 610 */ 443, 125, 113, 120, 161, 119, 443, 443, 443, 106,
809
- /* 620 */ 443, 443, 433, 152, 443, 443, 443, 117, 391, 155,
810
- /* 630 */ 154, 153, 106, 443, 443, 149, 64, 63, 62, 61,
811
- /* 640 */ 117, 391, 155, 154, 153, 443, 74, 443, 148, 354,
812
- /* 650 */ 107, 439, 438, 495, 113, 120, 161, 119, 443, 120,
813
- /* 660 */ 161, 119, 443, 461, 443, 74, 443, 148, 75, 443,
814
- /* 670 */ 78, 78, 494, 113, 120, 161, 119, 149, 74, 443,
815
- /* 680 */ 148, 152, 443, 443, 432, 488, 113, 120, 161, 119,
816
- /* 690 */ 74, 443, 148, 443, 443, 443, 149, 482, 113, 120,
817
- /* 700 */ 161, 119, 88, 434, 435, 436, 437, 443, 443, 149,
818
- /* 710 */ 443, 120, 161, 119, 443, 74, 443, 148, 110, 110,
819
- /* 720 */ 443, 149, 481, 113, 120, 161, 119, 443, 443, 443,
820
- /* 730 */ 74, 443, 148, 152, 443, 443, 443, 478, 113, 120,
821
- /* 740 */ 161, 119, 443, 74, 443, 148, 149, 443, 443, 443,
822
- /* 750 */ 134, 113, 120, 161, 119, 74, 443, 148, 443, 443,
823
- /* 760 */ 443, 149, 515, 113, 120, 161, 119, 443, 74, 443,
824
- /* 770 */ 148, 443, 443, 443, 149, 137, 113, 120, 161, 119,
825
- /* 780 */ 74, 443, 148, 443, 443, 443, 149, 523, 113, 120,
826
- /* 790 */ 161, 119, 443, 74, 443, 148, 443, 443, 443, 149,
827
- /* 800 */ 525, 113, 120, 161, 119, 443, 74, 443, 148, 443,
828
- /* 810 */ 443, 149, 443, 522, 113, 120, 161, 119, 74, 443,
829
- /* 820 */ 148, 86, 443, 443, 149, 524, 113, 120, 161, 119,
830
- /* 830 */ 120, 161, 119, 74, 443, 148, 443, 149, 443, 443,
831
- /* 840 */ 521, 113, 120, 161, 119, 443, 74, 443, 148, 149,
832
- /* 850 */ 443, 443, 152, 520, 113, 120, 161, 119, 74, 443,
833
- /* 860 */ 148, 443, 443, 443, 149, 519, 113, 120, 161, 119,
834
- /* 870 */ 443, 74, 443, 148, 443, 443, 443, 149, 518, 113,
835
- /* 880 */ 120, 161, 119, 74, 443, 148, 443, 443, 443, 149,
836
- /* 890 */ 517, 113, 120, 161, 119, 433, 74, 443, 148, 443,
837
- /* 900 */ 443, 443, 149, 150, 113, 120, 161, 119, 443, 74,
838
- /* 910 */ 443, 148, 443, 443, 149, 443, 151, 113, 120, 161,
839
- /* 920 */ 119, 74, 443, 148, 439, 438, 443, 149, 136, 113,
840
- /* 930 */ 120, 161, 119, 443, 443, 443, 74, 443, 148, 443,
841
- /* 940 */ 149, 443, 443, 135, 113, 120, 161, 119, 443, 88,
842
- /* 950 */ 443, 443, 149, 443, 443, 443, 443, 432, 120, 161,
843
- /* 960 */ 119, 443, 443, 443, 443, 82, 443, 149, 443, 443,
844
- /* 970 */ 443, 443, 464, 443, 34, 443, 434, 435, 436, 437,
845
- /* 980 */ 152, 107, 109, 445, 452, 29, 443, 443, 443, 448,
846
- /* 990 */ 120, 161, 119, 443, 461, 443, 443, 88, 443, 443,
847
- /* 1000 */ 163, 443, 566, 443, 443, 27, 120, 161, 119, 88,
848
- /* 1010 */ 443, 443, 152, 111, 111, 443, 443, 443, 120, 161,
849
- /* 1020 */ 119, 98, 443, 443, 89, 473, 443, 90, 152, 443,
850
- /* 1030 */ 120, 161, 119, 120, 161, 119, 120, 161, 119, 87,
851
- /* 1040 */ 152, 443, 443, 64, 63, 62, 61, 443, 120, 161,
852
- /* 1050 */ 119, 443, 152, 443, 443, 152, 443, 443, 152, 443,
853
- /* 1060 */ 443, 443, 99, 443, 50, 443, 443, 443, 100, 443,
854
- /* 1070 */ 152, 120, 161, 119, 443, 101, 443, 120, 161, 119,
855
- /* 1080 */ 91, 443, 443, 443, 120, 161, 119, 103, 443, 120,
856
- /* 1090 */ 161, 119, 92, 152, 443, 443, 120, 161, 119, 152,
857
- /* 1100 */ 443, 120, 161, 119, 443, 93, 152, 443, 443, 443,
858
- /* 1110 */ 104, 152, 443, 443, 120, 161, 119, 94, 152, 120,
859
- /* 1120 */ 161, 119, 105, 152, 443, 443, 120, 161, 119, 443,
860
- /* 1130 */ 443, 120, 161, 119, 95, 443, 152, 443, 443, 443,
861
- /* 1140 */ 96, 152, 443, 120, 161, 119, 443, 443, 152, 120,
862
- /* 1150 */ 161, 119, 97, 152, 443, 443, 443, 443, 546, 443,
863
- /* 1160 */ 443, 120, 161, 119, 443, 152, 443, 120, 161, 119,
864
- /* 1170 */ 443, 152, 443, 443, 443, 545, 443, 443, 443, 443,
865
- /* 1180 */ 443, 544, 443, 152, 120, 161, 119, 543, 443, 152,
866
- /* 1190 */ 120, 161, 119, 115, 443, 443, 120, 161, 119, 116,
867
- /* 1200 */ 443, 443, 120, 161, 119, 443, 152, 443, 120, 161,
868
- /* 1210 */ 119, 443, 152, 64, 63, 62, 61, 443, 152, 64,
869
- /* 1220 */ 63, 62, 61, 443, 152, 443, 353, 443, 443, 443,
870
- /* 1230 */ 152, 64, 63, 62, 61, 64, 63, 62, 61, 443,
871
- /* 1240 */ 53, 443, 443, 443, 394, 64, 63, 62, 61, 64,
872
- /* 1250 */ 63, 62, 61, 443, 443, 443, 56, 443, 393, 443,
873
- /* 1260 */ 443, 443, 389,
748
+ /* 0 */ 575, 495, 161, 119, 25, 452, 29, 74, 129, 148,
749
+ /* 10 */ 575, 492, 161, 119, 453, 113, 120, 161, 119, 530,
750
+ /* 20 */ 427, 428, 339, 559, 81, 30, 560, 561, 575, 64,
751
+ /* 30 */ 63, 62, 61, 322, 323, 9, 8, 33, 149, 32,
752
+ /* 40 */ 7, 71, 127, 38, 335, 66, 48, 37, 28, 339,
753
+ /* 50 */ 339, 339, 339, 425, 426, 340, 341, 342, 343, 344,
754
+ /* 60 */ 345, 346, 347, 348, 474, 528, 161, 119, 577, 77,
755
+ /* 70 */ 577, 73, 376, 148, 474, 533, 161, 119, 112, 113,
756
+ /* 80 */ 120, 161, 119, 128, 427, 428, 339, 357, 81, 531,
757
+ /* 90 */ 161, 119, 474, 36, 330, 13, 306, 322, 323, 9,
758
+ /* 100 */ 8, 33, 149, 32, 7, 71, 127, 328, 335, 66,
759
+ /* 110 */ 579, 310, 31, 339, 339, 339, 339, 425, 426, 340,
760
+ /* 120 */ 341, 342, 343, 344, 345, 346, 347, 348, 394, 435,
761
+ /* 130 */ 46, 59, 60, 64, 63, 62, 61, 54, 51, 376,
762
+ /* 140 */ 69, 108, 2, 47, 403, 83, 297, 435, 375, 84,
763
+ /* 150 */ 117, 80, 35, 308, 79, 133, 122, 126, 441, 440,
764
+ /* 160 */ 299, 123, 3, 404, 405, 406, 408, 80, 298, 308,
765
+ /* 170 */ 79, 4, 411, 412, 413, 414, 441, 440, 350, 350,
766
+ /* 180 */ 350, 350, 350, 350, 350, 350, 350, 350, 62, 61,
767
+ /* 190 */ 67, 434, 1, 75, 378, 158, 74, 76, 148, 411,
768
+ /* 200 */ 412, 413, 414, 124, 113, 120, 161, 119, 106, 434,
769
+ /* 210 */ 436, 437, 438, 439, 5, 375, 6, 117, 393, 155,
770
+ /* 220 */ 154, 153, 394, 435, 69, 59, 60, 149, 436, 437,
771
+ /* 230 */ 438, 439, 535, 376, 398, 399, 2, 424, 427, 428,
772
+ /* 240 */ 339, 156, 156, 156, 423, 394, 435, 65, 59, 60,
773
+ /* 250 */ 162, 131, 441, 440, 397, 72, 376, 148, 118, 2,
774
+ /* 260 */ 380, 157, 125, 113, 120, 161, 119, 339, 339, 339,
775
+ /* 270 */ 339, 425, 426, 535, 11, 441, 440, 394, 356, 535,
776
+ /* 280 */ 59, 60, 535, 379, 159, 434, 149, 12, 102, 446,
777
+ /* 290 */ 432, 42, 138, 14, 435, 139, 301, 302, 303, 36,
778
+ /* 300 */ 305, 430, 106, 16, 436, 437, 438, 439, 434, 375,
779
+ /* 310 */ 18, 117, 393, 155, 154, 153, 44, 142, 140, 64,
780
+ /* 320 */ 63, 62, 61, 441, 440, 106, 19, 436, 437, 438,
781
+ /* 330 */ 439, 45, 375, 20, 117, 393, 155, 154, 153, 68,
782
+ /* 340 */ 55, 114, 64, 63, 62, 61, 147, 146, 394, 473,
783
+ /* 350 */ 359, 59, 60, 43, 23, 391, 434, 106, 26, 376,
784
+ /* 360 */ 57, 58, 42, 49, 375, 392, 117, 393, 155, 154,
785
+ /* 370 */ 153, 64, 63, 62, 61, 436, 437, 438, 439, 384,
786
+ /* 380 */ 382, 383, 22, 21, 377, 473, 160, 70, 39, 445,
787
+ /* 390 */ 24, 445, 145, 141, 431, 142, 140, 64, 63, 62,
788
+ /* 400 */ 61, 394, 15, 445, 59, 60, 64, 63, 62, 61,
789
+ /* 410 */ 391, 445, 376, 445, 445, 42, 445, 445, 55, 391,
790
+ /* 420 */ 156, 156, 156, 445, 147, 146, 445, 52, 106, 445,
791
+ /* 430 */ 445, 43, 445, 445, 445, 375, 445, 117, 393, 155,
792
+ /* 440 */ 154, 153, 445, 394, 143, 445, 59, 60, 64, 63,
793
+ /* 450 */ 62, 61, 313, 445, 376, 378, 158, 42, 445, 445,
794
+ /* 460 */ 22, 21, 121, 447, 454, 29, 445, 445, 24, 450,
795
+ /* 470 */ 145, 141, 431, 142, 140, 64, 63, 62, 61, 445,
796
+ /* 480 */ 163, 106, 445, 445, 444, 27, 445, 445, 375, 445,
797
+ /* 490 */ 117, 393, 155, 154, 153, 445, 55, 74, 445, 148,
798
+ /* 500 */ 445, 445, 147, 146, 497, 113, 120, 161, 119, 43,
799
+ /* 510 */ 445, 394, 445, 445, 59, 60, 445, 445, 445, 118,
800
+ /* 520 */ 445, 445, 376, 106, 445, 42, 445, 445, 149, 445,
801
+ /* 530 */ 375, 445, 117, 393, 155, 154, 153, 445, 22, 21,
802
+ /* 540 */ 394, 144, 445, 59, 60, 445, 24, 445, 145, 141,
803
+ /* 550 */ 431, 376, 445, 445, 42, 445, 132, 130, 394, 445,
804
+ /* 560 */ 445, 59, 60, 109, 447, 454, 29, 445, 445, 376,
805
+ /* 570 */ 450, 445, 42, 445, 394, 445, 445, 59, 60, 445,
806
+ /* 580 */ 445, 163, 445, 445, 445, 102, 27, 445, 42, 445,
807
+ /* 590 */ 445, 106, 445, 64, 63, 62, 61, 445, 375, 445,
808
+ /* 600 */ 117, 393, 155, 154, 153, 394, 355, 445, 59, 60,
809
+ /* 610 */ 445, 445, 445, 445, 445, 74, 376, 148, 445, 40,
810
+ /* 620 */ 106, 445, 496, 113, 120, 161, 119, 375, 445, 117,
811
+ /* 630 */ 393, 155, 154, 153, 445, 448, 454, 29, 106, 445,
812
+ /* 640 */ 445, 450, 445, 445, 445, 375, 149, 117, 393, 155,
813
+ /* 650 */ 154, 153, 163, 445, 106, 445, 445, 27, 445, 445,
814
+ /* 660 */ 445, 375, 445, 117, 393, 155, 154, 153, 394, 445,
815
+ /* 670 */ 445, 59, 60, 64, 63, 62, 61, 445, 445, 376,
816
+ /* 680 */ 445, 445, 41, 445, 445, 106, 354, 64, 63, 62,
817
+ /* 690 */ 61, 445, 375, 445, 117, 393, 155, 154, 153, 445,
818
+ /* 700 */ 445, 445, 74, 445, 148, 445, 88, 445, 445, 490,
819
+ /* 710 */ 113, 120, 161, 119, 445, 120, 161, 119, 17, 74,
820
+ /* 720 */ 445, 148, 110, 110, 445, 445, 484, 113, 120, 161,
821
+ /* 730 */ 119, 445, 445, 149, 74, 445, 148, 152, 445, 445,
822
+ /* 740 */ 445, 483, 113, 120, 161, 119, 445, 445, 106, 445,
823
+ /* 750 */ 149, 445, 445, 107, 445, 375, 445, 117, 393, 155,
824
+ /* 760 */ 154, 153, 120, 161, 119, 149, 478, 74, 445, 148,
825
+ /* 770 */ 445, 88, 445, 445, 480, 113, 120, 161, 119, 445,
826
+ /* 780 */ 120, 161, 119, 74, 152, 148, 10, 479, 479, 445,
827
+ /* 790 */ 134, 113, 120, 161, 119, 445, 445, 445, 149, 74,
828
+ /* 800 */ 445, 148, 152, 445, 445, 445, 517, 113, 120, 161,
829
+ /* 810 */ 119, 445, 445, 74, 149, 148, 445, 445, 445, 445,
830
+ /* 820 */ 137, 113, 120, 161, 119, 74, 445, 148, 445, 445,
831
+ /* 830 */ 149, 445, 525, 113, 120, 161, 119, 445, 74, 445,
832
+ /* 840 */ 148, 445, 445, 445, 149, 527, 113, 120, 161, 119,
833
+ /* 850 */ 445, 445, 74, 445, 148, 445, 149, 445, 445, 524,
834
+ /* 860 */ 113, 120, 161, 119, 74, 445, 148, 445, 445, 149,
835
+ /* 870 */ 445, 526, 113, 120, 161, 119, 445, 445, 74, 445,
836
+ /* 880 */ 148, 445, 88, 149, 445, 523, 113, 120, 161, 119,
837
+ /* 890 */ 445, 120, 161, 119, 74, 149, 148, 85, 111, 111,
838
+ /* 900 */ 445, 522, 113, 120, 161, 119, 120, 161, 119, 149,
839
+ /* 910 */ 74, 445, 148, 152, 445, 445, 445, 521, 113, 120,
840
+ /* 920 */ 161, 119, 445, 445, 74, 149, 148, 445, 152, 445,
841
+ /* 930 */ 445, 520, 113, 120, 161, 119, 74, 445, 148, 445,
842
+ /* 940 */ 445, 149, 445, 519, 113, 120, 161, 119, 445, 74,
843
+ /* 950 */ 445, 148, 445, 445, 445, 149, 150, 113, 120, 161,
844
+ /* 960 */ 119, 445, 445, 74, 445, 148, 445, 149, 445, 445,
845
+ /* 970 */ 151, 113, 120, 161, 119, 74, 445, 148, 445, 445,
846
+ /* 980 */ 149, 445, 136, 113, 120, 161, 119, 445, 445, 74,
847
+ /* 990 */ 445, 148, 107, 445, 149, 445, 135, 113, 120, 161,
848
+ /* 1000 */ 119, 120, 161, 119, 445, 463, 149, 445, 88, 445,
849
+ /* 1010 */ 445, 445, 78, 78, 445, 445, 107, 120, 161, 119,
850
+ /* 1020 */ 149, 445, 445, 152, 82, 120, 161, 119, 445, 463,
851
+ /* 1030 */ 445, 466, 86, 34, 445, 88, 445, 569, 445, 152,
852
+ /* 1040 */ 445, 120, 161, 119, 120, 161, 119, 152, 107, 445,
853
+ /* 1050 */ 445, 475, 64, 63, 62, 61, 445, 120, 161, 119,
854
+ /* 1060 */ 98, 451, 445, 152, 89, 396, 152, 90, 445, 120,
855
+ /* 1070 */ 161, 119, 445, 120, 161, 119, 120, 161, 119, 152,
856
+ /* 1080 */ 445, 64, 63, 62, 61, 445, 445, 445, 445, 445,
857
+ /* 1090 */ 87, 152, 445, 99, 395, 152, 100, 445, 152, 120,
858
+ /* 1100 */ 161, 119, 120, 161, 119, 120, 161, 119, 445, 101,
859
+ /* 1110 */ 64, 63, 62, 61, 445, 445, 445, 445, 120, 161,
860
+ /* 1120 */ 119, 152, 91, 391, 152, 445, 445, 152, 103, 445,
861
+ /* 1130 */ 445, 120, 161, 119, 445, 92, 445, 120, 161, 119,
862
+ /* 1140 */ 152, 93, 445, 445, 120, 161, 119, 104, 445, 445,
863
+ /* 1150 */ 120, 161, 119, 152, 445, 445, 120, 161, 119, 152,
864
+ /* 1160 */ 445, 445, 445, 445, 94, 445, 152, 445, 445, 445,
865
+ /* 1170 */ 105, 445, 152, 120, 161, 119, 445, 95, 152, 120,
866
+ /* 1180 */ 161, 119, 96, 445, 445, 445, 120, 161, 119, 445,
867
+ /* 1190 */ 445, 120, 161, 119, 97, 152, 445, 445, 445, 445,
868
+ /* 1200 */ 549, 152, 445, 120, 161, 119, 548, 445, 152, 120,
869
+ /* 1210 */ 161, 119, 445, 152, 445, 120, 161, 119, 445, 445,
870
+ /* 1220 */ 445, 445, 445, 547, 445, 152, 445, 445, 445, 445,
871
+ /* 1230 */ 445, 152, 120, 161, 119, 546, 445, 152, 445, 115,
872
+ /* 1240 */ 445, 445, 116, 445, 120, 161, 119, 445, 120, 161,
873
+ /* 1250 */ 119, 120, 161, 119, 152, 64, 63, 62, 61, 64,
874
+ /* 1260 */ 63, 62, 61, 445, 445, 445, 152, 445, 445, 445,
875
+ /* 1270 */ 152, 445, 445, 152, 445, 445, 50, 445, 445, 445,
876
+ /* 1280 */ 53, 64, 63, 62, 61, 445, 445, 445, 445, 445,
877
+ /* 1290 */ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
878
+ /* 1300 */ 445, 445, 56,
874879
};
875880
static const YYCODETYPE yy_lookahead[] = {
876
- /* 0 */ 0, 111, 112, 113, 132, 100, 101, 102, 104, 104,
877
- /* 10 */ 10, 111, 112, 113, 109, 110, 111, 112, 113, 104,
878
- /* 20 */ 20, 21, 22, 103, 24, 124, 106, 107, 28, 4,
879
- /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 133, 39,
880
- /* 40 */ 40, 41, 42, 103, 44, 45, 106, 107, 105, 49,
881
+ /* 0 */ 0, 112, 113, 114, 133, 101, 102, 103, 105, 105,
882
+ /* 10 */ 10, 112, 113, 114, 110, 111, 112, 113, 114, 105,
883
+ /* 20 */ 20, 21, 22, 104, 24, 125, 107, 108, 28, 4,
884
+ /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 134, 39,
885
+ /* 40 */ 40, 41, 42, 104, 44, 45, 107, 108, 106, 49,
881886
/* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
882
- /* 60 */ 60, 61, 62, 63, 0, 111, 112, 113, 128, 129,
883
- /* 70 */ 130, 102, 12, 104, 10, 111, 112, 113, 109, 110,
884
- /* 80 */ 111, 112, 113, 104, 20, 21, 22, 25, 24, 26,
885
- /* 90 */ 27, 48, 28, 111, 112, 113, 126, 33, 34, 35,
886
- /* 100 */ 36, 37, 133, 39, 40, 41, 42, 2, 44, 45,
887
- /* 110 */ 131, 114, 10, 49, 50, 51, 52, 53, 54, 55,
887
+ /* 60 */ 60, 61, 62, 63, 0, 112, 113, 114, 129, 130,
888
+ /* 70 */ 131, 103, 12, 105, 10, 112, 113, 114, 110, 111,
889
+ /* 80 */ 112, 113, 114, 105, 20, 21, 22, 17, 24, 112,
890
+ /* 90 */ 113, 114, 28, 10, 2, 25, 25, 33, 34, 35,
891
+ /* 100 */ 36, 37, 134, 39, 40, 41, 42, 2, 44, 45,
892
+ /* 110 */ 132, 28, 127, 49, 50, 51, 52, 53, 54, 55,
888893
/* 120 */ 56, 57, 58, 59, 60, 61, 62, 63, 1, 2,
889
- /* 130 */ 28, 4, 5, 29, 30, 31, 32, 102, 114, 12,
890
- /* 140 */ 97, 81, 15, 38, 1, 82, 111, 112, 113, 89,
891
- /* 150 */ 115, 24, 89, 26, 27, 12, 127, 14, 31, 32,
892
- /* 160 */ 19, 18, 1, 20, 21, 22, 23, 24, 133, 26,
893
- /* 170 */ 27, 2, 29, 30, 31, 32, 1, 4, 5, 4,
894
- /* 180 */ 5, 4, 5, 6, 7, 8, 16, 12, 26, 27,
895
- /* 190 */ 15, 64, 99, 100, 101, 20, 21, 22, 105, 24,
896
- /* 200 */ 6, 7, 4, 5, 6, 7, 17, 38, 81, 116,
897
- /* 210 */ 83, 84, 85, 86, 121, 17, 89, 90, 91, 92,
898
- /* 220 */ 93, 1, 2, 25, 4, 5, 4, 5, 6, 7,
899
- /* 230 */ 48, 3, 12, 95, 96, 15, 26, 27, 17, 17,
900
- /* 240 */ 20, 21, 22, 43, 1, 2, 25, 4, 5, 15,
901
- /* 250 */ 102, 31, 32, 26, 27, 12, 81, 40, 15, 111,
902
- /* 260 */ 112, 113, 47, 115, 89, 90, 91, 92, 93, 1,
903
- /* 270 */ 88, 40, 4, 5, 31, 32, 94, 0, 41, 97,
904
- /* 280 */ 12, 133, 41, 15, 64, 13, 17, 10, 20, 21,
905
- /* 290 */ 22, 25, 74, 17, 4, 5, 6, 7, 79, 89,
906
- /* 300 */ 3, 81, 78, 83, 84, 85, 86, 64, 79, 89,
907
- /* 310 */ 90, 91, 92, 93, 3, 87, 2, 3, 4, 5,
908
- /* 320 */ 6, 7, 80, 3, 81, 35, 83, 84, 85, 86,
909
- /* 330 */ 16, 38, 89, 90, 91, 92, 93, 76, 3, 25,
910
- /* 340 */ 4, 5, 6, 7, 3, 31, 32, 3, 94, 81,
911
- /* 350 */ 25, 28, 38, 15, 20, 21, 22, 89, 90, 91,
912
- /* 360 */ 92, 93, 1, 15, 15, 4, 5, 17, 28, 12,
913
- /* 370 */ 28, 35, 88, 12, 3, 11, 15, 134, 134, 134,
914
- /* 380 */ 134, 67, 68, 49, 50, 51, 52, 53, 54, 75,
915
- /* 390 */ 134, 77, 78, 79, 2, 3, 4, 5, 6, 7,
916
- /* 400 */ 1, 2, 134, 4, 5, 134, 134, 46, 47, 17,
917
- /* 410 */ 134, 12, 134, 134, 15, 134, 134, 25, 134, 4,
918
- /* 420 */ 5, 6, 7, 31, 32, 1, 2, 134, 4, 5,
919
- /* 430 */ 38, 134, 17, 134, 134, 134, 12, 38, 134, 15,
920
- /* 440 */ 25, 134, 81, 134, 1, 2, 134, 4, 5, 134,
921
- /* 450 */ 89, 90, 91, 92, 93, 12, 134, 134, 15, 67,
922
- /* 460 */ 68, 98, 99, 100, 101, 134, 134, 75, 105, 77,
923
- /* 470 */ 78, 79, 2, 3, 4, 5, 6, 7, 134, 116,
924
- /* 480 */ 81, 134, 1, 120, 121, 4, 5, 134, 89, 90,
925
- /* 490 */ 91, 92, 93, 12, 134, 25, 15, 134, 134, 134,
926
- /* 500 */ 134, 31, 32, 134, 134, 81, 134, 1, 38, 134,
927
- /* 510 */ 4, 5, 134, 89, 90, 91, 92, 93, 12, 134,
928
- /* 520 */ 102, 15, 104, 134, 81, 134, 134, 109, 110, 111,
929
- /* 530 */ 112, 113, 89, 90, 91, 92, 93, 67, 68, 1,
930
- /* 540 */ 134, 134, 4, 5, 134, 75, 134, 77, 78, 79,
931
- /* 550 */ 12, 133, 1, 15, 134, 4, 5, 134, 102, 134,
932
- /* 560 */ 134, 134, 81, 12, 134, 134, 15, 111, 112, 113,
933
- /* 570 */ 89, 90, 91, 92, 93, 64, 65, 66, 67, 68,
934
- /* 580 */ 69, 70, 71, 72, 73, 134, 134, 81, 134, 133,
935
- /* 590 */ 134, 134, 102, 134, 134, 89, 90, 91, 92, 93,
936
- /* 600 */ 134, 111, 112, 113, 102, 134, 104, 117, 118, 119,
937
- /* 610 */ 134, 109, 110, 111, 112, 113, 134, 134, 134, 81,
938
- /* 620 */ 134, 134, 2, 133, 134, 134, 134, 89, 90, 91,
939
- /* 630 */ 92, 93, 81, 134, 134, 133, 4, 5, 6, 7,
940
- /* 640 */ 89, 90, 91, 92, 93, 134, 102, 134, 104, 17,
941
- /* 650 */ 102, 31, 32, 109, 110, 111, 112, 113, 134, 111,
942
- /* 660 */ 112, 113, 134, 115, 134, 102, 134, 104, 48, 134,
943
- /* 670 */ 122, 123, 109, 110, 111, 112, 113, 133, 102, 134,
944
- /* 680 */ 104, 133, 134, 134, 64, 109, 110, 111, 112, 113,
945
- /* 690 */ 102, 134, 104, 134, 134, 134, 133, 109, 110, 111,
946
- /* 700 */ 112, 113, 102, 83, 84, 85, 86, 134, 134, 133,
947
- /* 710 */ 134, 111, 112, 113, 134, 102, 134, 104, 118, 119,
948
- /* 720 */ 134, 133, 109, 110, 111, 112, 113, 134, 134, 134,
949
- /* 730 */ 102, 134, 104, 133, 134, 134, 134, 109, 110, 111,
950
- /* 740 */ 112, 113, 134, 102, 134, 104, 133, 134, 134, 134,
951
- /* 750 */ 109, 110, 111, 112, 113, 102, 134, 104, 134, 134,
952
- /* 760 */ 134, 133, 109, 110, 111, 112, 113, 134, 102, 134,
953
- /* 770 */ 104, 134, 134, 134, 133, 109, 110, 111, 112, 113,
954
- /* 780 */ 102, 134, 104, 134, 134, 134, 133, 109, 110, 111,
955
- /* 790 */ 112, 113, 134, 102, 134, 104, 134, 134, 134, 133,
956
- /* 800 */ 109, 110, 111, 112, 113, 134, 102, 134, 104, 134,
957
- /* 810 */ 134, 133, 134, 109, 110, 111, 112, 113, 102, 134,
958
- /* 820 */ 104, 102, 134, 134, 133, 109, 110, 111, 112, 113,
959
- /* 830 */ 111, 112, 113, 102, 134, 104, 134, 133, 134, 134,
960
- /* 840 */ 109, 110, 111, 112, 113, 134, 102, 134, 104, 133,
961
- /* 850 */ 134, 134, 133, 109, 110, 111, 112, 113, 102, 134,
962
- /* 860 */ 104, 134, 134, 134, 133, 109, 110, 111, 112, 113,
963
- /* 870 */ 134, 102, 134, 104, 134, 134, 134, 133, 109, 110,
964
- /* 880 */ 111, 112, 113, 102, 134, 104, 134, 134, 134, 133,
965
- /* 890 */ 109, 110, 111, 112, 113, 2, 102, 134, 104, 134,
966
- /* 900 */ 134, 134, 133, 109, 110, 111, 112, 113, 134, 102,
967
- /* 910 */ 134, 104, 134, 134, 133, 134, 109, 110, 111, 112,
968
- /* 920 */ 113, 102, 134, 104, 31, 32, 134, 133, 109, 110,
969
- /* 930 */ 111, 112, 113, 134, 134, 134, 102, 134, 104, 134,
970
- /* 940 */ 133, 134, 134, 109, 110, 111, 112, 113, 134, 102,
971
- /* 950 */ 134, 134, 133, 134, 134, 134, 134, 64, 111, 112,
972
- /* 960 */ 113, 134, 134, 134, 134, 118, 134, 133, 134, 134,
973
- /* 970 */ 134, 134, 125, 134, 127, 134, 83, 84, 85, 86,
974
- /* 980 */ 133, 102, 98, 99, 100, 101, 134, 134, 134, 105,
975
- /* 990 */ 111, 112, 113, 134, 115, 134, 134, 102, 134, 134,
976
- /* 1000 */ 116, 134, 123, 134, 134, 121, 111, 112, 113, 102,
977
- /* 1010 */ 134, 134, 133, 118, 119, 134, 134, 134, 111, 112,
978
- /* 1020 */ 113, 102, 134, 134, 102, 118, 134, 102, 133, 134,
979
- /* 1030 */ 111, 112, 113, 111, 112, 113, 111, 112, 113, 102,
980
- /* 1040 */ 133, 134, 134, 4, 5, 6, 7, 134, 111, 112,
981
- /* 1050 */ 113, 134, 133, 134, 134, 133, 134, 134, 133, 134,
982
- /* 1060 */ 134, 134, 102, 134, 25, 134, 134, 134, 102, 134,
983
- /* 1070 */ 133, 111, 112, 113, 134, 102, 134, 111, 112, 113,
984
- /* 1080 */ 102, 134, 134, 134, 111, 112, 113, 102, 134, 111,
985
- /* 1090 */ 112, 113, 102, 133, 134, 134, 111, 112, 113, 133,
986
- /* 1100 */ 134, 111, 112, 113, 134, 102, 133, 134, 134, 134,
987
- /* 1110 */ 102, 133, 134, 134, 111, 112, 113, 102, 133, 111,
988
- /* 1120 */ 112, 113, 102, 133, 134, 134, 111, 112, 113, 134,
989
- /* 1130 */ 134, 111, 112, 113, 102, 134, 133, 134, 134, 134,
990
- /* 1140 */ 102, 133, 134, 111, 112, 113, 134, 134, 133, 111,
991
- /* 1150 */ 112, 113, 102, 133, 134, 134, 134, 134, 102, 134,
992
- /* 1160 */ 134, 111, 112, 113, 134, 133, 134, 111, 112, 113,
993
- /* 1170 */ 134, 133, 134, 134, 134, 102, 134, 134, 134, 134,
994
- /* 1180 */ 134, 102, 134, 133, 111, 112, 113, 102, 134, 133,
995
- /* 1190 */ 111, 112, 113, 102, 134, 134, 111, 112, 113, 102,
996
- /* 1200 */ 134, 134, 111, 112, 113, 134, 133, 134, 111, 112,
997
- /* 1210 */ 113, 134, 133, 4, 5, 6, 7, 134, 133, 4,
998
- /* 1220 */ 5, 6, 7, 134, 133, 134, 17, 134, 134, 134,
999
- /* 1230 */ 133, 4, 5, 6, 7, 4, 5, 6, 7, 134,
1000
- /* 1240 */ 25, 134, 134, 134, 17, 4, 5, 6, 7, 4,
1001
- /* 1250 */ 5, 6, 7, 134, 134, 134, 25, 134, 17, 134,
1002
- /* 1260 */ 134, 134, 17, 134, 134, 134, 134, 134, 134, 134,
1003
- /* 1270 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1004
- /* 1280 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1005
- /* 1290 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1006
- /* 1300 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1007
- /* 1310 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1008
- /* 1320 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1009
- /* 1330 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1010
- /* 1340 */ 134, 134, 134, 134, 134, 134, 134, 134, 98, 98,
1011
- /* 1350 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1012
- /* 1360 */ 98,
894
+ /* 130 */ 38, 4, 5, 4, 5, 6, 7, 4, 5, 12,
895
+ /* 140 */ 3, 81, 15, 38, 1, 115, 17, 2, 88, 115,
896
+ /* 150 */ 90, 24, 128, 26, 27, 12, 1, 14, 31, 32,
897
+ /* 160 */ 19, 18, 16, 20, 21, 22, 23, 24, 17, 26,
898
+ /* 170 */ 27, 15, 29, 30, 31, 32, 31, 32, 64, 65,
899
+ /* 180 */ 66, 67, 68, 69, 70, 71, 72, 73, 6, 7,
900
+ /* 190 */ 43, 64, 13, 48, 26, 27, 103, 48, 105, 29,
901
+ /* 200 */ 30, 31, 32, 110, 111, 112, 113, 114, 81, 64,
902
+ /* 210 */ 83, 84, 85, 86, 40, 88, 40, 90, 91, 92,
903
+ /* 220 */ 93, 94, 1, 2, 87, 4, 5, 134, 83, 84,
904
+ /* 230 */ 85, 86, 48, 12, 96, 97, 15, 41, 20, 21,
905
+ /* 240 */ 22, 20, 21, 22, 41, 1, 2, 98, 4, 5,
906
+ /* 250 */ 82, 47, 31, 32, 17, 103, 12, 105, 90, 15,
907
+ /* 260 */ 26, 27, 110, 111, 112, 113, 114, 49, 50, 51,
908
+ /* 270 */ 52, 53, 54, 89, 25, 31, 32, 1, 17, 95,
909
+ /* 280 */ 4, 5, 98, 26, 27, 64, 134, 74, 12, 0,
910
+ /* 290 */ 79, 15, 78, 3, 2, 80, 20, 21, 22, 10,
911
+ /* 300 */ 24, 79, 81, 3, 83, 84, 85, 86, 64, 88,
912
+ /* 310 */ 3, 90, 91, 92, 93, 94, 38, 2, 3, 4,
913
+ /* 320 */ 5, 6, 7, 31, 32, 81, 3, 83, 84, 85,
914
+ /* 330 */ 86, 16, 88, 3, 90, 91, 92, 93, 94, 3,
915
+ /* 340 */ 25, 95, 4, 5, 6, 7, 31, 32, 1, 2,
916
+ /* 350 */ 76, 4, 5, 38, 25, 17, 64, 81, 15, 12,
917
+ /* 360 */ 15, 15, 15, 25, 88, 17, 90, 91, 92, 93,
918
+ /* 370 */ 94, 4, 5, 6, 7, 83, 84, 85, 86, 28,
919
+ /* 380 */ 28, 28, 67, 68, 12, 38, 89, 3, 11, 135,
920
+ /* 390 */ 75, 135, 77, 78, 79, 2, 3, 4, 5, 6,
921
+ /* 400 */ 7, 1, 35, 135, 4, 5, 4, 5, 6, 7,
922
+ /* 410 */ 17, 135, 12, 135, 135, 15, 135, 135, 25, 17,
923
+ /* 420 */ 20, 21, 22, 135, 31, 32, 135, 25, 81, 135,
924
+ /* 430 */ 135, 38, 135, 135, 135, 88, 135, 90, 91, 92,
925
+ /* 440 */ 93, 94, 135, 1, 2, 135, 4, 5, 4, 5,
926
+ /* 450 */ 6, 7, 8, 135, 12, 26, 27, 15, 135, 135,
927
+ /* 460 */ 67, 68, 99, 100, 101, 102, 135, 135, 75, 106,
928
+ /* 470 */ 77, 78, 79, 2, 3, 4, 5, 6, 7, 135,
929
+ /* 480 */ 117, 81, 135, 135, 121, 122, 135, 135, 88, 135,
930
+ /* 490 */ 90, 91, 92, 93, 94, 135, 25, 103, 135, 105,
931
+ /* 500 */ 135, 135, 31, 32, 110, 111, 112, 113, 114, 38,
932
+ /* 510 */ 135, 1, 135, 135, 4, 5, 135, 135, 135, 90,
933
+ /* 520 */ 135, 135, 12, 81, 135, 15, 135, 135, 134, 135,
934
+ /* 530 */ 88, 135, 90, 91, 92, 93, 94, 135, 67, 68,
935
+ /* 540 */ 1, 2, 135, 4, 5, 135, 75, 135, 77, 78,
936
+ /* 550 */ 79, 12, 135, 135, 15, 135, 46, 47, 1, 135,
937
+ /* 560 */ 135, 4, 5, 99, 100, 101, 102, 135, 135, 12,
938
+ /* 570 */ 106, 135, 15, 135, 1, 135, 135, 4, 5, 135,
939
+ /* 580 */ 135, 117, 135, 135, 135, 12, 122, 135, 15, 135,
940
+ /* 590 */ 135, 81, 135, 4, 5, 6, 7, 135, 88, 135,
941
+ /* 600 */ 90, 91, 92, 93, 94, 1, 17, 135, 4, 5,
942
+ /* 610 */ 135, 135, 135, 135, 135, 103, 12, 105, 135, 15,
943
+ /* 620 */ 81, 135, 110, 111, 112, 113, 114, 88, 135, 90,
944
+ /* 630 */ 91, 92, 93, 94, 135, 100, 101, 102, 81, 135,
945
+ /* 640 */ 135, 106, 135, 135, 135, 88, 134, 90, 91, 92,
946
+ /* 650 */ 93, 94, 117, 135, 81, 135, 135, 122, 135, 135,
947
+ /* 660 */ 135, 88, 135, 90, 91, 92, 93, 94, 1, 135,
948
+ /* 670 */ 135, 4, 5, 4, 5, 6, 7, 135, 135, 12,
949
+ /* 680 */ 135, 135, 15, 135, 135, 81, 17, 4, 5, 6,
950
+ /* 690 */ 7, 135, 88, 135, 90, 91, 92, 93, 94, 135,
951
+ /* 700 */ 135, 135, 103, 135, 105, 135, 103, 135, 135, 110,
952
+ /* 710 */ 111, 112, 113, 114, 135, 112, 113, 114, 35, 103,
953
+ /* 720 */ 135, 105, 119, 120, 135, 135, 110, 111, 112, 113,
954
+ /* 730 */ 114, 135, 135, 134, 103, 135, 105, 134, 135, 135,
955
+ /* 740 */ 135, 110, 111, 112, 113, 114, 135, 135, 81, 135,
956
+ /* 750 */ 134, 135, 135, 103, 135, 88, 135, 90, 91, 92,
957
+ /* 760 */ 93, 94, 112, 113, 114, 134, 116, 103, 135, 105,
958
+ /* 770 */ 135, 103, 135, 135, 110, 111, 112, 113, 114, 135,
959
+ /* 780 */ 112, 113, 114, 103, 134, 105, 118, 119, 120, 135,
960
+ /* 790 */ 110, 111, 112, 113, 114, 135, 135, 135, 134, 103,
961
+ /* 800 */ 135, 105, 134, 135, 135, 135, 110, 111, 112, 113,
962
+ /* 810 */ 114, 135, 135, 103, 134, 105, 135, 135, 135, 135,
963
+ /* 820 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
964
+ /* 830 */ 134, 135, 110, 111, 112, 113, 114, 135, 103, 135,
965
+ /* 840 */ 105, 135, 135, 135, 134, 110, 111, 112, 113, 114,
966
+ /* 850 */ 135, 135, 103, 135, 105, 135, 134, 135, 135, 110,
967
+ /* 860 */ 111, 112, 113, 114, 103, 135, 105, 135, 135, 134,
968
+ /* 870 */ 135, 110, 111, 112, 113, 114, 135, 135, 103, 135,
969
+ /* 880 */ 105, 135, 103, 134, 135, 110, 111, 112, 113, 114,
970
+ /* 890 */ 135, 112, 113, 114, 103, 134, 105, 103, 119, 120,
971
+ /* 900 */ 135, 110, 111, 112, 113, 114, 112, 113, 114, 134,
972
+ /* 910 */ 103, 135, 105, 134, 135, 135, 135, 110, 111, 112,
973
+ /* 920 */ 113, 114, 135, 135, 103, 134, 105, 135, 134, 135,
974
+ /* 930 */ 135, 110, 111, 112, 113, 114, 103, 135, 105, 135,
975
+ /* 940 */ 135, 134, 135, 110, 111, 112, 113, 114, 135, 103,
976
+ /* 950 */ 135, 105, 135, 135, 135, 134, 110, 111, 112, 113,
977
+ /* 960 */ 114, 135, 135, 103, 135, 105, 135, 134, 135, 135,
978
+ /* 970 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
979
+ /* 980 */ 134, 135, 110, 111, 112, 113, 114, 135, 135, 103,
980
+ /* 990 */ 135, 105, 103, 135, 134, 135, 110, 111, 112, 113,
981
+ /* 1000 */ 114, 112, 113, 114, 135, 116, 134, 135, 103, 135,
982
+ /* 1010 */ 135, 135, 123, 124, 135, 135, 103, 112, 113, 114,
983
+ /* 1020 */ 134, 135, 135, 134, 119, 112, 113, 114, 135, 116,
984
+ /* 1030 */ 135, 126, 103, 128, 135, 103, 135, 124, 135, 134,
985
+ /* 1040 */ 135, 112, 113, 114, 112, 113, 114, 134, 103, 135,
986
+ /* 1050 */ 135, 119, 4, 5, 6, 7, 135, 112, 113, 114,
987
+ /* 1060 */ 103, 116, 135, 134, 103, 17, 134, 103, 135, 112,
988
+ /* 1070 */ 113, 114, 135, 112, 113, 114, 112, 113, 114, 134,
989
+ /* 1080 */ 135, 4, 5, 6, 7, 135, 135, 135, 135, 135,
990
+ /* 1090 */ 103, 134, 135, 103, 17, 134, 103, 135, 134, 112,
991
+ /* 1100 */ 113, 114, 112, 113, 114, 112, 113, 114, 135, 103,
992
+ /* 1110 */ 4, 5, 6, 7, 135, 135, 135, 135, 112, 113,
993
+ /* 1120 */ 114, 134, 103, 17, 134, 135, 135, 134, 103, 135,
994
+ /* 1130 */ 135, 112, 113, 114, 135, 103, 135, 112, 113, 114,
995
+ /* 1140 */ 134, 103, 135, 135, 112, 113, 114, 103, 135, 135,
996
+ /* 1150 */ 112, 113, 114, 134, 135, 135, 112, 113, 114, 134,
997
+ /* 1160 */ 135, 135, 135, 135, 103, 135, 134, 135, 135, 135,
998
+ /* 1170 */ 103, 135, 134, 112, 113, 114, 135, 103, 134, 112,
999
+ /* 1180 */ 113, 114, 103, 135, 135, 135, 112, 113, 114, 135,
1000
+ /* 1190 */ 135, 112, 113, 114, 103, 134, 135, 135, 135, 135,
1001
+ /* 1200 */ 103, 134, 135, 112, 113, 114, 103, 135, 134, 112,
1002
+ /* 1210 */ 113, 114, 135, 134, 135, 112, 113, 114, 135, 135,
1003
+ /* 1220 */ 135, 135, 135, 103, 135, 134, 135, 135, 135, 135,
1004
+ /* 1230 */ 135, 134, 112, 113, 114, 103, 135, 134, 135, 103,
1005
+ /* 1240 */ 135, 135, 103, 135, 112, 113, 114, 135, 112, 113,
1006
+ /* 1250 */ 114, 112, 113, 114, 134, 4, 5, 6, 7, 4,
1007
+ /* 1260 */ 5, 6, 7, 135, 135, 135, 134, 135, 135, 135,
1008
+ /* 1270 */ 134, 135, 135, 134, 135, 135, 25, 135, 135, 135,
1009
+ /* 1280 */ 25, 4, 5, 6, 7, 135, 135, 135, 135, 135,
1010
+ /* 1290 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1011
+ /* 1300 */ 135, 135, 25, 135, 135, 135, 135, 135, 135, 135,
1012
+ /* 1310 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1013
+ /* 1320 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1014
+ /* 1330 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1015
+ /* 1340 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1016
+ /* 1350 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1017
+ /* 1360 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1018
+ /* 1370 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1019
+ /* 1380 */ 135, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1020
+ /* 1390 */ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1021
+ /* 1400 */ 99, 99,
10131022
};
10141023
#define YY_SHIFT_COUNT (163)
10151024
#define YY_SHIFT_MIN (0)
1016
-#define YY_SHIFT_MAX (1245)
1025
+#define YY_SHIFT_MAX (1277)
10171026
static const unsigned short int yy_shift_ofst[] = {
1018
- /* 0 */ 143, 127, 220, 243, 243, 243, 243, 243, 243, 243,
1019
- /* 10 */ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1020
- /* 20 */ 243, 243, 243, 243, 243, 243, 243, 175, 361, 481,
1021
- /* 30 */ 175, 143, 399, 399, 0, 64, 143, 506, 481, 506,
1022
- /* 40 */ 268, 268, 268, 424, 443, 481, 481, 481, 481, 481,
1023
- /* 50 */ 481, 538, 481, 481, 551, 481, 481, 481, 481, 481,
1024
- /* 60 */ 481, 481, 481, 481, 481, 334, 60, 60, 60, 60,
1025
- /* 70 */ 60, 620, 314, 392, 470, 893, 893, 104, 62, 1263,
1026
- /* 80 */ 1263, 1263, 1263, 511, 511, 198, 415, 222, 177, 290,
1027
- /* 90 */ 336, 632, 1039, 1209, 1215, 1227, 1231, 1241, 1245, 25,
1028
- /* 100 */ 25, 25, 182, 25, 25, 25, 63, 25, 210, 102,
1029
- /* 110 */ 105, 169, 221, 173, 138, 194, 194, 162, 227, 228,
1030
- /* 120 */ 43, 277, 141, 161, 189, 170, 234, 200, 217, 231,
1031
- /* 130 */ 237, 241, 215, 272, 269, 266, 218, 276, 219, 224,
1032
- /* 140 */ 242, 229, 297, 311, 320, 293, 335, 341, 344, 254,
1033
- /* 150 */ 261, 325, 254, 338, 348, 349, 350, 323, 340, 342,
1034
- /* 160 */ 357, 284, 371, 364,
1027
+ /* 0 */ 143, 127, 221, 244, 244, 244, 244, 244, 244, 244,
1028
+ /* 10 */ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1029
+ /* 20 */ 244, 244, 244, 244, 244, 244, 244, 276, 510, 557,
1030
+ /* 30 */ 276, 143, 347, 347, 0, 64, 143, 573, 557, 573,
1031
+ /* 40 */ 400, 400, 400, 442, 539, 557, 557, 557, 557, 557,
1032
+ /* 50 */ 557, 604, 557, 557, 667, 557, 557, 557, 557, 557,
1033
+ /* 60 */ 557, 557, 557, 557, 557, 218, 60, 60, 60, 60,
1034
+ /* 70 */ 60, 145, 315, 393, 471, 292, 292, 170, 71, 1303,
1035
+ /* 80 */ 1303, 1303, 1303, 114, 114, 338, 402, 129, 444, 367,
1036
+ /* 90 */ 683, 589, 1251, 669, 1255, 1048, 1277, 1077, 1106, 25,
1037
+ /* 100 */ 25, 25, 184, 25, 25, 25, 168, 25, 429, 83,
1038
+ /* 110 */ 92, 105, 70, 133, 138, 182, 182, 234, 257, 137,
1039
+ /* 120 */ 149, 289, 141, 155, 151, 146, 156, 147, 174, 176,
1040
+ /* 130 */ 196, 203, 204, 179, 237, 249, 213, 261, 211, 214,
1041
+ /* 140 */ 215, 222, 290, 300, 307, 278, 323, 330, 336, 246,
1042
+ /* 150 */ 274, 329, 246, 343, 345, 346, 348, 351, 352, 353,
1043
+ /* 160 */ 372, 297, 384, 377,
10351044
};
10361045
#define YY_REDUCE_COUNT (82)
1037
-#define YY_REDUCE_MIN (-128)
1038
-#define YY_REDUCE_MAX (1097)
1046
+#define YY_REDUCE_MIN (-129)
1047
+#define YY_REDUCE_MAX (1139)
10391048
static const short yy_reduce_ofst[] = {
1040
- /* 0 */ 363, -95, -31, 418, 502, 544, 563, 576, 588, 613,
1041
- /* 10 */ 628, 641, 653, 666, 678, 691, 704, 716, 731, 744,
1042
- /* 20 */ 756, 769, 781, 794, 807, 819, 834, 548, 490, 847,
1043
- /* 30 */ 879, 884, 600, 895, -60, -60, 93, 35, 907, 148,
1044
- /* 40 */ 456, 719, 919, 922, 925, 937, 960, 966, 973, 978,
1045
- /* 50 */ 985, 990, 1003, 1008, 1015, 1020, 1032, 1038, 1050, 1056,
1046
- /* 60 */ 1073, 1079, 1085, 1091, 1097, -80, -110, -100, -46, -36,
1047
- /* 70 */ -18, -21, -128, -128, -128, -96, -85, -57, -99, -30,
1048
- /* 80 */ -3, 24, 29,
1049
+ /* 0 */ 363, -96, -32, 93, 152, 394, 512, 599, 616, 631,
1050
+ /* 10 */ 664, 680, 696, 710, 722, 735, 749, 761, 775, 791,
1051
+ /* 20 */ 807, 821, 833, 846, 860, 872, 886, 889, 668, 905,
1052
+ /* 30 */ 913, 464, 603, 779, -61, -61, 535, 650, 932, 945,
1053
+ /* 40 */ 794, 929, 957, 961, 964, 987, 990, 993, 1006, 1019,
1054
+ /* 50 */ 1025, 1032, 1038, 1044, 1061, 1067, 1074, 1079, 1091, 1097,
1055
+ /* 60 */ 1103, 1120, 1132, 1136, 1139, -81, -111, -101, -47, -37,
1056
+ /* 70 */ -23, -22, -129, -129, -129, -97, -86, -58, -100, -15,
1057
+ /* 80 */ 30, 34, 24,
10491058
};
10501059
static const YYACTIONTYPE yy_default[] = {
1051
- /* 0 */ 447, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1052
- /* 10 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1053
- /* 20 */ 441, 441, 441, 441, 441, 441, 441, 441, 471, 573,
1054
- /* 30 */ 441, 447, 577, 483, 578, 578, 447, 441, 441, 441,
1055
- /* 40 */ 441, 441, 441, 441, 441, 441, 441, 441, 475, 441,
1056
- /* 50 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1057
- /* 60 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1058
- /* 70 */ 441, 441, 441, 441, 441, 441, 441, 441, 453, 468,
1059
- /* 80 */ 506, 506, 573, 466, 491, 441, 441, 441, 469, 441,
1060
- /* 90 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 486,
1061
- /* 100 */ 484, 474, 457, 510, 509, 508, 441, 563, 441, 441,
1062
- /* 110 */ 441, 441, 441, 585, 441, 542, 541, 537, 441, 530,
1063
- /* 120 */ 527, 441, 441, 441, 441, 441, 441, 489, 441, 441,
1064
- /* 130 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1065
- /* 140 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 589,
1066
- /* 150 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1067
- /* 160 */ 441, 598, 441, 441,
1060
+ /* 0 */ 449, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1061
+ /* 10 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1062
+ /* 20 */ 443, 443, 443, 443, 443, 443, 443, 443, 473, 576,
1063
+ /* 30 */ 443, 449, 580, 485, 581, 581, 449, 443, 443, 443,
1064
+ /* 40 */ 443, 443, 443, 443, 443, 443, 443, 443, 477, 443,
1065
+ /* 50 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1066
+ /* 60 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1067
+ /* 70 */ 443, 443, 443, 443, 443, 443, 443, 443, 455, 470,
1068
+ /* 80 */ 508, 508, 576, 468, 493, 443, 443, 443, 471, 443,
1069
+ /* 90 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 488,
1070
+ /* 100 */ 486, 476, 459, 512, 511, 510, 443, 566, 443, 443,
1071
+ /* 110 */ 443, 443, 443, 588, 443, 545, 544, 540, 443, 532,
1072
+ /* 120 */ 529, 443, 443, 443, 443, 443, 443, 491, 443, 443,
1073
+ /* 130 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1074
+ /* 140 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 592,
1075
+ /* 150 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1076
+ /* 160 */ 443, 601, 443, 443,
10681077
};
10691078
/********** End of lemon-generated parsing tables *****************************/
10701079
10711080
/* The next table maps tokens (terminal symbols) into fallback tokens.
10721081
** If a construct like the following:
@@ -1170,10 +1179,11 @@
11701179
0, /* TOP => nothing */
11711180
0, /* BOTTOM => nothing */
11721181
0, /* START => nothing */
11731182
0, /* END => nothing */
11741183
0, /* IN => nothing */
1184
+ 0, /* THIS => nothing */
11751185
0, /* DOT_U => nothing */
11761186
0, /* LAST => nothing */
11771187
0, /* NUMBER => nothing */
11781188
0, /* FUNC1 => nothing */
11791189
0, /* FUNC2 => nothing */
@@ -1356,56 +1366,57 @@
13561366
/* 83 */ "TOP",
13571367
/* 84 */ "BOTTOM",
13581368
/* 85 */ "START",
13591369
/* 86 */ "END",
13601370
/* 87 */ "IN",
1361
- /* 88 */ "DOT_U",
1362
- /* 89 */ "LAST",
1363
- /* 90 */ "NUMBER",
1364
- /* 91 */ "FUNC1",
1365
- /* 92 */ "FUNC2",
1366
- /* 93 */ "DIST",
1367
- /* 94 */ "DOT_XY",
1368
- /* 95 */ "X",
1369
- /* 96 */ "Y",
1370
- /* 97 */ "DOT_L",
1371
- /* 98 */ "statement_list",
1372
- /* 99 */ "statement",
1373
- /* 100 */ "unnamed_statement",
1374
- /* 101 */ "basetype",
1375
- /* 102 */ "expr",
1376
- /* 103 */ "numproperty",
1377
- /* 104 */ "edge",
1378
- /* 105 */ "direction",
1379
- /* 106 */ "dashproperty",
1380
- /* 107 */ "colorproperty",
1381
- /* 108 */ "locproperty",
1382
- /* 109 */ "position",
1383
- /* 110 */ "place",
1384
- /* 111 */ "object",
1385
- /* 112 */ "objectname",
1386
- /* 113 */ "nth",
1387
- /* 114 */ "textposition",
1388
- /* 115 */ "rvalue",
1389
- /* 116 */ "lvalue",
1390
- /* 117 */ "even",
1391
- /* 118 */ "relexpr",
1392
- /* 119 */ "optrelexpr",
1393
- /* 120 */ "document",
1394
- /* 121 */ "print",
1395
- /* 122 */ "prlist",
1396
- /* 123 */ "pritem",
1397
- /* 124 */ "prsep",
1398
- /* 125 */ "attribute_list",
1399
- /* 126 */ "savelist",
1400
- /* 127 */ "alist",
1401
- /* 128 */ "attribute",
1402
- /* 129 */ "go",
1403
- /* 130 */ "boolproperty",
1404
- /* 131 */ "withclause",
1405
- /* 132 */ "between",
1406
- /* 133 */ "place2",
1371
+ /* 88 */ "THIS",
1372
+ /* 89 */ "DOT_U",
1373
+ /* 90 */ "LAST",
1374
+ /* 91 */ "NUMBER",
1375
+ /* 92 */ "FUNC1",
1376
+ /* 93 */ "FUNC2",
1377
+ /* 94 */ "DIST",
1378
+ /* 95 */ "DOT_XY",
1379
+ /* 96 */ "X",
1380
+ /* 97 */ "Y",
1381
+ /* 98 */ "DOT_L",
1382
+ /* 99 */ "statement_list",
1383
+ /* 100 */ "statement",
1384
+ /* 101 */ "unnamed_statement",
1385
+ /* 102 */ "basetype",
1386
+ /* 103 */ "expr",
1387
+ /* 104 */ "numproperty",
1388
+ /* 105 */ "edge",
1389
+ /* 106 */ "direction",
1390
+ /* 107 */ "dashproperty",
1391
+ /* 108 */ "colorproperty",
1392
+ /* 109 */ "locproperty",
1393
+ /* 110 */ "position",
1394
+ /* 111 */ "place",
1395
+ /* 112 */ "object",
1396
+ /* 113 */ "objectname",
1397
+ /* 114 */ "nth",
1398
+ /* 115 */ "textposition",
1399
+ /* 116 */ "rvalue",
1400
+ /* 117 */ "lvalue",
1401
+ /* 118 */ "even",
1402
+ /* 119 */ "relexpr",
1403
+ /* 120 */ "optrelexpr",
1404
+ /* 121 */ "document",
1405
+ /* 122 */ "print",
1406
+ /* 123 */ "prlist",
1407
+ /* 124 */ "pritem",
1408
+ /* 125 */ "prsep",
1409
+ /* 126 */ "attribute_list",
1410
+ /* 127 */ "savelist",
1411
+ /* 128 */ "alist",
1412
+ /* 129 */ "attribute",
1413
+ /* 130 */ "go",
1414
+ /* 131 */ "boolproperty",
1415
+ /* 132 */ "withclause",
1416
+ /* 133 */ "between",
1417
+ /* 134 */ "place2",
14071418
};
14081419
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
14091420
14101421
#ifndef NDEBUG
14111422
/* For tracing reduce actions, the names of all rules are required.
@@ -1497,77 +1508,78 @@
14971508
/* 83 */ "place2 ::= object",
14981509
/* 84 */ "place2 ::= object DOT_E edge",
14991510
/* 85 */ "place2 ::= NTH VERTEX OF object",
15001511
/* 86 */ "object ::= nth",
15011512
/* 87 */ "object ::= nth OF|IN object",
1502
- /* 88 */ "objectname ::= PLACENAME",
1503
- /* 89 */ "objectname ::= objectname DOT_U PLACENAME",
1504
- /* 90 */ "nth ::= NTH CLASSNAME",
1505
- /* 91 */ "nth ::= NTH LAST CLASSNAME",
1506
- /* 92 */ "nth ::= LAST CLASSNAME",
1507
- /* 93 */ "nth ::= LAST",
1508
- /* 94 */ "nth ::= NTH LB RB",
1509
- /* 95 */ "nth ::= NTH LAST LB RB",
1510
- /* 96 */ "nth ::= LAST LB RB",
1511
- /* 97 */ "expr ::= expr PLUS expr",
1512
- /* 98 */ "expr ::= expr MINUS expr",
1513
- /* 99 */ "expr ::= expr STAR expr",
1514
- /* 100 */ "expr ::= expr SLASH expr",
1515
- /* 101 */ "expr ::= MINUS expr",
1516
- /* 102 */ "expr ::= PLUS expr",
1517
- /* 103 */ "expr ::= LP expr RP",
1518
- /* 104 */ "expr ::= LP FILL|COLOR|THICKNESS RP",
1519
- /* 105 */ "expr ::= NUMBER",
1520
- /* 106 */ "expr ::= ID",
1521
- /* 107 */ "expr ::= FUNC1 LP expr RP",
1522
- /* 108 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1523
- /* 109 */ "expr ::= DIST LP position COMMA position RP",
1524
- /* 110 */ "expr ::= place2 DOT_XY X",
1525
- /* 111 */ "expr ::= place2 DOT_XY Y",
1526
- /* 112 */ "expr ::= object DOT_L numproperty",
1527
- /* 113 */ "expr ::= object DOT_L dashproperty",
1528
- /* 114 */ "expr ::= object DOT_L colorproperty",
1529
- /* 115 */ "lvalue ::= ID",
1530
- /* 116 */ "lvalue ::= FILL",
1531
- /* 117 */ "lvalue ::= COLOR",
1532
- /* 118 */ "lvalue ::= THICKNESS",
1533
- /* 119 */ "rvalue ::= expr",
1534
- /* 120 */ "print ::= PRINT",
1535
- /* 121 */ "prlist ::= pritem",
1536
- /* 122 */ "prlist ::= prlist prsep pritem",
1537
- /* 123 */ "direction ::= UP",
1538
- /* 124 */ "direction ::= DOWN",
1539
- /* 125 */ "direction ::= LEFT",
1540
- /* 126 */ "direction ::= RIGHT",
1541
- /* 127 */ "optrelexpr ::= relexpr",
1542
- /* 128 */ "attribute_list ::= alist",
1543
- /* 129 */ "alist ::=",
1544
- /* 130 */ "alist ::= alist attribute",
1545
- /* 131 */ "attribute ::= boolproperty",
1546
- /* 132 */ "attribute ::= WITH withclause",
1547
- /* 133 */ "go ::= GO",
1548
- /* 134 */ "go ::=",
1549
- /* 135 */ "even ::= UNTIL EVEN WITH",
1550
- /* 136 */ "even ::= EVEN WITH",
1551
- /* 137 */ "dashproperty ::= DOTTED",
1552
- /* 138 */ "dashproperty ::= DASHED",
1553
- /* 139 */ "colorproperty ::= FILL",
1554
- /* 140 */ "colorproperty ::= COLOR",
1555
- /* 141 */ "position ::= place",
1556
- /* 142 */ "between ::= WAY BETWEEN",
1557
- /* 143 */ "between ::= BETWEEN",
1558
- /* 144 */ "between ::= OF THE WAY BETWEEN",
1559
- /* 145 */ "place ::= place2",
1560
- /* 146 */ "edge ::= CENTER",
1561
- /* 147 */ "edge ::= EDGEPT",
1562
- /* 148 */ "edge ::= TOP",
1563
- /* 149 */ "edge ::= BOTTOM",
1564
- /* 150 */ "edge ::= START",
1565
- /* 151 */ "edge ::= END",
1566
- /* 152 */ "edge ::= RIGHT",
1567
- /* 153 */ "edge ::= LEFT",
1568
- /* 154 */ "object ::= objectname",
1513
+ /* 88 */ "objectname ::= THIS",
1514
+ /* 89 */ "objectname ::= PLACENAME",
1515
+ /* 90 */ "objectname ::= objectname DOT_U PLACENAME",
1516
+ /* 91 */ "nth ::= NTH CLASSNAME",
1517
+ /* 92 */ "nth ::= NTH LAST CLASSNAME",
1518
+ /* 93 */ "nth ::= LAST CLASSNAME",
1519
+ /* 94 */ "nth ::= LAST",
1520
+ /* 95 */ "nth ::= NTH LB RB",
1521
+ /* 96 */ "nth ::= NTH LAST LB RB",
1522
+ /* 97 */ "nth ::= LAST LB RB",
1523
+ /* 98 */ "expr ::= expr PLUS expr",
1524
+ /* 99 */ "expr ::= expr MINUS expr",
1525
+ /* 100 */ "expr ::= expr STAR expr",
1526
+ /* 101 */ "expr ::= expr SLASH expr",
1527
+ /* 102 */ "expr ::= MINUS expr",
1528
+ /* 103 */ "expr ::= PLUS expr",
1529
+ /* 104 */ "expr ::= LP expr RP",
1530
+ /* 105 */ "expr ::= LP FILL|COLOR|THICKNESS RP",
1531
+ /* 106 */ "expr ::= NUMBER",
1532
+ /* 107 */ "expr ::= ID",
1533
+ /* 108 */ "expr ::= FUNC1 LP expr RP",
1534
+ /* 109 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1535
+ /* 110 */ "expr ::= DIST LP position COMMA position RP",
1536
+ /* 111 */ "expr ::= place2 DOT_XY X",
1537
+ /* 112 */ "expr ::= place2 DOT_XY Y",
1538
+ /* 113 */ "expr ::= object DOT_L numproperty",
1539
+ /* 114 */ "expr ::= object DOT_L dashproperty",
1540
+ /* 115 */ "expr ::= object DOT_L colorproperty",
1541
+ /* 116 */ "lvalue ::= ID",
1542
+ /* 117 */ "lvalue ::= FILL",
1543
+ /* 118 */ "lvalue ::= COLOR",
1544
+ /* 119 */ "lvalue ::= THICKNESS",
1545
+ /* 120 */ "rvalue ::= expr",
1546
+ /* 121 */ "print ::= PRINT",
1547
+ /* 122 */ "prlist ::= pritem",
1548
+ /* 123 */ "prlist ::= prlist prsep pritem",
1549
+ /* 124 */ "direction ::= UP",
1550
+ /* 125 */ "direction ::= DOWN",
1551
+ /* 126 */ "direction ::= LEFT",
1552
+ /* 127 */ "direction ::= RIGHT",
1553
+ /* 128 */ "optrelexpr ::= relexpr",
1554
+ /* 129 */ "attribute_list ::= alist",
1555
+ /* 130 */ "alist ::=",
1556
+ /* 131 */ "alist ::= alist attribute",
1557
+ /* 132 */ "attribute ::= boolproperty",
1558
+ /* 133 */ "attribute ::= WITH withclause",
1559
+ /* 134 */ "go ::= GO",
1560
+ /* 135 */ "go ::=",
1561
+ /* 136 */ "even ::= UNTIL EVEN WITH",
1562
+ /* 137 */ "even ::= EVEN WITH",
1563
+ /* 138 */ "dashproperty ::= DOTTED",
1564
+ /* 139 */ "dashproperty ::= DASHED",
1565
+ /* 140 */ "colorproperty ::= FILL",
1566
+ /* 141 */ "colorproperty ::= COLOR",
1567
+ /* 142 */ "position ::= place",
1568
+ /* 143 */ "between ::= WAY BETWEEN",
1569
+ /* 144 */ "between ::= BETWEEN",
1570
+ /* 145 */ "between ::= OF THE WAY BETWEEN",
1571
+ /* 146 */ "place ::= place2",
1572
+ /* 147 */ "edge ::= CENTER",
1573
+ /* 148 */ "edge ::= EDGEPT",
1574
+ /* 149 */ "edge ::= TOP",
1575
+ /* 150 */ "edge ::= BOTTOM",
1576
+ /* 151 */ "edge ::= START",
1577
+ /* 152 */ "edge ::= END",
1578
+ /* 153 */ "edge ::= RIGHT",
1579
+ /* 154 */ "edge ::= LEFT",
1580
+ /* 155 */ "object ::= objectname",
15691581
};
15701582
#endif /* NDEBUG */
15711583
15721584
15731585
#if YYSTACKDEPTH<=0
@@ -1689,24 +1701,24 @@
16891701
** Note: during a reduce, the only symbols destroyed are those
16901702
** which appear on the RHS of the rule, but which are *not* used
16911703
** inside the C code.
16921704
*/
16931705
/********* Begin destructor definitions ***************************************/
1694
- case 98: /* statement_list */
1706
+ case 99: /* statement_list */
16951707
{
16961708
#line 494 "pikchr.y"
1697
-pik_elist_free(p,(yypminor->yy119));
1698
-#line 1723 "pikchr.c"
1709
+pik_elist_free(p,(yypminor->yy227));
1710
+#line 1735 "pikchr.c"
16991711
}
17001712
break;
1701
- case 99: /* statement */
1702
- case 100: /* unnamed_statement */
1703
- case 101: /* basetype */
1713
+ case 100: /* statement */
1714
+ case 101: /* unnamed_statement */
1715
+ case 102: /* basetype */
17041716
{
17051717
#line 496 "pikchr.y"
1706
-pik_elem_free(p,(yypminor->yy38));
1707
-#line 1732 "pikchr.c"
1718
+pik_elem_free(p,(yypminor->yy36));
1719
+#line 1744 "pikchr.c"
17081720
}
17091721
break;
17101722
/********* End destructor definitions *****************************************/
17111723
default: break; /* If no destructor action specified: do nothing */
17121724
}
@@ -1923,11 +1935,11 @@
19231935
** stack every overflows */
19241936
/******** Begin %stack_overflow code ******************************************/
19251937
#line 528 "pikchr.y"
19261938
19271939
pik_error(p, 0, "parser stack overflow");
1928
-#line 1953 "pikchr.c"
1940
+#line 1965 "pikchr.c"
19291941
/******** End %stack_overflow code ********************************************/
19301942
pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
19311943
pik_parserCTX_STORE
19321944
}
19331945
@@ -1995,165 +2007,166 @@
19952007
}
19962008
19972009
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
19982010
** of that rule */
19992011
static const YYCODETYPE yyRuleInfoLhs[] = {
2000
- 120, /* (0) document ::= statement_list */
2001
- 98, /* (1) statement_list ::= statement */
2002
- 98, /* (2) statement_list ::= statement_list EOL statement */
2003
- 99, /* (3) statement ::= */
2004
- 99, /* (4) statement ::= direction */
2005
- 99, /* (5) statement ::= lvalue ASSIGN rvalue */
2006
- 99, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2007
- 99, /* (7) statement ::= PLACENAME COLON position */
2008
- 99, /* (8) statement ::= unnamed_statement */
2009
- 99, /* (9) statement ::= print prlist */
2010
- 99, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2011
- 99, /* (11) statement ::= ASSERT LP position EQ position RP */
2012
- 99, /* (12) statement ::= DEFINE ID CODEBLOCK */
2013
- 115, /* (13) rvalue ::= PLACENAME */
2014
- 123, /* (14) pritem ::= FILL */
2015
- 123, /* (15) pritem ::= COLOR */
2016
- 123, /* (16) pritem ::= THICKNESS */
2017
- 123, /* (17) pritem ::= rvalue */
2018
- 123, /* (18) pritem ::= STRING */
2019
- 124, /* (19) prsep ::= COMMA */
2020
- 100, /* (20) unnamed_statement ::= basetype attribute_list */
2021
- 101, /* (21) basetype ::= CLASSNAME */
2022
- 101, /* (22) basetype ::= STRING textposition */
2023
- 101, /* (23) basetype ::= LB savelist statement_list RB */
2024
- 126, /* (24) savelist ::= */
2025
- 118, /* (25) relexpr ::= expr */
2026
- 118, /* (26) relexpr ::= expr PERCENT */
2027
- 119, /* (27) optrelexpr ::= */
2028
- 125, /* (28) attribute_list ::= relexpr alist */
2029
- 128, /* (29) attribute ::= numproperty relexpr */
2030
- 128, /* (30) attribute ::= dashproperty expr */
2031
- 128, /* (31) attribute ::= dashproperty */
2032
- 128, /* (32) attribute ::= colorproperty rvalue */
2033
- 128, /* (33) attribute ::= go direction optrelexpr */
2034
- 128, /* (34) attribute ::= go direction even position */
2035
- 128, /* (35) attribute ::= CLOSE */
2036
- 128, /* (36) attribute ::= CHOP */
2037
- 128, /* (37) attribute ::= FROM position */
2038
- 128, /* (38) attribute ::= TO position */
2039
- 128, /* (39) attribute ::= THEN */
2040
- 128, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2041
- 128, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2042
- 128, /* (42) attribute ::= GO optrelexpr HEADING expr */
2043
- 128, /* (43) attribute ::= GO optrelexpr EDGEPT */
2044
- 128, /* (44) attribute ::= AT position */
2045
- 128, /* (45) attribute ::= SAME */
2046
- 128, /* (46) attribute ::= SAME AS object */
2047
- 128, /* (47) attribute ::= STRING textposition */
2048
- 128, /* (48) attribute ::= FIT */
2049
- 128, /* (49) attribute ::= BEHIND object */
2050
- 131, /* (50) withclause ::= DOT_E edge AT position */
2051
- 131, /* (51) withclause ::= edge AT position */
2052
- 103, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2053
- 130, /* (53) boolproperty ::= CW */
2054
- 130, /* (54) boolproperty ::= CCW */
2055
- 130, /* (55) boolproperty ::= LARROW */
2056
- 130, /* (56) boolproperty ::= RARROW */
2057
- 130, /* (57) boolproperty ::= LRARROW */
2058
- 130, /* (58) boolproperty ::= INVIS */
2059
- 130, /* (59) boolproperty ::= THICK */
2060
- 130, /* (60) boolproperty ::= THIN */
2061
- 130, /* (61) boolproperty ::= SOLID */
2062
- 114, /* (62) textposition ::= */
2063
- 114, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2064
- 109, /* (64) position ::= expr COMMA expr */
2065
- 109, /* (65) position ::= place PLUS expr COMMA expr */
2066
- 109, /* (66) position ::= place MINUS expr COMMA expr */
2067
- 109, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2068
- 109, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2069
- 109, /* (69) position ::= LP position COMMA position RP */
2070
- 109, /* (70) position ::= LP position RP */
2071
- 109, /* (71) position ::= expr between position AND position */
2072
- 109, /* (72) position ::= expr LT position COMMA position GT */
2073
- 109, /* (73) position ::= expr ABOVE position */
2074
- 109, /* (74) position ::= expr BELOW position */
2075
- 109, /* (75) position ::= expr LEFT OF position */
2076
- 109, /* (76) position ::= expr RIGHT OF position */
2077
- 109, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2078
- 109, /* (78) position ::= expr HEADING EDGEPT OF position */
2079
- 109, /* (79) position ::= expr EDGEPT OF position */
2080
- 109, /* (80) position ::= expr ON HEADING expr FROM position */
2081
- 109, /* (81) position ::= expr HEADING expr FROM position */
2082
- 110, /* (82) place ::= edge OF object */
2083
- 133, /* (83) place2 ::= object */
2084
- 133, /* (84) place2 ::= object DOT_E edge */
2085
- 133, /* (85) place2 ::= NTH VERTEX OF object */
2086
- 111, /* (86) object ::= nth */
2087
- 111, /* (87) object ::= nth OF|IN object */
2088
- 112, /* (88) objectname ::= PLACENAME */
2089
- 112, /* (89) objectname ::= objectname DOT_U PLACENAME */
2090
- 113, /* (90) nth ::= NTH CLASSNAME */
2091
- 113, /* (91) nth ::= NTH LAST CLASSNAME */
2092
- 113, /* (92) nth ::= LAST CLASSNAME */
2093
- 113, /* (93) nth ::= LAST */
2094
- 113, /* (94) nth ::= NTH LB RB */
2095
- 113, /* (95) nth ::= NTH LAST LB RB */
2096
- 113, /* (96) nth ::= LAST LB RB */
2097
- 102, /* (97) expr ::= expr PLUS expr */
2098
- 102, /* (98) expr ::= expr MINUS expr */
2099
- 102, /* (99) expr ::= expr STAR expr */
2100
- 102, /* (100) expr ::= expr SLASH expr */
2101
- 102, /* (101) expr ::= MINUS expr */
2102
- 102, /* (102) expr ::= PLUS expr */
2103
- 102, /* (103) expr ::= LP expr RP */
2104
- 102, /* (104) expr ::= LP FILL|COLOR|THICKNESS RP */
2105
- 102, /* (105) expr ::= NUMBER */
2106
- 102, /* (106) expr ::= ID */
2107
- 102, /* (107) expr ::= FUNC1 LP expr RP */
2108
- 102, /* (108) expr ::= FUNC2 LP expr COMMA expr RP */
2109
- 102, /* (109) expr ::= DIST LP position COMMA position RP */
2110
- 102, /* (110) expr ::= place2 DOT_XY X */
2111
- 102, /* (111) expr ::= place2 DOT_XY Y */
2112
- 102, /* (112) expr ::= object DOT_L numproperty */
2113
- 102, /* (113) expr ::= object DOT_L dashproperty */
2114
- 102, /* (114) expr ::= object DOT_L colorproperty */
2115
- 116, /* (115) lvalue ::= ID */
2116
- 116, /* (116) lvalue ::= FILL */
2117
- 116, /* (117) lvalue ::= COLOR */
2118
- 116, /* (118) lvalue ::= THICKNESS */
2119
- 115, /* (119) rvalue ::= expr */
2120
- 121, /* (120) print ::= PRINT */
2121
- 122, /* (121) prlist ::= pritem */
2122
- 122, /* (122) prlist ::= prlist prsep pritem */
2123
- 105, /* (123) direction ::= UP */
2124
- 105, /* (124) direction ::= DOWN */
2125
- 105, /* (125) direction ::= LEFT */
2126
- 105, /* (126) direction ::= RIGHT */
2127
- 119, /* (127) optrelexpr ::= relexpr */
2128
- 125, /* (128) attribute_list ::= alist */
2129
- 127, /* (129) alist ::= */
2130
- 127, /* (130) alist ::= alist attribute */
2131
- 128, /* (131) attribute ::= boolproperty */
2132
- 128, /* (132) attribute ::= WITH withclause */
2133
- 129, /* (133) go ::= GO */
2134
- 129, /* (134) go ::= */
2135
- 117, /* (135) even ::= UNTIL EVEN WITH */
2136
- 117, /* (136) even ::= EVEN WITH */
2137
- 106, /* (137) dashproperty ::= DOTTED */
2138
- 106, /* (138) dashproperty ::= DASHED */
2139
- 107, /* (139) colorproperty ::= FILL */
2140
- 107, /* (140) colorproperty ::= COLOR */
2141
- 109, /* (141) position ::= place */
2142
- 132, /* (142) between ::= WAY BETWEEN */
2143
- 132, /* (143) between ::= BETWEEN */
2144
- 132, /* (144) between ::= OF THE WAY BETWEEN */
2145
- 110, /* (145) place ::= place2 */
2146
- 104, /* (146) edge ::= CENTER */
2147
- 104, /* (147) edge ::= EDGEPT */
2148
- 104, /* (148) edge ::= TOP */
2149
- 104, /* (149) edge ::= BOTTOM */
2150
- 104, /* (150) edge ::= START */
2151
- 104, /* (151) edge ::= END */
2152
- 104, /* (152) edge ::= RIGHT */
2153
- 104, /* (153) edge ::= LEFT */
2154
- 111, /* (154) object ::= objectname */
2012
+ 121, /* (0) document ::= statement_list */
2013
+ 99, /* (1) statement_list ::= statement */
2014
+ 99, /* (2) statement_list ::= statement_list EOL statement */
2015
+ 100, /* (3) statement ::= */
2016
+ 100, /* (4) statement ::= direction */
2017
+ 100, /* (5) statement ::= lvalue ASSIGN rvalue */
2018
+ 100, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2019
+ 100, /* (7) statement ::= PLACENAME COLON position */
2020
+ 100, /* (8) statement ::= unnamed_statement */
2021
+ 100, /* (9) statement ::= print prlist */
2022
+ 100, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2023
+ 100, /* (11) statement ::= ASSERT LP position EQ position RP */
2024
+ 100, /* (12) statement ::= DEFINE ID CODEBLOCK */
2025
+ 116, /* (13) rvalue ::= PLACENAME */
2026
+ 124, /* (14) pritem ::= FILL */
2027
+ 124, /* (15) pritem ::= COLOR */
2028
+ 124, /* (16) pritem ::= THICKNESS */
2029
+ 124, /* (17) pritem ::= rvalue */
2030
+ 124, /* (18) pritem ::= STRING */
2031
+ 125, /* (19) prsep ::= COMMA */
2032
+ 101, /* (20) unnamed_statement ::= basetype attribute_list */
2033
+ 102, /* (21) basetype ::= CLASSNAME */
2034
+ 102, /* (22) basetype ::= STRING textposition */
2035
+ 102, /* (23) basetype ::= LB savelist statement_list RB */
2036
+ 127, /* (24) savelist ::= */
2037
+ 119, /* (25) relexpr ::= expr */
2038
+ 119, /* (26) relexpr ::= expr PERCENT */
2039
+ 120, /* (27) optrelexpr ::= */
2040
+ 126, /* (28) attribute_list ::= relexpr alist */
2041
+ 129, /* (29) attribute ::= numproperty relexpr */
2042
+ 129, /* (30) attribute ::= dashproperty expr */
2043
+ 129, /* (31) attribute ::= dashproperty */
2044
+ 129, /* (32) attribute ::= colorproperty rvalue */
2045
+ 129, /* (33) attribute ::= go direction optrelexpr */
2046
+ 129, /* (34) attribute ::= go direction even position */
2047
+ 129, /* (35) attribute ::= CLOSE */
2048
+ 129, /* (36) attribute ::= CHOP */
2049
+ 129, /* (37) attribute ::= FROM position */
2050
+ 129, /* (38) attribute ::= TO position */
2051
+ 129, /* (39) attribute ::= THEN */
2052
+ 129, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2053
+ 129, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2054
+ 129, /* (42) attribute ::= GO optrelexpr HEADING expr */
2055
+ 129, /* (43) attribute ::= GO optrelexpr EDGEPT */
2056
+ 129, /* (44) attribute ::= AT position */
2057
+ 129, /* (45) attribute ::= SAME */
2058
+ 129, /* (46) attribute ::= SAME AS object */
2059
+ 129, /* (47) attribute ::= STRING textposition */
2060
+ 129, /* (48) attribute ::= FIT */
2061
+ 129, /* (49) attribute ::= BEHIND object */
2062
+ 132, /* (50) withclause ::= DOT_E edge AT position */
2063
+ 132, /* (51) withclause ::= edge AT position */
2064
+ 104, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2065
+ 131, /* (53) boolproperty ::= CW */
2066
+ 131, /* (54) boolproperty ::= CCW */
2067
+ 131, /* (55) boolproperty ::= LARROW */
2068
+ 131, /* (56) boolproperty ::= RARROW */
2069
+ 131, /* (57) boolproperty ::= LRARROW */
2070
+ 131, /* (58) boolproperty ::= INVIS */
2071
+ 131, /* (59) boolproperty ::= THICK */
2072
+ 131, /* (60) boolproperty ::= THIN */
2073
+ 131, /* (61) boolproperty ::= SOLID */
2074
+ 115, /* (62) textposition ::= */
2075
+ 115, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2076
+ 110, /* (64) position ::= expr COMMA expr */
2077
+ 110, /* (65) position ::= place PLUS expr COMMA expr */
2078
+ 110, /* (66) position ::= place MINUS expr COMMA expr */
2079
+ 110, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2080
+ 110, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2081
+ 110, /* (69) position ::= LP position COMMA position RP */
2082
+ 110, /* (70) position ::= LP position RP */
2083
+ 110, /* (71) position ::= expr between position AND position */
2084
+ 110, /* (72) position ::= expr LT position COMMA position GT */
2085
+ 110, /* (73) position ::= expr ABOVE position */
2086
+ 110, /* (74) position ::= expr BELOW position */
2087
+ 110, /* (75) position ::= expr LEFT OF position */
2088
+ 110, /* (76) position ::= expr RIGHT OF position */
2089
+ 110, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2090
+ 110, /* (78) position ::= expr HEADING EDGEPT OF position */
2091
+ 110, /* (79) position ::= expr EDGEPT OF position */
2092
+ 110, /* (80) position ::= expr ON HEADING expr FROM position */
2093
+ 110, /* (81) position ::= expr HEADING expr FROM position */
2094
+ 111, /* (82) place ::= edge OF object */
2095
+ 134, /* (83) place2 ::= object */
2096
+ 134, /* (84) place2 ::= object DOT_E edge */
2097
+ 134, /* (85) place2 ::= NTH VERTEX OF object */
2098
+ 112, /* (86) object ::= nth */
2099
+ 112, /* (87) object ::= nth OF|IN object */
2100
+ 113, /* (88) objectname ::= THIS */
2101
+ 113, /* (89) objectname ::= PLACENAME */
2102
+ 113, /* (90) objectname ::= objectname DOT_U PLACENAME */
2103
+ 114, /* (91) nth ::= NTH CLASSNAME */
2104
+ 114, /* (92) nth ::= NTH LAST CLASSNAME */
2105
+ 114, /* (93) nth ::= LAST CLASSNAME */
2106
+ 114, /* (94) nth ::= LAST */
2107
+ 114, /* (95) nth ::= NTH LB RB */
2108
+ 114, /* (96) nth ::= NTH LAST LB RB */
2109
+ 114, /* (97) nth ::= LAST LB RB */
2110
+ 103, /* (98) expr ::= expr PLUS expr */
2111
+ 103, /* (99) expr ::= expr MINUS expr */
2112
+ 103, /* (100) expr ::= expr STAR expr */
2113
+ 103, /* (101) expr ::= expr SLASH expr */
2114
+ 103, /* (102) expr ::= MINUS expr */
2115
+ 103, /* (103) expr ::= PLUS expr */
2116
+ 103, /* (104) expr ::= LP expr RP */
2117
+ 103, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2118
+ 103, /* (106) expr ::= NUMBER */
2119
+ 103, /* (107) expr ::= ID */
2120
+ 103, /* (108) expr ::= FUNC1 LP expr RP */
2121
+ 103, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2122
+ 103, /* (110) expr ::= DIST LP position COMMA position RP */
2123
+ 103, /* (111) expr ::= place2 DOT_XY X */
2124
+ 103, /* (112) expr ::= place2 DOT_XY Y */
2125
+ 103, /* (113) expr ::= object DOT_L numproperty */
2126
+ 103, /* (114) expr ::= object DOT_L dashproperty */
2127
+ 103, /* (115) expr ::= object DOT_L colorproperty */
2128
+ 117, /* (116) lvalue ::= ID */
2129
+ 117, /* (117) lvalue ::= FILL */
2130
+ 117, /* (118) lvalue ::= COLOR */
2131
+ 117, /* (119) lvalue ::= THICKNESS */
2132
+ 116, /* (120) rvalue ::= expr */
2133
+ 122, /* (121) print ::= PRINT */
2134
+ 123, /* (122) prlist ::= pritem */
2135
+ 123, /* (123) prlist ::= prlist prsep pritem */
2136
+ 106, /* (124) direction ::= UP */
2137
+ 106, /* (125) direction ::= DOWN */
2138
+ 106, /* (126) direction ::= LEFT */
2139
+ 106, /* (127) direction ::= RIGHT */
2140
+ 120, /* (128) optrelexpr ::= relexpr */
2141
+ 126, /* (129) attribute_list ::= alist */
2142
+ 128, /* (130) alist ::= */
2143
+ 128, /* (131) alist ::= alist attribute */
2144
+ 129, /* (132) attribute ::= boolproperty */
2145
+ 129, /* (133) attribute ::= WITH withclause */
2146
+ 130, /* (134) go ::= GO */
2147
+ 130, /* (135) go ::= */
2148
+ 118, /* (136) even ::= UNTIL EVEN WITH */
2149
+ 118, /* (137) even ::= EVEN WITH */
2150
+ 107, /* (138) dashproperty ::= DOTTED */
2151
+ 107, /* (139) dashproperty ::= DASHED */
2152
+ 108, /* (140) colorproperty ::= FILL */
2153
+ 108, /* (141) colorproperty ::= COLOR */
2154
+ 110, /* (142) position ::= place */
2155
+ 133, /* (143) between ::= WAY BETWEEN */
2156
+ 133, /* (144) between ::= BETWEEN */
2157
+ 133, /* (145) between ::= OF THE WAY BETWEEN */
2158
+ 111, /* (146) place ::= place2 */
2159
+ 105, /* (147) edge ::= CENTER */
2160
+ 105, /* (148) edge ::= EDGEPT */
2161
+ 105, /* (149) edge ::= TOP */
2162
+ 105, /* (150) edge ::= BOTTOM */
2163
+ 105, /* (151) edge ::= START */
2164
+ 105, /* (152) edge ::= END */
2165
+ 105, /* (153) edge ::= RIGHT */
2166
+ 105, /* (154) edge ::= LEFT */
2167
+ 112, /* (155) object ::= objectname */
21552168
};
21562169
21572170
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
21582171
** of symbols on the right-hand side of that rule. */
21592172
static const signed char yyRuleInfoNRhs[] = {
@@ -2243,77 +2256,78 @@
22432256
-1, /* (83) place2 ::= object */
22442257
-3, /* (84) place2 ::= object DOT_E edge */
22452258
-4, /* (85) place2 ::= NTH VERTEX OF object */
22462259
-1, /* (86) object ::= nth */
22472260
-3, /* (87) object ::= nth OF|IN object */
2248
- -1, /* (88) objectname ::= PLACENAME */
2249
- -3, /* (89) objectname ::= objectname DOT_U PLACENAME */
2250
- -2, /* (90) nth ::= NTH CLASSNAME */
2251
- -3, /* (91) nth ::= NTH LAST CLASSNAME */
2252
- -2, /* (92) nth ::= LAST CLASSNAME */
2253
- -1, /* (93) nth ::= LAST */
2254
- -3, /* (94) nth ::= NTH LB RB */
2255
- -4, /* (95) nth ::= NTH LAST LB RB */
2256
- -3, /* (96) nth ::= LAST LB RB */
2257
- -3, /* (97) expr ::= expr PLUS expr */
2258
- -3, /* (98) expr ::= expr MINUS expr */
2259
- -3, /* (99) expr ::= expr STAR expr */
2260
- -3, /* (100) expr ::= expr SLASH expr */
2261
- -2, /* (101) expr ::= MINUS expr */
2262
- -2, /* (102) expr ::= PLUS expr */
2263
- -3, /* (103) expr ::= LP expr RP */
2264
- -3, /* (104) expr ::= LP FILL|COLOR|THICKNESS RP */
2265
- -1, /* (105) expr ::= NUMBER */
2266
- -1, /* (106) expr ::= ID */
2267
- -4, /* (107) expr ::= FUNC1 LP expr RP */
2268
- -6, /* (108) expr ::= FUNC2 LP expr COMMA expr RP */
2269
- -6, /* (109) expr ::= DIST LP position COMMA position RP */
2270
- -3, /* (110) expr ::= place2 DOT_XY X */
2271
- -3, /* (111) expr ::= place2 DOT_XY Y */
2272
- -3, /* (112) expr ::= object DOT_L numproperty */
2273
- -3, /* (113) expr ::= object DOT_L dashproperty */
2274
- -3, /* (114) expr ::= object DOT_L colorproperty */
2275
- -1, /* (115) lvalue ::= ID */
2276
- -1, /* (116) lvalue ::= FILL */
2277
- -1, /* (117) lvalue ::= COLOR */
2278
- -1, /* (118) lvalue ::= THICKNESS */
2279
- -1, /* (119) rvalue ::= expr */
2280
- -1, /* (120) print ::= PRINT */
2281
- -1, /* (121) prlist ::= pritem */
2282
- -3, /* (122) prlist ::= prlist prsep pritem */
2283
- -1, /* (123) direction ::= UP */
2284
- -1, /* (124) direction ::= DOWN */
2285
- -1, /* (125) direction ::= LEFT */
2286
- -1, /* (126) direction ::= RIGHT */
2287
- -1, /* (127) optrelexpr ::= relexpr */
2288
- -1, /* (128) attribute_list ::= alist */
2289
- 0, /* (129) alist ::= */
2290
- -2, /* (130) alist ::= alist attribute */
2291
- -1, /* (131) attribute ::= boolproperty */
2292
- -2, /* (132) attribute ::= WITH withclause */
2293
- -1, /* (133) go ::= GO */
2294
- 0, /* (134) go ::= */
2295
- -3, /* (135) even ::= UNTIL EVEN WITH */
2296
- -2, /* (136) even ::= EVEN WITH */
2297
- -1, /* (137) dashproperty ::= DOTTED */
2298
- -1, /* (138) dashproperty ::= DASHED */
2299
- -1, /* (139) colorproperty ::= FILL */
2300
- -1, /* (140) colorproperty ::= COLOR */
2301
- -1, /* (141) position ::= place */
2302
- -2, /* (142) between ::= WAY BETWEEN */
2303
- -1, /* (143) between ::= BETWEEN */
2304
- -4, /* (144) between ::= OF THE WAY BETWEEN */
2305
- -1, /* (145) place ::= place2 */
2306
- -1, /* (146) edge ::= CENTER */
2307
- -1, /* (147) edge ::= EDGEPT */
2308
- -1, /* (148) edge ::= TOP */
2309
- -1, /* (149) edge ::= BOTTOM */
2310
- -1, /* (150) edge ::= START */
2311
- -1, /* (151) edge ::= END */
2312
- -1, /* (152) edge ::= RIGHT */
2313
- -1, /* (153) edge ::= LEFT */
2314
- -1, /* (154) object ::= objectname */
2261
+ -1, /* (88) objectname ::= THIS */
2262
+ -1, /* (89) objectname ::= PLACENAME */
2263
+ -3, /* (90) objectname ::= objectname DOT_U PLACENAME */
2264
+ -2, /* (91) nth ::= NTH CLASSNAME */
2265
+ -3, /* (92) nth ::= NTH LAST CLASSNAME */
2266
+ -2, /* (93) nth ::= LAST CLASSNAME */
2267
+ -1, /* (94) nth ::= LAST */
2268
+ -3, /* (95) nth ::= NTH LB RB */
2269
+ -4, /* (96) nth ::= NTH LAST LB RB */
2270
+ -3, /* (97) nth ::= LAST LB RB */
2271
+ -3, /* (98) expr ::= expr PLUS expr */
2272
+ -3, /* (99) expr ::= expr MINUS expr */
2273
+ -3, /* (100) expr ::= expr STAR expr */
2274
+ -3, /* (101) expr ::= expr SLASH expr */
2275
+ -2, /* (102) expr ::= MINUS expr */
2276
+ -2, /* (103) expr ::= PLUS expr */
2277
+ -3, /* (104) expr ::= LP expr RP */
2278
+ -3, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2279
+ -1, /* (106) expr ::= NUMBER */
2280
+ -1, /* (107) expr ::= ID */
2281
+ -4, /* (108) expr ::= FUNC1 LP expr RP */
2282
+ -6, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2283
+ -6, /* (110) expr ::= DIST LP position COMMA position RP */
2284
+ -3, /* (111) expr ::= place2 DOT_XY X */
2285
+ -3, /* (112) expr ::= place2 DOT_XY Y */
2286
+ -3, /* (113) expr ::= object DOT_L numproperty */
2287
+ -3, /* (114) expr ::= object DOT_L dashproperty */
2288
+ -3, /* (115) expr ::= object DOT_L colorproperty */
2289
+ -1, /* (116) lvalue ::= ID */
2290
+ -1, /* (117) lvalue ::= FILL */
2291
+ -1, /* (118) lvalue ::= COLOR */
2292
+ -1, /* (119) lvalue ::= THICKNESS */
2293
+ -1, /* (120) rvalue ::= expr */
2294
+ -1, /* (121) print ::= PRINT */
2295
+ -1, /* (122) prlist ::= pritem */
2296
+ -3, /* (123) prlist ::= prlist prsep pritem */
2297
+ -1, /* (124) direction ::= UP */
2298
+ -1, /* (125) direction ::= DOWN */
2299
+ -1, /* (126) direction ::= LEFT */
2300
+ -1, /* (127) direction ::= RIGHT */
2301
+ -1, /* (128) optrelexpr ::= relexpr */
2302
+ -1, /* (129) attribute_list ::= alist */
2303
+ 0, /* (130) alist ::= */
2304
+ -2, /* (131) alist ::= alist attribute */
2305
+ -1, /* (132) attribute ::= boolproperty */
2306
+ -2, /* (133) attribute ::= WITH withclause */
2307
+ -1, /* (134) go ::= GO */
2308
+ 0, /* (135) go ::= */
2309
+ -3, /* (136) even ::= UNTIL EVEN WITH */
2310
+ -2, /* (137) even ::= EVEN WITH */
2311
+ -1, /* (138) dashproperty ::= DOTTED */
2312
+ -1, /* (139) dashproperty ::= DASHED */
2313
+ -1, /* (140) colorproperty ::= FILL */
2314
+ -1, /* (141) colorproperty ::= COLOR */
2315
+ -1, /* (142) position ::= place */
2316
+ -2, /* (143) between ::= WAY BETWEEN */
2317
+ -1, /* (144) between ::= BETWEEN */
2318
+ -4, /* (145) between ::= OF THE WAY BETWEEN */
2319
+ -1, /* (146) place ::= place2 */
2320
+ -1, /* (147) edge ::= CENTER */
2321
+ -1, /* (148) edge ::= EDGEPT */
2322
+ -1, /* (149) edge ::= TOP */
2323
+ -1, /* (150) edge ::= BOTTOM */
2324
+ -1, /* (151) edge ::= START */
2325
+ -1, /* (152) edge ::= END */
2326
+ -1, /* (153) edge ::= RIGHT */
2327
+ -1, /* (154) edge ::= LEFT */
2328
+ -1, /* (155) object ::= objectname */
23152329
};
23162330
23172331
static void yy_accept(yyParser*); /* Forward Declaration */
23182332
23192333
/*
@@ -2402,656 +2416,661 @@
24022416
*/
24032417
/********** Begin reduce actions **********************************************/
24042418
YYMINORTYPE yylhsminor;
24052419
case 0: /* document ::= statement_list */
24062420
#line 532 "pikchr.y"
2407
-{pik_render(p,yymsp[0].minor.yy119);}
2408
-#line 2433 "pikchr.c"
2421
+{pik_render(p,yymsp[0].minor.yy227);}
2422
+#line 2447 "pikchr.c"
24092423
break;
24102424
case 1: /* statement_list ::= statement */
24112425
#line 535 "pikchr.y"
2412
-{ yylhsminor.yy119 = pik_elist_append(p,0,yymsp[0].minor.yy38); }
2413
-#line 2438 "pikchr.c"
2414
- yymsp[0].minor.yy119 = yylhsminor.yy119;
2426
+{ yylhsminor.yy227 = pik_elist_append(p,0,yymsp[0].minor.yy36); }
2427
+#line 2452 "pikchr.c"
2428
+ yymsp[0].minor.yy227 = yylhsminor.yy227;
24152429
break;
24162430
case 2: /* statement_list ::= statement_list EOL statement */
24172431
#line 537 "pikchr.y"
2418
-{ yylhsminor.yy119 = pik_elist_append(p,yymsp[-2].minor.yy119,yymsp[0].minor.yy38); }
2419
-#line 2444 "pikchr.c"
2420
- yymsp[-2].minor.yy119 = yylhsminor.yy119;
2432
+{ yylhsminor.yy227 = pik_elist_append(p,yymsp[-2].minor.yy227,yymsp[0].minor.yy36); }
2433
+#line 2458 "pikchr.c"
2434
+ yymsp[-2].minor.yy227 = yylhsminor.yy227;
24212435
break;
24222436
case 3: /* statement ::= */
24232437
#line 540 "pikchr.y"
2424
-{ yymsp[1].minor.yy38 = 0; }
2425
-#line 2450 "pikchr.c"
2438
+{ yymsp[1].minor.yy36 = 0; }
2439
+#line 2464 "pikchr.c"
24262440
break;
24272441
case 4: /* statement ::= direction */
24282442
#line 541 "pikchr.y"
2429
-{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy38=0; }
2430
-#line 2455 "pikchr.c"
2431
- yymsp[0].minor.yy38 = yylhsminor.yy38;
2443
+{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy36=0; }
2444
+#line 2469 "pikchr.c"
2445
+ yymsp[0].minor.yy36 = yylhsminor.yy36;
24322446
break;
24332447
case 5: /* statement ::= lvalue ASSIGN rvalue */
24342448
#line 542 "pikchr.y"
2435
-{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy265,&yymsp[-1].minor.yy0); yylhsminor.yy38=0;}
2436
-#line 2461 "pikchr.c"
2437
- yymsp[-2].minor.yy38 = yylhsminor.yy38;
2449
+{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy153,&yymsp[-1].minor.yy0); yylhsminor.yy36=0;}
2450
+#line 2475 "pikchr.c"
2451
+ yymsp[-2].minor.yy36 = yylhsminor.yy36;
24382452
break;
24392453
case 6: /* statement ::= PLACENAME COLON unnamed_statement */
24402454
#line 544 "pikchr.y"
2441
-{ yylhsminor.yy38 = yymsp[0].minor.yy38; pik_elem_setname(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0); }
2442
-#line 2467 "pikchr.c"
2443
- yymsp[-2].minor.yy38 = yylhsminor.yy38;
2455
+{ yylhsminor.yy36 = yymsp[0].minor.yy36; pik_elem_setname(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0); }
2456
+#line 2481 "pikchr.c"
2457
+ yymsp[-2].minor.yy36 = yylhsminor.yy36;
24442458
break;
24452459
case 7: /* statement ::= PLACENAME COLON position */
24462460
#line 546 "pikchr.y"
2447
-{ yylhsminor.yy38 = pik_elem_new(p,0,0,0);
2448
- if(yylhsminor.yy38){ yylhsminor.yy38->ptAt = yymsp[0].minor.yy43; pik_elem_setname(p,yylhsminor.yy38,&yymsp[-2].minor.yy0); }}
2449
-#line 2474 "pikchr.c"
2450
- yymsp[-2].minor.yy38 = yylhsminor.yy38;
2461
+{ yylhsminor.yy36 = pik_elem_new(p,0,0,0);
2462
+ if(yylhsminor.yy36){ yylhsminor.yy36->ptAt = yymsp[0].minor.yy79; pik_elem_setname(p,yylhsminor.yy36,&yymsp[-2].minor.yy0); }}
2463
+#line 2488 "pikchr.c"
2464
+ yymsp[-2].minor.yy36 = yylhsminor.yy36;
24512465
break;
24522466
case 8: /* statement ::= unnamed_statement */
24532467
#line 548 "pikchr.y"
2454
-{yylhsminor.yy38 = yymsp[0].minor.yy38;}
2455
-#line 2480 "pikchr.c"
2456
- yymsp[0].minor.yy38 = yylhsminor.yy38;
2468
+{yylhsminor.yy36 = yymsp[0].minor.yy36;}
2469
+#line 2494 "pikchr.c"
2470
+ yymsp[0].minor.yy36 = yylhsminor.yy36;
24572471
break;
24582472
case 9: /* statement ::= print prlist */
24592473
#line 549 "pikchr.y"
2460
-{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy38=0;}
2461
-#line 2486 "pikchr.c"
2474
+{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy36=0;}
2475
+#line 2500 "pikchr.c"
24622476
break;
24632477
case 10: /* statement ::= ASSERT LP expr EQ expr RP */
24642478
#line 554 "pikchr.y"
2465
-{yymsp[-5].minor.yy38=pik_assert(p,yymsp[-3].minor.yy265,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy265);}
2466
-#line 2491 "pikchr.c"
2479
+{yymsp[-5].minor.yy36=pik_assert(p,yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy153);}
2480
+#line 2505 "pikchr.c"
24672481
break;
24682482
case 11: /* statement ::= ASSERT LP position EQ position RP */
24692483
#line 556 "pikchr.y"
2470
-{yymsp[-5].minor.yy38=pik_position_assert(p,&yymsp[-3].minor.yy43,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy43);}
2471
-#line 2496 "pikchr.c"
2484
+{yymsp[-5].minor.yy36=pik_position_assert(p,&yymsp[-3].minor.yy79,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy79);}
2485
+#line 2510 "pikchr.c"
24722486
break;
24732487
case 12: /* statement ::= DEFINE ID CODEBLOCK */
24742488
#line 557 "pikchr.y"
2475
-{yymsp[-2].minor.yy38=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2476
-#line 2501 "pikchr.c"
2489
+{yymsp[-2].minor.yy36=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2490
+#line 2515 "pikchr.c"
24772491
break;
24782492
case 13: /* rvalue ::= PLACENAME */
24792493
#line 568 "pikchr.y"
2480
-{yylhsminor.yy265 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2481
-#line 2506 "pikchr.c"
2482
- yymsp[0].minor.yy265 = yylhsminor.yy265;
2494
+{yylhsminor.yy153 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2495
+#line 2520 "pikchr.c"
2496
+ yymsp[0].minor.yy153 = yylhsminor.yy153;
24832497
break;
24842498
case 14: /* pritem ::= FILL */
24852499
case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15);
24862500
case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16);
24872501
#line 573 "pikchr.y"
24882502
{pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2489
-#line 2514 "pikchr.c"
2503
+#line 2528 "pikchr.c"
24902504
break;
24912505
case 17: /* pritem ::= rvalue */
24922506
#line 576 "pikchr.y"
2493
-{pik_append_num(p,"",yymsp[0].minor.yy265);}
2494
-#line 2519 "pikchr.c"
2507
+{pik_append_num(p,"",yymsp[0].minor.yy153);}
2508
+#line 2533 "pikchr.c"
24952509
break;
24962510
case 18: /* pritem ::= STRING */
24972511
#line 577 "pikchr.y"
24982512
{pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2499
-#line 2524 "pikchr.c"
2513
+#line 2538 "pikchr.c"
25002514
break;
25012515
case 19: /* prsep ::= COMMA */
25022516
#line 578 "pikchr.y"
25032517
{pik_append(p, " ", 1);}
2504
-#line 2529 "pikchr.c"
2518
+#line 2543 "pikchr.c"
25052519
break;
25062520
case 20: /* unnamed_statement ::= basetype attribute_list */
25072521
#line 581 "pikchr.y"
2508
-{yylhsminor.yy38 = yymsp[-1].minor.yy38; pik_after_adding_attributes(p,yylhsminor.yy38);}
2509
-#line 2534 "pikchr.c"
2510
- yymsp[-1].minor.yy38 = yylhsminor.yy38;
2522
+{yylhsminor.yy36 = yymsp[-1].minor.yy36; pik_after_adding_attributes(p,yylhsminor.yy36);}
2523
+#line 2548 "pikchr.c"
2524
+ yymsp[-1].minor.yy36 = yylhsminor.yy36;
25112525
break;
25122526
case 21: /* basetype ::= CLASSNAME */
25132527
#line 583 "pikchr.y"
2514
-{yylhsminor.yy38 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2515
-#line 2540 "pikchr.c"
2516
- yymsp[0].minor.yy38 = yylhsminor.yy38;
2528
+{yylhsminor.yy36 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2529
+#line 2554 "pikchr.c"
2530
+ yymsp[0].minor.yy36 = yylhsminor.yy36;
25172531
break;
25182532
case 22: /* basetype ::= STRING textposition */
25192533
#line 585 "pikchr.y"
2520
-{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy44; yylhsminor.yy38 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2521
-#line 2546 "pikchr.c"
2522
- yymsp[-1].minor.yy38 = yylhsminor.yy38;
2534
+{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy164; yylhsminor.yy36 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2535
+#line 2560 "pikchr.c"
2536
+ yymsp[-1].minor.yy36 = yylhsminor.yy36;
25232537
break;
25242538
case 23: /* basetype ::= LB savelist statement_list RB */
25252539
#line 587 "pikchr.y"
2526
-{ p->list = yymsp[-2].minor.yy119; yymsp[-3].minor.yy38 = pik_elem_new(p,0,0,yymsp[-1].minor.yy119); if(yymsp[-3].minor.yy38) yymsp[-3].minor.yy38->errTok = yymsp[0].minor.yy0; }
2527
-#line 2552 "pikchr.c"
2540
+{ p->list = yymsp[-2].minor.yy227; yymsp[-3].minor.yy36 = pik_elem_new(p,0,0,yymsp[-1].minor.yy227); if(yymsp[-3].minor.yy36) yymsp[-3].minor.yy36->errTok = yymsp[0].minor.yy0; }
2541
+#line 2566 "pikchr.c"
25282542
break;
25292543
case 24: /* savelist ::= */
25302544
#line 592 "pikchr.y"
2531
-{yymsp[1].minor.yy119 = p->list; p->list = 0;}
2532
-#line 2557 "pikchr.c"
2545
+{yymsp[1].minor.yy227 = p->list; p->list = 0;}
2546
+#line 2571 "pikchr.c"
25332547
break;
25342548
case 25: /* relexpr ::= expr */
25352549
#line 599 "pikchr.y"
2536
-{yylhsminor.yy200.rAbs = yymsp[0].minor.yy265; yylhsminor.yy200.rRel = 0;}
2537
-#line 2562 "pikchr.c"
2538
- yymsp[0].minor.yy200 = yylhsminor.yy200;
2550
+{yylhsminor.yy10.rAbs = yymsp[0].minor.yy153; yylhsminor.yy10.rRel = 0;}
2551
+#line 2576 "pikchr.c"
2552
+ yymsp[0].minor.yy10 = yylhsminor.yy10;
25392553
break;
25402554
case 26: /* relexpr ::= expr PERCENT */
25412555
#line 600 "pikchr.y"
2542
-{yylhsminor.yy200.rAbs = 0; yylhsminor.yy200.rRel = yymsp[-1].minor.yy265/100;}
2543
-#line 2568 "pikchr.c"
2544
- yymsp[-1].minor.yy200 = yylhsminor.yy200;
2556
+{yylhsminor.yy10.rAbs = 0; yylhsminor.yy10.rRel = yymsp[-1].minor.yy153/100;}
2557
+#line 2582 "pikchr.c"
2558
+ yymsp[-1].minor.yy10 = yylhsminor.yy10;
25452559
break;
25462560
case 27: /* optrelexpr ::= */
25472561
#line 602 "pikchr.y"
2548
-{yymsp[1].minor.yy200.rAbs = 0; yymsp[1].minor.yy200.rRel = 1.0;}
2549
-#line 2574 "pikchr.c"
2562
+{yymsp[1].minor.yy10.rAbs = 0; yymsp[1].minor.yy10.rRel = 1.0;}
2563
+#line 2588 "pikchr.c"
25502564
break;
25512565
case 28: /* attribute_list ::= relexpr alist */
25522566
#line 604 "pikchr.y"
2553
-{pik_add_direction(p,0,&yymsp[-1].minor.yy200);}
2554
-#line 2579 "pikchr.c"
2567
+{pik_add_direction(p,0,&yymsp[-1].minor.yy10);}
2568
+#line 2593 "pikchr.c"
25552569
break;
25562570
case 29: /* attribute ::= numproperty relexpr */
25572571
#line 608 "pikchr.y"
2558
-{ pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy200); }
2559
-#line 2584 "pikchr.c"
2572
+{ pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10); }
2573
+#line 2598 "pikchr.c"
25602574
break;
25612575
case 30: /* attribute ::= dashproperty expr */
25622576
#line 609 "pikchr.y"
2563
-{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy265); }
2564
-#line 2589 "pikchr.c"
2577
+{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy153); }
2578
+#line 2603 "pikchr.c"
25652579
break;
25662580
case 31: /* attribute ::= dashproperty */
25672581
#line 610 "pikchr.y"
25682582
{ pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2569
-#line 2594 "pikchr.c"
2583
+#line 2608 "pikchr.c"
25702584
break;
25712585
case 32: /* attribute ::= colorproperty rvalue */
25722586
#line 611 "pikchr.y"
2573
-{ pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy265); }
2574
-#line 2599 "pikchr.c"
2587
+{ pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153); }
2588
+#line 2613 "pikchr.c"
25752589
break;
25762590
case 33: /* attribute ::= go direction optrelexpr */
25772591
#line 612 "pikchr.y"
2578
-{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy200);}
2579
-#line 2604 "pikchr.c"
2592
+{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10);}
2593
+#line 2618 "pikchr.c"
25802594
break;
25812595
case 34: /* attribute ::= go direction even position */
25822596
#line 613 "pikchr.y"
2583
-{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy43);}
2584
-#line 2609 "pikchr.c"
2597
+{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79);}
2598
+#line 2623 "pikchr.c"
25852599
break;
25862600
case 35: /* attribute ::= CLOSE */
25872601
#line 614 "pikchr.y"
25882602
{ pik_close_path(p,&yymsp[0].minor.yy0); }
2589
-#line 2614 "pikchr.c"
2603
+#line 2628 "pikchr.c"
25902604
break;
25912605
case 36: /* attribute ::= CHOP */
25922606
#line 615 "pikchr.y"
25932607
{ p->cur->bChop = 1; }
2594
-#line 2619 "pikchr.c"
2608
+#line 2633 "pikchr.c"
25952609
break;
25962610
case 37: /* attribute ::= FROM position */
25972611
#line 616 "pikchr.y"
2598
-{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy43); }
2599
-#line 2624 "pikchr.c"
2612
+{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2613
+#line 2638 "pikchr.c"
26002614
break;
26012615
case 38: /* attribute ::= TO position */
26022616
#line 617 "pikchr.y"
2603
-{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy43); }
2604
-#line 2629 "pikchr.c"
2617
+{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2618
+#line 2643 "pikchr.c"
26052619
break;
26062620
case 39: /* attribute ::= THEN */
26072621
#line 618 "pikchr.y"
26082622
{ pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2609
-#line 2634 "pikchr.c"
2623
+#line 2648 "pikchr.c"
26102624
break;
26112625
case 40: /* attribute ::= THEN optrelexpr HEADING expr */
26122626
case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42);
26132627
#line 620 "pikchr.y"
2614
-{pik_move_hdg(p,&yymsp[-2].minor.yy200,&yymsp[-1].minor.yy0,yymsp[0].minor.yy265,0,&yymsp[-3].minor.yy0);}
2615
-#line 2640 "pikchr.c"
2628
+{pik_move_hdg(p,&yymsp[-2].minor.yy10,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153,0,&yymsp[-3].minor.yy0);}
2629
+#line 2654 "pikchr.c"
26162630
break;
26172631
case 41: /* attribute ::= THEN optrelexpr EDGEPT */
26182632
case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43);
26192633
#line 621 "pikchr.y"
2620
-{pik_move_hdg(p,&yymsp[-1].minor.yy200,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2621
-#line 2646 "pikchr.c"
2634
+{pik_move_hdg(p,&yymsp[-1].minor.yy10,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2635
+#line 2660 "pikchr.c"
26222636
break;
26232637
case 44: /* attribute ::= AT position */
26242638
#line 626 "pikchr.y"
2625
-{ pik_set_at(p,0,&yymsp[0].minor.yy43,&yymsp[-1].minor.yy0); }
2626
-#line 2651 "pikchr.c"
2639
+{ pik_set_at(p,0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2640
+#line 2665 "pikchr.c"
26272641
break;
26282642
case 45: /* attribute ::= SAME */
26292643
#line 628 "pikchr.y"
26302644
{pik_same(p,0,&yymsp[0].minor.yy0);}
2631
-#line 2656 "pikchr.c"
2645
+#line 2670 "pikchr.c"
26322646
break;
26332647
case 46: /* attribute ::= SAME AS object */
26342648
#line 629 "pikchr.y"
2635
-{pik_same(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0);}
2636
-#line 2661 "pikchr.c"
2649
+{pik_same(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2650
+#line 2675 "pikchr.c"
26372651
break;
26382652
case 47: /* attribute ::= STRING textposition */
26392653
#line 630 "pikchr.y"
2640
-{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy44);}
2641
-#line 2666 "pikchr.c"
2654
+{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy164);}
2655
+#line 2680 "pikchr.c"
26422656
break;
26432657
case 48: /* attribute ::= FIT */
26442658
#line 631 "pikchr.y"
26452659
{pik_size_to_fit(p,&yymsp[0].minor.yy0,3); }
2646
-#line 2671 "pikchr.c"
2660
+#line 2685 "pikchr.c"
26472661
break;
26482662
case 49: /* attribute ::= BEHIND object */
26492663
#line 632 "pikchr.y"
2650
-{pik_behind(p,yymsp[0].minor.yy38);}
2651
-#line 2676 "pikchr.c"
2664
+{pik_behind(p,yymsp[0].minor.yy36);}
2665
+#line 2690 "pikchr.c"
26522666
break;
26532667
case 50: /* withclause ::= DOT_E edge AT position */
26542668
case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51);
26552669
#line 640 "pikchr.y"
2656
-{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy43,&yymsp[-1].minor.yy0); }
2657
-#line 2682 "pikchr.c"
2670
+{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2671
+#line 2696 "pikchr.c"
26582672
break;
26592673
case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
26602674
#line 644 "pikchr.y"
26612675
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
2662
-#line 2687 "pikchr.c"
2676
+#line 2701 "pikchr.c"
26632677
yymsp[0].minor.yy0 = yylhsminor.yy0;
26642678
break;
26652679
case 53: /* boolproperty ::= CW */
26662680
#line 655 "pikchr.y"
26672681
{p->cur->cw = 1;}
2668
-#line 2693 "pikchr.c"
2682
+#line 2707 "pikchr.c"
26692683
break;
26702684
case 54: /* boolproperty ::= CCW */
26712685
#line 656 "pikchr.y"
26722686
{p->cur->cw = 0;}
2673
-#line 2698 "pikchr.c"
2687
+#line 2712 "pikchr.c"
26742688
break;
26752689
case 55: /* boolproperty ::= LARROW */
26762690
#line 657 "pikchr.y"
26772691
{p->cur->larrow=1; p->cur->rarrow=0; }
2678
-#line 2703 "pikchr.c"
2692
+#line 2717 "pikchr.c"
26792693
break;
26802694
case 56: /* boolproperty ::= RARROW */
26812695
#line 658 "pikchr.y"
26822696
{p->cur->larrow=0; p->cur->rarrow=1; }
2683
-#line 2708 "pikchr.c"
2697
+#line 2722 "pikchr.c"
26842698
break;
26852699
case 57: /* boolproperty ::= LRARROW */
26862700
#line 659 "pikchr.y"
26872701
{p->cur->larrow=1; p->cur->rarrow=1; }
2688
-#line 2713 "pikchr.c"
2702
+#line 2727 "pikchr.c"
26892703
break;
26902704
case 58: /* boolproperty ::= INVIS */
26912705
#line 660 "pikchr.y"
26922706
{p->cur->sw = 0.0;}
2693
-#line 2718 "pikchr.c"
2707
+#line 2732 "pikchr.c"
26942708
break;
26952709
case 59: /* boolproperty ::= THICK */
26962710
#line 661 "pikchr.y"
26972711
{p->cur->sw *= 1.5;}
2698
-#line 2723 "pikchr.c"
2712
+#line 2737 "pikchr.c"
26992713
break;
27002714
case 60: /* boolproperty ::= THIN */
27012715
#line 662 "pikchr.y"
27022716
{p->cur->sw *= 0.67;}
2703
-#line 2728 "pikchr.c"
2717
+#line 2742 "pikchr.c"
27042718
break;
27052719
case 61: /* boolproperty ::= SOLID */
27062720
#line 663 "pikchr.y"
27072721
{p->cur->sw = pik_value(p,"thickness",9,0);
27082722
p->cur->dotted = p->cur->dashed = 0.0;}
2709
-#line 2734 "pikchr.c"
2723
+#line 2748 "pikchr.c"
27102724
break;
27112725
case 62: /* textposition ::= */
27122726
#line 666 "pikchr.y"
2713
-{yymsp[1].minor.yy44 = 0;}
2714
-#line 2739 "pikchr.c"
2727
+{yymsp[1].minor.yy164 = 0;}
2728
+#line 2753 "pikchr.c"
27152729
break;
27162730
case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
27172731
#line 669 "pikchr.y"
2718
-{yylhsminor.yy44 = (short int)pik_text_position(yymsp[-1].minor.yy44,&yymsp[0].minor.yy0);}
2719
-#line 2744 "pikchr.c"
2720
- yymsp[-1].minor.yy44 = yylhsminor.yy44;
2732
+{yylhsminor.yy164 = (short int)pik_text_position(yymsp[-1].minor.yy164,&yymsp[0].minor.yy0);}
2733
+#line 2758 "pikchr.c"
2734
+ yymsp[-1].minor.yy164 = yylhsminor.yy164;
27212735
break;
27222736
case 64: /* position ::= expr COMMA expr */
27232737
#line 672 "pikchr.y"
2724
-{yylhsminor.yy43.x=yymsp[-2].minor.yy265; yylhsminor.yy43.y=yymsp[0].minor.yy265;}
2725
-#line 2750 "pikchr.c"
2726
- yymsp[-2].minor.yy43 = yylhsminor.yy43;
2738
+{yylhsminor.yy79.x=yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[0].minor.yy153;}
2739
+#line 2764 "pikchr.c"
2740
+ yymsp[-2].minor.yy79 = yylhsminor.yy79;
27272741
break;
27282742
case 65: /* position ::= place PLUS expr COMMA expr */
27292743
#line 674 "pikchr.y"
2730
-{yylhsminor.yy43.x=yymsp[-4].minor.yy43.x+yymsp[-2].minor.yy265; yylhsminor.yy43.y=yymsp[-4].minor.yy43.y+yymsp[0].minor.yy265;}
2731
-#line 2756 "pikchr.c"
2732
- yymsp[-4].minor.yy43 = yylhsminor.yy43;
2744
+{yylhsminor.yy79.x=yymsp[-4].minor.yy79.x+yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y+yymsp[0].minor.yy153;}
2745
+#line 2770 "pikchr.c"
2746
+ yymsp[-4].minor.yy79 = yylhsminor.yy79;
27332747
break;
27342748
case 66: /* position ::= place MINUS expr COMMA expr */
27352749
#line 675 "pikchr.y"
2736
-{yylhsminor.yy43.x=yymsp[-4].minor.yy43.x-yymsp[-2].minor.yy265; yylhsminor.yy43.y=yymsp[-4].minor.yy43.y-yymsp[0].minor.yy265;}
2737
-#line 2762 "pikchr.c"
2738
- yymsp[-4].minor.yy43 = yylhsminor.yy43;
2750
+{yylhsminor.yy79.x=yymsp[-4].minor.yy79.x-yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y-yymsp[0].minor.yy153;}
2751
+#line 2776 "pikchr.c"
2752
+ yymsp[-4].minor.yy79 = yylhsminor.yy79;
27392753
break;
27402754
case 67: /* position ::= place PLUS LP expr COMMA expr RP */
27412755
#line 677 "pikchr.y"
2742
-{yylhsminor.yy43.x=yymsp[-6].minor.yy43.x+yymsp[-3].minor.yy265; yylhsminor.yy43.y=yymsp[-6].minor.yy43.y+yymsp[-1].minor.yy265;}
2743
-#line 2768 "pikchr.c"
2744
- yymsp[-6].minor.yy43 = yylhsminor.yy43;
2756
+{yylhsminor.yy79.x=yymsp[-6].minor.yy79.x+yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y+yymsp[-1].minor.yy153;}
2757
+#line 2782 "pikchr.c"
2758
+ yymsp[-6].minor.yy79 = yylhsminor.yy79;
27452759
break;
27462760
case 68: /* position ::= place MINUS LP expr COMMA expr RP */
27472761
#line 679 "pikchr.y"
2748
-{yylhsminor.yy43.x=yymsp[-6].minor.yy43.x-yymsp[-3].minor.yy265; yylhsminor.yy43.y=yymsp[-6].minor.yy43.y-yymsp[-1].minor.yy265;}
2749
-#line 2774 "pikchr.c"
2750
- yymsp[-6].minor.yy43 = yylhsminor.yy43;
2762
+{yylhsminor.yy79.x=yymsp[-6].minor.yy79.x-yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y-yymsp[-1].minor.yy153;}
2763
+#line 2788 "pikchr.c"
2764
+ yymsp[-6].minor.yy79 = yylhsminor.yy79;
27512765
break;
27522766
case 69: /* position ::= LP position COMMA position RP */
27532767
#line 680 "pikchr.y"
2754
-{yymsp[-4].minor.yy43.x=yymsp[-3].minor.yy43.x; yymsp[-4].minor.yy43.y=yymsp[-1].minor.yy43.y;}
2755
-#line 2780 "pikchr.c"
2768
+{yymsp[-4].minor.yy79.x=yymsp[-3].minor.yy79.x; yymsp[-4].minor.yy79.y=yymsp[-1].minor.yy79.y;}
2769
+#line 2794 "pikchr.c"
27562770
break;
27572771
case 70: /* position ::= LP position RP */
27582772
#line 681 "pikchr.y"
2759
-{yymsp[-2].minor.yy43=yymsp[-1].minor.yy43;}
2760
-#line 2785 "pikchr.c"
2773
+{yymsp[-2].minor.yy79=yymsp[-1].minor.yy79;}
2774
+#line 2799 "pikchr.c"
27612775
break;
27622776
case 71: /* position ::= expr between position AND position */
27632777
#line 683 "pikchr.y"
2764
-{yylhsminor.yy43 = pik_position_between(yymsp[-4].minor.yy265,yymsp[-2].minor.yy43,yymsp[0].minor.yy43);}
2765
-#line 2790 "pikchr.c"
2766
- yymsp[-4].minor.yy43 = yylhsminor.yy43;
2778
+{yylhsminor.yy79 = pik_position_between(yymsp[-4].minor.yy153,yymsp[-2].minor.yy79,yymsp[0].minor.yy79);}
2779
+#line 2804 "pikchr.c"
2780
+ yymsp[-4].minor.yy79 = yylhsminor.yy79;
27672781
break;
27682782
case 72: /* position ::= expr LT position COMMA position GT */
27692783
#line 685 "pikchr.y"
2770
-{yylhsminor.yy43 = pik_position_between(yymsp[-5].minor.yy265,yymsp[-3].minor.yy43,yymsp[-1].minor.yy43);}
2771
-#line 2796 "pikchr.c"
2772
- yymsp[-5].minor.yy43 = yylhsminor.yy43;
2784
+{yylhsminor.yy79 = pik_position_between(yymsp[-5].minor.yy153,yymsp[-3].minor.yy79,yymsp[-1].minor.yy79);}
2785
+#line 2810 "pikchr.c"
2786
+ yymsp[-5].minor.yy79 = yylhsminor.yy79;
27732787
break;
27742788
case 73: /* position ::= expr ABOVE position */
27752789
#line 686 "pikchr.y"
2776
-{yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.y += yymsp[-2].minor.yy265;}
2777
-#line 2802 "pikchr.c"
2778
- yymsp[-2].minor.yy43 = yylhsminor.yy43;
2790
+{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y += yymsp[-2].minor.yy153;}
2791
+#line 2816 "pikchr.c"
2792
+ yymsp[-2].minor.yy79 = yylhsminor.yy79;
27792793
break;
27802794
case 74: /* position ::= expr BELOW position */
27812795
#line 687 "pikchr.y"
2782
-{yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.y -= yymsp[-2].minor.yy265;}
2783
-#line 2808 "pikchr.c"
2784
- yymsp[-2].minor.yy43 = yylhsminor.yy43;
2796
+{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y -= yymsp[-2].minor.yy153;}
2797
+#line 2822 "pikchr.c"
2798
+ yymsp[-2].minor.yy79 = yylhsminor.yy79;
27852799
break;
27862800
case 75: /* position ::= expr LEFT OF position */
27872801
#line 688 "pikchr.y"
2788
-{yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.x -= yymsp[-3].minor.yy265;}
2789
-#line 2814 "pikchr.c"
2790
- yymsp[-3].minor.yy43 = yylhsminor.yy43;
2802
+{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x -= yymsp[-3].minor.yy153;}
2803
+#line 2828 "pikchr.c"
2804
+ yymsp[-3].minor.yy79 = yylhsminor.yy79;
27912805
break;
27922806
case 76: /* position ::= expr RIGHT OF position */
27932807
#line 689 "pikchr.y"
2794
-{yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.x += yymsp[-3].minor.yy265;}
2795
-#line 2820 "pikchr.c"
2796
- yymsp[-3].minor.yy43 = yylhsminor.yy43;
2808
+{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x += yymsp[-3].minor.yy153;}
2809
+#line 2834 "pikchr.c"
2810
+ yymsp[-3].minor.yy79 = yylhsminor.yy79;
27972811
break;
27982812
case 77: /* position ::= expr ON HEADING EDGEPT OF position */
27992813
#line 691 "pikchr.y"
2800
-{yylhsminor.yy43 = pik_position_at_hdg(yymsp[-5].minor.yy265,&yymsp[-2].minor.yy0,yymsp[0].minor.yy43);}
2801
-#line 2826 "pikchr.c"
2802
- yymsp[-5].minor.yy43 = yylhsminor.yy43;
2814
+{yylhsminor.yy79 = pik_position_at_hdg(yymsp[-5].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2815
+#line 2840 "pikchr.c"
2816
+ yymsp[-5].minor.yy79 = yylhsminor.yy79;
28032817
break;
28042818
case 78: /* position ::= expr HEADING EDGEPT OF position */
28052819
#line 693 "pikchr.y"
2806
-{yylhsminor.yy43 = pik_position_at_hdg(yymsp[-4].minor.yy265,&yymsp[-2].minor.yy0,yymsp[0].minor.yy43);}
2807
-#line 2832 "pikchr.c"
2808
- yymsp[-4].minor.yy43 = yylhsminor.yy43;
2820
+{yylhsminor.yy79 = pik_position_at_hdg(yymsp[-4].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2821
+#line 2846 "pikchr.c"
2822
+ yymsp[-4].minor.yy79 = yylhsminor.yy79;
28092823
break;
28102824
case 79: /* position ::= expr EDGEPT OF position */
28112825
#line 695 "pikchr.y"
2812
-{yylhsminor.yy43 = pik_position_at_hdg(yymsp[-3].minor.yy265,&yymsp[-2].minor.yy0,yymsp[0].minor.yy43);}
2813
-#line 2838 "pikchr.c"
2814
- yymsp[-3].minor.yy43 = yylhsminor.yy43;
2826
+{yylhsminor.yy79 = pik_position_at_hdg(yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2827
+#line 2852 "pikchr.c"
2828
+ yymsp[-3].minor.yy79 = yylhsminor.yy79;
28152829
break;
28162830
case 80: /* position ::= expr ON HEADING expr FROM position */
28172831
#line 697 "pikchr.y"
2818
-{yylhsminor.yy43 = pik_position_at_angle(yymsp[-5].minor.yy265,yymsp[-2].minor.yy265,yymsp[0].minor.yy43);}
2819
-#line 2844 "pikchr.c"
2820
- yymsp[-5].minor.yy43 = yylhsminor.yy43;
2832
+{yylhsminor.yy79 = pik_position_at_angle(yymsp[-5].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2833
+#line 2858 "pikchr.c"
2834
+ yymsp[-5].minor.yy79 = yylhsminor.yy79;
28212835
break;
28222836
case 81: /* position ::= expr HEADING expr FROM position */
28232837
#line 699 "pikchr.y"
2824
-{yylhsminor.yy43 = pik_position_at_angle(yymsp[-4].minor.yy265,yymsp[-2].minor.yy265,yymsp[0].minor.yy43);}
2825
-#line 2850 "pikchr.c"
2826
- yymsp[-4].minor.yy43 = yylhsminor.yy43;
2838
+{yylhsminor.yy79 = pik_position_at_angle(yymsp[-4].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2839
+#line 2864 "pikchr.c"
2840
+ yymsp[-4].minor.yy79 = yylhsminor.yy79;
28272841
break;
28282842
case 82: /* place ::= edge OF object */
28292843
#line 711 "pikchr.y"
2830
-{yylhsminor.yy43 = pik_place_of_elem(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0);}
2831
-#line 2856 "pikchr.c"
2832
- yymsp[-2].minor.yy43 = yylhsminor.yy43;
2844
+{yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2845
+#line 2870 "pikchr.c"
2846
+ yymsp[-2].minor.yy79 = yylhsminor.yy79;
28332847
break;
28342848
case 83: /* place2 ::= object */
28352849
#line 712 "pikchr.y"
2836
-{yylhsminor.yy43 = pik_place_of_elem(p,yymsp[0].minor.yy38,0);}
2837
-#line 2862 "pikchr.c"
2838
- yymsp[0].minor.yy43 = yylhsminor.yy43;
2850
+{yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,0);}
2851
+#line 2876 "pikchr.c"
2852
+ yymsp[0].minor.yy79 = yylhsminor.yy79;
28392853
break;
28402854
case 84: /* place2 ::= object DOT_E edge */
28412855
#line 713 "pikchr.y"
2842
-{yylhsminor.yy43 = pik_place_of_elem(p,yymsp[-2].minor.yy38,&yymsp[0].minor.yy0);}
2843
-#line 2868 "pikchr.c"
2844
- yymsp[-2].minor.yy43 = yylhsminor.yy43;
2856
+{yylhsminor.yy79 = pik_place_of_elem(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2857
+#line 2882 "pikchr.c"
2858
+ yymsp[-2].minor.yy79 = yylhsminor.yy79;
28452859
break;
28462860
case 85: /* place2 ::= NTH VERTEX OF object */
28472861
#line 714 "pikchr.y"
2848
-{yylhsminor.yy43 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy38);}
2849
-#line 2874 "pikchr.c"
2850
- yymsp[-3].minor.yy43 = yylhsminor.yy43;
2862
+{yylhsminor.yy79 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy36);}
2863
+#line 2888 "pikchr.c"
2864
+ yymsp[-3].minor.yy79 = yylhsminor.yy79;
28512865
break;
28522866
case 86: /* object ::= nth */
28532867
#line 726 "pikchr.y"
2854
-{yylhsminor.yy38 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2855
-#line 2880 "pikchr.c"
2856
- yymsp[0].minor.yy38 = yylhsminor.yy38;
2868
+{yylhsminor.yy36 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2869
+#line 2894 "pikchr.c"
2870
+ yymsp[0].minor.yy36 = yylhsminor.yy36;
28572871
break;
28582872
case 87: /* object ::= nth OF|IN object */
28592873
#line 727 "pikchr.y"
2860
-{yylhsminor.yy38 = pik_find_nth(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0);}
2861
-#line 2886 "pikchr.c"
2862
- yymsp[-2].minor.yy38 = yylhsminor.yy38;
2874
+{yylhsminor.yy36 = pik_find_nth(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2875
+#line 2900 "pikchr.c"
2876
+ yymsp[-2].minor.yy36 = yylhsminor.yy36;
28632877
break;
2864
- case 88: /* objectname ::= PLACENAME */
2878
+ case 88: /* objectname ::= THIS */
28652879
#line 729 "pikchr.y"
2866
-{yylhsminor.yy38 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2867
-#line 2892 "pikchr.c"
2868
- yymsp[0].minor.yy38 = yylhsminor.yy38;
2869
- break;
2870
- case 89: /* objectname ::= objectname DOT_U PLACENAME */
2871
-#line 731 "pikchr.y"
2872
-{yylhsminor.yy38 = pik_find_byname(p,yymsp[-2].minor.yy38,&yymsp[0].minor.yy0);}
2873
-#line 2898 "pikchr.c"
2874
- yymsp[-2].minor.yy38 = yylhsminor.yy38;
2875
- break;
2876
- case 90: /* nth ::= NTH CLASSNAME */
2877
-#line 733 "pikchr.y"
2880
+{yymsp[0].minor.yy36 = p->cur;}
2881
+#line 2906 "pikchr.c"
2882
+ break;
2883
+ case 89: /* objectname ::= PLACENAME */
2884
+#line 730 "pikchr.y"
2885
+{yylhsminor.yy36 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2886
+#line 2911 "pikchr.c"
2887
+ yymsp[0].minor.yy36 = yylhsminor.yy36;
2888
+ break;
2889
+ case 90: /* objectname ::= objectname DOT_U PLACENAME */
2890
+#line 732 "pikchr.y"
2891
+{yylhsminor.yy36 = pik_find_byname(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2892
+#line 2917 "pikchr.c"
2893
+ yymsp[-2].minor.yy36 = yylhsminor.yy36;
2894
+ break;
2895
+ case 91: /* nth ::= NTH CLASSNAME */
2896
+#line 734 "pikchr.y"
28782897
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2879
-#line 2904 "pikchr.c"
2898
+#line 2923 "pikchr.c"
28802899
yymsp[-1].minor.yy0 = yylhsminor.yy0;
28812900
break;
2882
- case 91: /* nth ::= NTH LAST CLASSNAME */
2883
-#line 734 "pikchr.y"
2901
+ case 92: /* nth ::= NTH LAST CLASSNAME */
2902
+#line 735 "pikchr.y"
28842903
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2885
-#line 2910 "pikchr.c"
2904
+#line 2929 "pikchr.c"
28862905
yymsp[-2].minor.yy0 = yylhsminor.yy0;
28872906
break;
2888
- case 92: /* nth ::= LAST CLASSNAME */
2889
-#line 735 "pikchr.y"
2907
+ case 93: /* nth ::= LAST CLASSNAME */
2908
+#line 736 "pikchr.y"
28902909
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2891
-#line 2916 "pikchr.c"
2910
+#line 2935 "pikchr.c"
28922911
break;
2893
- case 93: /* nth ::= LAST */
2894
-#line 736 "pikchr.y"
2912
+ case 94: /* nth ::= LAST */
2913
+#line 737 "pikchr.y"
28952914
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2896
-#line 2921 "pikchr.c"
2915
+#line 2940 "pikchr.c"
28972916
yymsp[0].minor.yy0 = yylhsminor.yy0;
28982917
break;
2899
- case 94: /* nth ::= NTH LB RB */
2900
-#line 737 "pikchr.y"
2918
+ case 95: /* nth ::= NTH LB RB */
2919
+#line 738 "pikchr.y"
29012920
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2902
-#line 2927 "pikchr.c"
2921
+#line 2946 "pikchr.c"
29032922
yymsp[-2].minor.yy0 = yylhsminor.yy0;
29042923
break;
2905
- case 95: /* nth ::= NTH LAST LB RB */
2906
-#line 738 "pikchr.y"
2924
+ case 96: /* nth ::= NTH LAST LB RB */
2925
+#line 739 "pikchr.y"
29072926
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2908
-#line 2933 "pikchr.c"
2927
+#line 2952 "pikchr.c"
29092928
yymsp[-3].minor.yy0 = yylhsminor.yy0;
29102929
break;
2911
- case 96: /* nth ::= LAST LB RB */
2912
-#line 739 "pikchr.y"
2913
-{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2914
-#line 2939 "pikchr.c"
2915
- break;
2916
- case 97: /* expr ::= expr PLUS expr */
2917
-#line 741 "pikchr.y"
2918
-{yylhsminor.yy265=yymsp[-2].minor.yy265+yymsp[0].minor.yy265;}
2919
-#line 2944 "pikchr.c"
2920
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
2921
- break;
2922
- case 98: /* expr ::= expr MINUS expr */
2923
-#line 742 "pikchr.y"
2924
-{yylhsminor.yy265=yymsp[-2].minor.yy265-yymsp[0].minor.yy265;}
2925
-#line 2950 "pikchr.c"
2926
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
2927
- break;
2928
- case 99: /* expr ::= expr STAR expr */
2929
-#line 743 "pikchr.y"
2930
-{yylhsminor.yy265=yymsp[-2].minor.yy265*yymsp[0].minor.yy265;}
2931
-#line 2956 "pikchr.c"
2932
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
2933
- break;
2934
- case 100: /* expr ::= expr SLASH expr */
2935
-#line 744 "pikchr.y"
2936
-{
2937
- if( yymsp[0].minor.yy265==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy265 = 0.0; }
2938
- else{ yylhsminor.yy265 = yymsp[-2].minor.yy265/yymsp[0].minor.yy265; }
2939
-}
2940
-#line 2965 "pikchr.c"
2941
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
2942
- break;
2943
- case 101: /* expr ::= MINUS expr */
2944
-#line 748 "pikchr.y"
2945
-{yymsp[-1].minor.yy265=-yymsp[0].minor.yy265;}
2946
-#line 2971 "pikchr.c"
2947
- break;
2948
- case 102: /* expr ::= PLUS expr */
2949
-#line 749 "pikchr.y"
2950
-{yymsp[-1].minor.yy265=yymsp[0].minor.yy265;}
2951
-#line 2976 "pikchr.c"
2952
- break;
2953
- case 103: /* expr ::= LP expr RP */
2954
-#line 750 "pikchr.y"
2955
-{yymsp[-2].minor.yy265=yymsp[-1].minor.yy265;}
2956
-#line 2981 "pikchr.c"
2957
- break;
2958
- case 104: /* expr ::= LP FILL|COLOR|THICKNESS RP */
2930
+ case 97: /* nth ::= LAST LB RB */
2931
+#line 740 "pikchr.y"
2932
+{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2933
+#line 2958 "pikchr.c"
2934
+ break;
2935
+ case 98: /* expr ::= expr PLUS expr */
2936
+#line 742 "pikchr.y"
2937
+{yylhsminor.yy153=yymsp[-2].minor.yy153+yymsp[0].minor.yy153;}
2938
+#line 2963 "pikchr.c"
2939
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
2940
+ break;
2941
+ case 99: /* expr ::= expr MINUS expr */
2942
+#line 743 "pikchr.y"
2943
+{yylhsminor.yy153=yymsp[-2].minor.yy153-yymsp[0].minor.yy153;}
2944
+#line 2969 "pikchr.c"
2945
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
2946
+ break;
2947
+ case 100: /* expr ::= expr STAR expr */
2948
+#line 744 "pikchr.y"
2949
+{yylhsminor.yy153=yymsp[-2].minor.yy153*yymsp[0].minor.yy153;}
2950
+#line 2975 "pikchr.c"
2951
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
2952
+ break;
2953
+ case 101: /* expr ::= expr SLASH expr */
2954
+#line 745 "pikchr.y"
2955
+{
2956
+ if( yymsp[0].minor.yy153==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy153 = 0.0; }
2957
+ else{ yylhsminor.yy153 = yymsp[-2].minor.yy153/yymsp[0].minor.yy153; }
2958
+}
2959
+#line 2984 "pikchr.c"
2960
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
2961
+ break;
2962
+ case 102: /* expr ::= MINUS expr */
2963
+#line 749 "pikchr.y"
2964
+{yymsp[-1].minor.yy153=-yymsp[0].minor.yy153;}
2965
+#line 2990 "pikchr.c"
2966
+ break;
2967
+ case 103: /* expr ::= PLUS expr */
2968
+#line 750 "pikchr.y"
2969
+{yymsp[-1].minor.yy153=yymsp[0].minor.yy153;}
2970
+#line 2995 "pikchr.c"
2971
+ break;
2972
+ case 104: /* expr ::= LP expr RP */
29592973
#line 751 "pikchr.y"
2960
-{yymsp[-2].minor.yy265=pik_get_var(p,&yymsp[-1].minor.yy0);}
2961
-#line 2986 "pikchr.c"
2974
+{yymsp[-2].minor.yy153=yymsp[-1].minor.yy153;}
2975
+#line 3000 "pikchr.c"
29622976
break;
2963
- case 105: /* expr ::= NUMBER */
2977
+ case 105: /* expr ::= LP FILL|COLOR|THICKNESS RP */
29642978
#line 752 "pikchr.y"
2965
-{yylhsminor.yy265=pik_atof(&yymsp[0].minor.yy0);}
2966
-#line 2991 "pikchr.c"
2967
- yymsp[0].minor.yy265 = yylhsminor.yy265;
2979
+{yymsp[-2].minor.yy153=pik_get_var(p,&yymsp[-1].minor.yy0);}
2980
+#line 3005 "pikchr.c"
29682981
break;
2969
- case 106: /* expr ::= ID */
2982
+ case 106: /* expr ::= NUMBER */
29702983
#line 753 "pikchr.y"
2971
-{yylhsminor.yy265=pik_get_var(p,&yymsp[0].minor.yy0);}
2972
-#line 2997 "pikchr.c"
2973
- yymsp[0].minor.yy265 = yylhsminor.yy265;
2984
+{yylhsminor.yy153=pik_atof(&yymsp[0].minor.yy0);}
2985
+#line 3010 "pikchr.c"
2986
+ yymsp[0].minor.yy153 = yylhsminor.yy153;
29742987
break;
2975
- case 107: /* expr ::= FUNC1 LP expr RP */
2988
+ case 107: /* expr ::= ID */
29762989
#line 754 "pikchr.y"
2977
-{yylhsminor.yy265 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy265,0.0);}
2978
-#line 3003 "pikchr.c"
2979
- yymsp[-3].minor.yy265 = yylhsminor.yy265;
2990
+{yylhsminor.yy153=pik_get_var(p,&yymsp[0].minor.yy0);}
2991
+#line 3016 "pikchr.c"
2992
+ yymsp[0].minor.yy153 = yylhsminor.yy153;
29802993
break;
2981
- case 108: /* expr ::= FUNC2 LP expr COMMA expr RP */
2994
+ case 108: /* expr ::= FUNC1 LP expr RP */
29822995
#line 755 "pikchr.y"
2983
-{yylhsminor.yy265 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy265,yymsp[-1].minor.yy265);}
2984
-#line 3009 "pikchr.c"
2985
- yymsp[-5].minor.yy265 = yylhsminor.yy265;
2996
+{yylhsminor.yy153 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy153,0.0);}
2997
+#line 3022 "pikchr.c"
2998
+ yymsp[-3].minor.yy153 = yylhsminor.yy153;
29862999
break;
2987
- case 109: /* expr ::= DIST LP position COMMA position RP */
3000
+ case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
29883001
#line 756 "pikchr.y"
2989
-{yymsp[-5].minor.yy265 = pik_dist(&yymsp[-3].minor.yy43,&yymsp[-1].minor.yy43);}
2990
-#line 3015 "pikchr.c"
3002
+{yylhsminor.yy153 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy153,yymsp[-1].minor.yy153);}
3003
+#line 3028 "pikchr.c"
3004
+ yymsp[-5].minor.yy153 = yylhsminor.yy153;
29913005
break;
2992
- case 110: /* expr ::= place2 DOT_XY X */
3006
+ case 110: /* expr ::= DIST LP position COMMA position RP */
29933007
#line 757 "pikchr.y"
2994
-{yylhsminor.yy265 = yymsp[-2].minor.yy43.x;}
2995
-#line 3020 "pikchr.c"
2996
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
3008
+{yymsp[-5].minor.yy153 = pik_dist(&yymsp[-3].minor.yy79,&yymsp[-1].minor.yy79);}
3009
+#line 3034 "pikchr.c"
29973010
break;
2998
- case 111: /* expr ::= place2 DOT_XY Y */
3011
+ case 111: /* expr ::= place2 DOT_XY X */
29993012
#line 758 "pikchr.y"
3000
-{yylhsminor.yy265 = yymsp[-2].minor.yy43.y;}
3001
-#line 3026 "pikchr.c"
3002
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
3013
+{yylhsminor.yy153 = yymsp[-2].minor.yy79.x;}
3014
+#line 3039 "pikchr.c"
3015
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
30033016
break;
3004
- case 112: /* expr ::= object DOT_L numproperty */
3005
- case 113: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==113);
3006
- case 114: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==114);
3017
+ case 112: /* expr ::= place2 DOT_XY Y */
30073018
#line 759 "pikchr.y"
3008
-{yylhsminor.yy265=pik_property_of(yymsp[-2].minor.yy38,&yymsp[0].minor.yy0);}
3009
-#line 3034 "pikchr.c"
3010
- yymsp[-2].minor.yy265 = yylhsminor.yy265;
3019
+{yylhsminor.yy153 = yymsp[-2].minor.yy79.y;}
3020
+#line 3045 "pikchr.c"
3021
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
3022
+ break;
3023
+ case 113: /* expr ::= object DOT_L numproperty */
3024
+ case 114: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==114);
3025
+ case 115: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==115);
3026
+#line 760 "pikchr.y"
3027
+{yylhsminor.yy153=pik_property_of(yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
3028
+#line 3053 "pikchr.c"
3029
+ yymsp[-2].minor.yy153 = yylhsminor.yy153;
30113030
break;
30123031
default:
3013
- /* (115) lvalue ::= ID */ yytestcase(yyruleno==115);
3014
- /* (116) lvalue ::= FILL */ yytestcase(yyruleno==116);
3015
- /* (117) lvalue ::= COLOR */ yytestcase(yyruleno==117);
3016
- /* (118) lvalue ::= THICKNESS */ yytestcase(yyruleno==118);
3017
- /* (119) rvalue ::= expr */ yytestcase(yyruleno==119);
3018
- /* (120) print ::= PRINT */ yytestcase(yyruleno==120);
3019
- /* (121) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=121);
3020
- /* (122) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==122);
3021
- /* (123) direction ::= UP */ yytestcase(yyruleno==123);
3022
- /* (124) direction ::= DOWN */ yytestcase(yyruleno==124);
3023
- /* (125) direction ::= LEFT */ yytestcase(yyruleno==125);
3024
- /* (126) direction ::= RIGHT */ yytestcase(yyruleno==126);
3025
- /* (127) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=127);
3026
- /* (128) attribute_list ::= alist */ yytestcase(yyruleno==128);
3027
- /* (129) alist ::= */ yytestcase(yyruleno==129);
3028
- /* (130) alist ::= alist attribute */ yytestcase(yyruleno==130);
3029
- /* (131) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=131);
3030
- /* (132) attribute ::= WITH withclause */ yytestcase(yyruleno==132);
3031
- /* (133) go ::= GO */ yytestcase(yyruleno==133);
3032
- /* (134) go ::= */ yytestcase(yyruleno==134);
3033
- /* (135) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==135);
3034
- /* (136) even ::= EVEN WITH */ yytestcase(yyruleno==136);
3035
- /* (137) dashproperty ::= DOTTED */ yytestcase(yyruleno==137);
3036
- /* (138) dashproperty ::= DASHED */ yytestcase(yyruleno==138);
3037
- /* (139) colorproperty ::= FILL */ yytestcase(yyruleno==139);
3038
- /* (140) colorproperty ::= COLOR */ yytestcase(yyruleno==140);
3039
- /* (141) position ::= place */ yytestcase(yyruleno==141);
3040
- /* (142) between ::= WAY BETWEEN */ yytestcase(yyruleno==142);
3041
- /* (143) between ::= BETWEEN */ yytestcase(yyruleno==143);
3042
- /* (144) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==144);
3043
- /* (145) place ::= place2 */ yytestcase(yyruleno==145);
3044
- /* (146) edge ::= CENTER */ yytestcase(yyruleno==146);
3045
- /* (147) edge ::= EDGEPT */ yytestcase(yyruleno==147);
3046
- /* (148) edge ::= TOP */ yytestcase(yyruleno==148);
3047
- /* (149) edge ::= BOTTOM */ yytestcase(yyruleno==149);
3048
- /* (150) edge ::= START */ yytestcase(yyruleno==150);
3049
- /* (151) edge ::= END */ yytestcase(yyruleno==151);
3050
- /* (152) edge ::= RIGHT */ yytestcase(yyruleno==152);
3051
- /* (153) edge ::= LEFT */ yytestcase(yyruleno==153);
3052
- /* (154) object ::= objectname */ yytestcase(yyruleno==154);
3032
+ /* (116) lvalue ::= ID */ yytestcase(yyruleno==116);
3033
+ /* (117) lvalue ::= FILL */ yytestcase(yyruleno==117);
3034
+ /* (118) lvalue ::= COLOR */ yytestcase(yyruleno==118);
3035
+ /* (119) lvalue ::= THICKNESS */ yytestcase(yyruleno==119);
3036
+ /* (120) rvalue ::= expr */ yytestcase(yyruleno==120);
3037
+ /* (121) print ::= PRINT */ yytestcase(yyruleno==121);
3038
+ /* (122) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=122);
3039
+ /* (123) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==123);
3040
+ /* (124) direction ::= UP */ yytestcase(yyruleno==124);
3041
+ /* (125) direction ::= DOWN */ yytestcase(yyruleno==125);
3042
+ /* (126) direction ::= LEFT */ yytestcase(yyruleno==126);
3043
+ /* (127) direction ::= RIGHT */ yytestcase(yyruleno==127);
3044
+ /* (128) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=128);
3045
+ /* (129) attribute_list ::= alist */ yytestcase(yyruleno==129);
3046
+ /* (130) alist ::= */ yytestcase(yyruleno==130);
3047
+ /* (131) alist ::= alist attribute */ yytestcase(yyruleno==131);
3048
+ /* (132) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=132);
3049
+ /* (133) attribute ::= WITH withclause */ yytestcase(yyruleno==133);
3050
+ /* (134) go ::= GO */ yytestcase(yyruleno==134);
3051
+ /* (135) go ::= */ yytestcase(yyruleno==135);
3052
+ /* (136) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==136);
3053
+ /* (137) even ::= EVEN WITH */ yytestcase(yyruleno==137);
3054
+ /* (138) dashproperty ::= DOTTED */ yytestcase(yyruleno==138);
3055
+ /* (139) dashproperty ::= DASHED */ yytestcase(yyruleno==139);
3056
+ /* (140) colorproperty ::= FILL */ yytestcase(yyruleno==140);
3057
+ /* (141) colorproperty ::= COLOR */ yytestcase(yyruleno==141);
3058
+ /* (142) position ::= place */ yytestcase(yyruleno==142);
3059
+ /* (143) between ::= WAY BETWEEN */ yytestcase(yyruleno==143);
3060
+ /* (144) between ::= BETWEEN */ yytestcase(yyruleno==144);
3061
+ /* (145) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==145);
3062
+ /* (146) place ::= place2 */ yytestcase(yyruleno==146);
3063
+ /* (147) edge ::= CENTER */ yytestcase(yyruleno==147);
3064
+ /* (148) edge ::= EDGEPT */ yytestcase(yyruleno==148);
3065
+ /* (149) edge ::= TOP */ yytestcase(yyruleno==149);
3066
+ /* (150) edge ::= BOTTOM */ yytestcase(yyruleno==150);
3067
+ /* (151) edge ::= START */ yytestcase(yyruleno==151);
3068
+ /* (152) edge ::= END */ yytestcase(yyruleno==152);
3069
+ /* (153) edge ::= RIGHT */ yytestcase(yyruleno==153);
3070
+ /* (154) edge ::= LEFT */ yytestcase(yyruleno==154);
3071
+ /* (155) object ::= objectname */ yytestcase(yyruleno==155);
30533072
break;
30543073
/********** End reduce actions ************************************************/
30553074
};
30563075
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
30573076
yygoto = yyRuleInfoLhs[yyruleno];
@@ -3115,11 +3134,11 @@
31153134
pik_error(p, &TOKEN, "syntax error");
31163135
}else{
31173136
pik_error(p, 0, "syntax error");
31183137
}
31193138
UNUSED_PARAMETER(yymajor);
3120
-#line 3145 "pikchr.c"
3139
+#line 3164 "pikchr.c"
31213140
/************ End %syntax_error code ******************************************/
31223141
pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
31233142
pik_parserCTX_STORE
31243143
}
31253144
@@ -3348,11 +3367,11 @@
33483367
#else
33493368
(void)iToken;
33503369
return 0;
33513370
#endif
33523371
}
3353
-#line 764 "pikchr.y"
3372
+#line 765 "pikchr.y"
33543373
33553374
33563375
33573376
/* Chart of the 148 official CSS color names with their
33583377
** corresponding RGB values thru Color Module Level 4:
@@ -5032,11 +5051,11 @@
50325051
int i; /* Loop counter */
50335052
int iBump = 0; /* Bump the location of the error cursor */
50345053
char zLineno[20]; /* Buffer in which to generate line numbers */
50355054
50365055
iErrPt = (int)(pErr->z - p->sIn.z);
5037
- if( iErrPt>=p->sIn.n ){
5056
+ if( iErrPt>=(int)p->sIn.n ){
50385057
iErrPt = p->sIn.n-1;
50395058
iBump = 1;
50405059
}else{
50415060
while( iErrPt>0 && (p->sIn.z[iErrPt]=='\n' || p->sIn.z[iErrPt]=='\r') ){
50425061
iErrPt--;
@@ -7095,10 +7114,11 @@
70957114
{ "the", 3, T_THE, 0, 0 },
70967115
{ "then", 4, T_THEN, 0, 0 },
70977116
{ "thick", 5, T_THICK, 0, 0 },
70987117
{ "thickness", 9, T_THICKNESS, 0, 0 },
70997118
{ "thin", 4, T_THIN, 0, 0 },
7119
+ { "this", 4, T_THIS, 0, 0 },
71007120
{ "to", 2, T_TO, 0, 0 },
71017121
{ "top", 3, T_TOP, 0, CP_N },
71027122
{ "until", 5, T_UNTIL, 0, 0 },
71037123
{ "up", 2, T_UP, DIR_UP, 0 },
71047124
{ "vertex", 6, T_VERTEX, 0, 0 },
@@ -7744,11 +7764,11 @@
77447764
static char *readFile(const char *zFilename){
77457765
FILE *in;
77467766
size_t n;
77477767
size_t nUsed = 0;
77487768
size_t nAlloc = 0;
7749
- char *z = 0, *zNew;
7769
+ char *z = 0, *zNew = 0;
77507770
in = strcmp(zFilename,"-")==0 ? stdin : fopen(zFilename, "rb");
77517771
if( in==0 ){
77527772
fprintf(stderr, "cannot open \"%s\" for reading\n", zFilename);
77537773
return 0;
77547774
}
@@ -7940,6 +7960,6 @@
79407960
79417961
79427962
#endif /* PIKCHR_TCL */
79437963
79447964
7945
-#line 7970 "pikchr.c"
7965
+#line 7990 "pikchr.c"
79467966
--- src/pikchr.c
+++ src/pikchr.c
@@ -566,20 +566,21 @@
566 #define T_TOP 83
567 #define T_BOTTOM 84
568 #define T_START 85
569 #define T_END 86
570 #define T_IN 87
571 #define T_DOT_U 88
572 #define T_LAST 89
573 #define T_NUMBER 90
574 #define T_FUNC1 91
575 #define T_FUNC2 92
576 #define T_DIST 93
577 #define T_DOT_XY 94
578 #define T_X 95
579 #define T_Y 96
580 #define T_DOT_L 97
 
581 #endif
582 /**************** End token definitions ***************************************/
583
584 /* The next sections is a series of control #defines.
585 ** various aspects of the generated parser.
@@ -635,22 +636,22 @@
635 #ifndef INTERFACE
636 # define INTERFACE 1
637 #endif
638 /************* Begin control #defines *****************************************/
639 #define YYCODETYPE unsigned char
640 #define YYNOCODE 134
641 #define YYACTIONTYPE unsigned short int
642 #define pik_parserTOKENTYPE PToken
643 typedef union {
644 int yyinit;
645 pik_parserTOKENTYPE yy0;
646 PObj* yy38;
647 PPoint yy43;
648 short int yy44;
649 PList* yy119;
650 PRel yy200;
651 PNum yy265;
652 } YYMINORTYPE;
653 #ifndef YYSTACKDEPTH
654 #define YYSTACKDEPTH 100
655 #endif
656 #define pik_parserARG_SDECL
@@ -663,21 +664,21 @@
663 #define pik_parserCTX_PARAM ,p
664 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
665 #define pik_parserCTX_STORE yypParser->p=p;
666 #define YYFALLBACK 1
667 #define YYNSTATE 164
668 #define YYNRULE 155
669 #define YYNRULE_WITH_ACTION 115
670 #define YYNTOKEN 98
671 #define YY_MAX_SHIFT 163
672 #define YY_MIN_SHIFTREDUCE 286
673 #define YY_MAX_SHIFTREDUCE 440
674 #define YY_ERROR_ACTION 441
675 #define YY_ACCEPT_ACTION 442
676 #define YY_NO_ACTION 443
677 #define YY_MIN_REDUCE 444
678 #define YY_MAX_REDUCE 598
679 /************* End control #defines *******************************************/
680 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
681
682 /* Define the yytestcase() macro to be a no-op if is not already defined
683 ** otherwise.
@@ -740,333 +741,341 @@
740 ** yy_reduce_ofst[] For each state, the offset into yy_action for
741 ** shifting non-terminals after a reduce.
742 ** yy_default[] Default action for each state.
743 **
744 *********** Begin parsing tables **********************************************/
745 #define YY_ACTTAB_COUNT (1263)
746 static const YYACTIONTYPE yy_action[] = {
747 /* 0 */ 572, 493, 161, 119, 25, 450, 29, 74, 129, 148,
748 /* 10 */ 572, 490, 161, 119, 451, 113, 120, 161, 119, 528,
749 /* 20 */ 425, 426, 338, 556, 81, 30, 557, 558, 572, 64,
750 /* 30 */ 63, 62, 61, 321, 322, 9, 8, 33, 149, 32,
751 /* 40 */ 7, 71, 127, 38, 334, 66, 48, 37, 28, 338,
752 /* 50 */ 338, 338, 338, 423, 424, 339, 340, 341, 342, 343,
753 /* 60 */ 344, 345, 346, 347, 472, 526, 161, 119, 574, 77,
754 /* 70 */ 574, 73, 374, 148, 472, 531, 161, 119, 112, 113,
755 /* 80 */ 120, 161, 119, 128, 425, 426, 338, 305, 81, 376,
756 /* 90 */ 158, 76, 472, 529, 161, 119, 31, 321, 322, 9,
757 /* 100 */ 8, 33, 149, 32, 7, 71, 127, 329, 334, 66,
758 /* 110 */ 576, 83, 36, 338, 338, 338, 338, 423, 424, 339,
759 /* 120 */ 340, 341, 342, 343, 344, 345, 346, 347, 392, 433,
760 /* 130 */ 309, 59, 60, 409, 410, 411, 412, 107, 84, 374,
761 /* 140 */ 65, 108, 2, 46, 401, 162, 120, 161, 119, 117,
762 /* 150 */ 476, 80, 118, 307, 79, 133, 35, 126, 439, 438,
763 /* 160 */ 298, 123, 122, 402, 403, 404, 406, 80, 152, 307,
764 /* 170 */ 79, 327, 409, 410, 411, 412, 392, 54, 51, 59,
765 /* 180 */ 60, 64, 63, 62, 61, 312, 3, 102, 378, 157,
766 /* 190 */ 42, 432, 446, 452, 29, 300, 301, 302, 448, 304,
767 /* 200 */ 62, 61, 64, 63, 62, 61, 297, 47, 106, 163,
768 /* 210 */ 434, 435, 436, 437, 27, 389, 117, 391, 155, 154,
769 /* 220 */ 153, 392, 433, 49, 59, 60, 64, 63, 62, 61,
770 /* 230 */ 532, 69, 374, 396, 397, 2, 376, 158, 356, 296,
771 /* 240 */ 156, 156, 156, 67, 392, 433, 13, 59, 60, 4,
772 /* 250 */ 107, 439, 438, 377, 159, 374, 106, 5, 2, 120,
773 /* 260 */ 161, 119, 131, 449, 117, 391, 155, 154, 153, 392,
774 /* 270 */ 532, 6, 59, 60, 439, 438, 532, 444, 422, 532,
775 /* 280 */ 374, 152, 421, 42, 432, 1, 395, 36, 156, 156,
776 /* 290 */ 156, 11, 12, 355, 64, 63, 62, 61, 430, 118,
777 /* 300 */ 14, 106, 138, 434, 435, 436, 437, 432, 428, 117,
778 /* 310 */ 391, 155, 154, 153, 16, 69, 142, 140, 64, 63,
779 /* 320 */ 62, 61, 139, 18, 106, 15, 434, 435, 436, 437,
780 /* 330 */ 45, 44, 117, 391, 155, 154, 153, 358, 19, 55,
781 /* 340 */ 64, 63, 62, 61, 20, 147, 146, 68, 114, 106,
782 /* 350 */ 23, 382, 43, 26, 425, 426, 338, 117, 391, 155,
783 /* 360 */ 154, 153, 392, 57, 58, 59, 60, 390, 380, 375,
784 /* 370 */ 381, 17, 160, 374, 70, 39, 42, 443, 443, 443,
785 /* 380 */ 443, 22, 21, 338, 338, 338, 338, 423, 424, 24,
786 /* 390 */ 443, 145, 141, 429, 142, 140, 64, 63, 62, 61,
787 /* 400 */ 392, 471, 443, 59, 60, 443, 443, 132, 130, 389,
788 /* 410 */ 443, 374, 443, 443, 42, 443, 443, 55, 443, 64,
789 /* 420 */ 63, 62, 61, 147, 146, 392, 143, 443, 59, 60,
790 /* 430 */ 43, 443, 389, 443, 443, 443, 374, 471, 443, 42,
791 /* 440 */ 52, 443, 106, 443, 392, 144, 443, 59, 60, 443,
792 /* 450 */ 117, 391, 155, 154, 153, 374, 443, 443, 42, 22,
793 /* 460 */ 21, 121, 445, 452, 29, 443, 443, 24, 448, 145,
794 /* 470 */ 141, 429, 142, 140, 64, 63, 62, 61, 443, 163,
795 /* 480 */ 106, 443, 392, 442, 27, 59, 60, 443, 117, 391,
796 /* 490 */ 155, 154, 153, 374, 443, 55, 42, 443, 443, 443,
797 /* 500 */ 443, 147, 146, 443, 443, 106, 443, 392, 43, 443,
798 /* 510 */ 59, 60, 443, 117, 391, 155, 154, 153, 102, 443,
799 /* 520 */ 74, 42, 148, 443, 106, 443, 443, 124, 113, 120,
800 /* 530 */ 161, 119, 117, 391, 155, 154, 153, 22, 21, 392,
801 /* 540 */ 443, 443, 59, 60, 443, 24, 443, 145, 141, 429,
802 /* 550 */ 374, 149, 392, 40, 443, 59, 60, 443, 85, 443,
803 /* 560 */ 443, 443, 106, 374, 443, 443, 41, 120, 161, 119,
804 /* 570 */ 117, 391, 155, 154, 153, 349, 349, 349, 349, 349,
805 /* 580 */ 349, 349, 349, 349, 349, 443, 443, 106, 443, 152,
806 /* 590 */ 443, 443, 88, 443, 443, 117, 391, 155, 154, 153,
807 /* 600 */ 443, 120, 161, 119, 72, 443, 148, 10, 477, 477,
808 /* 610 */ 443, 125, 113, 120, 161, 119, 443, 443, 443, 106,
809 /* 620 */ 443, 443, 433, 152, 443, 443, 443, 117, 391, 155,
810 /* 630 */ 154, 153, 106, 443, 443, 149, 64, 63, 62, 61,
811 /* 640 */ 117, 391, 155, 154, 153, 443, 74, 443, 148, 354,
812 /* 650 */ 107, 439, 438, 495, 113, 120, 161, 119, 443, 120,
813 /* 660 */ 161, 119, 443, 461, 443, 74, 443, 148, 75, 443,
814 /* 670 */ 78, 78, 494, 113, 120, 161, 119, 149, 74, 443,
815 /* 680 */ 148, 152, 443, 443, 432, 488, 113, 120, 161, 119,
816 /* 690 */ 74, 443, 148, 443, 443, 443, 149, 482, 113, 120,
817 /* 700 */ 161, 119, 88, 434, 435, 436, 437, 443, 443, 149,
818 /* 710 */ 443, 120, 161, 119, 443, 74, 443, 148, 110, 110,
819 /* 720 */ 443, 149, 481, 113, 120, 161, 119, 443, 443, 443,
820 /* 730 */ 74, 443, 148, 152, 443, 443, 443, 478, 113, 120,
821 /* 740 */ 161, 119, 443, 74, 443, 148, 149, 443, 443, 443,
822 /* 750 */ 134, 113, 120, 161, 119, 74, 443, 148, 443, 443,
823 /* 760 */ 443, 149, 515, 113, 120, 161, 119, 443, 74, 443,
824 /* 770 */ 148, 443, 443, 443, 149, 137, 113, 120, 161, 119,
825 /* 780 */ 74, 443, 148, 443, 443, 443, 149, 523, 113, 120,
826 /* 790 */ 161, 119, 443, 74, 443, 148, 443, 443, 443, 149,
827 /* 800 */ 525, 113, 120, 161, 119, 443, 74, 443, 148, 443,
828 /* 810 */ 443, 149, 443, 522, 113, 120, 161, 119, 74, 443,
829 /* 820 */ 148, 86, 443, 443, 149, 524, 113, 120, 161, 119,
830 /* 830 */ 120, 161, 119, 74, 443, 148, 443, 149, 443, 443,
831 /* 840 */ 521, 113, 120, 161, 119, 443, 74, 443, 148, 149,
832 /* 850 */ 443, 443, 152, 520, 113, 120, 161, 119, 74, 443,
833 /* 860 */ 148, 443, 443, 443, 149, 519, 113, 120, 161, 119,
834 /* 870 */ 443, 74, 443, 148, 443, 443, 443, 149, 518, 113,
835 /* 880 */ 120, 161, 119, 74, 443, 148, 443, 443, 443, 149,
836 /* 890 */ 517, 113, 120, 161, 119, 433, 74, 443, 148, 443,
837 /* 900 */ 443, 443, 149, 150, 113, 120, 161, 119, 443, 74,
838 /* 910 */ 443, 148, 443, 443, 149, 443, 151, 113, 120, 161,
839 /* 920 */ 119, 74, 443, 148, 439, 438, 443, 149, 136, 113,
840 /* 930 */ 120, 161, 119, 443, 443, 443, 74, 443, 148, 443,
841 /* 940 */ 149, 443, 443, 135, 113, 120, 161, 119, 443, 88,
842 /* 950 */ 443, 443, 149, 443, 443, 443, 443, 432, 120, 161,
843 /* 960 */ 119, 443, 443, 443, 443, 82, 443, 149, 443, 443,
844 /* 970 */ 443, 443, 464, 443, 34, 443, 434, 435, 436, 437,
845 /* 980 */ 152, 107, 109, 445, 452, 29, 443, 443, 443, 448,
846 /* 990 */ 120, 161, 119, 443, 461, 443, 443, 88, 443, 443,
847 /* 1000 */ 163, 443, 566, 443, 443, 27, 120, 161, 119, 88,
848 /* 1010 */ 443, 443, 152, 111, 111, 443, 443, 443, 120, 161,
849 /* 1020 */ 119, 98, 443, 443, 89, 473, 443, 90, 152, 443,
850 /* 1030 */ 120, 161, 119, 120, 161, 119, 120, 161, 119, 87,
851 /* 1040 */ 152, 443, 443, 64, 63, 62, 61, 443, 120, 161,
852 /* 1050 */ 119, 443, 152, 443, 443, 152, 443, 443, 152, 443,
853 /* 1060 */ 443, 443, 99, 443, 50, 443, 443, 443, 100, 443,
854 /* 1070 */ 152, 120, 161, 119, 443, 101, 443, 120, 161, 119,
855 /* 1080 */ 91, 443, 443, 443, 120, 161, 119, 103, 443, 120,
856 /* 1090 */ 161, 119, 92, 152, 443, 443, 120, 161, 119, 152,
857 /* 1100 */ 443, 120, 161, 119, 443, 93, 152, 443, 443, 443,
858 /* 1110 */ 104, 152, 443, 443, 120, 161, 119, 94, 152, 120,
859 /* 1120 */ 161, 119, 105, 152, 443, 443, 120, 161, 119, 443,
860 /* 1130 */ 443, 120, 161, 119, 95, 443, 152, 443, 443, 443,
861 /* 1140 */ 96, 152, 443, 120, 161, 119, 443, 443, 152, 120,
862 /* 1150 */ 161, 119, 97, 152, 443, 443, 443, 443, 546, 443,
863 /* 1160 */ 443, 120, 161, 119, 443, 152, 443, 120, 161, 119,
864 /* 1170 */ 443, 152, 443, 443, 443, 545, 443, 443, 443, 443,
865 /* 1180 */ 443, 544, 443, 152, 120, 161, 119, 543, 443, 152,
866 /* 1190 */ 120, 161, 119, 115, 443, 443, 120, 161, 119, 116,
867 /* 1200 */ 443, 443, 120, 161, 119, 443, 152, 443, 120, 161,
868 /* 1210 */ 119, 443, 152, 64, 63, 62, 61, 443, 152, 64,
869 /* 1220 */ 63, 62, 61, 443, 152, 443, 353, 443, 443, 443,
870 /* 1230 */ 152, 64, 63, 62, 61, 64, 63, 62, 61, 443,
871 /* 1240 */ 53, 443, 443, 443, 394, 64, 63, 62, 61, 64,
872 /* 1250 */ 63, 62, 61, 443, 443, 443, 56, 443, 393, 443,
873 /* 1260 */ 443, 443, 389,
 
 
 
 
874 };
875 static const YYCODETYPE yy_lookahead[] = {
876 /* 0 */ 0, 111, 112, 113, 132, 100, 101, 102, 104, 104,
877 /* 10 */ 10, 111, 112, 113, 109, 110, 111, 112, 113, 104,
878 /* 20 */ 20, 21, 22, 103, 24, 124, 106, 107, 28, 4,
879 /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 133, 39,
880 /* 40 */ 40, 41, 42, 103, 44, 45, 106, 107, 105, 49,
881 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
882 /* 60 */ 60, 61, 62, 63, 0, 111, 112, 113, 128, 129,
883 /* 70 */ 130, 102, 12, 104, 10, 111, 112, 113, 109, 110,
884 /* 80 */ 111, 112, 113, 104, 20, 21, 22, 25, 24, 26,
885 /* 90 */ 27, 48, 28, 111, 112, 113, 126, 33, 34, 35,
886 /* 100 */ 36, 37, 133, 39, 40, 41, 42, 2, 44, 45,
887 /* 110 */ 131, 114, 10, 49, 50, 51, 52, 53, 54, 55,
888 /* 120 */ 56, 57, 58, 59, 60, 61, 62, 63, 1, 2,
889 /* 130 */ 28, 4, 5, 29, 30, 31, 32, 102, 114, 12,
890 /* 140 */ 97, 81, 15, 38, 1, 82, 111, 112, 113, 89,
891 /* 150 */ 115, 24, 89, 26, 27, 12, 127, 14, 31, 32,
892 /* 160 */ 19, 18, 1, 20, 21, 22, 23, 24, 133, 26,
893 /* 170 */ 27, 2, 29, 30, 31, 32, 1, 4, 5, 4,
894 /* 180 */ 5, 4, 5, 6, 7, 8, 16, 12, 26, 27,
895 /* 190 */ 15, 64, 99, 100, 101, 20, 21, 22, 105, 24,
896 /* 200 */ 6, 7, 4, 5, 6, 7, 17, 38, 81, 116,
897 /* 210 */ 83, 84, 85, 86, 121, 17, 89, 90, 91, 92,
898 /* 220 */ 93, 1, 2, 25, 4, 5, 4, 5, 6, 7,
899 /* 230 */ 48, 3, 12, 95, 96, 15, 26, 27, 17, 17,
900 /* 240 */ 20, 21, 22, 43, 1, 2, 25, 4, 5, 15,
901 /* 250 */ 102, 31, 32, 26, 27, 12, 81, 40, 15, 111,
902 /* 260 */ 112, 113, 47, 115, 89, 90, 91, 92, 93, 1,
903 /* 270 */ 88, 40, 4, 5, 31, 32, 94, 0, 41, 97,
904 /* 280 */ 12, 133, 41, 15, 64, 13, 17, 10, 20, 21,
905 /* 290 */ 22, 25, 74, 17, 4, 5, 6, 7, 79, 89,
906 /* 300 */ 3, 81, 78, 83, 84, 85, 86, 64, 79, 89,
907 /* 310 */ 90, 91, 92, 93, 3, 87, 2, 3, 4, 5,
908 /* 320 */ 6, 7, 80, 3, 81, 35, 83, 84, 85, 86,
909 /* 330 */ 16, 38, 89, 90, 91, 92, 93, 76, 3, 25,
910 /* 340 */ 4, 5, 6, 7, 3, 31, 32, 3, 94, 81,
911 /* 350 */ 25, 28, 38, 15, 20, 21, 22, 89, 90, 91,
912 /* 360 */ 92, 93, 1, 15, 15, 4, 5, 17, 28, 12,
913 /* 370 */ 28, 35, 88, 12, 3, 11, 15, 134, 134, 134,
914 /* 380 */ 134, 67, 68, 49, 50, 51, 52, 53, 54, 75,
915 /* 390 */ 134, 77, 78, 79, 2, 3, 4, 5, 6, 7,
916 /* 400 */ 1, 2, 134, 4, 5, 134, 134, 46, 47, 17,
917 /* 410 */ 134, 12, 134, 134, 15, 134, 134, 25, 134, 4,
918 /* 420 */ 5, 6, 7, 31, 32, 1, 2, 134, 4, 5,
919 /* 430 */ 38, 134, 17, 134, 134, 134, 12, 38, 134, 15,
920 /* 440 */ 25, 134, 81, 134, 1, 2, 134, 4, 5, 134,
921 /* 450 */ 89, 90, 91, 92, 93, 12, 134, 134, 15, 67,
922 /* 460 */ 68, 98, 99, 100, 101, 134, 134, 75, 105, 77,
923 /* 470 */ 78, 79, 2, 3, 4, 5, 6, 7, 134, 116,
924 /* 480 */ 81, 134, 1, 120, 121, 4, 5, 134, 89, 90,
925 /* 490 */ 91, 92, 93, 12, 134, 25, 15, 134, 134, 134,
926 /* 500 */ 134, 31, 32, 134, 134, 81, 134, 1, 38, 134,
927 /* 510 */ 4, 5, 134, 89, 90, 91, 92, 93, 12, 134,
928 /* 520 */ 102, 15, 104, 134, 81, 134, 134, 109, 110, 111,
929 /* 530 */ 112, 113, 89, 90, 91, 92, 93, 67, 68, 1,
930 /* 540 */ 134, 134, 4, 5, 134, 75, 134, 77, 78, 79,
931 /* 550 */ 12, 133, 1, 15, 134, 4, 5, 134, 102, 134,
932 /* 560 */ 134, 134, 81, 12, 134, 134, 15, 111, 112, 113,
933 /* 570 */ 89, 90, 91, 92, 93, 64, 65, 66, 67, 68,
934 /* 580 */ 69, 70, 71, 72, 73, 134, 134, 81, 134, 133,
935 /* 590 */ 134, 134, 102, 134, 134, 89, 90, 91, 92, 93,
936 /* 600 */ 134, 111, 112, 113, 102, 134, 104, 117, 118, 119,
937 /* 610 */ 134, 109, 110, 111, 112, 113, 134, 134, 134, 81,
938 /* 620 */ 134, 134, 2, 133, 134, 134, 134, 89, 90, 91,
939 /* 630 */ 92, 93, 81, 134, 134, 133, 4, 5, 6, 7,
940 /* 640 */ 89, 90, 91, 92, 93, 134, 102, 134, 104, 17,
941 /* 650 */ 102, 31, 32, 109, 110, 111, 112, 113, 134, 111,
942 /* 660 */ 112, 113, 134, 115, 134, 102, 134, 104, 48, 134,
943 /* 670 */ 122, 123, 109, 110, 111, 112, 113, 133, 102, 134,
944 /* 680 */ 104, 133, 134, 134, 64, 109, 110, 111, 112, 113,
945 /* 690 */ 102, 134, 104, 134, 134, 134, 133, 109, 110, 111,
946 /* 700 */ 112, 113, 102, 83, 84, 85, 86, 134, 134, 133,
947 /* 710 */ 134, 111, 112, 113, 134, 102, 134, 104, 118, 119,
948 /* 720 */ 134, 133, 109, 110, 111, 112, 113, 134, 134, 134,
949 /* 730 */ 102, 134, 104, 133, 134, 134, 134, 109, 110, 111,
950 /* 740 */ 112, 113, 134, 102, 134, 104, 133, 134, 134, 134,
951 /* 750 */ 109, 110, 111, 112, 113, 102, 134, 104, 134, 134,
952 /* 760 */ 134, 133, 109, 110, 111, 112, 113, 134, 102, 134,
953 /* 770 */ 104, 134, 134, 134, 133, 109, 110, 111, 112, 113,
954 /* 780 */ 102, 134, 104, 134, 134, 134, 133, 109, 110, 111,
955 /* 790 */ 112, 113, 134, 102, 134, 104, 134, 134, 134, 133,
956 /* 800 */ 109, 110, 111, 112, 113, 134, 102, 134, 104, 134,
957 /* 810 */ 134, 133, 134, 109, 110, 111, 112, 113, 102, 134,
958 /* 820 */ 104, 102, 134, 134, 133, 109, 110, 111, 112, 113,
959 /* 830 */ 111, 112, 113, 102, 134, 104, 134, 133, 134, 134,
960 /* 840 */ 109, 110, 111, 112, 113, 134, 102, 134, 104, 133,
961 /* 850 */ 134, 134, 133, 109, 110, 111, 112, 113, 102, 134,
962 /* 860 */ 104, 134, 134, 134, 133, 109, 110, 111, 112, 113,
963 /* 870 */ 134, 102, 134, 104, 134, 134, 134, 133, 109, 110,
964 /* 880 */ 111, 112, 113, 102, 134, 104, 134, 134, 134, 133,
965 /* 890 */ 109, 110, 111, 112, 113, 2, 102, 134, 104, 134,
966 /* 900 */ 134, 134, 133, 109, 110, 111, 112, 113, 134, 102,
967 /* 910 */ 134, 104, 134, 134, 133, 134, 109, 110, 111, 112,
968 /* 920 */ 113, 102, 134, 104, 31, 32, 134, 133, 109, 110,
969 /* 930 */ 111, 112, 113, 134, 134, 134, 102, 134, 104, 134,
970 /* 940 */ 133, 134, 134, 109, 110, 111, 112, 113, 134, 102,
971 /* 950 */ 134, 134, 133, 134, 134, 134, 134, 64, 111, 112,
972 /* 960 */ 113, 134, 134, 134, 134, 118, 134, 133, 134, 134,
973 /* 970 */ 134, 134, 125, 134, 127, 134, 83, 84, 85, 86,
974 /* 980 */ 133, 102, 98, 99, 100, 101, 134, 134, 134, 105,
975 /* 990 */ 111, 112, 113, 134, 115, 134, 134, 102, 134, 134,
976 /* 1000 */ 116, 134, 123, 134, 134, 121, 111, 112, 113, 102,
977 /* 1010 */ 134, 134, 133, 118, 119, 134, 134, 134, 111, 112,
978 /* 1020 */ 113, 102, 134, 134, 102, 118, 134, 102, 133, 134,
979 /* 1030 */ 111, 112, 113, 111, 112, 113, 111, 112, 113, 102,
980 /* 1040 */ 133, 134, 134, 4, 5, 6, 7, 134, 111, 112,
981 /* 1050 */ 113, 134, 133, 134, 134, 133, 134, 134, 133, 134,
982 /* 1060 */ 134, 134, 102, 134, 25, 134, 134, 134, 102, 134,
983 /* 1070 */ 133, 111, 112, 113, 134, 102, 134, 111, 112, 113,
984 /* 1080 */ 102, 134, 134, 134, 111, 112, 113, 102, 134, 111,
985 /* 1090 */ 112, 113, 102, 133, 134, 134, 111, 112, 113, 133,
986 /* 1100 */ 134, 111, 112, 113, 134, 102, 133, 134, 134, 134,
987 /* 1110 */ 102, 133, 134, 134, 111, 112, 113, 102, 133, 111,
988 /* 1120 */ 112, 113, 102, 133, 134, 134, 111, 112, 113, 134,
989 /* 1130 */ 134, 111, 112, 113, 102, 134, 133, 134, 134, 134,
990 /* 1140 */ 102, 133, 134, 111, 112, 113, 134, 134, 133, 111,
991 /* 1150 */ 112, 113, 102, 133, 134, 134, 134, 134, 102, 134,
992 /* 1160 */ 134, 111, 112, 113, 134, 133, 134, 111, 112, 113,
993 /* 1170 */ 134, 133, 134, 134, 134, 102, 134, 134, 134, 134,
994 /* 1180 */ 134, 102, 134, 133, 111, 112, 113, 102, 134, 133,
995 /* 1190 */ 111, 112, 113, 102, 134, 134, 111, 112, 113, 102,
996 /* 1200 */ 134, 134, 111, 112, 113, 134, 133, 134, 111, 112,
997 /* 1210 */ 113, 134, 133, 4, 5, 6, 7, 134, 133, 4,
998 /* 1220 */ 5, 6, 7, 134, 133, 134, 17, 134, 134, 134,
999 /* 1230 */ 133, 4, 5, 6, 7, 4, 5, 6, 7, 134,
1000 /* 1240 */ 25, 134, 134, 134, 17, 4, 5, 6, 7, 4,
1001 /* 1250 */ 5, 6, 7, 134, 134, 134, 25, 134, 17, 134,
1002 /* 1260 */ 134, 134, 17, 134, 134, 134, 134, 134, 134, 134,
1003 /* 1270 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1004 /* 1280 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1005 /* 1290 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1006 /* 1300 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1007 /* 1310 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1008 /* 1320 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1009 /* 1330 */ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1010 /* 1340 */ 134, 134, 134, 134, 134, 134, 134, 134, 98, 98,
1011 /* 1350 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1012 /* 1360 */ 98,
 
 
 
 
1013 };
1014 #define YY_SHIFT_COUNT (163)
1015 #define YY_SHIFT_MIN (0)
1016 #define YY_SHIFT_MAX (1245)
1017 static const unsigned short int yy_shift_ofst[] = {
1018 /* 0 */ 143, 127, 220, 243, 243, 243, 243, 243, 243, 243,
1019 /* 10 */ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1020 /* 20 */ 243, 243, 243, 243, 243, 243, 243, 175, 361, 481,
1021 /* 30 */ 175, 143, 399, 399, 0, 64, 143, 506, 481, 506,
1022 /* 40 */ 268, 268, 268, 424, 443, 481, 481, 481, 481, 481,
1023 /* 50 */ 481, 538, 481, 481, 551, 481, 481, 481, 481, 481,
1024 /* 60 */ 481, 481, 481, 481, 481, 334, 60, 60, 60, 60,
1025 /* 70 */ 60, 620, 314, 392, 470, 893, 893, 104, 62, 1263,
1026 /* 80 */ 1263, 1263, 1263, 511, 511, 198, 415, 222, 177, 290,
1027 /* 90 */ 336, 632, 1039, 1209, 1215, 1227, 1231, 1241, 1245, 25,
1028 /* 100 */ 25, 25, 182, 25, 25, 25, 63, 25, 210, 102,
1029 /* 110 */ 105, 169, 221, 173, 138, 194, 194, 162, 227, 228,
1030 /* 120 */ 43, 277, 141, 161, 189, 170, 234, 200, 217, 231,
1031 /* 130 */ 237, 241, 215, 272, 269, 266, 218, 276, 219, 224,
1032 /* 140 */ 242, 229, 297, 311, 320, 293, 335, 341, 344, 254,
1033 /* 150 */ 261, 325, 254, 338, 348, 349, 350, 323, 340, 342,
1034 /* 160 */ 357, 284, 371, 364,
1035 };
1036 #define YY_REDUCE_COUNT (82)
1037 #define YY_REDUCE_MIN (-128)
1038 #define YY_REDUCE_MAX (1097)
1039 static const short yy_reduce_ofst[] = {
1040 /* 0 */ 363, -95, -31, 418, 502, 544, 563, 576, 588, 613,
1041 /* 10 */ 628, 641, 653, 666, 678, 691, 704, 716, 731, 744,
1042 /* 20 */ 756, 769, 781, 794, 807, 819, 834, 548, 490, 847,
1043 /* 30 */ 879, 884, 600, 895, -60, -60, 93, 35, 907, 148,
1044 /* 40 */ 456, 719, 919, 922, 925, 937, 960, 966, 973, 978,
1045 /* 50 */ 985, 990, 1003, 1008, 1015, 1020, 1032, 1038, 1050, 1056,
1046 /* 60 */ 1073, 1079, 1085, 1091, 1097, -80, -110, -100, -46, -36,
1047 /* 70 */ -18, -21, -128, -128, -128, -96, -85, -57, -99, -30,
1048 /* 80 */ -3, 24, 29,
1049 };
1050 static const YYACTIONTYPE yy_default[] = {
1051 /* 0 */ 447, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1052 /* 10 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1053 /* 20 */ 441, 441, 441, 441, 441, 441, 441, 441, 471, 573,
1054 /* 30 */ 441, 447, 577, 483, 578, 578, 447, 441, 441, 441,
1055 /* 40 */ 441, 441, 441, 441, 441, 441, 441, 441, 475, 441,
1056 /* 50 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1057 /* 60 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1058 /* 70 */ 441, 441, 441, 441, 441, 441, 441, 441, 453, 468,
1059 /* 80 */ 506, 506, 573, 466, 491, 441, 441, 441, 469, 441,
1060 /* 90 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 486,
1061 /* 100 */ 484, 474, 457, 510, 509, 508, 441, 563, 441, 441,
1062 /* 110 */ 441, 441, 441, 585, 441, 542, 541, 537, 441, 530,
1063 /* 120 */ 527, 441, 441, 441, 441, 441, 441, 489, 441, 441,
1064 /* 130 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1065 /* 140 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 589,
1066 /* 150 */ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
1067 /* 160 */ 441, 598, 441, 441,
1068 };
1069 /********** End of lemon-generated parsing tables *****************************/
1070
1071 /* The next table maps tokens (terminal symbols) into fallback tokens.
1072 ** If a construct like the following:
@@ -1170,10 +1179,11 @@
1170 0, /* TOP => nothing */
1171 0, /* BOTTOM => nothing */
1172 0, /* START => nothing */
1173 0, /* END => nothing */
1174 0, /* IN => nothing */
 
1175 0, /* DOT_U => nothing */
1176 0, /* LAST => nothing */
1177 0, /* NUMBER => nothing */
1178 0, /* FUNC1 => nothing */
1179 0, /* FUNC2 => nothing */
@@ -1356,56 +1366,57 @@
1356 /* 83 */ "TOP",
1357 /* 84 */ "BOTTOM",
1358 /* 85 */ "START",
1359 /* 86 */ "END",
1360 /* 87 */ "IN",
1361 /* 88 */ "DOT_U",
1362 /* 89 */ "LAST",
1363 /* 90 */ "NUMBER",
1364 /* 91 */ "FUNC1",
1365 /* 92 */ "FUNC2",
1366 /* 93 */ "DIST",
1367 /* 94 */ "DOT_XY",
1368 /* 95 */ "X",
1369 /* 96 */ "Y",
1370 /* 97 */ "DOT_L",
1371 /* 98 */ "statement_list",
1372 /* 99 */ "statement",
1373 /* 100 */ "unnamed_statement",
1374 /* 101 */ "basetype",
1375 /* 102 */ "expr",
1376 /* 103 */ "numproperty",
1377 /* 104 */ "edge",
1378 /* 105 */ "direction",
1379 /* 106 */ "dashproperty",
1380 /* 107 */ "colorproperty",
1381 /* 108 */ "locproperty",
1382 /* 109 */ "position",
1383 /* 110 */ "place",
1384 /* 111 */ "object",
1385 /* 112 */ "objectname",
1386 /* 113 */ "nth",
1387 /* 114 */ "textposition",
1388 /* 115 */ "rvalue",
1389 /* 116 */ "lvalue",
1390 /* 117 */ "even",
1391 /* 118 */ "relexpr",
1392 /* 119 */ "optrelexpr",
1393 /* 120 */ "document",
1394 /* 121 */ "print",
1395 /* 122 */ "prlist",
1396 /* 123 */ "pritem",
1397 /* 124 */ "prsep",
1398 /* 125 */ "attribute_list",
1399 /* 126 */ "savelist",
1400 /* 127 */ "alist",
1401 /* 128 */ "attribute",
1402 /* 129 */ "go",
1403 /* 130 */ "boolproperty",
1404 /* 131 */ "withclause",
1405 /* 132 */ "between",
1406 /* 133 */ "place2",
 
1407 };
1408 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1409
1410 #ifndef NDEBUG
1411 /* For tracing reduce actions, the names of all rules are required.
@@ -1497,77 +1508,78 @@
1497 /* 83 */ "place2 ::= object",
1498 /* 84 */ "place2 ::= object DOT_E edge",
1499 /* 85 */ "place2 ::= NTH VERTEX OF object",
1500 /* 86 */ "object ::= nth",
1501 /* 87 */ "object ::= nth OF|IN object",
1502 /* 88 */ "objectname ::= PLACENAME",
1503 /* 89 */ "objectname ::= objectname DOT_U PLACENAME",
1504 /* 90 */ "nth ::= NTH CLASSNAME",
1505 /* 91 */ "nth ::= NTH LAST CLASSNAME",
1506 /* 92 */ "nth ::= LAST CLASSNAME",
1507 /* 93 */ "nth ::= LAST",
1508 /* 94 */ "nth ::= NTH LB RB",
1509 /* 95 */ "nth ::= NTH LAST LB RB",
1510 /* 96 */ "nth ::= LAST LB RB",
1511 /* 97 */ "expr ::= expr PLUS expr",
1512 /* 98 */ "expr ::= expr MINUS expr",
1513 /* 99 */ "expr ::= expr STAR expr",
1514 /* 100 */ "expr ::= expr SLASH expr",
1515 /* 101 */ "expr ::= MINUS expr",
1516 /* 102 */ "expr ::= PLUS expr",
1517 /* 103 */ "expr ::= LP expr RP",
1518 /* 104 */ "expr ::= LP FILL|COLOR|THICKNESS RP",
1519 /* 105 */ "expr ::= NUMBER",
1520 /* 106 */ "expr ::= ID",
1521 /* 107 */ "expr ::= FUNC1 LP expr RP",
1522 /* 108 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1523 /* 109 */ "expr ::= DIST LP position COMMA position RP",
1524 /* 110 */ "expr ::= place2 DOT_XY X",
1525 /* 111 */ "expr ::= place2 DOT_XY Y",
1526 /* 112 */ "expr ::= object DOT_L numproperty",
1527 /* 113 */ "expr ::= object DOT_L dashproperty",
1528 /* 114 */ "expr ::= object DOT_L colorproperty",
1529 /* 115 */ "lvalue ::= ID",
1530 /* 116 */ "lvalue ::= FILL",
1531 /* 117 */ "lvalue ::= COLOR",
1532 /* 118 */ "lvalue ::= THICKNESS",
1533 /* 119 */ "rvalue ::= expr",
1534 /* 120 */ "print ::= PRINT",
1535 /* 121 */ "prlist ::= pritem",
1536 /* 122 */ "prlist ::= prlist prsep pritem",
1537 /* 123 */ "direction ::= UP",
1538 /* 124 */ "direction ::= DOWN",
1539 /* 125 */ "direction ::= LEFT",
1540 /* 126 */ "direction ::= RIGHT",
1541 /* 127 */ "optrelexpr ::= relexpr",
1542 /* 128 */ "attribute_list ::= alist",
1543 /* 129 */ "alist ::=",
1544 /* 130 */ "alist ::= alist attribute",
1545 /* 131 */ "attribute ::= boolproperty",
1546 /* 132 */ "attribute ::= WITH withclause",
1547 /* 133 */ "go ::= GO",
1548 /* 134 */ "go ::=",
1549 /* 135 */ "even ::= UNTIL EVEN WITH",
1550 /* 136 */ "even ::= EVEN WITH",
1551 /* 137 */ "dashproperty ::= DOTTED",
1552 /* 138 */ "dashproperty ::= DASHED",
1553 /* 139 */ "colorproperty ::= FILL",
1554 /* 140 */ "colorproperty ::= COLOR",
1555 /* 141 */ "position ::= place",
1556 /* 142 */ "between ::= WAY BETWEEN",
1557 /* 143 */ "between ::= BETWEEN",
1558 /* 144 */ "between ::= OF THE WAY BETWEEN",
1559 /* 145 */ "place ::= place2",
1560 /* 146 */ "edge ::= CENTER",
1561 /* 147 */ "edge ::= EDGEPT",
1562 /* 148 */ "edge ::= TOP",
1563 /* 149 */ "edge ::= BOTTOM",
1564 /* 150 */ "edge ::= START",
1565 /* 151 */ "edge ::= END",
1566 /* 152 */ "edge ::= RIGHT",
1567 /* 153 */ "edge ::= LEFT",
1568 /* 154 */ "object ::= objectname",
 
1569 };
1570 #endif /* NDEBUG */
1571
1572
1573 #if YYSTACKDEPTH<=0
@@ -1689,24 +1701,24 @@
1689 ** Note: during a reduce, the only symbols destroyed are those
1690 ** which appear on the RHS of the rule, but which are *not* used
1691 ** inside the C code.
1692 */
1693 /********* Begin destructor definitions ***************************************/
1694 case 98: /* statement_list */
1695 {
1696 #line 494 "pikchr.y"
1697 pik_elist_free(p,(yypminor->yy119));
1698 #line 1723 "pikchr.c"
1699 }
1700 break;
1701 case 99: /* statement */
1702 case 100: /* unnamed_statement */
1703 case 101: /* basetype */
1704 {
1705 #line 496 "pikchr.y"
1706 pik_elem_free(p,(yypminor->yy38));
1707 #line 1732 "pikchr.c"
1708 }
1709 break;
1710 /********* End destructor definitions *****************************************/
1711 default: break; /* If no destructor action specified: do nothing */
1712 }
@@ -1923,11 +1935,11 @@
1923 ** stack every overflows */
1924 /******** Begin %stack_overflow code ******************************************/
1925 #line 528 "pikchr.y"
1926
1927 pik_error(p, 0, "parser stack overflow");
1928 #line 1953 "pikchr.c"
1929 /******** End %stack_overflow code ********************************************/
1930 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1931 pik_parserCTX_STORE
1932 }
1933
@@ -1995,165 +2007,166 @@
1995 }
1996
1997 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1998 ** of that rule */
1999 static const YYCODETYPE yyRuleInfoLhs[] = {
2000 120, /* (0) document ::= statement_list */
2001 98, /* (1) statement_list ::= statement */
2002 98, /* (2) statement_list ::= statement_list EOL statement */
2003 99, /* (3) statement ::= */
2004 99, /* (4) statement ::= direction */
2005 99, /* (5) statement ::= lvalue ASSIGN rvalue */
2006 99, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2007 99, /* (7) statement ::= PLACENAME COLON position */
2008 99, /* (8) statement ::= unnamed_statement */
2009 99, /* (9) statement ::= print prlist */
2010 99, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2011 99, /* (11) statement ::= ASSERT LP position EQ position RP */
2012 99, /* (12) statement ::= DEFINE ID CODEBLOCK */
2013 115, /* (13) rvalue ::= PLACENAME */
2014 123, /* (14) pritem ::= FILL */
2015 123, /* (15) pritem ::= COLOR */
2016 123, /* (16) pritem ::= THICKNESS */
2017 123, /* (17) pritem ::= rvalue */
2018 123, /* (18) pritem ::= STRING */
2019 124, /* (19) prsep ::= COMMA */
2020 100, /* (20) unnamed_statement ::= basetype attribute_list */
2021 101, /* (21) basetype ::= CLASSNAME */
2022 101, /* (22) basetype ::= STRING textposition */
2023 101, /* (23) basetype ::= LB savelist statement_list RB */
2024 126, /* (24) savelist ::= */
2025 118, /* (25) relexpr ::= expr */
2026 118, /* (26) relexpr ::= expr PERCENT */
2027 119, /* (27) optrelexpr ::= */
2028 125, /* (28) attribute_list ::= relexpr alist */
2029 128, /* (29) attribute ::= numproperty relexpr */
2030 128, /* (30) attribute ::= dashproperty expr */
2031 128, /* (31) attribute ::= dashproperty */
2032 128, /* (32) attribute ::= colorproperty rvalue */
2033 128, /* (33) attribute ::= go direction optrelexpr */
2034 128, /* (34) attribute ::= go direction even position */
2035 128, /* (35) attribute ::= CLOSE */
2036 128, /* (36) attribute ::= CHOP */
2037 128, /* (37) attribute ::= FROM position */
2038 128, /* (38) attribute ::= TO position */
2039 128, /* (39) attribute ::= THEN */
2040 128, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2041 128, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2042 128, /* (42) attribute ::= GO optrelexpr HEADING expr */
2043 128, /* (43) attribute ::= GO optrelexpr EDGEPT */
2044 128, /* (44) attribute ::= AT position */
2045 128, /* (45) attribute ::= SAME */
2046 128, /* (46) attribute ::= SAME AS object */
2047 128, /* (47) attribute ::= STRING textposition */
2048 128, /* (48) attribute ::= FIT */
2049 128, /* (49) attribute ::= BEHIND object */
2050 131, /* (50) withclause ::= DOT_E edge AT position */
2051 131, /* (51) withclause ::= edge AT position */
2052 103, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2053 130, /* (53) boolproperty ::= CW */
2054 130, /* (54) boolproperty ::= CCW */
2055 130, /* (55) boolproperty ::= LARROW */
2056 130, /* (56) boolproperty ::= RARROW */
2057 130, /* (57) boolproperty ::= LRARROW */
2058 130, /* (58) boolproperty ::= INVIS */
2059 130, /* (59) boolproperty ::= THICK */
2060 130, /* (60) boolproperty ::= THIN */
2061 130, /* (61) boolproperty ::= SOLID */
2062 114, /* (62) textposition ::= */
2063 114, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2064 109, /* (64) position ::= expr COMMA expr */
2065 109, /* (65) position ::= place PLUS expr COMMA expr */
2066 109, /* (66) position ::= place MINUS expr COMMA expr */
2067 109, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2068 109, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2069 109, /* (69) position ::= LP position COMMA position RP */
2070 109, /* (70) position ::= LP position RP */
2071 109, /* (71) position ::= expr between position AND position */
2072 109, /* (72) position ::= expr LT position COMMA position GT */
2073 109, /* (73) position ::= expr ABOVE position */
2074 109, /* (74) position ::= expr BELOW position */
2075 109, /* (75) position ::= expr LEFT OF position */
2076 109, /* (76) position ::= expr RIGHT OF position */
2077 109, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2078 109, /* (78) position ::= expr HEADING EDGEPT OF position */
2079 109, /* (79) position ::= expr EDGEPT OF position */
2080 109, /* (80) position ::= expr ON HEADING expr FROM position */
2081 109, /* (81) position ::= expr HEADING expr FROM position */
2082 110, /* (82) place ::= edge OF object */
2083 133, /* (83) place2 ::= object */
2084 133, /* (84) place2 ::= object DOT_E edge */
2085 133, /* (85) place2 ::= NTH VERTEX OF object */
2086 111, /* (86) object ::= nth */
2087 111, /* (87) object ::= nth OF|IN object */
2088 112, /* (88) objectname ::= PLACENAME */
2089 112, /* (89) objectname ::= objectname DOT_U PLACENAME */
2090 113, /* (90) nth ::= NTH CLASSNAME */
2091 113, /* (91) nth ::= NTH LAST CLASSNAME */
2092 113, /* (92) nth ::= LAST CLASSNAME */
2093 113, /* (93) nth ::= LAST */
2094 113, /* (94) nth ::= NTH LB RB */
2095 113, /* (95) nth ::= NTH LAST LB RB */
2096 113, /* (96) nth ::= LAST LB RB */
2097 102, /* (97) expr ::= expr PLUS expr */
2098 102, /* (98) expr ::= expr MINUS expr */
2099 102, /* (99) expr ::= expr STAR expr */
2100 102, /* (100) expr ::= expr SLASH expr */
2101 102, /* (101) expr ::= MINUS expr */
2102 102, /* (102) expr ::= PLUS expr */
2103 102, /* (103) expr ::= LP expr RP */
2104 102, /* (104) expr ::= LP FILL|COLOR|THICKNESS RP */
2105 102, /* (105) expr ::= NUMBER */
2106 102, /* (106) expr ::= ID */
2107 102, /* (107) expr ::= FUNC1 LP expr RP */
2108 102, /* (108) expr ::= FUNC2 LP expr COMMA expr RP */
2109 102, /* (109) expr ::= DIST LP position COMMA position RP */
2110 102, /* (110) expr ::= place2 DOT_XY X */
2111 102, /* (111) expr ::= place2 DOT_XY Y */
2112 102, /* (112) expr ::= object DOT_L numproperty */
2113 102, /* (113) expr ::= object DOT_L dashproperty */
2114 102, /* (114) expr ::= object DOT_L colorproperty */
2115 116, /* (115) lvalue ::= ID */
2116 116, /* (116) lvalue ::= FILL */
2117 116, /* (117) lvalue ::= COLOR */
2118 116, /* (118) lvalue ::= THICKNESS */
2119 115, /* (119) rvalue ::= expr */
2120 121, /* (120) print ::= PRINT */
2121 122, /* (121) prlist ::= pritem */
2122 122, /* (122) prlist ::= prlist prsep pritem */
2123 105, /* (123) direction ::= UP */
2124 105, /* (124) direction ::= DOWN */
2125 105, /* (125) direction ::= LEFT */
2126 105, /* (126) direction ::= RIGHT */
2127 119, /* (127) optrelexpr ::= relexpr */
2128 125, /* (128) attribute_list ::= alist */
2129 127, /* (129) alist ::= */
2130 127, /* (130) alist ::= alist attribute */
2131 128, /* (131) attribute ::= boolproperty */
2132 128, /* (132) attribute ::= WITH withclause */
2133 129, /* (133) go ::= GO */
2134 129, /* (134) go ::= */
2135 117, /* (135) even ::= UNTIL EVEN WITH */
2136 117, /* (136) even ::= EVEN WITH */
2137 106, /* (137) dashproperty ::= DOTTED */
2138 106, /* (138) dashproperty ::= DASHED */
2139 107, /* (139) colorproperty ::= FILL */
2140 107, /* (140) colorproperty ::= COLOR */
2141 109, /* (141) position ::= place */
2142 132, /* (142) between ::= WAY BETWEEN */
2143 132, /* (143) between ::= BETWEEN */
2144 132, /* (144) between ::= OF THE WAY BETWEEN */
2145 110, /* (145) place ::= place2 */
2146 104, /* (146) edge ::= CENTER */
2147 104, /* (147) edge ::= EDGEPT */
2148 104, /* (148) edge ::= TOP */
2149 104, /* (149) edge ::= BOTTOM */
2150 104, /* (150) edge ::= START */
2151 104, /* (151) edge ::= END */
2152 104, /* (152) edge ::= RIGHT */
2153 104, /* (153) edge ::= LEFT */
2154 111, /* (154) object ::= objectname */
 
2155 };
2156
2157 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2158 ** of symbols on the right-hand side of that rule. */
2159 static const signed char yyRuleInfoNRhs[] = {
@@ -2243,77 +2256,78 @@
2243 -1, /* (83) place2 ::= object */
2244 -3, /* (84) place2 ::= object DOT_E edge */
2245 -4, /* (85) place2 ::= NTH VERTEX OF object */
2246 -1, /* (86) object ::= nth */
2247 -3, /* (87) object ::= nth OF|IN object */
2248 -1, /* (88) objectname ::= PLACENAME */
2249 -3, /* (89) objectname ::= objectname DOT_U PLACENAME */
2250 -2, /* (90) nth ::= NTH CLASSNAME */
2251 -3, /* (91) nth ::= NTH LAST CLASSNAME */
2252 -2, /* (92) nth ::= LAST CLASSNAME */
2253 -1, /* (93) nth ::= LAST */
2254 -3, /* (94) nth ::= NTH LB RB */
2255 -4, /* (95) nth ::= NTH LAST LB RB */
2256 -3, /* (96) nth ::= LAST LB RB */
2257 -3, /* (97) expr ::= expr PLUS expr */
2258 -3, /* (98) expr ::= expr MINUS expr */
2259 -3, /* (99) expr ::= expr STAR expr */
2260 -3, /* (100) expr ::= expr SLASH expr */
2261 -2, /* (101) expr ::= MINUS expr */
2262 -2, /* (102) expr ::= PLUS expr */
2263 -3, /* (103) expr ::= LP expr RP */
2264 -3, /* (104) expr ::= LP FILL|COLOR|THICKNESS RP */
2265 -1, /* (105) expr ::= NUMBER */
2266 -1, /* (106) expr ::= ID */
2267 -4, /* (107) expr ::= FUNC1 LP expr RP */
2268 -6, /* (108) expr ::= FUNC2 LP expr COMMA expr RP */
2269 -6, /* (109) expr ::= DIST LP position COMMA position RP */
2270 -3, /* (110) expr ::= place2 DOT_XY X */
2271 -3, /* (111) expr ::= place2 DOT_XY Y */
2272 -3, /* (112) expr ::= object DOT_L numproperty */
2273 -3, /* (113) expr ::= object DOT_L dashproperty */
2274 -3, /* (114) expr ::= object DOT_L colorproperty */
2275 -1, /* (115) lvalue ::= ID */
2276 -1, /* (116) lvalue ::= FILL */
2277 -1, /* (117) lvalue ::= COLOR */
2278 -1, /* (118) lvalue ::= THICKNESS */
2279 -1, /* (119) rvalue ::= expr */
2280 -1, /* (120) print ::= PRINT */
2281 -1, /* (121) prlist ::= pritem */
2282 -3, /* (122) prlist ::= prlist prsep pritem */
2283 -1, /* (123) direction ::= UP */
2284 -1, /* (124) direction ::= DOWN */
2285 -1, /* (125) direction ::= LEFT */
2286 -1, /* (126) direction ::= RIGHT */
2287 -1, /* (127) optrelexpr ::= relexpr */
2288 -1, /* (128) attribute_list ::= alist */
2289 0, /* (129) alist ::= */
2290 -2, /* (130) alist ::= alist attribute */
2291 -1, /* (131) attribute ::= boolproperty */
2292 -2, /* (132) attribute ::= WITH withclause */
2293 -1, /* (133) go ::= GO */
2294 0, /* (134) go ::= */
2295 -3, /* (135) even ::= UNTIL EVEN WITH */
2296 -2, /* (136) even ::= EVEN WITH */
2297 -1, /* (137) dashproperty ::= DOTTED */
2298 -1, /* (138) dashproperty ::= DASHED */
2299 -1, /* (139) colorproperty ::= FILL */
2300 -1, /* (140) colorproperty ::= COLOR */
2301 -1, /* (141) position ::= place */
2302 -2, /* (142) between ::= WAY BETWEEN */
2303 -1, /* (143) between ::= BETWEEN */
2304 -4, /* (144) between ::= OF THE WAY BETWEEN */
2305 -1, /* (145) place ::= place2 */
2306 -1, /* (146) edge ::= CENTER */
2307 -1, /* (147) edge ::= EDGEPT */
2308 -1, /* (148) edge ::= TOP */
2309 -1, /* (149) edge ::= BOTTOM */
2310 -1, /* (150) edge ::= START */
2311 -1, /* (151) edge ::= END */
2312 -1, /* (152) edge ::= RIGHT */
2313 -1, /* (153) edge ::= LEFT */
2314 -1, /* (154) object ::= objectname */
 
2315 };
2316
2317 static void yy_accept(yyParser*); /* Forward Declaration */
2318
2319 /*
@@ -2402,656 +2416,661 @@
2402 */
2403 /********** Begin reduce actions **********************************************/
2404 YYMINORTYPE yylhsminor;
2405 case 0: /* document ::= statement_list */
2406 #line 532 "pikchr.y"
2407 {pik_render(p,yymsp[0].minor.yy119);}
2408 #line 2433 "pikchr.c"
2409 break;
2410 case 1: /* statement_list ::= statement */
2411 #line 535 "pikchr.y"
2412 { yylhsminor.yy119 = pik_elist_append(p,0,yymsp[0].minor.yy38); }
2413 #line 2438 "pikchr.c"
2414 yymsp[0].minor.yy119 = yylhsminor.yy119;
2415 break;
2416 case 2: /* statement_list ::= statement_list EOL statement */
2417 #line 537 "pikchr.y"
2418 { yylhsminor.yy119 = pik_elist_append(p,yymsp[-2].minor.yy119,yymsp[0].minor.yy38); }
2419 #line 2444 "pikchr.c"
2420 yymsp[-2].minor.yy119 = yylhsminor.yy119;
2421 break;
2422 case 3: /* statement ::= */
2423 #line 540 "pikchr.y"
2424 { yymsp[1].minor.yy38 = 0; }
2425 #line 2450 "pikchr.c"
2426 break;
2427 case 4: /* statement ::= direction */
2428 #line 541 "pikchr.y"
2429 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy38=0; }
2430 #line 2455 "pikchr.c"
2431 yymsp[0].minor.yy38 = yylhsminor.yy38;
2432 break;
2433 case 5: /* statement ::= lvalue ASSIGN rvalue */
2434 #line 542 "pikchr.y"
2435 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy265,&yymsp[-1].minor.yy0); yylhsminor.yy38=0;}
2436 #line 2461 "pikchr.c"
2437 yymsp[-2].minor.yy38 = yylhsminor.yy38;
2438 break;
2439 case 6: /* statement ::= PLACENAME COLON unnamed_statement */
2440 #line 544 "pikchr.y"
2441 { yylhsminor.yy38 = yymsp[0].minor.yy38; pik_elem_setname(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0); }
2442 #line 2467 "pikchr.c"
2443 yymsp[-2].minor.yy38 = yylhsminor.yy38;
2444 break;
2445 case 7: /* statement ::= PLACENAME COLON position */
2446 #line 546 "pikchr.y"
2447 { yylhsminor.yy38 = pik_elem_new(p,0,0,0);
2448 if(yylhsminor.yy38){ yylhsminor.yy38->ptAt = yymsp[0].minor.yy43; pik_elem_setname(p,yylhsminor.yy38,&yymsp[-2].minor.yy0); }}
2449 #line 2474 "pikchr.c"
2450 yymsp[-2].minor.yy38 = yylhsminor.yy38;
2451 break;
2452 case 8: /* statement ::= unnamed_statement */
2453 #line 548 "pikchr.y"
2454 {yylhsminor.yy38 = yymsp[0].minor.yy38;}
2455 #line 2480 "pikchr.c"
2456 yymsp[0].minor.yy38 = yylhsminor.yy38;
2457 break;
2458 case 9: /* statement ::= print prlist */
2459 #line 549 "pikchr.y"
2460 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy38=0;}
2461 #line 2486 "pikchr.c"
2462 break;
2463 case 10: /* statement ::= ASSERT LP expr EQ expr RP */
2464 #line 554 "pikchr.y"
2465 {yymsp[-5].minor.yy38=pik_assert(p,yymsp[-3].minor.yy265,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy265);}
2466 #line 2491 "pikchr.c"
2467 break;
2468 case 11: /* statement ::= ASSERT LP position EQ position RP */
2469 #line 556 "pikchr.y"
2470 {yymsp[-5].minor.yy38=pik_position_assert(p,&yymsp[-3].minor.yy43,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy43);}
2471 #line 2496 "pikchr.c"
2472 break;
2473 case 12: /* statement ::= DEFINE ID CODEBLOCK */
2474 #line 557 "pikchr.y"
2475 {yymsp[-2].minor.yy38=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2476 #line 2501 "pikchr.c"
2477 break;
2478 case 13: /* rvalue ::= PLACENAME */
2479 #line 568 "pikchr.y"
2480 {yylhsminor.yy265 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2481 #line 2506 "pikchr.c"
2482 yymsp[0].minor.yy265 = yylhsminor.yy265;
2483 break;
2484 case 14: /* pritem ::= FILL */
2485 case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15);
2486 case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16);
2487 #line 573 "pikchr.y"
2488 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2489 #line 2514 "pikchr.c"
2490 break;
2491 case 17: /* pritem ::= rvalue */
2492 #line 576 "pikchr.y"
2493 {pik_append_num(p,"",yymsp[0].minor.yy265);}
2494 #line 2519 "pikchr.c"
2495 break;
2496 case 18: /* pritem ::= STRING */
2497 #line 577 "pikchr.y"
2498 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2499 #line 2524 "pikchr.c"
2500 break;
2501 case 19: /* prsep ::= COMMA */
2502 #line 578 "pikchr.y"
2503 {pik_append(p, " ", 1);}
2504 #line 2529 "pikchr.c"
2505 break;
2506 case 20: /* unnamed_statement ::= basetype attribute_list */
2507 #line 581 "pikchr.y"
2508 {yylhsminor.yy38 = yymsp[-1].minor.yy38; pik_after_adding_attributes(p,yylhsminor.yy38);}
2509 #line 2534 "pikchr.c"
2510 yymsp[-1].minor.yy38 = yylhsminor.yy38;
2511 break;
2512 case 21: /* basetype ::= CLASSNAME */
2513 #line 583 "pikchr.y"
2514 {yylhsminor.yy38 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2515 #line 2540 "pikchr.c"
2516 yymsp[0].minor.yy38 = yylhsminor.yy38;
2517 break;
2518 case 22: /* basetype ::= STRING textposition */
2519 #line 585 "pikchr.y"
2520 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy44; yylhsminor.yy38 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2521 #line 2546 "pikchr.c"
2522 yymsp[-1].minor.yy38 = yylhsminor.yy38;
2523 break;
2524 case 23: /* basetype ::= LB savelist statement_list RB */
2525 #line 587 "pikchr.y"
2526 { p->list = yymsp[-2].minor.yy119; yymsp[-3].minor.yy38 = pik_elem_new(p,0,0,yymsp[-1].minor.yy119); if(yymsp[-3].minor.yy38) yymsp[-3].minor.yy38->errTok = yymsp[0].minor.yy0; }
2527 #line 2552 "pikchr.c"
2528 break;
2529 case 24: /* savelist ::= */
2530 #line 592 "pikchr.y"
2531 {yymsp[1].minor.yy119 = p->list; p->list = 0;}
2532 #line 2557 "pikchr.c"
2533 break;
2534 case 25: /* relexpr ::= expr */
2535 #line 599 "pikchr.y"
2536 {yylhsminor.yy200.rAbs = yymsp[0].minor.yy265; yylhsminor.yy200.rRel = 0;}
2537 #line 2562 "pikchr.c"
2538 yymsp[0].minor.yy200 = yylhsminor.yy200;
2539 break;
2540 case 26: /* relexpr ::= expr PERCENT */
2541 #line 600 "pikchr.y"
2542 {yylhsminor.yy200.rAbs = 0; yylhsminor.yy200.rRel = yymsp[-1].minor.yy265/100;}
2543 #line 2568 "pikchr.c"
2544 yymsp[-1].minor.yy200 = yylhsminor.yy200;
2545 break;
2546 case 27: /* optrelexpr ::= */
2547 #line 602 "pikchr.y"
2548 {yymsp[1].minor.yy200.rAbs = 0; yymsp[1].minor.yy200.rRel = 1.0;}
2549 #line 2574 "pikchr.c"
2550 break;
2551 case 28: /* attribute_list ::= relexpr alist */
2552 #line 604 "pikchr.y"
2553 {pik_add_direction(p,0,&yymsp[-1].minor.yy200);}
2554 #line 2579 "pikchr.c"
2555 break;
2556 case 29: /* attribute ::= numproperty relexpr */
2557 #line 608 "pikchr.y"
2558 { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy200); }
2559 #line 2584 "pikchr.c"
2560 break;
2561 case 30: /* attribute ::= dashproperty expr */
2562 #line 609 "pikchr.y"
2563 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy265); }
2564 #line 2589 "pikchr.c"
2565 break;
2566 case 31: /* attribute ::= dashproperty */
2567 #line 610 "pikchr.y"
2568 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2569 #line 2594 "pikchr.c"
2570 break;
2571 case 32: /* attribute ::= colorproperty rvalue */
2572 #line 611 "pikchr.y"
2573 { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy265); }
2574 #line 2599 "pikchr.c"
2575 break;
2576 case 33: /* attribute ::= go direction optrelexpr */
2577 #line 612 "pikchr.y"
2578 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy200);}
2579 #line 2604 "pikchr.c"
2580 break;
2581 case 34: /* attribute ::= go direction even position */
2582 #line 613 "pikchr.y"
2583 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy43);}
2584 #line 2609 "pikchr.c"
2585 break;
2586 case 35: /* attribute ::= CLOSE */
2587 #line 614 "pikchr.y"
2588 { pik_close_path(p,&yymsp[0].minor.yy0); }
2589 #line 2614 "pikchr.c"
2590 break;
2591 case 36: /* attribute ::= CHOP */
2592 #line 615 "pikchr.y"
2593 { p->cur->bChop = 1; }
2594 #line 2619 "pikchr.c"
2595 break;
2596 case 37: /* attribute ::= FROM position */
2597 #line 616 "pikchr.y"
2598 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy43); }
2599 #line 2624 "pikchr.c"
2600 break;
2601 case 38: /* attribute ::= TO position */
2602 #line 617 "pikchr.y"
2603 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy43); }
2604 #line 2629 "pikchr.c"
2605 break;
2606 case 39: /* attribute ::= THEN */
2607 #line 618 "pikchr.y"
2608 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2609 #line 2634 "pikchr.c"
2610 break;
2611 case 40: /* attribute ::= THEN optrelexpr HEADING expr */
2612 case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42);
2613 #line 620 "pikchr.y"
2614 {pik_move_hdg(p,&yymsp[-2].minor.yy200,&yymsp[-1].minor.yy0,yymsp[0].minor.yy265,0,&yymsp[-3].minor.yy0);}
2615 #line 2640 "pikchr.c"
2616 break;
2617 case 41: /* attribute ::= THEN optrelexpr EDGEPT */
2618 case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43);
2619 #line 621 "pikchr.y"
2620 {pik_move_hdg(p,&yymsp[-1].minor.yy200,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2621 #line 2646 "pikchr.c"
2622 break;
2623 case 44: /* attribute ::= AT position */
2624 #line 626 "pikchr.y"
2625 { pik_set_at(p,0,&yymsp[0].minor.yy43,&yymsp[-1].minor.yy0); }
2626 #line 2651 "pikchr.c"
2627 break;
2628 case 45: /* attribute ::= SAME */
2629 #line 628 "pikchr.y"
2630 {pik_same(p,0,&yymsp[0].minor.yy0);}
2631 #line 2656 "pikchr.c"
2632 break;
2633 case 46: /* attribute ::= SAME AS object */
2634 #line 629 "pikchr.y"
2635 {pik_same(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0);}
2636 #line 2661 "pikchr.c"
2637 break;
2638 case 47: /* attribute ::= STRING textposition */
2639 #line 630 "pikchr.y"
2640 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy44);}
2641 #line 2666 "pikchr.c"
2642 break;
2643 case 48: /* attribute ::= FIT */
2644 #line 631 "pikchr.y"
2645 {pik_size_to_fit(p,&yymsp[0].minor.yy0,3); }
2646 #line 2671 "pikchr.c"
2647 break;
2648 case 49: /* attribute ::= BEHIND object */
2649 #line 632 "pikchr.y"
2650 {pik_behind(p,yymsp[0].minor.yy38);}
2651 #line 2676 "pikchr.c"
2652 break;
2653 case 50: /* withclause ::= DOT_E edge AT position */
2654 case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51);
2655 #line 640 "pikchr.y"
2656 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy43,&yymsp[-1].minor.yy0); }
2657 #line 2682 "pikchr.c"
2658 break;
2659 case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2660 #line 644 "pikchr.y"
2661 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2662 #line 2687 "pikchr.c"
2663 yymsp[0].minor.yy0 = yylhsminor.yy0;
2664 break;
2665 case 53: /* boolproperty ::= CW */
2666 #line 655 "pikchr.y"
2667 {p->cur->cw = 1;}
2668 #line 2693 "pikchr.c"
2669 break;
2670 case 54: /* boolproperty ::= CCW */
2671 #line 656 "pikchr.y"
2672 {p->cur->cw = 0;}
2673 #line 2698 "pikchr.c"
2674 break;
2675 case 55: /* boolproperty ::= LARROW */
2676 #line 657 "pikchr.y"
2677 {p->cur->larrow=1; p->cur->rarrow=0; }
2678 #line 2703 "pikchr.c"
2679 break;
2680 case 56: /* boolproperty ::= RARROW */
2681 #line 658 "pikchr.y"
2682 {p->cur->larrow=0; p->cur->rarrow=1; }
2683 #line 2708 "pikchr.c"
2684 break;
2685 case 57: /* boolproperty ::= LRARROW */
2686 #line 659 "pikchr.y"
2687 {p->cur->larrow=1; p->cur->rarrow=1; }
2688 #line 2713 "pikchr.c"
2689 break;
2690 case 58: /* boolproperty ::= INVIS */
2691 #line 660 "pikchr.y"
2692 {p->cur->sw = 0.0;}
2693 #line 2718 "pikchr.c"
2694 break;
2695 case 59: /* boolproperty ::= THICK */
2696 #line 661 "pikchr.y"
2697 {p->cur->sw *= 1.5;}
2698 #line 2723 "pikchr.c"
2699 break;
2700 case 60: /* boolproperty ::= THIN */
2701 #line 662 "pikchr.y"
2702 {p->cur->sw *= 0.67;}
2703 #line 2728 "pikchr.c"
2704 break;
2705 case 61: /* boolproperty ::= SOLID */
2706 #line 663 "pikchr.y"
2707 {p->cur->sw = pik_value(p,"thickness",9,0);
2708 p->cur->dotted = p->cur->dashed = 0.0;}
2709 #line 2734 "pikchr.c"
2710 break;
2711 case 62: /* textposition ::= */
2712 #line 666 "pikchr.y"
2713 {yymsp[1].minor.yy44 = 0;}
2714 #line 2739 "pikchr.c"
2715 break;
2716 case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2717 #line 669 "pikchr.y"
2718 {yylhsminor.yy44 = (short int)pik_text_position(yymsp[-1].minor.yy44,&yymsp[0].minor.yy0);}
2719 #line 2744 "pikchr.c"
2720 yymsp[-1].minor.yy44 = yylhsminor.yy44;
2721 break;
2722 case 64: /* position ::= expr COMMA expr */
2723 #line 672 "pikchr.y"
2724 {yylhsminor.yy43.x=yymsp[-2].minor.yy265; yylhsminor.yy43.y=yymsp[0].minor.yy265;}
2725 #line 2750 "pikchr.c"
2726 yymsp[-2].minor.yy43 = yylhsminor.yy43;
2727 break;
2728 case 65: /* position ::= place PLUS expr COMMA expr */
2729 #line 674 "pikchr.y"
2730 {yylhsminor.yy43.x=yymsp[-4].minor.yy43.x+yymsp[-2].minor.yy265; yylhsminor.yy43.y=yymsp[-4].minor.yy43.y+yymsp[0].minor.yy265;}
2731 #line 2756 "pikchr.c"
2732 yymsp[-4].minor.yy43 = yylhsminor.yy43;
2733 break;
2734 case 66: /* position ::= place MINUS expr COMMA expr */
2735 #line 675 "pikchr.y"
2736 {yylhsminor.yy43.x=yymsp[-4].minor.yy43.x-yymsp[-2].minor.yy265; yylhsminor.yy43.y=yymsp[-4].minor.yy43.y-yymsp[0].minor.yy265;}
2737 #line 2762 "pikchr.c"
2738 yymsp[-4].minor.yy43 = yylhsminor.yy43;
2739 break;
2740 case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2741 #line 677 "pikchr.y"
2742 {yylhsminor.yy43.x=yymsp[-6].minor.yy43.x+yymsp[-3].minor.yy265; yylhsminor.yy43.y=yymsp[-6].minor.yy43.y+yymsp[-1].minor.yy265;}
2743 #line 2768 "pikchr.c"
2744 yymsp[-6].minor.yy43 = yylhsminor.yy43;
2745 break;
2746 case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2747 #line 679 "pikchr.y"
2748 {yylhsminor.yy43.x=yymsp[-6].minor.yy43.x-yymsp[-3].minor.yy265; yylhsminor.yy43.y=yymsp[-6].minor.yy43.y-yymsp[-1].minor.yy265;}
2749 #line 2774 "pikchr.c"
2750 yymsp[-6].minor.yy43 = yylhsminor.yy43;
2751 break;
2752 case 69: /* position ::= LP position COMMA position RP */
2753 #line 680 "pikchr.y"
2754 {yymsp[-4].minor.yy43.x=yymsp[-3].minor.yy43.x; yymsp[-4].minor.yy43.y=yymsp[-1].minor.yy43.y;}
2755 #line 2780 "pikchr.c"
2756 break;
2757 case 70: /* position ::= LP position RP */
2758 #line 681 "pikchr.y"
2759 {yymsp[-2].minor.yy43=yymsp[-1].minor.yy43;}
2760 #line 2785 "pikchr.c"
2761 break;
2762 case 71: /* position ::= expr between position AND position */
2763 #line 683 "pikchr.y"
2764 {yylhsminor.yy43 = pik_position_between(yymsp[-4].minor.yy265,yymsp[-2].minor.yy43,yymsp[0].minor.yy43);}
2765 #line 2790 "pikchr.c"
2766 yymsp[-4].minor.yy43 = yylhsminor.yy43;
2767 break;
2768 case 72: /* position ::= expr LT position COMMA position GT */
2769 #line 685 "pikchr.y"
2770 {yylhsminor.yy43 = pik_position_between(yymsp[-5].minor.yy265,yymsp[-3].minor.yy43,yymsp[-1].minor.yy43);}
2771 #line 2796 "pikchr.c"
2772 yymsp[-5].minor.yy43 = yylhsminor.yy43;
2773 break;
2774 case 73: /* position ::= expr ABOVE position */
2775 #line 686 "pikchr.y"
2776 {yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.y += yymsp[-2].minor.yy265;}
2777 #line 2802 "pikchr.c"
2778 yymsp[-2].minor.yy43 = yylhsminor.yy43;
2779 break;
2780 case 74: /* position ::= expr BELOW position */
2781 #line 687 "pikchr.y"
2782 {yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.y -= yymsp[-2].minor.yy265;}
2783 #line 2808 "pikchr.c"
2784 yymsp[-2].minor.yy43 = yylhsminor.yy43;
2785 break;
2786 case 75: /* position ::= expr LEFT OF position */
2787 #line 688 "pikchr.y"
2788 {yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.x -= yymsp[-3].minor.yy265;}
2789 #line 2814 "pikchr.c"
2790 yymsp[-3].minor.yy43 = yylhsminor.yy43;
2791 break;
2792 case 76: /* position ::= expr RIGHT OF position */
2793 #line 689 "pikchr.y"
2794 {yylhsminor.yy43=yymsp[0].minor.yy43; yylhsminor.yy43.x += yymsp[-3].minor.yy265;}
2795 #line 2820 "pikchr.c"
2796 yymsp[-3].minor.yy43 = yylhsminor.yy43;
2797 break;
2798 case 77: /* position ::= expr ON HEADING EDGEPT OF position */
2799 #line 691 "pikchr.y"
2800 {yylhsminor.yy43 = pik_position_at_hdg(yymsp[-5].minor.yy265,&yymsp[-2].minor.yy0,yymsp[0].minor.yy43);}
2801 #line 2826 "pikchr.c"
2802 yymsp[-5].minor.yy43 = yylhsminor.yy43;
2803 break;
2804 case 78: /* position ::= expr HEADING EDGEPT OF position */
2805 #line 693 "pikchr.y"
2806 {yylhsminor.yy43 = pik_position_at_hdg(yymsp[-4].minor.yy265,&yymsp[-2].minor.yy0,yymsp[0].minor.yy43);}
2807 #line 2832 "pikchr.c"
2808 yymsp[-4].minor.yy43 = yylhsminor.yy43;
2809 break;
2810 case 79: /* position ::= expr EDGEPT OF position */
2811 #line 695 "pikchr.y"
2812 {yylhsminor.yy43 = pik_position_at_hdg(yymsp[-3].minor.yy265,&yymsp[-2].minor.yy0,yymsp[0].minor.yy43);}
2813 #line 2838 "pikchr.c"
2814 yymsp[-3].minor.yy43 = yylhsminor.yy43;
2815 break;
2816 case 80: /* position ::= expr ON HEADING expr FROM position */
2817 #line 697 "pikchr.y"
2818 {yylhsminor.yy43 = pik_position_at_angle(yymsp[-5].minor.yy265,yymsp[-2].minor.yy265,yymsp[0].minor.yy43);}
2819 #line 2844 "pikchr.c"
2820 yymsp[-5].minor.yy43 = yylhsminor.yy43;
2821 break;
2822 case 81: /* position ::= expr HEADING expr FROM position */
2823 #line 699 "pikchr.y"
2824 {yylhsminor.yy43 = pik_position_at_angle(yymsp[-4].minor.yy265,yymsp[-2].minor.yy265,yymsp[0].minor.yy43);}
2825 #line 2850 "pikchr.c"
2826 yymsp[-4].minor.yy43 = yylhsminor.yy43;
2827 break;
2828 case 82: /* place ::= edge OF object */
2829 #line 711 "pikchr.y"
2830 {yylhsminor.yy43 = pik_place_of_elem(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0);}
2831 #line 2856 "pikchr.c"
2832 yymsp[-2].minor.yy43 = yylhsminor.yy43;
2833 break;
2834 case 83: /* place2 ::= object */
2835 #line 712 "pikchr.y"
2836 {yylhsminor.yy43 = pik_place_of_elem(p,yymsp[0].minor.yy38,0);}
2837 #line 2862 "pikchr.c"
2838 yymsp[0].minor.yy43 = yylhsminor.yy43;
2839 break;
2840 case 84: /* place2 ::= object DOT_E edge */
2841 #line 713 "pikchr.y"
2842 {yylhsminor.yy43 = pik_place_of_elem(p,yymsp[-2].minor.yy38,&yymsp[0].minor.yy0);}
2843 #line 2868 "pikchr.c"
2844 yymsp[-2].minor.yy43 = yylhsminor.yy43;
2845 break;
2846 case 85: /* place2 ::= NTH VERTEX OF object */
2847 #line 714 "pikchr.y"
2848 {yylhsminor.yy43 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy38);}
2849 #line 2874 "pikchr.c"
2850 yymsp[-3].minor.yy43 = yylhsminor.yy43;
2851 break;
2852 case 86: /* object ::= nth */
2853 #line 726 "pikchr.y"
2854 {yylhsminor.yy38 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2855 #line 2880 "pikchr.c"
2856 yymsp[0].minor.yy38 = yylhsminor.yy38;
2857 break;
2858 case 87: /* object ::= nth OF|IN object */
2859 #line 727 "pikchr.y"
2860 {yylhsminor.yy38 = pik_find_nth(p,yymsp[0].minor.yy38,&yymsp[-2].minor.yy0);}
2861 #line 2886 "pikchr.c"
2862 yymsp[-2].minor.yy38 = yylhsminor.yy38;
2863 break;
2864 case 88: /* objectname ::= PLACENAME */
2865 #line 729 "pikchr.y"
2866 {yylhsminor.yy38 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2867 #line 2892 "pikchr.c"
2868 yymsp[0].minor.yy38 = yylhsminor.yy38;
2869 break;
2870 case 89: /* objectname ::= objectname DOT_U PLACENAME */
2871 #line 731 "pikchr.y"
2872 {yylhsminor.yy38 = pik_find_byname(p,yymsp[-2].minor.yy38,&yymsp[0].minor.yy0);}
2873 #line 2898 "pikchr.c"
2874 yymsp[-2].minor.yy38 = yylhsminor.yy38;
2875 break;
2876 case 90: /* nth ::= NTH CLASSNAME */
2877 #line 733 "pikchr.y"
 
 
 
 
 
2878 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2879 #line 2904 "pikchr.c"
2880 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2881 break;
2882 case 91: /* nth ::= NTH LAST CLASSNAME */
2883 #line 734 "pikchr.y"
2884 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2885 #line 2910 "pikchr.c"
2886 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2887 break;
2888 case 92: /* nth ::= LAST CLASSNAME */
2889 #line 735 "pikchr.y"
2890 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2891 #line 2916 "pikchr.c"
2892 break;
2893 case 93: /* nth ::= LAST */
2894 #line 736 "pikchr.y"
2895 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2896 #line 2921 "pikchr.c"
2897 yymsp[0].minor.yy0 = yylhsminor.yy0;
2898 break;
2899 case 94: /* nth ::= NTH LB RB */
2900 #line 737 "pikchr.y"
2901 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2902 #line 2927 "pikchr.c"
2903 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2904 break;
2905 case 95: /* nth ::= NTH LAST LB RB */
2906 #line 738 "pikchr.y"
2907 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2908 #line 2933 "pikchr.c"
2909 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2910 break;
2911 case 96: /* nth ::= LAST LB RB */
2912 #line 739 "pikchr.y"
2913 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2914 #line 2939 "pikchr.c"
2915 break;
2916 case 97: /* expr ::= expr PLUS expr */
2917 #line 741 "pikchr.y"
2918 {yylhsminor.yy265=yymsp[-2].minor.yy265+yymsp[0].minor.yy265;}
2919 #line 2944 "pikchr.c"
2920 yymsp[-2].minor.yy265 = yylhsminor.yy265;
2921 break;
2922 case 98: /* expr ::= expr MINUS expr */
2923 #line 742 "pikchr.y"
2924 {yylhsminor.yy265=yymsp[-2].minor.yy265-yymsp[0].minor.yy265;}
2925 #line 2950 "pikchr.c"
2926 yymsp[-2].minor.yy265 = yylhsminor.yy265;
2927 break;
2928 case 99: /* expr ::= expr STAR expr */
2929 #line 743 "pikchr.y"
2930 {yylhsminor.yy265=yymsp[-2].minor.yy265*yymsp[0].minor.yy265;}
2931 #line 2956 "pikchr.c"
2932 yymsp[-2].minor.yy265 = yylhsminor.yy265;
2933 break;
2934 case 100: /* expr ::= expr SLASH expr */
2935 #line 744 "pikchr.y"
2936 {
2937 if( yymsp[0].minor.yy265==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy265 = 0.0; }
2938 else{ yylhsminor.yy265 = yymsp[-2].minor.yy265/yymsp[0].minor.yy265; }
2939 }
2940 #line 2965 "pikchr.c"
2941 yymsp[-2].minor.yy265 = yylhsminor.yy265;
2942 break;
2943 case 101: /* expr ::= MINUS expr */
2944 #line 748 "pikchr.y"
2945 {yymsp[-1].minor.yy265=-yymsp[0].minor.yy265;}
2946 #line 2971 "pikchr.c"
2947 break;
2948 case 102: /* expr ::= PLUS expr */
2949 #line 749 "pikchr.y"
2950 {yymsp[-1].minor.yy265=yymsp[0].minor.yy265;}
2951 #line 2976 "pikchr.c"
2952 break;
2953 case 103: /* expr ::= LP expr RP */
2954 #line 750 "pikchr.y"
2955 {yymsp[-2].minor.yy265=yymsp[-1].minor.yy265;}
2956 #line 2981 "pikchr.c"
2957 break;
2958 case 104: /* expr ::= LP FILL|COLOR|THICKNESS RP */
2959 #line 751 "pikchr.y"
2960 {yymsp[-2].minor.yy265=pik_get_var(p,&yymsp[-1].minor.yy0);}
2961 #line 2986 "pikchr.c"
2962 break;
2963 case 105: /* expr ::= NUMBER */
2964 #line 752 "pikchr.y"
2965 {yylhsminor.yy265=pik_atof(&yymsp[0].minor.yy0);}
2966 #line 2991 "pikchr.c"
2967 yymsp[0].minor.yy265 = yylhsminor.yy265;
2968 break;
2969 case 106: /* expr ::= ID */
2970 #line 753 "pikchr.y"
2971 {yylhsminor.yy265=pik_get_var(p,&yymsp[0].minor.yy0);}
2972 #line 2997 "pikchr.c"
2973 yymsp[0].minor.yy265 = yylhsminor.yy265;
2974 break;
2975 case 107: /* expr ::= FUNC1 LP expr RP */
2976 #line 754 "pikchr.y"
2977 {yylhsminor.yy265 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy265,0.0);}
2978 #line 3003 "pikchr.c"
2979 yymsp[-3].minor.yy265 = yylhsminor.yy265;
2980 break;
2981 case 108: /* expr ::= FUNC2 LP expr COMMA expr RP */
2982 #line 755 "pikchr.y"
2983 {yylhsminor.yy265 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy265,yymsp[-1].minor.yy265);}
2984 #line 3009 "pikchr.c"
2985 yymsp[-5].minor.yy265 = yylhsminor.yy265;
2986 break;
2987 case 109: /* expr ::= DIST LP position COMMA position RP */
2988 #line 756 "pikchr.y"
2989 {yymsp[-5].minor.yy265 = pik_dist(&yymsp[-3].minor.yy43,&yymsp[-1].minor.yy43);}
2990 #line 3015 "pikchr.c"
 
2991 break;
2992 case 110: /* expr ::= place2 DOT_XY X */
2993 #line 757 "pikchr.y"
2994 {yylhsminor.yy265 = yymsp[-2].minor.yy43.x;}
2995 #line 3020 "pikchr.c"
2996 yymsp[-2].minor.yy265 = yylhsminor.yy265;
2997 break;
2998 case 111: /* expr ::= place2 DOT_XY Y */
2999 #line 758 "pikchr.y"
3000 {yylhsminor.yy265 = yymsp[-2].minor.yy43.y;}
3001 #line 3026 "pikchr.c"
3002 yymsp[-2].minor.yy265 = yylhsminor.yy265;
3003 break;
3004 case 112: /* expr ::= object DOT_L numproperty */
3005 case 113: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==113);
3006 case 114: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==114);
3007 #line 759 "pikchr.y"
3008 {yylhsminor.yy265=pik_property_of(yymsp[-2].minor.yy38,&yymsp[0].minor.yy0);}
3009 #line 3034 "pikchr.c"
3010 yymsp[-2].minor.yy265 = yylhsminor.yy265;
 
 
 
 
 
 
 
 
3011 break;
3012 default:
3013 /* (115) lvalue ::= ID */ yytestcase(yyruleno==115);
3014 /* (116) lvalue ::= FILL */ yytestcase(yyruleno==116);
3015 /* (117) lvalue ::= COLOR */ yytestcase(yyruleno==117);
3016 /* (118) lvalue ::= THICKNESS */ yytestcase(yyruleno==118);
3017 /* (119) rvalue ::= expr */ yytestcase(yyruleno==119);
3018 /* (120) print ::= PRINT */ yytestcase(yyruleno==120);
3019 /* (121) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=121);
3020 /* (122) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==122);
3021 /* (123) direction ::= UP */ yytestcase(yyruleno==123);
3022 /* (124) direction ::= DOWN */ yytestcase(yyruleno==124);
3023 /* (125) direction ::= LEFT */ yytestcase(yyruleno==125);
3024 /* (126) direction ::= RIGHT */ yytestcase(yyruleno==126);
3025 /* (127) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=127);
3026 /* (128) attribute_list ::= alist */ yytestcase(yyruleno==128);
3027 /* (129) alist ::= */ yytestcase(yyruleno==129);
3028 /* (130) alist ::= alist attribute */ yytestcase(yyruleno==130);
3029 /* (131) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=131);
3030 /* (132) attribute ::= WITH withclause */ yytestcase(yyruleno==132);
3031 /* (133) go ::= GO */ yytestcase(yyruleno==133);
3032 /* (134) go ::= */ yytestcase(yyruleno==134);
3033 /* (135) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==135);
3034 /* (136) even ::= EVEN WITH */ yytestcase(yyruleno==136);
3035 /* (137) dashproperty ::= DOTTED */ yytestcase(yyruleno==137);
3036 /* (138) dashproperty ::= DASHED */ yytestcase(yyruleno==138);
3037 /* (139) colorproperty ::= FILL */ yytestcase(yyruleno==139);
3038 /* (140) colorproperty ::= COLOR */ yytestcase(yyruleno==140);
3039 /* (141) position ::= place */ yytestcase(yyruleno==141);
3040 /* (142) between ::= WAY BETWEEN */ yytestcase(yyruleno==142);
3041 /* (143) between ::= BETWEEN */ yytestcase(yyruleno==143);
3042 /* (144) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==144);
3043 /* (145) place ::= place2 */ yytestcase(yyruleno==145);
3044 /* (146) edge ::= CENTER */ yytestcase(yyruleno==146);
3045 /* (147) edge ::= EDGEPT */ yytestcase(yyruleno==147);
3046 /* (148) edge ::= TOP */ yytestcase(yyruleno==148);
3047 /* (149) edge ::= BOTTOM */ yytestcase(yyruleno==149);
3048 /* (150) edge ::= START */ yytestcase(yyruleno==150);
3049 /* (151) edge ::= END */ yytestcase(yyruleno==151);
3050 /* (152) edge ::= RIGHT */ yytestcase(yyruleno==152);
3051 /* (153) edge ::= LEFT */ yytestcase(yyruleno==153);
3052 /* (154) object ::= objectname */ yytestcase(yyruleno==154);
3053 break;
3054 /********** End reduce actions ************************************************/
3055 };
3056 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
3057 yygoto = yyRuleInfoLhs[yyruleno];
@@ -3115,11 +3134,11 @@
3115 pik_error(p, &TOKEN, "syntax error");
3116 }else{
3117 pik_error(p, 0, "syntax error");
3118 }
3119 UNUSED_PARAMETER(yymajor);
3120 #line 3145 "pikchr.c"
3121 /************ End %syntax_error code ******************************************/
3122 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
3123 pik_parserCTX_STORE
3124 }
3125
@@ -3348,11 +3367,11 @@
3348 #else
3349 (void)iToken;
3350 return 0;
3351 #endif
3352 }
3353 #line 764 "pikchr.y"
3354
3355
3356
3357 /* Chart of the 148 official CSS color names with their
3358 ** corresponding RGB values thru Color Module Level 4:
@@ -5032,11 +5051,11 @@
5032 int i; /* Loop counter */
5033 int iBump = 0; /* Bump the location of the error cursor */
5034 char zLineno[20]; /* Buffer in which to generate line numbers */
5035
5036 iErrPt = (int)(pErr->z - p->sIn.z);
5037 if( iErrPt>=p->sIn.n ){
5038 iErrPt = p->sIn.n-1;
5039 iBump = 1;
5040 }else{
5041 while( iErrPt>0 && (p->sIn.z[iErrPt]=='\n' || p->sIn.z[iErrPt]=='\r') ){
5042 iErrPt--;
@@ -7095,10 +7114,11 @@
7095 { "the", 3, T_THE, 0, 0 },
7096 { "then", 4, T_THEN, 0, 0 },
7097 { "thick", 5, T_THICK, 0, 0 },
7098 { "thickness", 9, T_THICKNESS, 0, 0 },
7099 { "thin", 4, T_THIN, 0, 0 },
 
7100 { "to", 2, T_TO, 0, 0 },
7101 { "top", 3, T_TOP, 0, CP_N },
7102 { "until", 5, T_UNTIL, 0, 0 },
7103 { "up", 2, T_UP, DIR_UP, 0 },
7104 { "vertex", 6, T_VERTEX, 0, 0 },
@@ -7744,11 +7764,11 @@
7744 static char *readFile(const char *zFilename){
7745 FILE *in;
7746 size_t n;
7747 size_t nUsed = 0;
7748 size_t nAlloc = 0;
7749 char *z = 0, *zNew;
7750 in = strcmp(zFilename,"-")==0 ? stdin : fopen(zFilename, "rb");
7751 if( in==0 ){
7752 fprintf(stderr, "cannot open \"%s\" for reading\n", zFilename);
7753 return 0;
7754 }
@@ -7940,6 +7960,6 @@
7940
7941
7942 #endif /* PIKCHR_TCL */
7943
7944
7945 #line 7970 "pikchr.c"
7946
--- src/pikchr.c
+++ src/pikchr.c
@@ -566,20 +566,21 @@
566 #define T_TOP 83
567 #define T_BOTTOM 84
568 #define T_START 85
569 #define T_END 86
570 #define T_IN 87
571 #define T_THIS 88
572 #define T_DOT_U 89
573 #define T_LAST 90
574 #define T_NUMBER 91
575 #define T_FUNC1 92
576 #define T_FUNC2 93
577 #define T_DIST 94
578 #define T_DOT_XY 95
579 #define T_X 96
580 #define T_Y 97
581 #define T_DOT_L 98
582 #endif
583 /**************** End token definitions ***************************************/
584
585 /* The next sections is a series of control #defines.
586 ** various aspects of the generated parser.
@@ -635,22 +636,22 @@
636 #ifndef INTERFACE
637 # define INTERFACE 1
638 #endif
639 /************* Begin control #defines *****************************************/
640 #define YYCODETYPE unsigned char
641 #define YYNOCODE 135
642 #define YYACTIONTYPE unsigned short int
643 #define pik_parserTOKENTYPE PToken
644 typedef union {
645 int yyinit;
646 pik_parserTOKENTYPE yy0;
647 PRel yy10;
648 PObj* yy36;
649 PPoint yy79;
650 PNum yy153;
651 short int yy164;
652 PList* yy227;
653 } YYMINORTYPE;
654 #ifndef YYSTACKDEPTH
655 #define YYSTACKDEPTH 100
656 #endif
657 #define pik_parserARG_SDECL
@@ -663,21 +664,21 @@
664 #define pik_parserCTX_PARAM ,p
665 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
666 #define pik_parserCTX_STORE yypParser->p=p;
667 #define YYFALLBACK 1
668 #define YYNSTATE 164
669 #define YYNRULE 156
670 #define YYNRULE_WITH_ACTION 116
671 #define YYNTOKEN 99
672 #define YY_MAX_SHIFT 163
673 #define YY_MIN_SHIFTREDUCE 287
674 #define YY_MAX_SHIFTREDUCE 442
675 #define YY_ERROR_ACTION 443
676 #define YY_ACCEPT_ACTION 444
677 #define YY_NO_ACTION 445
678 #define YY_MIN_REDUCE 446
679 #define YY_MAX_REDUCE 601
680 /************* End control #defines *******************************************/
681 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
682
683 /* Define the yytestcase() macro to be a no-op if is not already defined
684 ** otherwise.
@@ -740,333 +741,341 @@
741 ** yy_reduce_ofst[] For each state, the offset into yy_action for
742 ** shifting non-terminals after a reduce.
743 ** yy_default[] Default action for each state.
744 **
745 *********** Begin parsing tables **********************************************/
746 #define YY_ACTTAB_COUNT (1303)
747 static const YYACTIONTYPE yy_action[] = {
748 /* 0 */ 575, 495, 161, 119, 25, 452, 29, 74, 129, 148,
749 /* 10 */ 575, 492, 161, 119, 453, 113, 120, 161, 119, 530,
750 /* 20 */ 427, 428, 339, 559, 81, 30, 560, 561, 575, 64,
751 /* 30 */ 63, 62, 61, 322, 323, 9, 8, 33, 149, 32,
752 /* 40 */ 7, 71, 127, 38, 335, 66, 48, 37, 28, 339,
753 /* 50 */ 339, 339, 339, 425, 426, 340, 341, 342, 343, 344,
754 /* 60 */ 345, 346, 347, 348, 474, 528, 161, 119, 577, 77,
755 /* 70 */ 577, 73, 376, 148, 474, 533, 161, 119, 112, 113,
756 /* 80 */ 120, 161, 119, 128, 427, 428, 339, 357, 81, 531,
757 /* 90 */ 161, 119, 474, 36, 330, 13, 306, 322, 323, 9,
758 /* 100 */ 8, 33, 149, 32, 7, 71, 127, 328, 335, 66,
759 /* 110 */ 579, 310, 31, 339, 339, 339, 339, 425, 426, 340,
760 /* 120 */ 341, 342, 343, 344, 345, 346, 347, 348, 394, 435,
761 /* 130 */ 46, 59, 60, 64, 63, 62, 61, 54, 51, 376,
762 /* 140 */ 69, 108, 2, 47, 403, 83, 297, 435, 375, 84,
763 /* 150 */ 117, 80, 35, 308, 79, 133, 122, 126, 441, 440,
764 /* 160 */ 299, 123, 3, 404, 405, 406, 408, 80, 298, 308,
765 /* 170 */ 79, 4, 411, 412, 413, 414, 441, 440, 350, 350,
766 /* 180 */ 350, 350, 350, 350, 350, 350, 350, 350, 62, 61,
767 /* 190 */ 67, 434, 1, 75, 378, 158, 74, 76, 148, 411,
768 /* 200 */ 412, 413, 414, 124, 113, 120, 161, 119, 106, 434,
769 /* 210 */ 436, 437, 438, 439, 5, 375, 6, 117, 393, 155,
770 /* 220 */ 154, 153, 394, 435, 69, 59, 60, 149, 436, 437,
771 /* 230 */ 438, 439, 535, 376, 398, 399, 2, 424, 427, 428,
772 /* 240 */ 339, 156, 156, 156, 423, 394, 435, 65, 59, 60,
773 /* 250 */ 162, 131, 441, 440, 397, 72, 376, 148, 118, 2,
774 /* 260 */ 380, 157, 125, 113, 120, 161, 119, 339, 339, 339,
775 /* 270 */ 339, 425, 426, 535, 11, 441, 440, 394, 356, 535,
776 /* 280 */ 59, 60, 535, 379, 159, 434, 149, 12, 102, 446,
777 /* 290 */ 432, 42, 138, 14, 435, 139, 301, 302, 303, 36,
778 /* 300 */ 305, 430, 106, 16, 436, 437, 438, 439, 434, 375,
779 /* 310 */ 18, 117, 393, 155, 154, 153, 44, 142, 140, 64,
780 /* 320 */ 63, 62, 61, 441, 440, 106, 19, 436, 437, 438,
781 /* 330 */ 439, 45, 375, 20, 117, 393, 155, 154, 153, 68,
782 /* 340 */ 55, 114, 64, 63, 62, 61, 147, 146, 394, 473,
783 /* 350 */ 359, 59, 60, 43, 23, 391, 434, 106, 26, 376,
784 /* 360 */ 57, 58, 42, 49, 375, 392, 117, 393, 155, 154,
785 /* 370 */ 153, 64, 63, 62, 61, 436, 437, 438, 439, 384,
786 /* 380 */ 382, 383, 22, 21, 377, 473, 160, 70, 39, 445,
787 /* 390 */ 24, 445, 145, 141, 431, 142, 140, 64, 63, 62,
788 /* 400 */ 61, 394, 15, 445, 59, 60, 64, 63, 62, 61,
789 /* 410 */ 391, 445, 376, 445, 445, 42, 445, 445, 55, 391,
790 /* 420 */ 156, 156, 156, 445, 147, 146, 445, 52, 106, 445,
791 /* 430 */ 445, 43, 445, 445, 445, 375, 445, 117, 393, 155,
792 /* 440 */ 154, 153, 445, 394, 143, 445, 59, 60, 64, 63,
793 /* 450 */ 62, 61, 313, 445, 376, 378, 158, 42, 445, 445,
794 /* 460 */ 22, 21, 121, 447, 454, 29, 445, 445, 24, 450,
795 /* 470 */ 145, 141, 431, 142, 140, 64, 63, 62, 61, 445,
796 /* 480 */ 163, 106, 445, 445, 444, 27, 445, 445, 375, 445,
797 /* 490 */ 117, 393, 155, 154, 153, 445, 55, 74, 445, 148,
798 /* 500 */ 445, 445, 147, 146, 497, 113, 120, 161, 119, 43,
799 /* 510 */ 445, 394, 445, 445, 59, 60, 445, 445, 445, 118,
800 /* 520 */ 445, 445, 376, 106, 445, 42, 445, 445, 149, 445,
801 /* 530 */ 375, 445, 117, 393, 155, 154, 153, 445, 22, 21,
802 /* 540 */ 394, 144, 445, 59, 60, 445, 24, 445, 145, 141,
803 /* 550 */ 431, 376, 445, 445, 42, 445, 132, 130, 394, 445,
804 /* 560 */ 445, 59, 60, 109, 447, 454, 29, 445, 445, 376,
805 /* 570 */ 450, 445, 42, 445, 394, 445, 445, 59, 60, 445,
806 /* 580 */ 445, 163, 445, 445, 445, 102, 27, 445, 42, 445,
807 /* 590 */ 445, 106, 445, 64, 63, 62, 61, 445, 375, 445,
808 /* 600 */ 117, 393, 155, 154, 153, 394, 355, 445, 59, 60,
809 /* 610 */ 445, 445, 445, 445, 445, 74, 376, 148, 445, 40,
810 /* 620 */ 106, 445, 496, 113, 120, 161, 119, 375, 445, 117,
811 /* 630 */ 393, 155, 154, 153, 445, 448, 454, 29, 106, 445,
812 /* 640 */ 445, 450, 445, 445, 445, 375, 149, 117, 393, 155,
813 /* 650 */ 154, 153, 163, 445, 106, 445, 445, 27, 445, 445,
814 /* 660 */ 445, 375, 445, 117, 393, 155, 154, 153, 394, 445,
815 /* 670 */ 445, 59, 60, 64, 63, 62, 61, 445, 445, 376,
816 /* 680 */ 445, 445, 41, 445, 445, 106, 354, 64, 63, 62,
817 /* 690 */ 61, 445, 375, 445, 117, 393, 155, 154, 153, 445,
818 /* 700 */ 445, 445, 74, 445, 148, 445, 88, 445, 445, 490,
819 /* 710 */ 113, 120, 161, 119, 445, 120, 161, 119, 17, 74,
820 /* 720 */ 445, 148, 110, 110, 445, 445, 484, 113, 120, 161,
821 /* 730 */ 119, 445, 445, 149, 74, 445, 148, 152, 445, 445,
822 /* 740 */ 445, 483, 113, 120, 161, 119, 445, 445, 106, 445,
823 /* 750 */ 149, 445, 445, 107, 445, 375, 445, 117, 393, 155,
824 /* 760 */ 154, 153, 120, 161, 119, 149, 478, 74, 445, 148,
825 /* 770 */ 445, 88, 445, 445, 480, 113, 120, 161, 119, 445,
826 /* 780 */ 120, 161, 119, 74, 152, 148, 10, 479, 479, 445,
827 /* 790 */ 134, 113, 120, 161, 119, 445, 445, 445, 149, 74,
828 /* 800 */ 445, 148, 152, 445, 445, 445, 517, 113, 120, 161,
829 /* 810 */ 119, 445, 445, 74, 149, 148, 445, 445, 445, 445,
830 /* 820 */ 137, 113, 120, 161, 119, 74, 445, 148, 445, 445,
831 /* 830 */ 149, 445, 525, 113, 120, 161, 119, 445, 74, 445,
832 /* 840 */ 148, 445, 445, 445, 149, 527, 113, 120, 161, 119,
833 /* 850 */ 445, 445, 74, 445, 148, 445, 149, 445, 445, 524,
834 /* 860 */ 113, 120, 161, 119, 74, 445, 148, 445, 445, 149,
835 /* 870 */ 445, 526, 113, 120, 161, 119, 445, 445, 74, 445,
836 /* 880 */ 148, 445, 88, 149, 445, 523, 113, 120, 161, 119,
837 /* 890 */ 445, 120, 161, 119, 74, 149, 148, 85, 111, 111,
838 /* 900 */ 445, 522, 113, 120, 161, 119, 120, 161, 119, 149,
839 /* 910 */ 74, 445, 148, 152, 445, 445, 445, 521, 113, 120,
840 /* 920 */ 161, 119, 445, 445, 74, 149, 148, 445, 152, 445,
841 /* 930 */ 445, 520, 113, 120, 161, 119, 74, 445, 148, 445,
842 /* 940 */ 445, 149, 445, 519, 113, 120, 161, 119, 445, 74,
843 /* 950 */ 445, 148, 445, 445, 445, 149, 150, 113, 120, 161,
844 /* 960 */ 119, 445, 445, 74, 445, 148, 445, 149, 445, 445,
845 /* 970 */ 151, 113, 120, 161, 119, 74, 445, 148, 445, 445,
846 /* 980 */ 149, 445, 136, 113, 120, 161, 119, 445, 445, 74,
847 /* 990 */ 445, 148, 107, 445, 149, 445, 135, 113, 120, 161,
848 /* 1000 */ 119, 120, 161, 119, 445, 463, 149, 445, 88, 445,
849 /* 1010 */ 445, 445, 78, 78, 445, 445, 107, 120, 161, 119,
850 /* 1020 */ 149, 445, 445, 152, 82, 120, 161, 119, 445, 463,
851 /* 1030 */ 445, 466, 86, 34, 445, 88, 445, 569, 445, 152,
852 /* 1040 */ 445, 120, 161, 119, 120, 161, 119, 152, 107, 445,
853 /* 1050 */ 445, 475, 64, 63, 62, 61, 445, 120, 161, 119,
854 /* 1060 */ 98, 451, 445, 152, 89, 396, 152, 90, 445, 120,
855 /* 1070 */ 161, 119, 445, 120, 161, 119, 120, 161, 119, 152,
856 /* 1080 */ 445, 64, 63, 62, 61, 445, 445, 445, 445, 445,
857 /* 1090 */ 87, 152, 445, 99, 395, 152, 100, 445, 152, 120,
858 /* 1100 */ 161, 119, 120, 161, 119, 120, 161, 119, 445, 101,
859 /* 1110 */ 64, 63, 62, 61, 445, 445, 445, 445, 120, 161,
860 /* 1120 */ 119, 152, 91, 391, 152, 445, 445, 152, 103, 445,
861 /* 1130 */ 445, 120, 161, 119, 445, 92, 445, 120, 161, 119,
862 /* 1140 */ 152, 93, 445, 445, 120, 161, 119, 104, 445, 445,
863 /* 1150 */ 120, 161, 119, 152, 445, 445, 120, 161, 119, 152,
864 /* 1160 */ 445, 445, 445, 445, 94, 445, 152, 445, 445, 445,
865 /* 1170 */ 105, 445, 152, 120, 161, 119, 445, 95, 152, 120,
866 /* 1180 */ 161, 119, 96, 445, 445, 445, 120, 161, 119, 445,
867 /* 1190 */ 445, 120, 161, 119, 97, 152, 445, 445, 445, 445,
868 /* 1200 */ 549, 152, 445, 120, 161, 119, 548, 445, 152, 120,
869 /* 1210 */ 161, 119, 445, 152, 445, 120, 161, 119, 445, 445,
870 /* 1220 */ 445, 445, 445, 547, 445, 152, 445, 445, 445, 445,
871 /* 1230 */ 445, 152, 120, 161, 119, 546, 445, 152, 445, 115,
872 /* 1240 */ 445, 445, 116, 445, 120, 161, 119, 445, 120, 161,
873 /* 1250 */ 119, 120, 161, 119, 152, 64, 63, 62, 61, 64,
874 /* 1260 */ 63, 62, 61, 445, 445, 445, 152, 445, 445, 445,
875 /* 1270 */ 152, 445, 445, 152, 445, 445, 50, 445, 445, 445,
876 /* 1280 */ 53, 64, 63, 62, 61, 445, 445, 445, 445, 445,
877 /* 1290 */ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
878 /* 1300 */ 445, 445, 56,
879 };
880 static const YYCODETYPE yy_lookahead[] = {
881 /* 0 */ 0, 112, 113, 114, 133, 101, 102, 103, 105, 105,
882 /* 10 */ 10, 112, 113, 114, 110, 111, 112, 113, 114, 105,
883 /* 20 */ 20, 21, 22, 104, 24, 125, 107, 108, 28, 4,
884 /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 134, 39,
885 /* 40 */ 40, 41, 42, 104, 44, 45, 107, 108, 106, 49,
886 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
887 /* 60 */ 60, 61, 62, 63, 0, 112, 113, 114, 129, 130,
888 /* 70 */ 131, 103, 12, 105, 10, 112, 113, 114, 110, 111,
889 /* 80 */ 112, 113, 114, 105, 20, 21, 22, 17, 24, 112,
890 /* 90 */ 113, 114, 28, 10, 2, 25, 25, 33, 34, 35,
891 /* 100 */ 36, 37, 134, 39, 40, 41, 42, 2, 44, 45,
892 /* 110 */ 132, 28, 127, 49, 50, 51, 52, 53, 54, 55,
893 /* 120 */ 56, 57, 58, 59, 60, 61, 62, 63, 1, 2,
894 /* 130 */ 38, 4, 5, 4, 5, 6, 7, 4, 5, 12,
895 /* 140 */ 3, 81, 15, 38, 1, 115, 17, 2, 88, 115,
896 /* 150 */ 90, 24, 128, 26, 27, 12, 1, 14, 31, 32,
897 /* 160 */ 19, 18, 16, 20, 21, 22, 23, 24, 17, 26,
898 /* 170 */ 27, 15, 29, 30, 31, 32, 31, 32, 64, 65,
899 /* 180 */ 66, 67, 68, 69, 70, 71, 72, 73, 6, 7,
900 /* 190 */ 43, 64, 13, 48, 26, 27, 103, 48, 105, 29,
901 /* 200 */ 30, 31, 32, 110, 111, 112, 113, 114, 81, 64,
902 /* 210 */ 83, 84, 85, 86, 40, 88, 40, 90, 91, 92,
903 /* 220 */ 93, 94, 1, 2, 87, 4, 5, 134, 83, 84,
904 /* 230 */ 85, 86, 48, 12, 96, 97, 15, 41, 20, 21,
905 /* 240 */ 22, 20, 21, 22, 41, 1, 2, 98, 4, 5,
906 /* 250 */ 82, 47, 31, 32, 17, 103, 12, 105, 90, 15,
907 /* 260 */ 26, 27, 110, 111, 112, 113, 114, 49, 50, 51,
908 /* 270 */ 52, 53, 54, 89, 25, 31, 32, 1, 17, 95,
909 /* 280 */ 4, 5, 98, 26, 27, 64, 134, 74, 12, 0,
910 /* 290 */ 79, 15, 78, 3, 2, 80, 20, 21, 22, 10,
911 /* 300 */ 24, 79, 81, 3, 83, 84, 85, 86, 64, 88,
912 /* 310 */ 3, 90, 91, 92, 93, 94, 38, 2, 3, 4,
913 /* 320 */ 5, 6, 7, 31, 32, 81, 3, 83, 84, 85,
914 /* 330 */ 86, 16, 88, 3, 90, 91, 92, 93, 94, 3,
915 /* 340 */ 25, 95, 4, 5, 6, 7, 31, 32, 1, 2,
916 /* 350 */ 76, 4, 5, 38, 25, 17, 64, 81, 15, 12,
917 /* 360 */ 15, 15, 15, 25, 88, 17, 90, 91, 92, 93,
918 /* 370 */ 94, 4, 5, 6, 7, 83, 84, 85, 86, 28,
919 /* 380 */ 28, 28, 67, 68, 12, 38, 89, 3, 11, 135,
920 /* 390 */ 75, 135, 77, 78, 79, 2, 3, 4, 5, 6,
921 /* 400 */ 7, 1, 35, 135, 4, 5, 4, 5, 6, 7,
922 /* 410 */ 17, 135, 12, 135, 135, 15, 135, 135, 25, 17,
923 /* 420 */ 20, 21, 22, 135, 31, 32, 135, 25, 81, 135,
924 /* 430 */ 135, 38, 135, 135, 135, 88, 135, 90, 91, 92,
925 /* 440 */ 93, 94, 135, 1, 2, 135, 4, 5, 4, 5,
926 /* 450 */ 6, 7, 8, 135, 12, 26, 27, 15, 135, 135,
927 /* 460 */ 67, 68, 99, 100, 101, 102, 135, 135, 75, 106,
928 /* 470 */ 77, 78, 79, 2, 3, 4, 5, 6, 7, 135,
929 /* 480 */ 117, 81, 135, 135, 121, 122, 135, 135, 88, 135,
930 /* 490 */ 90, 91, 92, 93, 94, 135, 25, 103, 135, 105,
931 /* 500 */ 135, 135, 31, 32, 110, 111, 112, 113, 114, 38,
932 /* 510 */ 135, 1, 135, 135, 4, 5, 135, 135, 135, 90,
933 /* 520 */ 135, 135, 12, 81, 135, 15, 135, 135, 134, 135,
934 /* 530 */ 88, 135, 90, 91, 92, 93, 94, 135, 67, 68,
935 /* 540 */ 1, 2, 135, 4, 5, 135, 75, 135, 77, 78,
936 /* 550 */ 79, 12, 135, 135, 15, 135, 46, 47, 1, 135,
937 /* 560 */ 135, 4, 5, 99, 100, 101, 102, 135, 135, 12,
938 /* 570 */ 106, 135, 15, 135, 1, 135, 135, 4, 5, 135,
939 /* 580 */ 135, 117, 135, 135, 135, 12, 122, 135, 15, 135,
940 /* 590 */ 135, 81, 135, 4, 5, 6, 7, 135, 88, 135,
941 /* 600 */ 90, 91, 92, 93, 94, 1, 17, 135, 4, 5,
942 /* 610 */ 135, 135, 135, 135, 135, 103, 12, 105, 135, 15,
943 /* 620 */ 81, 135, 110, 111, 112, 113, 114, 88, 135, 90,
944 /* 630 */ 91, 92, 93, 94, 135, 100, 101, 102, 81, 135,
945 /* 640 */ 135, 106, 135, 135, 135, 88, 134, 90, 91, 92,
946 /* 650 */ 93, 94, 117, 135, 81, 135, 135, 122, 135, 135,
947 /* 660 */ 135, 88, 135, 90, 91, 92, 93, 94, 1, 135,
948 /* 670 */ 135, 4, 5, 4, 5, 6, 7, 135, 135, 12,
949 /* 680 */ 135, 135, 15, 135, 135, 81, 17, 4, 5, 6,
950 /* 690 */ 7, 135, 88, 135, 90, 91, 92, 93, 94, 135,
951 /* 700 */ 135, 135, 103, 135, 105, 135, 103, 135, 135, 110,
952 /* 710 */ 111, 112, 113, 114, 135, 112, 113, 114, 35, 103,
953 /* 720 */ 135, 105, 119, 120, 135, 135, 110, 111, 112, 113,
954 /* 730 */ 114, 135, 135, 134, 103, 135, 105, 134, 135, 135,
955 /* 740 */ 135, 110, 111, 112, 113, 114, 135, 135, 81, 135,
956 /* 750 */ 134, 135, 135, 103, 135, 88, 135, 90, 91, 92,
957 /* 760 */ 93, 94, 112, 113, 114, 134, 116, 103, 135, 105,
958 /* 770 */ 135, 103, 135, 135, 110, 111, 112, 113, 114, 135,
959 /* 780 */ 112, 113, 114, 103, 134, 105, 118, 119, 120, 135,
960 /* 790 */ 110, 111, 112, 113, 114, 135, 135, 135, 134, 103,
961 /* 800 */ 135, 105, 134, 135, 135, 135, 110, 111, 112, 113,
962 /* 810 */ 114, 135, 135, 103, 134, 105, 135, 135, 135, 135,
963 /* 820 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
964 /* 830 */ 134, 135, 110, 111, 112, 113, 114, 135, 103, 135,
965 /* 840 */ 105, 135, 135, 135, 134, 110, 111, 112, 113, 114,
966 /* 850 */ 135, 135, 103, 135, 105, 135, 134, 135, 135, 110,
967 /* 860 */ 111, 112, 113, 114, 103, 135, 105, 135, 135, 134,
968 /* 870 */ 135, 110, 111, 112, 113, 114, 135, 135, 103, 135,
969 /* 880 */ 105, 135, 103, 134, 135, 110, 111, 112, 113, 114,
970 /* 890 */ 135, 112, 113, 114, 103, 134, 105, 103, 119, 120,
971 /* 900 */ 135, 110, 111, 112, 113, 114, 112, 113, 114, 134,
972 /* 910 */ 103, 135, 105, 134, 135, 135, 135, 110, 111, 112,
973 /* 920 */ 113, 114, 135, 135, 103, 134, 105, 135, 134, 135,
974 /* 930 */ 135, 110, 111, 112, 113, 114, 103, 135, 105, 135,
975 /* 940 */ 135, 134, 135, 110, 111, 112, 113, 114, 135, 103,
976 /* 950 */ 135, 105, 135, 135, 135, 134, 110, 111, 112, 113,
977 /* 960 */ 114, 135, 135, 103, 135, 105, 135, 134, 135, 135,
978 /* 970 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
979 /* 980 */ 134, 135, 110, 111, 112, 113, 114, 135, 135, 103,
980 /* 990 */ 135, 105, 103, 135, 134, 135, 110, 111, 112, 113,
981 /* 1000 */ 114, 112, 113, 114, 135, 116, 134, 135, 103, 135,
982 /* 1010 */ 135, 135, 123, 124, 135, 135, 103, 112, 113, 114,
983 /* 1020 */ 134, 135, 135, 134, 119, 112, 113, 114, 135, 116,
984 /* 1030 */ 135, 126, 103, 128, 135, 103, 135, 124, 135, 134,
985 /* 1040 */ 135, 112, 113, 114, 112, 113, 114, 134, 103, 135,
986 /* 1050 */ 135, 119, 4, 5, 6, 7, 135, 112, 113, 114,
987 /* 1060 */ 103, 116, 135, 134, 103, 17, 134, 103, 135, 112,
988 /* 1070 */ 113, 114, 135, 112, 113, 114, 112, 113, 114, 134,
989 /* 1080 */ 135, 4, 5, 6, 7, 135, 135, 135, 135, 135,
990 /* 1090 */ 103, 134, 135, 103, 17, 134, 103, 135, 134, 112,
991 /* 1100 */ 113, 114, 112, 113, 114, 112, 113, 114, 135, 103,
992 /* 1110 */ 4, 5, 6, 7, 135, 135, 135, 135, 112, 113,
993 /* 1120 */ 114, 134, 103, 17, 134, 135, 135, 134, 103, 135,
994 /* 1130 */ 135, 112, 113, 114, 135, 103, 135, 112, 113, 114,
995 /* 1140 */ 134, 103, 135, 135, 112, 113, 114, 103, 135, 135,
996 /* 1150 */ 112, 113, 114, 134, 135, 135, 112, 113, 114, 134,
997 /* 1160 */ 135, 135, 135, 135, 103, 135, 134, 135, 135, 135,
998 /* 1170 */ 103, 135, 134, 112, 113, 114, 135, 103, 134, 112,
999 /* 1180 */ 113, 114, 103, 135, 135, 135, 112, 113, 114, 135,
1000 /* 1190 */ 135, 112, 113, 114, 103, 134, 135, 135, 135, 135,
1001 /* 1200 */ 103, 134, 135, 112, 113, 114, 103, 135, 134, 112,
1002 /* 1210 */ 113, 114, 135, 134, 135, 112, 113, 114, 135, 135,
1003 /* 1220 */ 135, 135, 135, 103, 135, 134, 135, 135, 135, 135,
1004 /* 1230 */ 135, 134, 112, 113, 114, 103, 135, 134, 135, 103,
1005 /* 1240 */ 135, 135, 103, 135, 112, 113, 114, 135, 112, 113,
1006 /* 1250 */ 114, 112, 113, 114, 134, 4, 5, 6, 7, 4,
1007 /* 1260 */ 5, 6, 7, 135, 135, 135, 134, 135, 135, 135,
1008 /* 1270 */ 134, 135, 135, 134, 135, 135, 25, 135, 135, 135,
1009 /* 1280 */ 25, 4, 5, 6, 7, 135, 135, 135, 135, 135,
1010 /* 1290 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1011 /* 1300 */ 135, 135, 25, 135, 135, 135, 135, 135, 135, 135,
1012 /* 1310 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1013 /* 1320 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1014 /* 1330 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1015 /* 1340 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1016 /* 1350 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1017 /* 1360 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1018 /* 1370 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1019 /* 1380 */ 135, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1020 /* 1390 */ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1021 /* 1400 */ 99, 99,
1022 };
1023 #define YY_SHIFT_COUNT (163)
1024 #define YY_SHIFT_MIN (0)
1025 #define YY_SHIFT_MAX (1277)
1026 static const unsigned short int yy_shift_ofst[] = {
1027 /* 0 */ 143, 127, 221, 244, 244, 244, 244, 244, 244, 244,
1028 /* 10 */ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1029 /* 20 */ 244, 244, 244, 244, 244, 244, 244, 276, 510, 557,
1030 /* 30 */ 276, 143, 347, 347, 0, 64, 143, 573, 557, 573,
1031 /* 40 */ 400, 400, 400, 442, 539, 557, 557, 557, 557, 557,
1032 /* 50 */ 557, 604, 557, 557, 667, 557, 557, 557, 557, 557,
1033 /* 60 */ 557, 557, 557, 557, 557, 218, 60, 60, 60, 60,
1034 /* 70 */ 60, 145, 315, 393, 471, 292, 292, 170, 71, 1303,
1035 /* 80 */ 1303, 1303, 1303, 114, 114, 338, 402, 129, 444, 367,
1036 /* 90 */ 683, 589, 1251, 669, 1255, 1048, 1277, 1077, 1106, 25,
1037 /* 100 */ 25, 25, 184, 25, 25, 25, 168, 25, 429, 83,
1038 /* 110 */ 92, 105, 70, 133, 138, 182, 182, 234, 257, 137,
1039 /* 120 */ 149, 289, 141, 155, 151, 146, 156, 147, 174, 176,
1040 /* 130 */ 196, 203, 204, 179, 237, 249, 213, 261, 211, 214,
1041 /* 140 */ 215, 222, 290, 300, 307, 278, 323, 330, 336, 246,
1042 /* 150 */ 274, 329, 246, 343, 345, 346, 348, 351, 352, 353,
1043 /* 160 */ 372, 297, 384, 377,
1044 };
1045 #define YY_REDUCE_COUNT (82)
1046 #define YY_REDUCE_MIN (-129)
1047 #define YY_REDUCE_MAX (1139)
1048 static const short yy_reduce_ofst[] = {
1049 /* 0 */ 363, -96, -32, 93, 152, 394, 512, 599, 616, 631,
1050 /* 10 */ 664, 680, 696, 710, 722, 735, 749, 761, 775, 791,
1051 /* 20 */ 807, 821, 833, 846, 860, 872, 886, 889, 668, 905,
1052 /* 30 */ 913, 464, 603, 779, -61, -61, 535, 650, 932, 945,
1053 /* 40 */ 794, 929, 957, 961, 964, 987, 990, 993, 1006, 1019,
1054 /* 50 */ 1025, 1032, 1038, 1044, 1061, 1067, 1074, 1079, 1091, 1097,
1055 /* 60 */ 1103, 1120, 1132, 1136, 1139, -81, -111, -101, -47, -37,
1056 /* 70 */ -23, -22, -129, -129, -129, -97, -86, -58, -100, -15,
1057 /* 80 */ 30, 34, 24,
1058 };
1059 static const YYACTIONTYPE yy_default[] = {
1060 /* 0 */ 449, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1061 /* 10 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1062 /* 20 */ 443, 443, 443, 443, 443, 443, 443, 443, 473, 576,
1063 /* 30 */ 443, 449, 580, 485, 581, 581, 449, 443, 443, 443,
1064 /* 40 */ 443, 443, 443, 443, 443, 443, 443, 443, 477, 443,
1065 /* 50 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1066 /* 60 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1067 /* 70 */ 443, 443, 443, 443, 443, 443, 443, 443, 455, 470,
1068 /* 80 */ 508, 508, 576, 468, 493, 443, 443, 443, 471, 443,
1069 /* 90 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 488,
1070 /* 100 */ 486, 476, 459, 512, 511, 510, 443, 566, 443, 443,
1071 /* 110 */ 443, 443, 443, 588, 443, 545, 544, 540, 443, 532,
1072 /* 120 */ 529, 443, 443, 443, 443, 443, 443, 491, 443, 443,
1073 /* 130 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1074 /* 140 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 592,
1075 /* 150 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1076 /* 160 */ 443, 601, 443, 443,
1077 };
1078 /********** End of lemon-generated parsing tables *****************************/
1079
1080 /* The next table maps tokens (terminal symbols) into fallback tokens.
1081 ** If a construct like the following:
@@ -1170,10 +1179,11 @@
1179 0, /* TOP => nothing */
1180 0, /* BOTTOM => nothing */
1181 0, /* START => nothing */
1182 0, /* END => nothing */
1183 0, /* IN => nothing */
1184 0, /* THIS => nothing */
1185 0, /* DOT_U => nothing */
1186 0, /* LAST => nothing */
1187 0, /* NUMBER => nothing */
1188 0, /* FUNC1 => nothing */
1189 0, /* FUNC2 => nothing */
@@ -1356,56 +1366,57 @@
1366 /* 83 */ "TOP",
1367 /* 84 */ "BOTTOM",
1368 /* 85 */ "START",
1369 /* 86 */ "END",
1370 /* 87 */ "IN",
1371 /* 88 */ "THIS",
1372 /* 89 */ "DOT_U",
1373 /* 90 */ "LAST",
1374 /* 91 */ "NUMBER",
1375 /* 92 */ "FUNC1",
1376 /* 93 */ "FUNC2",
1377 /* 94 */ "DIST",
1378 /* 95 */ "DOT_XY",
1379 /* 96 */ "X",
1380 /* 97 */ "Y",
1381 /* 98 */ "DOT_L",
1382 /* 99 */ "statement_list",
1383 /* 100 */ "statement",
1384 /* 101 */ "unnamed_statement",
1385 /* 102 */ "basetype",
1386 /* 103 */ "expr",
1387 /* 104 */ "numproperty",
1388 /* 105 */ "edge",
1389 /* 106 */ "direction",
1390 /* 107 */ "dashproperty",
1391 /* 108 */ "colorproperty",
1392 /* 109 */ "locproperty",
1393 /* 110 */ "position",
1394 /* 111 */ "place",
1395 /* 112 */ "object",
1396 /* 113 */ "objectname",
1397 /* 114 */ "nth",
1398 /* 115 */ "textposition",
1399 /* 116 */ "rvalue",
1400 /* 117 */ "lvalue",
1401 /* 118 */ "even",
1402 /* 119 */ "relexpr",
1403 /* 120 */ "optrelexpr",
1404 /* 121 */ "document",
1405 /* 122 */ "print",
1406 /* 123 */ "prlist",
1407 /* 124 */ "pritem",
1408 /* 125 */ "prsep",
1409 /* 126 */ "attribute_list",
1410 /* 127 */ "savelist",
1411 /* 128 */ "alist",
1412 /* 129 */ "attribute",
1413 /* 130 */ "go",
1414 /* 131 */ "boolproperty",
1415 /* 132 */ "withclause",
1416 /* 133 */ "between",
1417 /* 134 */ "place2",
1418 };
1419 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1420
1421 #ifndef NDEBUG
1422 /* For tracing reduce actions, the names of all rules are required.
@@ -1497,77 +1508,78 @@
1508 /* 83 */ "place2 ::= object",
1509 /* 84 */ "place2 ::= object DOT_E edge",
1510 /* 85 */ "place2 ::= NTH VERTEX OF object",
1511 /* 86 */ "object ::= nth",
1512 /* 87 */ "object ::= nth OF|IN object",
1513 /* 88 */ "objectname ::= THIS",
1514 /* 89 */ "objectname ::= PLACENAME",
1515 /* 90 */ "objectname ::= objectname DOT_U PLACENAME",
1516 /* 91 */ "nth ::= NTH CLASSNAME",
1517 /* 92 */ "nth ::= NTH LAST CLASSNAME",
1518 /* 93 */ "nth ::= LAST CLASSNAME",
1519 /* 94 */ "nth ::= LAST",
1520 /* 95 */ "nth ::= NTH LB RB",
1521 /* 96 */ "nth ::= NTH LAST LB RB",
1522 /* 97 */ "nth ::= LAST LB RB",
1523 /* 98 */ "expr ::= expr PLUS expr",
1524 /* 99 */ "expr ::= expr MINUS expr",
1525 /* 100 */ "expr ::= expr STAR expr",
1526 /* 101 */ "expr ::= expr SLASH expr",
1527 /* 102 */ "expr ::= MINUS expr",
1528 /* 103 */ "expr ::= PLUS expr",
1529 /* 104 */ "expr ::= LP expr RP",
1530 /* 105 */ "expr ::= LP FILL|COLOR|THICKNESS RP",
1531 /* 106 */ "expr ::= NUMBER",
1532 /* 107 */ "expr ::= ID",
1533 /* 108 */ "expr ::= FUNC1 LP expr RP",
1534 /* 109 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1535 /* 110 */ "expr ::= DIST LP position COMMA position RP",
1536 /* 111 */ "expr ::= place2 DOT_XY X",
1537 /* 112 */ "expr ::= place2 DOT_XY Y",
1538 /* 113 */ "expr ::= object DOT_L numproperty",
1539 /* 114 */ "expr ::= object DOT_L dashproperty",
1540 /* 115 */ "expr ::= object DOT_L colorproperty",
1541 /* 116 */ "lvalue ::= ID",
1542 /* 117 */ "lvalue ::= FILL",
1543 /* 118 */ "lvalue ::= COLOR",
1544 /* 119 */ "lvalue ::= THICKNESS",
1545 /* 120 */ "rvalue ::= expr",
1546 /* 121 */ "print ::= PRINT",
1547 /* 122 */ "prlist ::= pritem",
1548 /* 123 */ "prlist ::= prlist prsep pritem",
1549 /* 124 */ "direction ::= UP",
1550 /* 125 */ "direction ::= DOWN",
1551 /* 126 */ "direction ::= LEFT",
1552 /* 127 */ "direction ::= RIGHT",
1553 /* 128 */ "optrelexpr ::= relexpr",
1554 /* 129 */ "attribute_list ::= alist",
1555 /* 130 */ "alist ::=",
1556 /* 131 */ "alist ::= alist attribute",
1557 /* 132 */ "attribute ::= boolproperty",
1558 /* 133 */ "attribute ::= WITH withclause",
1559 /* 134 */ "go ::= GO",
1560 /* 135 */ "go ::=",
1561 /* 136 */ "even ::= UNTIL EVEN WITH",
1562 /* 137 */ "even ::= EVEN WITH",
1563 /* 138 */ "dashproperty ::= DOTTED",
1564 /* 139 */ "dashproperty ::= DASHED",
1565 /* 140 */ "colorproperty ::= FILL",
1566 /* 141 */ "colorproperty ::= COLOR",
1567 /* 142 */ "position ::= place",
1568 /* 143 */ "between ::= WAY BETWEEN",
1569 /* 144 */ "between ::= BETWEEN",
1570 /* 145 */ "between ::= OF THE WAY BETWEEN",
1571 /* 146 */ "place ::= place2",
1572 /* 147 */ "edge ::= CENTER",
1573 /* 148 */ "edge ::= EDGEPT",
1574 /* 149 */ "edge ::= TOP",
1575 /* 150 */ "edge ::= BOTTOM",
1576 /* 151 */ "edge ::= START",
1577 /* 152 */ "edge ::= END",
1578 /* 153 */ "edge ::= RIGHT",
1579 /* 154 */ "edge ::= LEFT",
1580 /* 155 */ "object ::= objectname",
1581 };
1582 #endif /* NDEBUG */
1583
1584
1585 #if YYSTACKDEPTH<=0
@@ -1689,24 +1701,24 @@
1701 ** Note: during a reduce, the only symbols destroyed are those
1702 ** which appear on the RHS of the rule, but which are *not* used
1703 ** inside the C code.
1704 */
1705 /********* Begin destructor definitions ***************************************/
1706 case 99: /* statement_list */
1707 {
1708 #line 494 "pikchr.y"
1709 pik_elist_free(p,(yypminor->yy227));
1710 #line 1735 "pikchr.c"
1711 }
1712 break;
1713 case 100: /* statement */
1714 case 101: /* unnamed_statement */
1715 case 102: /* basetype */
1716 {
1717 #line 496 "pikchr.y"
1718 pik_elem_free(p,(yypminor->yy36));
1719 #line 1744 "pikchr.c"
1720 }
1721 break;
1722 /********* End destructor definitions *****************************************/
1723 default: break; /* If no destructor action specified: do nothing */
1724 }
@@ -1923,11 +1935,11 @@
1935 ** stack every overflows */
1936 /******** Begin %stack_overflow code ******************************************/
1937 #line 528 "pikchr.y"
1938
1939 pik_error(p, 0, "parser stack overflow");
1940 #line 1965 "pikchr.c"
1941 /******** End %stack_overflow code ********************************************/
1942 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1943 pik_parserCTX_STORE
1944 }
1945
@@ -1995,165 +2007,166 @@
2007 }
2008
2009 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
2010 ** of that rule */
2011 static const YYCODETYPE yyRuleInfoLhs[] = {
2012 121, /* (0) document ::= statement_list */
2013 99, /* (1) statement_list ::= statement */
2014 99, /* (2) statement_list ::= statement_list EOL statement */
2015 100, /* (3) statement ::= */
2016 100, /* (4) statement ::= direction */
2017 100, /* (5) statement ::= lvalue ASSIGN rvalue */
2018 100, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2019 100, /* (7) statement ::= PLACENAME COLON position */
2020 100, /* (8) statement ::= unnamed_statement */
2021 100, /* (9) statement ::= print prlist */
2022 100, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2023 100, /* (11) statement ::= ASSERT LP position EQ position RP */
2024 100, /* (12) statement ::= DEFINE ID CODEBLOCK */
2025 116, /* (13) rvalue ::= PLACENAME */
2026 124, /* (14) pritem ::= FILL */
2027 124, /* (15) pritem ::= COLOR */
2028 124, /* (16) pritem ::= THICKNESS */
2029 124, /* (17) pritem ::= rvalue */
2030 124, /* (18) pritem ::= STRING */
2031 125, /* (19) prsep ::= COMMA */
2032 101, /* (20) unnamed_statement ::= basetype attribute_list */
2033 102, /* (21) basetype ::= CLASSNAME */
2034 102, /* (22) basetype ::= STRING textposition */
2035 102, /* (23) basetype ::= LB savelist statement_list RB */
2036 127, /* (24) savelist ::= */
2037 119, /* (25) relexpr ::= expr */
2038 119, /* (26) relexpr ::= expr PERCENT */
2039 120, /* (27) optrelexpr ::= */
2040 126, /* (28) attribute_list ::= relexpr alist */
2041 129, /* (29) attribute ::= numproperty relexpr */
2042 129, /* (30) attribute ::= dashproperty expr */
2043 129, /* (31) attribute ::= dashproperty */
2044 129, /* (32) attribute ::= colorproperty rvalue */
2045 129, /* (33) attribute ::= go direction optrelexpr */
2046 129, /* (34) attribute ::= go direction even position */
2047 129, /* (35) attribute ::= CLOSE */
2048 129, /* (36) attribute ::= CHOP */
2049 129, /* (37) attribute ::= FROM position */
2050 129, /* (38) attribute ::= TO position */
2051 129, /* (39) attribute ::= THEN */
2052 129, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2053 129, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2054 129, /* (42) attribute ::= GO optrelexpr HEADING expr */
2055 129, /* (43) attribute ::= GO optrelexpr EDGEPT */
2056 129, /* (44) attribute ::= AT position */
2057 129, /* (45) attribute ::= SAME */
2058 129, /* (46) attribute ::= SAME AS object */
2059 129, /* (47) attribute ::= STRING textposition */
2060 129, /* (48) attribute ::= FIT */
2061 129, /* (49) attribute ::= BEHIND object */
2062 132, /* (50) withclause ::= DOT_E edge AT position */
2063 132, /* (51) withclause ::= edge AT position */
2064 104, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2065 131, /* (53) boolproperty ::= CW */
2066 131, /* (54) boolproperty ::= CCW */
2067 131, /* (55) boolproperty ::= LARROW */
2068 131, /* (56) boolproperty ::= RARROW */
2069 131, /* (57) boolproperty ::= LRARROW */
2070 131, /* (58) boolproperty ::= INVIS */
2071 131, /* (59) boolproperty ::= THICK */
2072 131, /* (60) boolproperty ::= THIN */
2073 131, /* (61) boolproperty ::= SOLID */
2074 115, /* (62) textposition ::= */
2075 115, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2076 110, /* (64) position ::= expr COMMA expr */
2077 110, /* (65) position ::= place PLUS expr COMMA expr */
2078 110, /* (66) position ::= place MINUS expr COMMA expr */
2079 110, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2080 110, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2081 110, /* (69) position ::= LP position COMMA position RP */
2082 110, /* (70) position ::= LP position RP */
2083 110, /* (71) position ::= expr between position AND position */
2084 110, /* (72) position ::= expr LT position COMMA position GT */
2085 110, /* (73) position ::= expr ABOVE position */
2086 110, /* (74) position ::= expr BELOW position */
2087 110, /* (75) position ::= expr LEFT OF position */
2088 110, /* (76) position ::= expr RIGHT OF position */
2089 110, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2090 110, /* (78) position ::= expr HEADING EDGEPT OF position */
2091 110, /* (79) position ::= expr EDGEPT OF position */
2092 110, /* (80) position ::= expr ON HEADING expr FROM position */
2093 110, /* (81) position ::= expr HEADING expr FROM position */
2094 111, /* (82) place ::= edge OF object */
2095 134, /* (83) place2 ::= object */
2096 134, /* (84) place2 ::= object DOT_E edge */
2097 134, /* (85) place2 ::= NTH VERTEX OF object */
2098 112, /* (86) object ::= nth */
2099 112, /* (87) object ::= nth OF|IN object */
2100 113, /* (88) objectname ::= THIS */
2101 113, /* (89) objectname ::= PLACENAME */
2102 113, /* (90) objectname ::= objectname DOT_U PLACENAME */
2103 114, /* (91) nth ::= NTH CLASSNAME */
2104 114, /* (92) nth ::= NTH LAST CLASSNAME */
2105 114, /* (93) nth ::= LAST CLASSNAME */
2106 114, /* (94) nth ::= LAST */
2107 114, /* (95) nth ::= NTH LB RB */
2108 114, /* (96) nth ::= NTH LAST LB RB */
2109 114, /* (97) nth ::= LAST LB RB */
2110 103, /* (98) expr ::= expr PLUS expr */
2111 103, /* (99) expr ::= expr MINUS expr */
2112 103, /* (100) expr ::= expr STAR expr */
2113 103, /* (101) expr ::= expr SLASH expr */
2114 103, /* (102) expr ::= MINUS expr */
2115 103, /* (103) expr ::= PLUS expr */
2116 103, /* (104) expr ::= LP expr RP */
2117 103, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2118 103, /* (106) expr ::= NUMBER */
2119 103, /* (107) expr ::= ID */
2120 103, /* (108) expr ::= FUNC1 LP expr RP */
2121 103, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2122 103, /* (110) expr ::= DIST LP position COMMA position RP */
2123 103, /* (111) expr ::= place2 DOT_XY X */
2124 103, /* (112) expr ::= place2 DOT_XY Y */
2125 103, /* (113) expr ::= object DOT_L numproperty */
2126 103, /* (114) expr ::= object DOT_L dashproperty */
2127 103, /* (115) expr ::= object DOT_L colorproperty */
2128 117, /* (116) lvalue ::= ID */
2129 117, /* (117) lvalue ::= FILL */
2130 117, /* (118) lvalue ::= COLOR */
2131 117, /* (119) lvalue ::= THICKNESS */
2132 116, /* (120) rvalue ::= expr */
2133 122, /* (121) print ::= PRINT */
2134 123, /* (122) prlist ::= pritem */
2135 123, /* (123) prlist ::= prlist prsep pritem */
2136 106, /* (124) direction ::= UP */
2137 106, /* (125) direction ::= DOWN */
2138 106, /* (126) direction ::= LEFT */
2139 106, /* (127) direction ::= RIGHT */
2140 120, /* (128) optrelexpr ::= relexpr */
2141 126, /* (129) attribute_list ::= alist */
2142 128, /* (130) alist ::= */
2143 128, /* (131) alist ::= alist attribute */
2144 129, /* (132) attribute ::= boolproperty */
2145 129, /* (133) attribute ::= WITH withclause */
2146 130, /* (134) go ::= GO */
2147 130, /* (135) go ::= */
2148 118, /* (136) even ::= UNTIL EVEN WITH */
2149 118, /* (137) even ::= EVEN WITH */
2150 107, /* (138) dashproperty ::= DOTTED */
2151 107, /* (139) dashproperty ::= DASHED */
2152 108, /* (140) colorproperty ::= FILL */
2153 108, /* (141) colorproperty ::= COLOR */
2154 110, /* (142) position ::= place */
2155 133, /* (143) between ::= WAY BETWEEN */
2156 133, /* (144) between ::= BETWEEN */
2157 133, /* (145) between ::= OF THE WAY BETWEEN */
2158 111, /* (146) place ::= place2 */
2159 105, /* (147) edge ::= CENTER */
2160 105, /* (148) edge ::= EDGEPT */
2161 105, /* (149) edge ::= TOP */
2162 105, /* (150) edge ::= BOTTOM */
2163 105, /* (151) edge ::= START */
2164 105, /* (152) edge ::= END */
2165 105, /* (153) edge ::= RIGHT */
2166 105, /* (154) edge ::= LEFT */
2167 112, /* (155) object ::= objectname */
2168 };
2169
2170 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2171 ** of symbols on the right-hand side of that rule. */
2172 static const signed char yyRuleInfoNRhs[] = {
@@ -2243,77 +2256,78 @@
2256 -1, /* (83) place2 ::= object */
2257 -3, /* (84) place2 ::= object DOT_E edge */
2258 -4, /* (85) place2 ::= NTH VERTEX OF object */
2259 -1, /* (86) object ::= nth */
2260 -3, /* (87) object ::= nth OF|IN object */
2261 -1, /* (88) objectname ::= THIS */
2262 -1, /* (89) objectname ::= PLACENAME */
2263 -3, /* (90) objectname ::= objectname DOT_U PLACENAME */
2264 -2, /* (91) nth ::= NTH CLASSNAME */
2265 -3, /* (92) nth ::= NTH LAST CLASSNAME */
2266 -2, /* (93) nth ::= LAST CLASSNAME */
2267 -1, /* (94) nth ::= LAST */
2268 -3, /* (95) nth ::= NTH LB RB */
2269 -4, /* (96) nth ::= NTH LAST LB RB */
2270 -3, /* (97) nth ::= LAST LB RB */
2271 -3, /* (98) expr ::= expr PLUS expr */
2272 -3, /* (99) expr ::= expr MINUS expr */
2273 -3, /* (100) expr ::= expr STAR expr */
2274 -3, /* (101) expr ::= expr SLASH expr */
2275 -2, /* (102) expr ::= MINUS expr */
2276 -2, /* (103) expr ::= PLUS expr */
2277 -3, /* (104) expr ::= LP expr RP */
2278 -3, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2279 -1, /* (106) expr ::= NUMBER */
2280 -1, /* (107) expr ::= ID */
2281 -4, /* (108) expr ::= FUNC1 LP expr RP */
2282 -6, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2283 -6, /* (110) expr ::= DIST LP position COMMA position RP */
2284 -3, /* (111) expr ::= place2 DOT_XY X */
2285 -3, /* (112) expr ::= place2 DOT_XY Y */
2286 -3, /* (113) expr ::= object DOT_L numproperty */
2287 -3, /* (114) expr ::= object DOT_L dashproperty */
2288 -3, /* (115) expr ::= object DOT_L colorproperty */
2289 -1, /* (116) lvalue ::= ID */
2290 -1, /* (117) lvalue ::= FILL */
2291 -1, /* (118) lvalue ::= COLOR */
2292 -1, /* (119) lvalue ::= THICKNESS */
2293 -1, /* (120) rvalue ::= expr */
2294 -1, /* (121) print ::= PRINT */
2295 -1, /* (122) prlist ::= pritem */
2296 -3, /* (123) prlist ::= prlist prsep pritem */
2297 -1, /* (124) direction ::= UP */
2298 -1, /* (125) direction ::= DOWN */
2299 -1, /* (126) direction ::= LEFT */
2300 -1, /* (127) direction ::= RIGHT */
2301 -1, /* (128) optrelexpr ::= relexpr */
2302 -1, /* (129) attribute_list ::= alist */
2303 0, /* (130) alist ::= */
2304 -2, /* (131) alist ::= alist attribute */
2305 -1, /* (132) attribute ::= boolproperty */
2306 -2, /* (133) attribute ::= WITH withclause */
2307 -1, /* (134) go ::= GO */
2308 0, /* (135) go ::= */
2309 -3, /* (136) even ::= UNTIL EVEN WITH */
2310 -2, /* (137) even ::= EVEN WITH */
2311 -1, /* (138) dashproperty ::= DOTTED */
2312 -1, /* (139) dashproperty ::= DASHED */
2313 -1, /* (140) colorproperty ::= FILL */
2314 -1, /* (141) colorproperty ::= COLOR */
2315 -1, /* (142) position ::= place */
2316 -2, /* (143) between ::= WAY BETWEEN */
2317 -1, /* (144) between ::= BETWEEN */
2318 -4, /* (145) between ::= OF THE WAY BETWEEN */
2319 -1, /* (146) place ::= place2 */
2320 -1, /* (147) edge ::= CENTER */
2321 -1, /* (148) edge ::= EDGEPT */
2322 -1, /* (149) edge ::= TOP */
2323 -1, /* (150) edge ::= BOTTOM */
2324 -1, /* (151) edge ::= START */
2325 -1, /* (152) edge ::= END */
2326 -1, /* (153) edge ::= RIGHT */
2327 -1, /* (154) edge ::= LEFT */
2328 -1, /* (155) object ::= objectname */
2329 };
2330
2331 static void yy_accept(yyParser*); /* Forward Declaration */
2332
2333 /*
@@ -2402,656 +2416,661 @@
2416 */
2417 /********** Begin reduce actions **********************************************/
2418 YYMINORTYPE yylhsminor;
2419 case 0: /* document ::= statement_list */
2420 #line 532 "pikchr.y"
2421 {pik_render(p,yymsp[0].minor.yy227);}
2422 #line 2447 "pikchr.c"
2423 break;
2424 case 1: /* statement_list ::= statement */
2425 #line 535 "pikchr.y"
2426 { yylhsminor.yy227 = pik_elist_append(p,0,yymsp[0].minor.yy36); }
2427 #line 2452 "pikchr.c"
2428 yymsp[0].minor.yy227 = yylhsminor.yy227;
2429 break;
2430 case 2: /* statement_list ::= statement_list EOL statement */
2431 #line 537 "pikchr.y"
2432 { yylhsminor.yy227 = pik_elist_append(p,yymsp[-2].minor.yy227,yymsp[0].minor.yy36); }
2433 #line 2458 "pikchr.c"
2434 yymsp[-2].minor.yy227 = yylhsminor.yy227;
2435 break;
2436 case 3: /* statement ::= */
2437 #line 540 "pikchr.y"
2438 { yymsp[1].minor.yy36 = 0; }
2439 #line 2464 "pikchr.c"
2440 break;
2441 case 4: /* statement ::= direction */
2442 #line 541 "pikchr.y"
2443 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy36=0; }
2444 #line 2469 "pikchr.c"
2445 yymsp[0].minor.yy36 = yylhsminor.yy36;
2446 break;
2447 case 5: /* statement ::= lvalue ASSIGN rvalue */
2448 #line 542 "pikchr.y"
2449 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy153,&yymsp[-1].minor.yy0); yylhsminor.yy36=0;}
2450 #line 2475 "pikchr.c"
2451 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2452 break;
2453 case 6: /* statement ::= PLACENAME COLON unnamed_statement */
2454 #line 544 "pikchr.y"
2455 { yylhsminor.yy36 = yymsp[0].minor.yy36; pik_elem_setname(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0); }
2456 #line 2481 "pikchr.c"
2457 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2458 break;
2459 case 7: /* statement ::= PLACENAME COLON position */
2460 #line 546 "pikchr.y"
2461 { yylhsminor.yy36 = pik_elem_new(p,0,0,0);
2462 if(yylhsminor.yy36){ yylhsminor.yy36->ptAt = yymsp[0].minor.yy79; pik_elem_setname(p,yylhsminor.yy36,&yymsp[-2].minor.yy0); }}
2463 #line 2488 "pikchr.c"
2464 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2465 break;
2466 case 8: /* statement ::= unnamed_statement */
2467 #line 548 "pikchr.y"
2468 {yylhsminor.yy36 = yymsp[0].minor.yy36;}
2469 #line 2494 "pikchr.c"
2470 yymsp[0].minor.yy36 = yylhsminor.yy36;
2471 break;
2472 case 9: /* statement ::= print prlist */
2473 #line 549 "pikchr.y"
2474 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy36=0;}
2475 #line 2500 "pikchr.c"
2476 break;
2477 case 10: /* statement ::= ASSERT LP expr EQ expr RP */
2478 #line 554 "pikchr.y"
2479 {yymsp[-5].minor.yy36=pik_assert(p,yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy153);}
2480 #line 2505 "pikchr.c"
2481 break;
2482 case 11: /* statement ::= ASSERT LP position EQ position RP */
2483 #line 556 "pikchr.y"
2484 {yymsp[-5].minor.yy36=pik_position_assert(p,&yymsp[-3].minor.yy79,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy79);}
2485 #line 2510 "pikchr.c"
2486 break;
2487 case 12: /* statement ::= DEFINE ID CODEBLOCK */
2488 #line 557 "pikchr.y"
2489 {yymsp[-2].minor.yy36=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2490 #line 2515 "pikchr.c"
2491 break;
2492 case 13: /* rvalue ::= PLACENAME */
2493 #line 568 "pikchr.y"
2494 {yylhsminor.yy153 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2495 #line 2520 "pikchr.c"
2496 yymsp[0].minor.yy153 = yylhsminor.yy153;
2497 break;
2498 case 14: /* pritem ::= FILL */
2499 case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15);
2500 case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16);
2501 #line 573 "pikchr.y"
2502 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2503 #line 2528 "pikchr.c"
2504 break;
2505 case 17: /* pritem ::= rvalue */
2506 #line 576 "pikchr.y"
2507 {pik_append_num(p,"",yymsp[0].minor.yy153);}
2508 #line 2533 "pikchr.c"
2509 break;
2510 case 18: /* pritem ::= STRING */
2511 #line 577 "pikchr.y"
2512 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2513 #line 2538 "pikchr.c"
2514 break;
2515 case 19: /* prsep ::= COMMA */
2516 #line 578 "pikchr.y"
2517 {pik_append(p, " ", 1);}
2518 #line 2543 "pikchr.c"
2519 break;
2520 case 20: /* unnamed_statement ::= basetype attribute_list */
2521 #line 581 "pikchr.y"
2522 {yylhsminor.yy36 = yymsp[-1].minor.yy36; pik_after_adding_attributes(p,yylhsminor.yy36);}
2523 #line 2548 "pikchr.c"
2524 yymsp[-1].minor.yy36 = yylhsminor.yy36;
2525 break;
2526 case 21: /* basetype ::= CLASSNAME */
2527 #line 583 "pikchr.y"
2528 {yylhsminor.yy36 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2529 #line 2554 "pikchr.c"
2530 yymsp[0].minor.yy36 = yylhsminor.yy36;
2531 break;
2532 case 22: /* basetype ::= STRING textposition */
2533 #line 585 "pikchr.y"
2534 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy164; yylhsminor.yy36 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2535 #line 2560 "pikchr.c"
2536 yymsp[-1].minor.yy36 = yylhsminor.yy36;
2537 break;
2538 case 23: /* basetype ::= LB savelist statement_list RB */
2539 #line 587 "pikchr.y"
2540 { p->list = yymsp[-2].minor.yy227; yymsp[-3].minor.yy36 = pik_elem_new(p,0,0,yymsp[-1].minor.yy227); if(yymsp[-3].minor.yy36) yymsp[-3].minor.yy36->errTok = yymsp[0].minor.yy0; }
2541 #line 2566 "pikchr.c"
2542 break;
2543 case 24: /* savelist ::= */
2544 #line 592 "pikchr.y"
2545 {yymsp[1].minor.yy227 = p->list; p->list = 0;}
2546 #line 2571 "pikchr.c"
2547 break;
2548 case 25: /* relexpr ::= expr */
2549 #line 599 "pikchr.y"
2550 {yylhsminor.yy10.rAbs = yymsp[0].minor.yy153; yylhsminor.yy10.rRel = 0;}
2551 #line 2576 "pikchr.c"
2552 yymsp[0].minor.yy10 = yylhsminor.yy10;
2553 break;
2554 case 26: /* relexpr ::= expr PERCENT */
2555 #line 600 "pikchr.y"
2556 {yylhsminor.yy10.rAbs = 0; yylhsminor.yy10.rRel = yymsp[-1].minor.yy153/100;}
2557 #line 2582 "pikchr.c"
2558 yymsp[-1].minor.yy10 = yylhsminor.yy10;
2559 break;
2560 case 27: /* optrelexpr ::= */
2561 #line 602 "pikchr.y"
2562 {yymsp[1].minor.yy10.rAbs = 0; yymsp[1].minor.yy10.rRel = 1.0;}
2563 #line 2588 "pikchr.c"
2564 break;
2565 case 28: /* attribute_list ::= relexpr alist */
2566 #line 604 "pikchr.y"
2567 {pik_add_direction(p,0,&yymsp[-1].minor.yy10);}
2568 #line 2593 "pikchr.c"
2569 break;
2570 case 29: /* attribute ::= numproperty relexpr */
2571 #line 608 "pikchr.y"
2572 { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10); }
2573 #line 2598 "pikchr.c"
2574 break;
2575 case 30: /* attribute ::= dashproperty expr */
2576 #line 609 "pikchr.y"
2577 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy153); }
2578 #line 2603 "pikchr.c"
2579 break;
2580 case 31: /* attribute ::= dashproperty */
2581 #line 610 "pikchr.y"
2582 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2583 #line 2608 "pikchr.c"
2584 break;
2585 case 32: /* attribute ::= colorproperty rvalue */
2586 #line 611 "pikchr.y"
2587 { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153); }
2588 #line 2613 "pikchr.c"
2589 break;
2590 case 33: /* attribute ::= go direction optrelexpr */
2591 #line 612 "pikchr.y"
2592 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10);}
2593 #line 2618 "pikchr.c"
2594 break;
2595 case 34: /* attribute ::= go direction even position */
2596 #line 613 "pikchr.y"
2597 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79);}
2598 #line 2623 "pikchr.c"
2599 break;
2600 case 35: /* attribute ::= CLOSE */
2601 #line 614 "pikchr.y"
2602 { pik_close_path(p,&yymsp[0].minor.yy0); }
2603 #line 2628 "pikchr.c"
2604 break;
2605 case 36: /* attribute ::= CHOP */
2606 #line 615 "pikchr.y"
2607 { p->cur->bChop = 1; }
2608 #line 2633 "pikchr.c"
2609 break;
2610 case 37: /* attribute ::= FROM position */
2611 #line 616 "pikchr.y"
2612 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2613 #line 2638 "pikchr.c"
2614 break;
2615 case 38: /* attribute ::= TO position */
2616 #line 617 "pikchr.y"
2617 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2618 #line 2643 "pikchr.c"
2619 break;
2620 case 39: /* attribute ::= THEN */
2621 #line 618 "pikchr.y"
2622 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2623 #line 2648 "pikchr.c"
2624 break;
2625 case 40: /* attribute ::= THEN optrelexpr HEADING expr */
2626 case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42);
2627 #line 620 "pikchr.y"
2628 {pik_move_hdg(p,&yymsp[-2].minor.yy10,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153,0,&yymsp[-3].minor.yy0);}
2629 #line 2654 "pikchr.c"
2630 break;
2631 case 41: /* attribute ::= THEN optrelexpr EDGEPT */
2632 case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43);
2633 #line 621 "pikchr.y"
2634 {pik_move_hdg(p,&yymsp[-1].minor.yy10,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2635 #line 2660 "pikchr.c"
2636 break;
2637 case 44: /* attribute ::= AT position */
2638 #line 626 "pikchr.y"
2639 { pik_set_at(p,0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2640 #line 2665 "pikchr.c"
2641 break;
2642 case 45: /* attribute ::= SAME */
2643 #line 628 "pikchr.y"
2644 {pik_same(p,0,&yymsp[0].minor.yy0);}
2645 #line 2670 "pikchr.c"
2646 break;
2647 case 46: /* attribute ::= SAME AS object */
2648 #line 629 "pikchr.y"
2649 {pik_same(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2650 #line 2675 "pikchr.c"
2651 break;
2652 case 47: /* attribute ::= STRING textposition */
2653 #line 630 "pikchr.y"
2654 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy164);}
2655 #line 2680 "pikchr.c"
2656 break;
2657 case 48: /* attribute ::= FIT */
2658 #line 631 "pikchr.y"
2659 {pik_size_to_fit(p,&yymsp[0].minor.yy0,3); }
2660 #line 2685 "pikchr.c"
2661 break;
2662 case 49: /* attribute ::= BEHIND object */
2663 #line 632 "pikchr.y"
2664 {pik_behind(p,yymsp[0].minor.yy36);}
2665 #line 2690 "pikchr.c"
2666 break;
2667 case 50: /* withclause ::= DOT_E edge AT position */
2668 case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51);
2669 #line 640 "pikchr.y"
2670 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2671 #line 2696 "pikchr.c"
2672 break;
2673 case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2674 #line 644 "pikchr.y"
2675 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2676 #line 2701 "pikchr.c"
2677 yymsp[0].minor.yy0 = yylhsminor.yy0;
2678 break;
2679 case 53: /* boolproperty ::= CW */
2680 #line 655 "pikchr.y"
2681 {p->cur->cw = 1;}
2682 #line 2707 "pikchr.c"
2683 break;
2684 case 54: /* boolproperty ::= CCW */
2685 #line 656 "pikchr.y"
2686 {p->cur->cw = 0;}
2687 #line 2712 "pikchr.c"
2688 break;
2689 case 55: /* boolproperty ::= LARROW */
2690 #line 657 "pikchr.y"
2691 {p->cur->larrow=1; p->cur->rarrow=0; }
2692 #line 2717 "pikchr.c"
2693 break;
2694 case 56: /* boolproperty ::= RARROW */
2695 #line 658 "pikchr.y"
2696 {p->cur->larrow=0; p->cur->rarrow=1; }
2697 #line 2722 "pikchr.c"
2698 break;
2699 case 57: /* boolproperty ::= LRARROW */
2700 #line 659 "pikchr.y"
2701 {p->cur->larrow=1; p->cur->rarrow=1; }
2702 #line 2727 "pikchr.c"
2703 break;
2704 case 58: /* boolproperty ::= INVIS */
2705 #line 660 "pikchr.y"
2706 {p->cur->sw = 0.0;}
2707 #line 2732 "pikchr.c"
2708 break;
2709 case 59: /* boolproperty ::= THICK */
2710 #line 661 "pikchr.y"
2711 {p->cur->sw *= 1.5;}
2712 #line 2737 "pikchr.c"
2713 break;
2714 case 60: /* boolproperty ::= THIN */
2715 #line 662 "pikchr.y"
2716 {p->cur->sw *= 0.67;}
2717 #line 2742 "pikchr.c"
2718 break;
2719 case 61: /* boolproperty ::= SOLID */
2720 #line 663 "pikchr.y"
2721 {p->cur->sw = pik_value(p,"thickness",9,0);
2722 p->cur->dotted = p->cur->dashed = 0.0;}
2723 #line 2748 "pikchr.c"
2724 break;
2725 case 62: /* textposition ::= */
2726 #line 666 "pikchr.y"
2727 {yymsp[1].minor.yy164 = 0;}
2728 #line 2753 "pikchr.c"
2729 break;
2730 case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2731 #line 669 "pikchr.y"
2732 {yylhsminor.yy164 = (short int)pik_text_position(yymsp[-1].minor.yy164,&yymsp[0].minor.yy0);}
2733 #line 2758 "pikchr.c"
2734 yymsp[-1].minor.yy164 = yylhsminor.yy164;
2735 break;
2736 case 64: /* position ::= expr COMMA expr */
2737 #line 672 "pikchr.y"
2738 {yylhsminor.yy79.x=yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[0].minor.yy153;}
2739 #line 2764 "pikchr.c"
2740 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2741 break;
2742 case 65: /* position ::= place PLUS expr COMMA expr */
2743 #line 674 "pikchr.y"
2744 {yylhsminor.yy79.x=yymsp[-4].minor.yy79.x+yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y+yymsp[0].minor.yy153;}
2745 #line 2770 "pikchr.c"
2746 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2747 break;
2748 case 66: /* position ::= place MINUS expr COMMA expr */
2749 #line 675 "pikchr.y"
2750 {yylhsminor.yy79.x=yymsp[-4].minor.yy79.x-yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y-yymsp[0].minor.yy153;}
2751 #line 2776 "pikchr.c"
2752 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2753 break;
2754 case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2755 #line 677 "pikchr.y"
2756 {yylhsminor.yy79.x=yymsp[-6].minor.yy79.x+yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y+yymsp[-1].minor.yy153;}
2757 #line 2782 "pikchr.c"
2758 yymsp[-6].minor.yy79 = yylhsminor.yy79;
2759 break;
2760 case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2761 #line 679 "pikchr.y"
2762 {yylhsminor.yy79.x=yymsp[-6].minor.yy79.x-yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y-yymsp[-1].minor.yy153;}
2763 #line 2788 "pikchr.c"
2764 yymsp[-6].minor.yy79 = yylhsminor.yy79;
2765 break;
2766 case 69: /* position ::= LP position COMMA position RP */
2767 #line 680 "pikchr.y"
2768 {yymsp[-4].minor.yy79.x=yymsp[-3].minor.yy79.x; yymsp[-4].minor.yy79.y=yymsp[-1].minor.yy79.y;}
2769 #line 2794 "pikchr.c"
2770 break;
2771 case 70: /* position ::= LP position RP */
2772 #line 681 "pikchr.y"
2773 {yymsp[-2].minor.yy79=yymsp[-1].minor.yy79;}
2774 #line 2799 "pikchr.c"
2775 break;
2776 case 71: /* position ::= expr between position AND position */
2777 #line 683 "pikchr.y"
2778 {yylhsminor.yy79 = pik_position_between(yymsp[-4].minor.yy153,yymsp[-2].minor.yy79,yymsp[0].minor.yy79);}
2779 #line 2804 "pikchr.c"
2780 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2781 break;
2782 case 72: /* position ::= expr LT position COMMA position GT */
2783 #line 685 "pikchr.y"
2784 {yylhsminor.yy79 = pik_position_between(yymsp[-5].minor.yy153,yymsp[-3].minor.yy79,yymsp[-1].minor.yy79);}
2785 #line 2810 "pikchr.c"
2786 yymsp[-5].minor.yy79 = yylhsminor.yy79;
2787 break;
2788 case 73: /* position ::= expr ABOVE position */
2789 #line 686 "pikchr.y"
2790 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y += yymsp[-2].minor.yy153;}
2791 #line 2816 "pikchr.c"
2792 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2793 break;
2794 case 74: /* position ::= expr BELOW position */
2795 #line 687 "pikchr.y"
2796 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y -= yymsp[-2].minor.yy153;}
2797 #line 2822 "pikchr.c"
2798 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2799 break;
2800 case 75: /* position ::= expr LEFT OF position */
2801 #line 688 "pikchr.y"
2802 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x -= yymsp[-3].minor.yy153;}
2803 #line 2828 "pikchr.c"
2804 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2805 break;
2806 case 76: /* position ::= expr RIGHT OF position */
2807 #line 689 "pikchr.y"
2808 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x += yymsp[-3].minor.yy153;}
2809 #line 2834 "pikchr.c"
2810 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2811 break;
2812 case 77: /* position ::= expr ON HEADING EDGEPT OF position */
2813 #line 691 "pikchr.y"
2814 {yylhsminor.yy79 = pik_position_at_hdg(yymsp[-5].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2815 #line 2840 "pikchr.c"
2816 yymsp[-5].minor.yy79 = yylhsminor.yy79;
2817 break;
2818 case 78: /* position ::= expr HEADING EDGEPT OF position */
2819 #line 693 "pikchr.y"
2820 {yylhsminor.yy79 = pik_position_at_hdg(yymsp[-4].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2821 #line 2846 "pikchr.c"
2822 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2823 break;
2824 case 79: /* position ::= expr EDGEPT OF position */
2825 #line 695 "pikchr.y"
2826 {yylhsminor.yy79 = pik_position_at_hdg(yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2827 #line 2852 "pikchr.c"
2828 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2829 break;
2830 case 80: /* position ::= expr ON HEADING expr FROM position */
2831 #line 697 "pikchr.y"
2832 {yylhsminor.yy79 = pik_position_at_angle(yymsp[-5].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2833 #line 2858 "pikchr.c"
2834 yymsp[-5].minor.yy79 = yylhsminor.yy79;
2835 break;
2836 case 81: /* position ::= expr HEADING expr FROM position */
2837 #line 699 "pikchr.y"
2838 {yylhsminor.yy79 = pik_position_at_angle(yymsp[-4].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2839 #line 2864 "pikchr.c"
2840 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2841 break;
2842 case 82: /* place ::= edge OF object */
2843 #line 711 "pikchr.y"
2844 {yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2845 #line 2870 "pikchr.c"
2846 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2847 break;
2848 case 83: /* place2 ::= object */
2849 #line 712 "pikchr.y"
2850 {yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,0);}
2851 #line 2876 "pikchr.c"
2852 yymsp[0].minor.yy79 = yylhsminor.yy79;
2853 break;
2854 case 84: /* place2 ::= object DOT_E edge */
2855 #line 713 "pikchr.y"
2856 {yylhsminor.yy79 = pik_place_of_elem(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2857 #line 2882 "pikchr.c"
2858 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2859 break;
2860 case 85: /* place2 ::= NTH VERTEX OF object */
2861 #line 714 "pikchr.y"
2862 {yylhsminor.yy79 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy36);}
2863 #line 2888 "pikchr.c"
2864 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2865 break;
2866 case 86: /* object ::= nth */
2867 #line 726 "pikchr.y"
2868 {yylhsminor.yy36 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2869 #line 2894 "pikchr.c"
2870 yymsp[0].minor.yy36 = yylhsminor.yy36;
2871 break;
2872 case 87: /* object ::= nth OF|IN object */
2873 #line 727 "pikchr.y"
2874 {yylhsminor.yy36 = pik_find_nth(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2875 #line 2900 "pikchr.c"
2876 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2877 break;
2878 case 88: /* objectname ::= THIS */
2879 #line 729 "pikchr.y"
2880 {yymsp[0].minor.yy36 = p->cur;}
2881 #line 2906 "pikchr.c"
2882 break;
2883 case 89: /* objectname ::= PLACENAME */
2884 #line 730 "pikchr.y"
2885 {yylhsminor.yy36 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2886 #line 2911 "pikchr.c"
2887 yymsp[0].minor.yy36 = yylhsminor.yy36;
2888 break;
2889 case 90: /* objectname ::= objectname DOT_U PLACENAME */
2890 #line 732 "pikchr.y"
2891 {yylhsminor.yy36 = pik_find_byname(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2892 #line 2917 "pikchr.c"
2893 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2894 break;
2895 case 91: /* nth ::= NTH CLASSNAME */
2896 #line 734 "pikchr.y"
2897 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2898 #line 2923 "pikchr.c"
2899 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2900 break;
2901 case 92: /* nth ::= NTH LAST CLASSNAME */
2902 #line 735 "pikchr.y"
2903 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2904 #line 2929 "pikchr.c"
2905 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2906 break;
2907 case 93: /* nth ::= LAST CLASSNAME */
2908 #line 736 "pikchr.y"
2909 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2910 #line 2935 "pikchr.c"
2911 break;
2912 case 94: /* nth ::= LAST */
2913 #line 737 "pikchr.y"
2914 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2915 #line 2940 "pikchr.c"
2916 yymsp[0].minor.yy0 = yylhsminor.yy0;
2917 break;
2918 case 95: /* nth ::= NTH LB RB */
2919 #line 738 "pikchr.y"
2920 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2921 #line 2946 "pikchr.c"
2922 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2923 break;
2924 case 96: /* nth ::= NTH LAST LB RB */
2925 #line 739 "pikchr.y"
2926 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2927 #line 2952 "pikchr.c"
2928 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2929 break;
2930 case 97: /* nth ::= LAST LB RB */
2931 #line 740 "pikchr.y"
2932 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2933 #line 2958 "pikchr.c"
2934 break;
2935 case 98: /* expr ::= expr PLUS expr */
2936 #line 742 "pikchr.y"
2937 {yylhsminor.yy153=yymsp[-2].minor.yy153+yymsp[0].minor.yy153;}
2938 #line 2963 "pikchr.c"
2939 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2940 break;
2941 case 99: /* expr ::= expr MINUS expr */
2942 #line 743 "pikchr.y"
2943 {yylhsminor.yy153=yymsp[-2].minor.yy153-yymsp[0].minor.yy153;}
2944 #line 2969 "pikchr.c"
2945 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2946 break;
2947 case 100: /* expr ::= expr STAR expr */
2948 #line 744 "pikchr.y"
2949 {yylhsminor.yy153=yymsp[-2].minor.yy153*yymsp[0].minor.yy153;}
2950 #line 2975 "pikchr.c"
2951 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2952 break;
2953 case 101: /* expr ::= expr SLASH expr */
2954 #line 745 "pikchr.y"
2955 {
2956 if( yymsp[0].minor.yy153==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy153 = 0.0; }
2957 else{ yylhsminor.yy153 = yymsp[-2].minor.yy153/yymsp[0].minor.yy153; }
2958 }
2959 #line 2984 "pikchr.c"
2960 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2961 break;
2962 case 102: /* expr ::= MINUS expr */
2963 #line 749 "pikchr.y"
2964 {yymsp[-1].minor.yy153=-yymsp[0].minor.yy153;}
2965 #line 2990 "pikchr.c"
2966 break;
2967 case 103: /* expr ::= PLUS expr */
2968 #line 750 "pikchr.y"
2969 {yymsp[-1].minor.yy153=yymsp[0].minor.yy153;}
2970 #line 2995 "pikchr.c"
2971 break;
2972 case 104: /* expr ::= LP expr RP */
 
 
 
 
 
2973 #line 751 "pikchr.y"
2974 {yymsp[-2].minor.yy153=yymsp[-1].minor.yy153;}
2975 #line 3000 "pikchr.c"
2976 break;
2977 case 105: /* expr ::= LP FILL|COLOR|THICKNESS RP */
2978 #line 752 "pikchr.y"
2979 {yymsp[-2].minor.yy153=pik_get_var(p,&yymsp[-1].minor.yy0);}
2980 #line 3005 "pikchr.c"
 
2981 break;
2982 case 106: /* expr ::= NUMBER */
2983 #line 753 "pikchr.y"
2984 {yylhsminor.yy153=pik_atof(&yymsp[0].minor.yy0);}
2985 #line 3010 "pikchr.c"
2986 yymsp[0].minor.yy153 = yylhsminor.yy153;
2987 break;
2988 case 107: /* expr ::= ID */
2989 #line 754 "pikchr.y"
2990 {yylhsminor.yy153=pik_get_var(p,&yymsp[0].minor.yy0);}
2991 #line 3016 "pikchr.c"
2992 yymsp[0].minor.yy153 = yylhsminor.yy153;
2993 break;
2994 case 108: /* expr ::= FUNC1 LP expr RP */
2995 #line 755 "pikchr.y"
2996 {yylhsminor.yy153 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy153,0.0);}
2997 #line 3022 "pikchr.c"
2998 yymsp[-3].minor.yy153 = yylhsminor.yy153;
2999 break;
3000 case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
3001 #line 756 "pikchr.y"
3002 {yylhsminor.yy153 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy153,yymsp[-1].minor.yy153);}
3003 #line 3028 "pikchr.c"
3004 yymsp[-5].minor.yy153 = yylhsminor.yy153;
3005 break;
3006 case 110: /* expr ::= DIST LP position COMMA position RP */
3007 #line 757 "pikchr.y"
3008 {yymsp[-5].minor.yy153 = pik_dist(&yymsp[-3].minor.yy79,&yymsp[-1].minor.yy79);}
3009 #line 3034 "pikchr.c"
 
3010 break;
3011 case 111: /* expr ::= place2 DOT_XY X */
3012 #line 758 "pikchr.y"
3013 {yylhsminor.yy153 = yymsp[-2].minor.yy79.x;}
3014 #line 3039 "pikchr.c"
3015 yymsp[-2].minor.yy153 = yylhsminor.yy153;
3016 break;
3017 case 112: /* expr ::= place2 DOT_XY Y */
 
 
3018 #line 759 "pikchr.y"
3019 {yylhsminor.yy153 = yymsp[-2].minor.yy79.y;}
3020 #line 3045 "pikchr.c"
3021 yymsp[-2].minor.yy153 = yylhsminor.yy153;
3022 break;
3023 case 113: /* expr ::= object DOT_L numproperty */
3024 case 114: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==114);
3025 case 115: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==115);
3026 #line 760 "pikchr.y"
3027 {yylhsminor.yy153=pik_property_of(yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
3028 #line 3053 "pikchr.c"
3029 yymsp[-2].minor.yy153 = yylhsminor.yy153;
3030 break;
3031 default:
3032 /* (116) lvalue ::= ID */ yytestcase(yyruleno==116);
3033 /* (117) lvalue ::= FILL */ yytestcase(yyruleno==117);
3034 /* (118) lvalue ::= COLOR */ yytestcase(yyruleno==118);
3035 /* (119) lvalue ::= THICKNESS */ yytestcase(yyruleno==119);
3036 /* (120) rvalue ::= expr */ yytestcase(yyruleno==120);
3037 /* (121) print ::= PRINT */ yytestcase(yyruleno==121);
3038 /* (122) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=122);
3039 /* (123) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==123);
3040 /* (124) direction ::= UP */ yytestcase(yyruleno==124);
3041 /* (125) direction ::= DOWN */ yytestcase(yyruleno==125);
3042 /* (126) direction ::= LEFT */ yytestcase(yyruleno==126);
3043 /* (127) direction ::= RIGHT */ yytestcase(yyruleno==127);
3044 /* (128) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=128);
3045 /* (129) attribute_list ::= alist */ yytestcase(yyruleno==129);
3046 /* (130) alist ::= */ yytestcase(yyruleno==130);
3047 /* (131) alist ::= alist attribute */ yytestcase(yyruleno==131);
3048 /* (132) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=132);
3049 /* (133) attribute ::= WITH withclause */ yytestcase(yyruleno==133);
3050 /* (134) go ::= GO */ yytestcase(yyruleno==134);
3051 /* (135) go ::= */ yytestcase(yyruleno==135);
3052 /* (136) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==136);
3053 /* (137) even ::= EVEN WITH */ yytestcase(yyruleno==137);
3054 /* (138) dashproperty ::= DOTTED */ yytestcase(yyruleno==138);
3055 /* (139) dashproperty ::= DASHED */ yytestcase(yyruleno==139);
3056 /* (140) colorproperty ::= FILL */ yytestcase(yyruleno==140);
3057 /* (141) colorproperty ::= COLOR */ yytestcase(yyruleno==141);
3058 /* (142) position ::= place */ yytestcase(yyruleno==142);
3059 /* (143) between ::= WAY BETWEEN */ yytestcase(yyruleno==143);
3060 /* (144) between ::= BETWEEN */ yytestcase(yyruleno==144);
3061 /* (145) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==145);
3062 /* (146) place ::= place2 */ yytestcase(yyruleno==146);
3063 /* (147) edge ::= CENTER */ yytestcase(yyruleno==147);
3064 /* (148) edge ::= EDGEPT */ yytestcase(yyruleno==148);
3065 /* (149) edge ::= TOP */ yytestcase(yyruleno==149);
3066 /* (150) edge ::= BOTTOM */ yytestcase(yyruleno==150);
3067 /* (151) edge ::= START */ yytestcase(yyruleno==151);
3068 /* (152) edge ::= END */ yytestcase(yyruleno==152);
3069 /* (153) edge ::= RIGHT */ yytestcase(yyruleno==153);
3070 /* (154) edge ::= LEFT */ yytestcase(yyruleno==154);
3071 /* (155) object ::= objectname */ yytestcase(yyruleno==155);
3072 break;
3073 /********** End reduce actions ************************************************/
3074 };
3075 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
3076 yygoto = yyRuleInfoLhs[yyruleno];
@@ -3115,11 +3134,11 @@
3134 pik_error(p, &TOKEN, "syntax error");
3135 }else{
3136 pik_error(p, 0, "syntax error");
3137 }
3138 UNUSED_PARAMETER(yymajor);
3139 #line 3164 "pikchr.c"
3140 /************ End %syntax_error code ******************************************/
3141 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
3142 pik_parserCTX_STORE
3143 }
3144
@@ -3348,11 +3367,11 @@
3367 #else
3368 (void)iToken;
3369 return 0;
3370 #endif
3371 }
3372 #line 765 "pikchr.y"
3373
3374
3375
3376 /* Chart of the 148 official CSS color names with their
3377 ** corresponding RGB values thru Color Module Level 4:
@@ -5032,11 +5051,11 @@
5051 int i; /* Loop counter */
5052 int iBump = 0; /* Bump the location of the error cursor */
5053 char zLineno[20]; /* Buffer in which to generate line numbers */
5054
5055 iErrPt = (int)(pErr->z - p->sIn.z);
5056 if( iErrPt>=(int)p->sIn.n ){
5057 iErrPt = p->sIn.n-1;
5058 iBump = 1;
5059 }else{
5060 while( iErrPt>0 && (p->sIn.z[iErrPt]=='\n' || p->sIn.z[iErrPt]=='\r') ){
5061 iErrPt--;
@@ -7095,10 +7114,11 @@
7114 { "the", 3, T_THE, 0, 0 },
7115 { "then", 4, T_THEN, 0, 0 },
7116 { "thick", 5, T_THICK, 0, 0 },
7117 { "thickness", 9, T_THICKNESS, 0, 0 },
7118 { "thin", 4, T_THIN, 0, 0 },
7119 { "this", 4, T_THIS, 0, 0 },
7120 { "to", 2, T_TO, 0, 0 },
7121 { "top", 3, T_TOP, 0, CP_N },
7122 { "until", 5, T_UNTIL, 0, 0 },
7123 { "up", 2, T_UP, DIR_UP, 0 },
7124 { "vertex", 6, T_VERTEX, 0, 0 },
@@ -7744,11 +7764,11 @@
7764 static char *readFile(const char *zFilename){
7765 FILE *in;
7766 size_t n;
7767 size_t nUsed = 0;
7768 size_t nAlloc = 0;
7769 char *z = 0, *zNew = 0;
7770 in = strcmp(zFilename,"-")==0 ? stdin : fopen(zFilename, "rb");
7771 if( in==0 ){
7772 fprintf(stderr, "cannot open \"%s\" for reading\n", zFilename);
7773 return 0;
7774 }
@@ -7940,6 +7960,6 @@
7960
7961
7962 #endif /* PIKCHR_TCL */
7963
7964
7965 #line 7990 "pikchr.c"
7966

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button