Fossil SCM

Update pikchr.c with support for dist(P1,P2) and copying the layer using "same".

drh 2020-09-19 04:09 trunk
Commit af52ad89ca10a3b20ec1aa68e03c281a569dd103c262fabdf4d7479ffd3d3cee
1 file changed +1028 -991
+1028 -991
--- src/pikchr.c
+++ src/pikchr.c
@@ -444,13 +444,14 @@
444444
static PToken pik_next_semantic_token(PToken *pThis);
445445
static void pik_compute_layout_settings(Pik*);
446446
static void pik_behind(Pik*,PElem*);
447447
static PElem *pik_assert(Pik*,PNum,PToken*,PNum);
448448
static PElem *pik_place_assert(Pik*,PPoint*,PToken*,PPoint*);
449
+static PNum pik_dist(PPoint*,PPoint*);
449450
450451
451
-#line 477 "pikchr.c"
452
+#line 478 "pikchr.c"
452453
/**************** End of %include directives **********************************/
453454
/* These constants specify the various numeric values for terminal symbols.
454455
***************** Begin token definitions *************************************/
455456
#ifndef T_ID
456457
#define T_ID 1
@@ -540,14 +541,15 @@
540541
#define T_DOT_U 85
541542
#define T_LAST 86
542543
#define T_NUMBER 87
543544
#define T_FUNC1 88
544545
#define T_FUNC2 89
545
-#define T_DOT_XY 90
546
-#define T_X 91
547
-#define T_Y 92
548
-#define T_DOT_L 93
546
+#define T_DIST 90
547
+#define T_DOT_XY 91
548
+#define T_X 92
549
+#define T_Y 93
550
+#define T_DOT_L 94
549551
#endif
550552
/**************** End token definitions ***************************************/
551553
552554
/* The next sections is a series of control #defines.
553555
** various aspects of the generated parser.
@@ -603,22 +605,22 @@
603605
#ifndef INTERFACE
604606
# define INTERFACE 1
605607
#endif
606608
/************* Begin control #defines *****************************************/
607609
#define YYCODETYPE unsigned char
608
-#define YYNOCODE 130
610
+#define YYNOCODE 131
609611
#define YYACTIONTYPE unsigned short int
610612
#define pik_parserTOKENTYPE PToken
611613
typedef union {
612614
int yyinit;
613615
pik_parserTOKENTYPE yy0;
614
- PRel yy60;
615
- PEList* yy72;
616
- PNum yy73;
617
- int yy74;
618
- PPoint yy139;
619
- PElem* yy254;
616
+ PEList* yy56;
617
+ int yy116;
618
+ PRel yy164;
619
+ PPoint yy175;
620
+ PElem* yy226;
621
+ PNum yy257;
620622
} YYMINORTYPE;
621623
#ifndef YYSTACKDEPTH
622624
#define YYSTACKDEPTH 100
623625
#endif
624626
#define pik_parserARG_SDECL
@@ -630,22 +632,22 @@
630632
#define pik_parserCTX_PDECL ,Pik *p
631633
#define pik_parserCTX_PARAM ,p
632634
#define pik_parserCTX_FETCH Pik *p=yypParser->p;
633635
#define pik_parserCTX_STORE yypParser->p=p;
634636
#define YYFALLBACK 1
635
-#define YYNSTATE 157
636
-#define YYNRULE 151
637
-#define YYNRULE_WITH_ACTION 111
638
-#define YYNTOKEN 94
639
-#define YY_MAX_SHIFT 156
640
-#define YY_MIN_SHIFTREDUCE 276
641
-#define YY_MAX_SHIFTREDUCE 426
642
-#define YY_ERROR_ACTION 427
643
-#define YY_ACCEPT_ACTION 428
644
-#define YY_NO_ACTION 429
645
-#define YY_MIN_REDUCE 430
646
-#define YY_MAX_REDUCE 580
637
+#define YYNSTATE 162
638
+#define YYNRULE 152
639
+#define YYNRULE_WITH_ACTION 112
640
+#define YYNTOKEN 95
641
+#define YY_MAX_SHIFT 161
642
+#define YY_MIN_SHIFTREDUCE 282
643
+#define YY_MAX_SHIFTREDUCE 433
644
+#define YY_ERROR_ACTION 434
645
+#define YY_ACCEPT_ACTION 435
646
+#define YY_NO_ACTION 436
647
+#define YY_MIN_REDUCE 437
648
+#define YY_MAX_REDUCE 588
647649
/************* End control #defines *******************************************/
648650
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
649651
650652
/* Define the yytestcase() macro to be a no-op if is not already defined
651653
** otherwise.
@@ -708,308 +710,321 @@
708710
** yy_reduce_ofst[] For each state, the offset into yy_action for
709711
** shifting non-terminals after a reduce.
710712
** yy_default[] Default action for each state.
711713
**
712714
*********** Begin parsing tables **********************************************/
713
-#define YY_ACTTAB_COUNT (1159)
715
+#define YY_ACTTAB_COUNT (1206)
714716
static const YYACTIONTYPE yy_action[] = {
715
- /* 0 */ 554, 430, 21, 436, 25, 71, 126, 142, 50, 46,
716
- /* 10 */ 554, 33, 437, 111, 118, 154, 117, 125, 411, 412,
717
- /* 20 */ 327, 538, 78, 512, 539, 540, 554, 62, 61, 60,
718
- /* 30 */ 59, 310, 311, 6, 5, 30, 143, 29, 4, 69,
719
- /* 40 */ 124, 24, 323, 64, 558, 294, 45, 327, 327, 327,
720
- /* 50 */ 327, 409, 410, 328, 329, 330, 331, 332, 333, 334,
721
- /* 60 */ 335, 457, 62, 61, 60, 59, 119, 431, 438, 25,
722
- /* 70 */ 33, 457, 67, 434, 27, 286, 478, 154, 117, 411,
723
- /* 80 */ 412, 327, 28, 78, 156, 344, 298, 457, 428, 23,
724
- /* 90 */ 318, 8, 310, 311, 6, 5, 30, 80, 29, 4,
725
- /* 100 */ 69, 124, 81, 323, 64, 475, 154, 117, 327, 327,
726
- /* 110 */ 327, 327, 409, 410, 328, 329, 330, 331, 332, 333,
727
- /* 120 */ 334, 335, 379, 419, 41, 57, 58, 73, 62, 61,
728
- /* 130 */ 60, 59, 32, 362, 382, 383, 20, 287, 379, 419,
729
- /* 140 */ 40, 57, 58, 77, 316, 296, 76, 60, 59, 362,
730
- /* 150 */ 425, 424, 20, 67, 337, 337, 337, 337, 337, 337,
731
- /* 160 */ 337, 337, 337, 337, 366, 150, 425, 424, 387, 362,
732
- /* 170 */ 364, 151, 62, 61, 60, 59, 301, 34, 42, 146,
733
- /* 180 */ 26, 123, 418, 365, 152, 388, 389, 390, 392, 77,
734
- /* 190 */ 65, 296, 76, 73, 395, 396, 397, 398, 418, 104,
735
- /* 200 */ 2, 420, 421, 422, 423, 142, 7, 115, 378, 149,
736
- /* 210 */ 148, 121, 120, 154, 117, 104, 3, 420, 421, 422,
737
- /* 220 */ 423, 128, 408, 115, 378, 149, 148, 379, 419, 407,
738
- /* 230 */ 57, 58, 116, 343, 121, 106, 416, 71, 362, 142,
739
- /* 240 */ 63, 56, 414, 115, 480, 111, 118, 154, 117, 36,
740
- /* 250 */ 132, 133, 52, 35, 9, 425, 424, 11, 136, 134,
741
- /* 260 */ 62, 61, 60, 59, 62, 61, 60, 59, 143, 395,
742
- /* 270 */ 396, 397, 398, 377, 556, 74, 556, 377, 13, 51,
743
- /* 280 */ 85, 39, 142, 43, 14, 141, 140, 418, 122, 118,
744
- /* 290 */ 154, 117, 38, 364, 151, 136, 134, 62, 61, 60,
745
- /* 300 */ 59, 15, 66, 112, 104, 346, 420, 421, 422, 423,
746
- /* 310 */ 18, 143, 115, 378, 149, 148, 51, 516, 1, 54,
747
- /* 320 */ 17, 16, 141, 140, 55, 510, 154, 117, 19, 38,
748
- /* 330 */ 139, 135, 415, 379, 370, 363, 57, 58, 62, 61,
749
- /* 340 */ 60, 59, 368, 369, 103, 68, 153, 56, 155, 37,
750
- /* 350 */ 289, 290, 291, 429, 293, 116, 516, 17, 16, 379,
751
- /* 360 */ 429, 516, 57, 58, 516, 19, 429, 139, 135, 415,
752
- /* 370 */ 362, 379, 456, 56, 57, 58, 429, 429, 62, 61,
753
- /* 380 */ 60, 59, 362, 429, 379, 56, 429, 57, 58, 429,
754
- /* 390 */ 379, 377, 429, 57, 58, 362, 429, 47, 56, 429,
755
- /* 400 */ 429, 103, 129, 127, 56, 419, 456, 515, 154, 117,
756
- /* 410 */ 104, 62, 61, 60, 59, 362, 429, 429, 115, 378,
757
- /* 420 */ 149, 148, 429, 379, 137, 429, 57, 58, 513, 154,
758
- /* 430 */ 117, 429, 425, 424, 362, 429, 104, 56, 379, 138,
759
- /* 440 */ 10, 57, 58, 429, 115, 378, 149, 148, 104, 362,
760
- /* 450 */ 429, 379, 56, 429, 57, 58, 115, 378, 149, 148,
761
- /* 460 */ 429, 104, 362, 429, 418, 44, 429, 104, 429, 115,
762
- /* 470 */ 378, 149, 148, 429, 429, 115, 378, 149, 148, 429,
763
- /* 480 */ 429, 104, 429, 420, 421, 422, 423, 379, 429, 115,
764
- /* 490 */ 57, 58, 62, 61, 60, 59, 429, 429, 362, 429,
765
- /* 500 */ 104, 48, 429, 105, 429, 429, 429, 429, 115, 378,
766
- /* 510 */ 149, 148, 118, 154, 117, 104, 461, 411, 412, 327,
767
- /* 520 */ 429, 12, 105, 115, 378, 149, 148, 419, 104, 429,
768
- /* 530 */ 429, 118, 154, 117, 147, 446, 115, 378, 149, 148,
769
- /* 540 */ 429, 429, 75, 75, 429, 429, 327, 327, 327, 327,
770
- /* 550 */ 409, 410, 429, 147, 425, 424, 429, 429, 71, 429,
771
- /* 560 */ 142, 429, 429, 429, 104, 479, 111, 118, 154, 117,
772
- /* 570 */ 86, 72, 115, 378, 149, 148, 429, 429, 429, 118,
773
- /* 580 */ 154, 117, 429, 71, 429, 142, 418, 429, 429, 143,
774
- /* 590 */ 473, 111, 118, 154, 117, 429, 429, 62, 61, 60,
775
- /* 600 */ 59, 147, 429, 429, 429, 420, 421, 422, 423, 71,
776
- /* 610 */ 342, 142, 429, 429, 143, 429, 467, 111, 118, 154,
777
- /* 620 */ 117, 429, 71, 429, 142, 429, 429, 429, 429, 466,
778
- /* 630 */ 111, 118, 154, 117, 429, 71, 429, 142, 429, 429,
779
- /* 640 */ 143, 429, 499, 111, 118, 154, 117, 71, 429, 142,
780
- /* 650 */ 87, 429, 429, 143, 131, 111, 118, 154, 117, 118,
781
- /* 660 */ 154, 117, 429, 71, 429, 142, 143, 429, 429, 429,
782
- /* 670 */ 507, 111, 118, 154, 117, 429, 429, 429, 143, 429,
783
- /* 680 */ 429, 147, 71, 429, 142, 429, 429, 429, 429, 509,
784
- /* 690 */ 111, 118, 154, 117, 143, 62, 61, 60, 59, 429,
785
- /* 700 */ 429, 62, 61, 60, 59, 429, 429, 71, 341, 142,
786
- /* 710 */ 429, 429, 429, 143, 506, 111, 118, 154, 117, 71,
787
- /* 720 */ 49, 142, 62, 61, 60, 59, 508, 111, 118, 154,
788
- /* 730 */ 117, 429, 71, 429, 142, 381, 429, 429, 143, 505,
789
- /* 740 */ 111, 118, 154, 117, 71, 419, 142, 429, 429, 429,
790
- /* 750 */ 143, 504, 111, 118, 154, 117, 429, 71, 429, 142,
791
- /* 760 */ 429, 429, 429, 143, 503, 111, 118, 154, 117, 71,
792
- /* 770 */ 429, 142, 425, 424, 429, 143, 502, 111, 118, 154,
793
- /* 780 */ 117, 429, 429, 71, 429, 142, 429, 429, 143, 429,
794
- /* 790 */ 501, 111, 118, 154, 117, 429, 62, 61, 60, 59,
795
- /* 800 */ 143, 429, 429, 429, 418, 429, 429, 429, 71, 380,
796
- /* 810 */ 142, 429, 429, 429, 143, 144, 111, 118, 154, 117,
797
- /* 820 */ 71, 429, 142, 420, 421, 422, 423, 145, 111, 118,
798
- /* 830 */ 154, 117, 429, 70, 429, 142, 429, 429, 429, 143,
799
- /* 840 */ 110, 111, 118, 154, 117, 71, 429, 142, 429, 429,
800
- /* 850 */ 429, 143, 130, 111, 118, 154, 117, 429, 71, 429,
801
- /* 860 */ 142, 429, 92, 429, 143, 463, 111, 118, 154, 117,
802
- /* 870 */ 429, 118, 154, 117, 92, 429, 143, 22, 462, 462,
803
- /* 880 */ 429, 429, 429, 118, 154, 117, 432, 438, 25, 143,
804
- /* 890 */ 79, 105, 434, 147, 429, 429, 429, 449, 429, 31,
805
- /* 900 */ 118, 154, 117, 156, 446, 147, 429, 429, 23, 429,
806
- /* 910 */ 429, 429, 548, 107, 431, 438, 25, 429, 92, 429,
807
- /* 920 */ 434, 429, 147, 429, 429, 429, 429, 118, 154, 117,
808
- /* 930 */ 92, 156, 429, 429, 108, 108, 23, 429, 429, 118,
809
- /* 940 */ 154, 117, 92, 429, 429, 429, 109, 109, 429, 147,
810
- /* 950 */ 429, 118, 154, 117, 105, 429, 429, 429, 458, 84,
811
- /* 960 */ 429, 147, 429, 118, 154, 117, 97, 435, 118, 154,
812
- /* 970 */ 117, 98, 429, 147, 429, 118, 154, 117, 88, 429,
813
- /* 980 */ 118, 154, 117, 82, 429, 147, 429, 118, 154, 117,
814
- /* 990 */ 147, 429, 118, 154, 117, 429, 99, 147, 429, 429,
815
- /* 1000 */ 429, 89, 147, 429, 429, 118, 154, 117, 429, 147,
816
- /* 1010 */ 118, 154, 117, 90, 147, 62, 61, 60, 59, 83,
817
- /* 1020 */ 429, 429, 118, 154, 117, 429, 100, 147, 118, 154,
818
- /* 1030 */ 117, 429, 147, 429, 53, 118, 154, 117, 91, 62,
819
- /* 1040 */ 61, 60, 59, 429, 147, 101, 429, 118, 154, 117,
820
- /* 1050 */ 147, 102, 377, 429, 118, 154, 117, 147, 429, 429,
821
- /* 1060 */ 118, 154, 117, 93, 429, 429, 429, 429, 94, 147,
822
- /* 1070 */ 429, 429, 118, 154, 117, 95, 147, 118, 154, 117,
823
- /* 1080 */ 96, 429, 147, 429, 118, 154, 117, 530, 429, 118,
824
- /* 1090 */ 154, 117, 529, 429, 147, 429, 118, 154, 117, 147,
825
- /* 1100 */ 429, 118, 154, 117, 528, 429, 147, 429, 429, 429,
826
- /* 1110 */ 527, 147, 429, 118, 154, 117, 429, 429, 147, 118,
827
- /* 1120 */ 154, 117, 113, 147, 429, 429, 429, 114, 429, 429,
828
- /* 1130 */ 429, 118, 154, 117, 429, 147, 118, 154, 117, 429,
829
- /* 1140 */ 429, 147, 429, 429, 429, 429, 429, 429, 429, 429,
830
- /* 1150 */ 429, 429, 429, 147, 429, 429, 429, 429, 147,
717
+ /* 0 */ 562, 437, 23, 443, 27, 73, 128, 147, 53, 49,
718
+ /* 10 */ 562, 35, 444, 113, 120, 159, 119, 127, 418, 419,
719
+ /* 20 */ 333, 546, 80, 519, 547, 548, 562, 64, 63, 62,
720
+ /* 30 */ 61, 316, 317, 6, 5, 32, 148, 31, 4, 71,
721
+ /* 40 */ 126, 26, 329, 66, 566, 300, 48, 333, 333, 333,
722
+ /* 50 */ 333, 416, 417, 334, 335, 336, 337, 338, 339, 340,
723
+ /* 60 */ 341, 464, 64, 63, 62, 61, 121, 438, 445, 27,
724
+ /* 70 */ 35, 464, 69, 441, 29, 292, 485, 159, 119, 418,
725
+ /* 80 */ 419, 333, 30, 80, 161, 350, 304, 464, 435, 25,
726
+ /* 90 */ 324, 10, 316, 317, 6, 5, 32, 82, 31, 4,
727
+ /* 100 */ 71, 126, 83, 329, 66, 482, 159, 119, 333, 333,
728
+ /* 110 */ 333, 333, 416, 417, 334, 335, 336, 337, 338, 339,
729
+ /* 120 */ 340, 341, 385, 426, 43, 59, 60, 34, 64, 63,
730
+ /* 130 */ 62, 61, 75, 368, 372, 155, 22, 75, 385, 426,
731
+ /* 140 */ 42, 59, 60, 79, 38, 302, 78, 45, 37, 368,
732
+ /* 150 */ 432, 431, 22, 69, 343, 343, 343, 343, 343, 343,
733
+ /* 160 */ 343, 343, 343, 343, 368, 293, 432, 431, 394, 564,
734
+ /* 170 */ 76, 564, 64, 63, 62, 61, 307, 389, 390, 132,
735
+ /* 180 */ 65, 125, 425, 62, 61, 395, 396, 397, 399, 79,
736
+ /* 190 */ 36, 302, 78, 28, 402, 403, 404, 405, 425, 106,
737
+ /* 200 */ 67, 427, 428, 429, 430, 415, 322, 117, 384, 154,
738
+ /* 210 */ 153, 152, 517, 159, 119, 106, 130, 427, 428, 429,
739
+ /* 220 */ 430, 371, 157, 117, 384, 154, 153, 152, 385, 426,
740
+ /* 230 */ 108, 59, 60, 64, 63, 62, 61, 2, 117, 368,
741
+ /* 240 */ 44, 147, 58, 3, 89, 426, 383, 123, 122, 159,
742
+ /* 250 */ 119, 414, 46, 120, 159, 119, 432, 431, 1, 141,
743
+ /* 260 */ 139, 64, 63, 62, 61, 385, 463, 388, 59, 60,
744
+ /* 270 */ 123, 8, 432, 431, 383, 151, 368, 9, 423, 58,
745
+ /* 280 */ 54, 107, 402, 403, 404, 405, 146, 145, 425, 74,
746
+ /* 290 */ 120, 159, 119, 40, 453, 64, 63, 62, 61, 349,
747
+ /* 300 */ 463, 77, 77, 137, 425, 106, 421, 427, 428, 429,
748
+ /* 310 */ 430, 138, 151, 117, 384, 154, 153, 152, 522, 159,
749
+ /* 320 */ 119, 19, 18, 427, 428, 429, 430, 114, 11, 21,
750
+ /* 330 */ 13, 144, 140, 422, 141, 139, 64, 63, 62, 61,
751
+ /* 340 */ 15, 41, 106, 64, 63, 62, 61, 16, 370, 156,
752
+ /* 350 */ 117, 384, 154, 153, 152, 54, 418, 419, 333, 17,
753
+ /* 360 */ 107, 146, 145, 385, 370, 156, 59, 60, 40, 120,
754
+ /* 370 */ 159, 119, 12, 468, 102, 68, 352, 58, 20, 24,
755
+ /* 380 */ 295, 296, 297, 56, 299, 333, 333, 333, 333, 416,
756
+ /* 390 */ 417, 151, 64, 63, 62, 61, 19, 18, 385, 523,
757
+ /* 400 */ 57, 59, 60, 160, 21, 383, 144, 140, 422, 368,
758
+ /* 410 */ 118, 50, 58, 376, 385, 142, 374, 59, 60, 385,
759
+ /* 420 */ 143, 375, 59, 60, 369, 368, 118, 158, 58, 70,
760
+ /* 430 */ 368, 39, 385, 58, 436, 59, 60, 436, 523, 436,
761
+ /* 440 */ 106, 131, 129, 368, 523, 436, 58, 523, 117, 384,
762
+ /* 450 */ 154, 153, 152, 426, 64, 63, 62, 61, 64, 63,
763
+ /* 460 */ 62, 61, 87, 368, 147, 385, 436, 348, 59, 60,
764
+ /* 470 */ 124, 120, 159, 119, 436, 106, 102, 52, 436, 58,
765
+ /* 480 */ 432, 431, 436, 117, 384, 154, 153, 152, 436, 436,
766
+ /* 490 */ 436, 106, 436, 148, 436, 436, 106, 436, 436, 117,
767
+ /* 500 */ 384, 154, 153, 152, 117, 384, 154, 153, 152, 106,
768
+ /* 510 */ 436, 385, 425, 436, 59, 60, 436, 117, 384, 154,
769
+ /* 520 */ 153, 152, 368, 436, 385, 47, 436, 59, 60, 106,
770
+ /* 530 */ 436, 427, 428, 429, 430, 368, 436, 117, 51, 439,
771
+ /* 540 */ 445, 27, 106, 436, 436, 441, 436, 436, 88, 436,
772
+ /* 550 */ 117, 384, 154, 153, 152, 436, 161, 120, 159, 119,
773
+ /* 560 */ 436, 25, 436, 7, 469, 469, 520, 159, 119, 109,
774
+ /* 570 */ 438, 445, 27, 436, 436, 73, 441, 147, 436, 151,
775
+ /* 580 */ 436, 436, 487, 113, 120, 159, 119, 161, 106, 436,
776
+ /* 590 */ 436, 436, 25, 436, 436, 436, 117, 384, 154, 153,
777
+ /* 600 */ 152, 106, 64, 63, 62, 61, 148, 436, 90, 117,
778
+ /* 610 */ 384, 154, 153, 152, 73, 436, 147, 120, 159, 119,
779
+ /* 620 */ 436, 486, 113, 120, 159, 119, 436, 73, 436, 147,
780
+ /* 630 */ 436, 14, 436, 436, 480, 113, 120, 159, 119, 151,
781
+ /* 640 */ 436, 436, 73, 436, 147, 148, 436, 436, 436, 474,
782
+ /* 650 */ 113, 120, 159, 119, 73, 436, 147, 107, 148, 436,
783
+ /* 660 */ 436, 473, 113, 120, 159, 119, 120, 159, 119, 436,
784
+ /* 670 */ 453, 436, 436, 148, 436, 436, 436, 436, 556, 436,
785
+ /* 680 */ 436, 436, 73, 436, 147, 148, 436, 436, 151, 470,
786
+ /* 690 */ 113, 120, 159, 119, 436, 436, 73, 436, 147, 436,
787
+ /* 700 */ 436, 436, 436, 133, 113, 120, 159, 119, 436, 73,
788
+ /* 710 */ 436, 147, 436, 148, 436, 436, 506, 113, 120, 159,
789
+ /* 720 */ 119, 73, 436, 147, 436, 436, 436, 148, 136, 113,
790
+ /* 730 */ 120, 159, 119, 436, 73, 436, 147, 436, 436, 436,
791
+ /* 740 */ 148, 514, 113, 120, 159, 119, 436, 436, 436, 73,
792
+ /* 750 */ 436, 147, 148, 436, 436, 436, 516, 113, 120, 159,
793
+ /* 760 */ 119, 73, 436, 147, 107, 148, 436, 436, 513, 113,
794
+ /* 770 */ 120, 159, 119, 120, 159, 119, 436, 442, 436, 436,
795
+ /* 780 */ 148, 436, 64, 63, 62, 61, 436, 436, 436, 73,
796
+ /* 790 */ 436, 147, 148, 436, 436, 151, 515, 113, 120, 159,
797
+ /* 800 */ 119, 55, 436, 73, 436, 147, 64, 63, 62, 61,
798
+ /* 810 */ 512, 113, 120, 159, 119, 436, 73, 436, 147, 386,
799
+ /* 820 */ 148, 436, 436, 511, 113, 120, 159, 119, 73, 436,
800
+ /* 830 */ 147, 436, 436, 436, 148, 510, 113, 120, 159, 119,
801
+ /* 840 */ 436, 73, 436, 147, 436, 436, 436, 148, 509, 113,
802
+ /* 850 */ 120, 159, 119, 436, 436, 436, 73, 436, 147, 148,
803
+ /* 860 */ 436, 436, 436, 508, 113, 120, 159, 119, 73, 436,
804
+ /* 870 */ 147, 86, 148, 436, 436, 149, 113, 120, 159, 119,
805
+ /* 880 */ 120, 159, 119, 436, 436, 436, 436, 148, 436, 436,
806
+ /* 890 */ 436, 436, 436, 436, 436, 436, 73, 436, 147, 148,
807
+ /* 900 */ 436, 426, 151, 150, 113, 120, 159, 119, 436, 436,
808
+ /* 910 */ 72, 436, 147, 436, 436, 436, 436, 112, 113, 120,
809
+ /* 920 */ 159, 119, 436, 73, 436, 147, 436, 148, 432, 431,
810
+ /* 930 */ 135, 113, 120, 159, 119, 73, 436, 147, 436, 88,
811
+ /* 940 */ 436, 148, 134, 113, 120, 159, 119, 436, 120, 159,
812
+ /* 950 */ 119, 436, 436, 436, 148, 81, 436, 436, 88, 436,
813
+ /* 960 */ 425, 436, 456, 436, 33, 436, 148, 120, 159, 119,
814
+ /* 970 */ 151, 436, 436, 436, 110, 110, 88, 436, 436, 427,
815
+ /* 980 */ 428, 429, 430, 436, 436, 120, 159, 119, 436, 151,
816
+ /* 990 */ 436, 436, 111, 111, 436, 436, 436, 436, 436, 88,
817
+ /* 1000 */ 436, 436, 99, 436, 436, 436, 436, 151, 120, 159,
818
+ /* 1010 */ 119, 120, 159, 119, 436, 465, 436, 100, 64, 63,
819
+ /* 1020 */ 62, 61, 436, 436, 436, 101, 120, 159, 119, 91,
820
+ /* 1030 */ 151, 347, 84, 151, 120, 159, 119, 436, 120, 159,
821
+ /* 1040 */ 119, 120, 159, 119, 103, 436, 436, 436, 151, 436,
822
+ /* 1050 */ 436, 436, 436, 120, 159, 119, 151, 436, 92, 436,
823
+ /* 1060 */ 151, 436, 93, 151, 436, 436, 436, 120, 159, 119,
824
+ /* 1070 */ 85, 120, 159, 119, 104, 151, 436, 436, 436, 120,
825
+ /* 1080 */ 159, 119, 436, 120, 159, 119, 94, 436, 436, 151,
826
+ /* 1090 */ 436, 436, 436, 151, 436, 120, 159, 119, 436, 105,
827
+ /* 1100 */ 436, 151, 95, 436, 436, 151, 436, 436, 120, 159,
828
+ /* 1110 */ 119, 120, 159, 119, 436, 96, 436, 151, 64, 63,
829
+ /* 1120 */ 62, 61, 436, 436, 120, 159, 119, 97, 436, 436,
830
+ /* 1130 */ 151, 387, 98, 151, 436, 436, 120, 159, 119, 537,
831
+ /* 1140 */ 436, 120, 159, 119, 536, 436, 151, 436, 120, 159,
832
+ /* 1150 */ 119, 436, 436, 120, 159, 119, 535, 436, 151, 436,
833
+ /* 1160 */ 436, 436, 534, 151, 436, 120, 159, 119, 115, 436,
834
+ /* 1170 */ 151, 120, 159, 119, 116, 151, 436, 120, 159, 119,
835
+ /* 1180 */ 436, 436, 436, 120, 159, 119, 436, 151, 64, 63,
836
+ /* 1190 */ 62, 61, 436, 151, 436, 436, 436, 436, 436, 151,
837
+ /* 1200 */ 436, 383, 436, 436, 436, 151,
831838
};
832839
static const YYCODETYPE yy_lookahead[] = {
833
- /* 0 */ 0, 0, 128, 96, 97, 98, 100, 100, 4, 5,
834
- /* 10 */ 10, 10, 105, 106, 107, 108, 109, 100, 18, 19,
835
- /* 20 */ 20, 99, 22, 100, 102, 103, 26, 4, 5, 6,
836
- /* 30 */ 7, 31, 32, 33, 34, 35, 129, 37, 38, 39,
837
- /* 40 */ 40, 101, 42, 43, 127, 23, 23, 47, 48, 49,
840
+ /* 0 */ 0, 0, 129, 97, 98, 99, 101, 101, 4, 5,
841
+ /* 10 */ 10, 10, 106, 107, 108, 109, 110, 101, 18, 19,
842
+ /* 20 */ 20, 100, 22, 101, 103, 104, 26, 4, 5, 6,
843
+ /* 30 */ 7, 31, 32, 33, 34, 35, 130, 37, 38, 39,
844
+ /* 40 */ 40, 102, 42, 43, 128, 23, 23, 47, 48, 49,
838845
/* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
839
- /* 60 */ 60, 0, 4, 5, 6, 7, 94, 95, 96, 97,
840
- /* 70 */ 10, 10, 3, 101, 120, 17, 107, 108, 109, 18,
841
- /* 80 */ 19, 20, 122, 22, 112, 17, 26, 26, 116, 117,
842
- /* 90 */ 2, 23, 31, 32, 33, 34, 35, 110, 37, 38,
843
- /* 100 */ 39, 40, 110, 42, 43, 107, 108, 109, 47, 48,
846
+ /* 60 */ 60, 0, 4, 5, 6, 7, 95, 96, 97, 98,
847
+ /* 70 */ 10, 10, 3, 102, 121, 17, 108, 109, 110, 18,
848
+ /* 80 */ 19, 20, 123, 22, 113, 17, 26, 26, 117, 118,
849
+ /* 90 */ 2, 23, 31, 32, 33, 34, 35, 111, 37, 38,
850
+ /* 100 */ 39, 40, 111, 42, 43, 108, 109, 110, 47, 48,
844851
/* 110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
845
- /* 120 */ 59, 60, 1, 2, 36, 4, 5, 46, 4, 5,
846
- /* 130 */ 6, 7, 123, 12, 91, 92, 15, 17, 1, 2,
847
- /* 140 */ 16, 4, 5, 22, 2, 24, 25, 6, 7, 12,
852
+ /* 120 */ 59, 60, 1, 2, 36, 4, 5, 124, 4, 5,
853
+ /* 130 */ 6, 7, 46, 12, 24, 25, 15, 46, 1, 2,
854
+ /* 140 */ 16, 4, 5, 22, 100, 24, 25, 103, 104, 12,
848855
/* 150 */ 29, 30, 15, 84, 61, 62, 63, 64, 65, 66,
849
- /* 160 */ 67, 68, 69, 70, 24, 25, 29, 30, 1, 12,
850
- /* 170 */ 24, 25, 4, 5, 6, 7, 8, 16, 36, 12,
851
- /* 180 */ 15, 14, 61, 24, 25, 18, 19, 20, 21, 22,
852
- /* 190 */ 41, 24, 25, 46, 27, 28, 29, 30, 61, 78,
853
- /* 200 */ 38, 80, 81, 82, 83, 100, 71, 86, 87, 88,
854
- /* 210 */ 89, 106, 107, 108, 109, 78, 38, 80, 81, 82,
855
- /* 220 */ 83, 45, 39, 86, 87, 88, 89, 1, 2, 39,
856
- /* 230 */ 4, 5, 86, 17, 129, 78, 76, 98, 12, 100,
857
- /* 240 */ 93, 15, 76, 86, 105, 106, 107, 108, 109, 99,
858
- /* 250 */ 75, 77, 102, 103, 3, 29, 30, 3, 2, 3,
859
- /* 260 */ 4, 5, 6, 7, 4, 5, 6, 7, 129, 27,
860
- /* 270 */ 28, 29, 30, 17, 124, 125, 126, 17, 3, 23,
861
- /* 280 */ 98, 36, 100, 23, 3, 29, 30, 61, 106, 107,
862
- /* 290 */ 108, 109, 36, 24, 25, 2, 3, 4, 5, 6,
863
- /* 300 */ 7, 3, 3, 90, 78, 73, 80, 81, 82, 83,
864
- /* 310 */ 23, 129, 86, 87, 88, 89, 23, 46, 13, 15,
865
- /* 320 */ 64, 65, 29, 30, 15, 107, 108, 109, 72, 36,
866
- /* 330 */ 74, 75, 76, 1, 26, 12, 4, 5, 4, 5,
867
- /* 340 */ 6, 7, 26, 26, 12, 3, 85, 15, 79, 11,
868
- /* 350 */ 18, 19, 20, 130, 22, 86, 85, 64, 65, 1,
869
- /* 360 */ 130, 90, 4, 5, 93, 72, 130, 74, 75, 76,
870
- /* 370 */ 12, 1, 2, 15, 4, 5, 130, 130, 4, 5,
871
- /* 380 */ 6, 7, 12, 130, 1, 15, 130, 4, 5, 130,
872
- /* 390 */ 1, 17, 130, 4, 5, 12, 130, 23, 15, 130,
873
- /* 400 */ 130, 12, 44, 45, 15, 2, 36, 107, 108, 109,
874
- /* 410 */ 78, 4, 5, 6, 7, 12, 130, 130, 86, 87,
875
- /* 420 */ 88, 89, 130, 1, 2, 130, 4, 5, 107, 108,
876
- /* 430 */ 109, 130, 29, 30, 12, 130, 78, 15, 1, 2,
877
- /* 440 */ 33, 4, 5, 130, 86, 87, 88, 89, 78, 12,
878
- /* 450 */ 130, 1, 15, 130, 4, 5, 86, 87, 88, 89,
879
- /* 460 */ 130, 78, 12, 130, 61, 15, 130, 78, 130, 86,
880
- /* 470 */ 87, 88, 89, 130, 130, 86, 87, 88, 89, 130,
881
- /* 480 */ 130, 78, 130, 80, 81, 82, 83, 1, 130, 86,
882
- /* 490 */ 4, 5, 4, 5, 6, 7, 130, 130, 12, 130,
883
- /* 500 */ 78, 15, 130, 98, 130, 130, 130, 130, 86, 87,
884
- /* 510 */ 88, 89, 107, 108, 109, 78, 111, 18, 19, 20,
885
- /* 520 */ 130, 33, 98, 86, 87, 88, 89, 2, 78, 130,
886
- /* 530 */ 130, 107, 108, 109, 129, 111, 86, 87, 88, 89,
887
- /* 540 */ 130, 130, 118, 119, 130, 130, 47, 48, 49, 50,
888
- /* 550 */ 51, 52, 130, 129, 29, 30, 130, 130, 98, 130,
889
- /* 560 */ 100, 130, 130, 130, 78, 105, 106, 107, 108, 109,
890
- /* 570 */ 98, 46, 86, 87, 88, 89, 130, 130, 130, 107,
891
- /* 580 */ 108, 109, 130, 98, 130, 100, 61, 130, 130, 129,
892
- /* 590 */ 105, 106, 107, 108, 109, 130, 130, 4, 5, 6,
893
- /* 600 */ 7, 129, 130, 130, 130, 80, 81, 82, 83, 98,
894
- /* 610 */ 17, 100, 130, 130, 129, 130, 105, 106, 107, 108,
895
- /* 620 */ 109, 130, 98, 130, 100, 130, 130, 130, 130, 105,
896
- /* 630 */ 106, 107, 108, 109, 130, 98, 130, 100, 130, 130,
897
- /* 640 */ 129, 130, 105, 106, 107, 108, 109, 98, 130, 100,
898
- /* 650 */ 98, 130, 130, 129, 105, 106, 107, 108, 109, 107,
899
- /* 660 */ 108, 109, 130, 98, 130, 100, 129, 130, 130, 130,
900
- /* 670 */ 105, 106, 107, 108, 109, 130, 130, 130, 129, 130,
901
- /* 680 */ 130, 129, 98, 130, 100, 130, 130, 130, 130, 105,
902
- /* 690 */ 106, 107, 108, 109, 129, 4, 5, 6, 7, 130,
903
- /* 700 */ 130, 4, 5, 6, 7, 130, 130, 98, 17, 100,
904
- /* 710 */ 130, 130, 130, 129, 105, 106, 107, 108, 109, 98,
905
- /* 720 */ 23, 100, 4, 5, 6, 7, 105, 106, 107, 108,
906
- /* 730 */ 109, 130, 98, 130, 100, 17, 130, 130, 129, 105,
907
- /* 740 */ 106, 107, 108, 109, 98, 2, 100, 130, 130, 130,
908
- /* 750 */ 129, 105, 106, 107, 108, 109, 130, 98, 130, 100,
909
- /* 760 */ 130, 130, 130, 129, 105, 106, 107, 108, 109, 98,
910
- /* 770 */ 130, 100, 29, 30, 130, 129, 105, 106, 107, 108,
911
- /* 780 */ 109, 130, 130, 98, 130, 100, 130, 130, 129, 130,
912
- /* 790 */ 105, 106, 107, 108, 109, 130, 4, 5, 6, 7,
913
- /* 800 */ 129, 130, 130, 130, 61, 130, 130, 130, 98, 17,
914
- /* 810 */ 100, 130, 130, 130, 129, 105, 106, 107, 108, 109,
915
- /* 820 */ 98, 130, 100, 80, 81, 82, 83, 105, 106, 107,
916
- /* 830 */ 108, 109, 130, 98, 130, 100, 130, 130, 130, 129,
917
- /* 840 */ 105, 106, 107, 108, 109, 98, 130, 100, 130, 130,
918
- /* 850 */ 130, 129, 105, 106, 107, 108, 109, 130, 98, 130,
919
- /* 860 */ 100, 130, 98, 130, 129, 105, 106, 107, 108, 109,
920
- /* 870 */ 130, 107, 108, 109, 98, 130, 129, 113, 114, 115,
921
- /* 880 */ 130, 130, 130, 107, 108, 109, 95, 96, 97, 129,
922
- /* 890 */ 114, 98, 101, 129, 130, 130, 130, 121, 130, 123,
923
- /* 900 */ 107, 108, 109, 112, 111, 129, 130, 130, 117, 130,
924
- /* 910 */ 130, 130, 119, 94, 95, 96, 97, 130, 98, 130,
925
- /* 920 */ 101, 130, 129, 130, 130, 130, 130, 107, 108, 109,
926
- /* 930 */ 98, 112, 130, 130, 114, 115, 117, 130, 130, 107,
927
- /* 940 */ 108, 109, 98, 130, 130, 130, 114, 115, 130, 129,
928
- /* 950 */ 130, 107, 108, 109, 98, 130, 130, 130, 114, 98,
929
- /* 960 */ 130, 129, 130, 107, 108, 109, 98, 111, 107, 108,
930
- /* 970 */ 109, 98, 130, 129, 130, 107, 108, 109, 98, 130,
931
- /* 980 */ 107, 108, 109, 98, 130, 129, 130, 107, 108, 109,
932
- /* 990 */ 129, 130, 107, 108, 109, 130, 98, 129, 130, 130,
933
- /* 1000 */ 130, 98, 129, 130, 130, 107, 108, 109, 130, 129,
934
- /* 1010 */ 107, 108, 109, 98, 129, 4, 5, 6, 7, 98,
935
- /* 1020 */ 130, 130, 107, 108, 109, 130, 98, 129, 107, 108,
936
- /* 1030 */ 109, 130, 129, 130, 23, 107, 108, 109, 98, 4,
937
- /* 1040 */ 5, 6, 7, 130, 129, 98, 130, 107, 108, 109,
938
- /* 1050 */ 129, 98, 17, 130, 107, 108, 109, 129, 130, 130,
939
- /* 1060 */ 107, 108, 109, 98, 130, 130, 130, 130, 98, 129,
940
- /* 1070 */ 130, 130, 107, 108, 109, 98, 129, 107, 108, 109,
941
- /* 1080 */ 98, 130, 129, 130, 107, 108, 109, 98, 130, 107,
942
- /* 1090 */ 108, 109, 98, 130, 129, 130, 107, 108, 109, 129,
943
- /* 1100 */ 130, 107, 108, 109, 98, 130, 129, 130, 130, 130,
944
- /* 1110 */ 98, 129, 130, 107, 108, 109, 130, 130, 129, 107,
945
- /* 1120 */ 108, 109, 98, 129, 130, 130, 130, 98, 130, 130,
946
- /* 1130 */ 130, 107, 108, 109, 130, 129, 107, 108, 109, 130,
947
- /* 1140 */ 130, 129, 130, 130, 130, 130, 130, 130, 130, 130,
948
- /* 1150 */ 130, 130, 130, 129, 130, 130, 130, 130, 129, 94,
949
- /* 1160 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
950
- /* 1170 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
951
- /* 1180 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
952
- /* 1190 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
953
- /* 1200 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
954
- /* 1210 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
955
- /* 1220 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
956
- /* 1230 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
957
- /* 1240 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
958
- /* 1250 */ 94, 94, 94,
856
+ /* 160 */ 67, 68, 69, 70, 12, 17, 29, 30, 1, 125,
857
+ /* 170 */ 126, 127, 4, 5, 6, 7, 8, 92, 93, 12,
858
+ /* 180 */ 94, 14, 61, 6, 7, 18, 19, 20, 21, 22,
859
+ /* 190 */ 16, 24, 25, 15, 27, 28, 29, 30, 61, 78,
860
+ /* 200 */ 41, 80, 81, 82, 83, 39, 2, 86, 87, 88,
861
+ /* 210 */ 89, 90, 108, 109, 110, 78, 45, 80, 81, 82,
862
+ /* 220 */ 83, 24, 25, 86, 87, 88, 89, 90, 1, 2,
863
+ /* 230 */ 78, 4, 5, 4, 5, 6, 7, 38, 86, 12,
864
+ /* 240 */ 36, 101, 15, 38, 99, 2, 17, 107, 108, 109,
865
+ /* 250 */ 110, 39, 23, 108, 109, 110, 29, 30, 13, 2,
866
+ /* 260 */ 3, 4, 5, 6, 7, 1, 2, 17, 4, 5,
867
+ /* 270 */ 130, 23, 29, 30, 17, 130, 12, 71, 76, 15,
868
+ /* 280 */ 23, 99, 27, 28, 29, 30, 29, 30, 61, 46,
869
+ /* 290 */ 108, 109, 110, 36, 112, 4, 5, 6, 7, 17,
870
+ /* 300 */ 36, 119, 120, 75, 61, 78, 76, 80, 81, 82,
871
+ /* 310 */ 83, 77, 130, 86, 87, 88, 89, 90, 108, 109,
872
+ /* 320 */ 110, 64, 65, 80, 81, 82, 83, 91, 3, 72,
873
+ /* 330 */ 3, 74, 75, 76, 2, 3, 4, 5, 6, 7,
874
+ /* 340 */ 3, 36, 78, 4, 5, 6, 7, 3, 24, 25,
875
+ /* 350 */ 86, 87, 88, 89, 90, 23, 18, 19, 20, 3,
876
+ /* 360 */ 99, 29, 30, 1, 24, 25, 4, 5, 36, 108,
877
+ /* 370 */ 109, 110, 33, 112, 12, 3, 73, 15, 23, 15,
878
+ /* 380 */ 18, 19, 20, 15, 22, 47, 48, 49, 50, 51,
879
+ /* 390 */ 52, 130, 4, 5, 6, 7, 64, 65, 1, 46,
880
+ /* 400 */ 15, 4, 5, 79, 72, 17, 74, 75, 76, 12,
881
+ /* 410 */ 86, 23, 15, 26, 1, 2, 26, 4, 5, 1,
882
+ /* 420 */ 2, 26, 4, 5, 12, 12, 86, 85, 15, 3,
883
+ /* 430 */ 12, 11, 1, 15, 131, 4, 5, 131, 85, 131,
884
+ /* 440 */ 78, 44, 45, 12, 91, 131, 15, 94, 86, 87,
885
+ /* 450 */ 88, 89, 90, 2, 4, 5, 6, 7, 4, 5,
886
+ /* 460 */ 6, 7, 99, 12, 101, 1, 131, 17, 4, 5,
887
+ /* 470 */ 107, 108, 109, 110, 131, 78, 12, 23, 131, 15,
888
+ /* 480 */ 29, 30, 131, 86, 87, 88, 89, 90, 131, 131,
889
+ /* 490 */ 131, 78, 131, 130, 131, 131, 78, 131, 131, 86,
890
+ /* 500 */ 87, 88, 89, 90, 86, 87, 88, 89, 90, 78,
891
+ /* 510 */ 131, 1, 61, 131, 4, 5, 131, 86, 87, 88,
892
+ /* 520 */ 89, 90, 12, 131, 1, 15, 131, 4, 5, 78,
893
+ /* 530 */ 131, 80, 81, 82, 83, 12, 131, 86, 15, 96,
894
+ /* 540 */ 97, 98, 78, 131, 131, 102, 131, 131, 99, 131,
895
+ /* 550 */ 86, 87, 88, 89, 90, 131, 113, 108, 109, 110,
896
+ /* 560 */ 131, 118, 131, 114, 115, 116, 108, 109, 110, 95,
897
+ /* 570 */ 96, 97, 98, 131, 131, 99, 102, 101, 131, 130,
898
+ /* 580 */ 131, 131, 106, 107, 108, 109, 110, 113, 78, 131,
899
+ /* 590 */ 131, 131, 118, 131, 131, 131, 86, 87, 88, 89,
900
+ /* 600 */ 90, 78, 4, 5, 6, 7, 130, 131, 99, 86,
901
+ /* 610 */ 87, 88, 89, 90, 99, 131, 101, 108, 109, 110,
902
+ /* 620 */ 131, 106, 107, 108, 109, 110, 131, 99, 131, 101,
903
+ /* 630 */ 131, 33, 131, 131, 106, 107, 108, 109, 110, 130,
904
+ /* 640 */ 131, 131, 99, 131, 101, 130, 131, 131, 131, 106,
905
+ /* 650 */ 107, 108, 109, 110, 99, 131, 101, 99, 130, 131,
906
+ /* 660 */ 131, 106, 107, 108, 109, 110, 108, 109, 110, 131,
907
+ /* 670 */ 112, 131, 131, 130, 131, 131, 131, 131, 120, 131,
908
+ /* 680 */ 131, 131, 99, 131, 101, 130, 131, 131, 130, 106,
909
+ /* 690 */ 107, 108, 109, 110, 131, 131, 99, 131, 101, 131,
910
+ /* 700 */ 131, 131, 131, 106, 107, 108, 109, 110, 131, 99,
911
+ /* 710 */ 131, 101, 131, 130, 131, 131, 106, 107, 108, 109,
912
+ /* 720 */ 110, 99, 131, 101, 131, 131, 131, 130, 106, 107,
913
+ /* 730 */ 108, 109, 110, 131, 99, 131, 101, 131, 131, 131,
914
+ /* 740 */ 130, 106, 107, 108, 109, 110, 131, 131, 131, 99,
915
+ /* 750 */ 131, 101, 130, 131, 131, 131, 106, 107, 108, 109,
916
+ /* 760 */ 110, 99, 131, 101, 99, 130, 131, 131, 106, 107,
917
+ /* 770 */ 108, 109, 110, 108, 109, 110, 131, 112, 131, 131,
918
+ /* 780 */ 130, 131, 4, 5, 6, 7, 131, 131, 131, 99,
919
+ /* 790 */ 131, 101, 130, 131, 131, 130, 106, 107, 108, 109,
920
+ /* 800 */ 110, 23, 131, 99, 131, 101, 4, 5, 6, 7,
921
+ /* 810 */ 106, 107, 108, 109, 110, 131, 99, 131, 101, 17,
922
+ /* 820 */ 130, 131, 131, 106, 107, 108, 109, 110, 99, 131,
923
+ /* 830 */ 101, 131, 131, 131, 130, 106, 107, 108, 109, 110,
924
+ /* 840 */ 131, 99, 131, 101, 131, 131, 131, 130, 106, 107,
925
+ /* 850 */ 108, 109, 110, 131, 131, 131, 99, 131, 101, 130,
926
+ /* 860 */ 131, 131, 131, 106, 107, 108, 109, 110, 99, 131,
927
+ /* 870 */ 101, 99, 130, 131, 131, 106, 107, 108, 109, 110,
928
+ /* 880 */ 108, 109, 110, 131, 131, 131, 131, 130, 131, 131,
929
+ /* 890 */ 131, 131, 131, 131, 131, 131, 99, 131, 101, 130,
930
+ /* 900 */ 131, 2, 130, 106, 107, 108, 109, 110, 131, 131,
931
+ /* 910 */ 99, 131, 101, 131, 131, 131, 131, 106, 107, 108,
932
+ /* 920 */ 109, 110, 131, 99, 131, 101, 131, 130, 29, 30,
933
+ /* 930 */ 106, 107, 108, 109, 110, 99, 131, 101, 131, 99,
934
+ /* 940 */ 131, 130, 106, 107, 108, 109, 110, 131, 108, 109,
935
+ /* 950 */ 110, 131, 131, 131, 130, 115, 131, 131, 99, 131,
936
+ /* 960 */ 61, 131, 122, 131, 124, 131, 130, 108, 109, 110,
937
+ /* 970 */ 130, 131, 131, 131, 115, 116, 99, 131, 131, 80,
938
+ /* 980 */ 81, 82, 83, 131, 131, 108, 109, 110, 131, 130,
939
+ /* 990 */ 131, 131, 115, 116, 131, 131, 131, 131, 131, 99,
940
+ /* 1000 */ 131, 131, 99, 131, 131, 131, 131, 130, 108, 109,
941
+ /* 1010 */ 110, 108, 109, 110, 131, 115, 131, 99, 4, 5,
942
+ /* 1020 */ 6, 7, 131, 131, 131, 99, 108, 109, 110, 99,
943
+ /* 1030 */ 130, 17, 99, 130, 108, 109, 110, 131, 108, 109,
944
+ /* 1040 */ 110, 108, 109, 110, 99, 131, 131, 131, 130, 131,
945
+ /* 1050 */ 131, 131, 131, 108, 109, 110, 130, 131, 99, 131,
946
+ /* 1060 */ 130, 131, 99, 130, 131, 131, 131, 108, 109, 110,
947
+ /* 1070 */ 99, 108, 109, 110, 99, 130, 131, 131, 131, 108,
948
+ /* 1080 */ 109, 110, 131, 108, 109, 110, 99, 131, 131, 130,
949
+ /* 1090 */ 131, 131, 131, 130, 131, 108, 109, 110, 131, 99,
950
+ /* 1100 */ 131, 130, 99, 131, 131, 130, 131, 131, 108, 109,
951
+ /* 1110 */ 110, 108, 109, 110, 131, 99, 131, 130, 4, 5,
952
+ /* 1120 */ 6, 7, 131, 131, 108, 109, 110, 99, 131, 131,
953
+ /* 1130 */ 130, 17, 99, 130, 131, 131, 108, 109, 110, 99,
954
+ /* 1140 */ 131, 108, 109, 110, 99, 131, 130, 131, 108, 109,
955
+ /* 1150 */ 110, 131, 131, 108, 109, 110, 99, 131, 130, 131,
956
+ /* 1160 */ 131, 131, 99, 130, 131, 108, 109, 110, 99, 131,
957
+ /* 1170 */ 130, 108, 109, 110, 99, 130, 131, 108, 109, 110,
958
+ /* 1180 */ 131, 131, 131, 108, 109, 110, 131, 130, 4, 5,
959
+ /* 1190 */ 6, 7, 131, 130, 131, 131, 131, 131, 131, 130,
960
+ /* 1200 */ 131, 17, 131, 131, 131, 130, 131, 131, 131, 131,
961
+ /* 1210 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
962
+ /* 1220 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
963
+ /* 1230 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
964
+ /* 1240 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
965
+ /* 1250 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
966
+ /* 1260 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
967
+ /* 1270 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
968
+ /* 1280 */ 131, 131, 131, 131, 95, 95, 95, 95, 95, 95,
969
+ /* 1290 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
970
+ /* 1300 */ 95,
959971
};
960
-#define YY_SHIFT_COUNT (156)
972
+#define YY_SHIFT_COUNT (161)
961973
#define YY_SHIFT_MIN (0)
962
-#define YY_SHIFT_MAX (1035)
974
+#define YY_SHIFT_MAX (1184)
963975
static const unsigned short int yy_shift_ofst[] = {
964976
/* 0 */ 167, 121, 137, 137, 137, 137, 137, 137, 137, 137,
965977
/* 10 */ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
966
- /* 20 */ 137, 137, 137, 332, 358, 383, 226, 332, 167, 370,
967
- /* 30 */ 370, 0, 61, 167, 403, 389, 383, 389, 422, 437,
968
- /* 40 */ 383, 383, 383, 383, 383, 383, 450, 383, 383, 383,
969
- /* 50 */ 486, 383, 383, 383, 383, 383, 383, 383, 383, 383,
970
- /* 60 */ 383, 383, 383, 499, 157, 157, 157, 157, 157, 525,
971
- /* 70 */ 256, 293, 743, 743, 242, 22, 1159, 1159, 1159, 1159,
972
- /* 80 */ 93, 93, 260, 374, 58, 124, 407, 488, 593, 23,
973
- /* 90 */ 691, 697, 168, 718, 1011, 792, 1035, 334, 334, 334,
974
- /* 100 */ 334, 334, 334, 271, 269, 334, 146, 60, 88, 142,
975
- /* 110 */ 68, 4, 43, 141, 141, 140, 159, 69, 147, 1,
976
- /* 120 */ 81, 120, 161, 165, 149, 162, 178, 183, 190, 176,
977
- /* 130 */ 135, 216, 160, 175, 174, 166, 251, 254, 275, 245,
978
- /* 140 */ 281, 298, 299, 213, 232, 287, 305, 213, 304, 309,
979
- /* 150 */ 308, 316, 317, 323, 261, 342, 338,
978
+ /* 20 */ 137, 137, 137, 137, 137, 362, 397, 431, 227, 362,
979
+ /* 30 */ 167, 264, 264, 0, 61, 167, 451, 464, 431, 464,
980
+ /* 40 */ 413, 418, 431, 431, 431, 431, 431, 431, 431, 510,
981
+ /* 50 */ 431, 431, 431, 523, 431, 431, 431, 431, 431, 431,
982
+ /* 60 */ 431, 431, 431, 431, 431, 338, 152, 152, 152, 152,
983
+ /* 70 */ 152, 243, 257, 332, 899, 899, 255, 22, 1206, 1206,
984
+ /* 80 */ 1206, 1206, 93, 93, 229, 388, 58, 124, 168, 339,
985
+ /* 90 */ 598, 450, 23, 1014, 454, 1114, 778, 802, 1184, 291,
986
+ /* 100 */ 291, 291, 353, 291, 291, 291, 324, 291, 340, 60,
987
+ /* 110 */ 88, 204, 68, 4, 85, 177, 177, 110, 197, 69,
988
+ /* 120 */ 86, 1, 91, 148, 174, 178, 159, 199, 205, 166,
989
+ /* 130 */ 212, 171, 245, 250, 248, 206, 282, 202, 228, 234,
990
+ /* 140 */ 230, 325, 327, 337, 305, 344, 356, 372, 236, 303,
991
+ /* 150 */ 355, 236, 364, 368, 385, 387, 390, 395, 412, 342,
992
+ /* 160 */ 426, 420,
980993
};
981
-#define YY_REDUCE_COUNT (79)
982
-#define YY_REDUCE_MIN (-126)
983
-#define YY_REDUCE_MAX (1029)
994
+#define YY_REDUCE_COUNT (81)
995
+#define YY_REDUCE_MIN (-127)
996
+#define YY_REDUCE_MAX (1075)
984997
static const short yy_reduce_ofst[] = {
985
- /* 0 */ -28, -93, 139, 460, 485, 511, 524, 537, 549, 565,
986
- /* 10 */ 584, 609, 621, 634, 646, 659, 671, 685, 710, 722,
987
- /* 20 */ 735, 747, 760, 424, 764, 776, 182, 793, 819, 820,
988
- /* 30 */ 832, 150, 150, 791, 105, 405, 844, 856, 472, 552,
989
- /* 40 */ 861, 868, 873, 880, 885, 898, 903, 915, 921, 928,
990
- /* 50 */ 940, 947, 953, 965, 970, 977, 982, 989, 994, 1006,
991
- /* 60 */ 1012, 1024, 1029, -78, -31, -2, 218, 300, 321, -83,
992
- /* 70 */ -126, -126, -94, -77, -60, -46, -40, -13, -8, 9,
998
+ /* 0 */ -29, -94, 476, 515, 528, 543, 555, 583, 597, 610,
999
+ /* 10 */ 622, 635, 650, 662, 690, 704, 717, 729, 742, 757,
1000
+ /* 20 */ 769, 797, 811, 824, 836, 182, 449, 840, 363, 558,
1001
+ /* 30 */ 474, 859, 877, 44, 44, 443, 140, 261, 900, 665,
1002
+ /* 40 */ 145, 509, 772, 903, 918, 926, 930, 933, 945, 959,
1003
+ /* 50 */ 963, 971, 975, 987, 1000, 1003, 1016, 1028, 1033, 1040,
1004
+ /* 60 */ 1045, 1057, 1063, 1069, 1075, -79, -32, -3, 104, 210,
1005
+ /* 70 */ 458, -84, -127, -127, -95, -78, -61, -47, -41, -14,
1006
+ /* 80 */ -9, 3,
9931007
};
9941008
static const YYACTIONTYPE yy_default[] = {
995
- /* 0 */ 433, 427, 427, 427, 427, 427, 427, 427, 427, 427,
996
- /* 10 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
997
- /* 20 */ 427, 427, 427, 427, 456, 555, 427, 427, 433, 559,
998
- /* 30 */ 468, 560, 560, 433, 427, 427, 427, 427, 427, 427,
999
- /* 40 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1000
- /* 50 */ 427, 427, 460, 427, 427, 427, 427, 427, 427, 427,
1001
- /* 60 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1002
- /* 70 */ 427, 427, 427, 427, 427, 439, 453, 490, 490, 555,
1003
- /* 80 */ 451, 476, 427, 427, 427, 427, 427, 427, 427, 427,
1004
- /* 90 */ 427, 427, 454, 427, 427, 427, 427, 471, 469, 494,
1005
- /* 100 */ 493, 492, 459, 442, 427, 545, 427, 427, 427, 427,
1006
- /* 110 */ 427, 567, 427, 526, 525, 521, 427, 514, 511, 427,
1007
- /* 120 */ 511, 427, 427, 427, 474, 427, 427, 427, 427, 427,
1008
- /* 130 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1009
- /* 140 */ 427, 427, 427, 571, 427, 427, 427, 427, 427, 427,
1010
- /* 150 */ 427, 427, 427, 427, 580, 427, 427,
1009
+ /* 0 */ 440, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1010
+ /* 10 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1011
+ /* 20 */ 434, 434, 434, 434, 434, 434, 463, 563, 434, 434,
1012
+ /* 30 */ 440, 567, 475, 568, 568, 440, 434, 434, 434, 434,
1013
+ /* 40 */ 434, 434, 434, 434, 434, 467, 434, 434, 434, 434,
1014
+ /* 50 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1015
+ /* 60 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1016
+ /* 70 */ 434, 434, 434, 434, 434, 434, 434, 446, 460, 497,
1017
+ /* 80 */ 497, 563, 458, 483, 434, 434, 434, 434, 461, 434,
1018
+ /* 90 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 478,
1019
+ /* 100 */ 476, 466, 449, 501, 500, 499, 434, 553, 434, 434,
1020
+ /* 110 */ 434, 434, 434, 575, 434, 533, 532, 528, 434, 521,
1021
+ /* 120 */ 518, 434, 518, 434, 434, 434, 481, 434, 434, 434,
1022
+ /* 130 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1023
+ /* 140 */ 434, 434, 434, 434, 434, 434, 434, 434, 579, 434,
1024
+ /* 150 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 588,
1025
+ /* 160 */ 434, 434,
10111026
};
10121027
/********** End of lemon-generated parsing tables *****************************/
10131028
10141029
/* The next table maps tokens (terminal symbols) into fallback tokens.
10151030
** If a construct like the following:
@@ -1115,10 +1130,11 @@
11151130
0, /* DOT_U => nothing */
11161131
0, /* LAST => nothing */
11171132
0, /* NUMBER => nothing */
11181133
0, /* FUNC1 => nothing */
11191134
0, /* FUNC2 => nothing */
1135
+ 0, /* DIST => nothing */
11201136
0, /* DOT_XY => nothing */
11211137
0, /* X => nothing */
11221138
0, /* Y => nothing */
11231139
0, /* DOT_L => nothing */
11241140
};
@@ -1297,50 +1313,51 @@
12971313
/* 85 */ "DOT_U",
12981314
/* 86 */ "LAST",
12991315
/* 87 */ "NUMBER",
13001316
/* 88 */ "FUNC1",
13011317
/* 89 */ "FUNC2",
1302
- /* 90 */ "DOT_XY",
1303
- /* 91 */ "X",
1304
- /* 92 */ "Y",
1305
- /* 93 */ "DOT_L",
1306
- /* 94 */ "element_list",
1307
- /* 95 */ "element",
1308
- /* 96 */ "unnamed_element",
1309
- /* 97 */ "basetype",
1310
- /* 98 */ "expr",
1311
- /* 99 */ "numproperty",
1312
- /* 100 */ "edge",
1313
- /* 101 */ "direction",
1314
- /* 102 */ "dashproperty",
1315
- /* 103 */ "colorproperty",
1316
- /* 104 */ "locproperty",
1317
- /* 105 */ "position",
1318
- /* 106 */ "place",
1319
- /* 107 */ "object",
1320
- /* 108 */ "objectname",
1321
- /* 109 */ "nth",
1322
- /* 110 */ "textposition",
1323
- /* 111 */ "rvalue",
1324
- /* 112 */ "lvalue",
1325
- /* 113 */ "even",
1326
- /* 114 */ "relexpr",
1327
- /* 115 */ "optrelexpr",
1328
- /* 116 */ "document",
1329
- /* 117 */ "print",
1330
- /* 118 */ "prlist",
1331
- /* 119 */ "pritem",
1332
- /* 120 */ "prsep",
1333
- /* 121 */ "attribute_list",
1334
- /* 122 */ "savelist",
1335
- /* 123 */ "alist",
1336
- /* 124 */ "attribute",
1337
- /* 125 */ "go",
1338
- /* 126 */ "boolproperty",
1339
- /* 127 */ "withclause",
1340
- /* 128 */ "between",
1341
- /* 129 */ "place2",
1318
+ /* 90 */ "DIST",
1319
+ /* 91 */ "DOT_XY",
1320
+ /* 92 */ "X",
1321
+ /* 93 */ "Y",
1322
+ /* 94 */ "DOT_L",
1323
+ /* 95 */ "element_list",
1324
+ /* 96 */ "element",
1325
+ /* 97 */ "unnamed_element",
1326
+ /* 98 */ "basetype",
1327
+ /* 99 */ "expr",
1328
+ /* 100 */ "numproperty",
1329
+ /* 101 */ "edge",
1330
+ /* 102 */ "direction",
1331
+ /* 103 */ "dashproperty",
1332
+ /* 104 */ "colorproperty",
1333
+ /* 105 */ "locproperty",
1334
+ /* 106 */ "position",
1335
+ /* 107 */ "place",
1336
+ /* 108 */ "object",
1337
+ /* 109 */ "objectname",
1338
+ /* 110 */ "nth",
1339
+ /* 111 */ "textposition",
1340
+ /* 112 */ "rvalue",
1341
+ /* 113 */ "lvalue",
1342
+ /* 114 */ "even",
1343
+ /* 115 */ "relexpr",
1344
+ /* 116 */ "optrelexpr",
1345
+ /* 117 */ "document",
1346
+ /* 118 */ "print",
1347
+ /* 119 */ "prlist",
1348
+ /* 120 */ "pritem",
1349
+ /* 121 */ "prsep",
1350
+ /* 122 */ "attribute_list",
1351
+ /* 123 */ "savelist",
1352
+ /* 124 */ "alist",
1353
+ /* 125 */ "attribute",
1354
+ /* 126 */ "go",
1355
+ /* 127 */ "boolproperty",
1356
+ /* 128 */ "withclause",
1357
+ /* 129 */ "between",
1358
+ /* 130 */ "place2",
13421359
};
13431360
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
13441361
13451362
#ifndef NDEBUG
13461363
/* For tracing reduce actions, the names of all rules are required.
@@ -1450,55 +1467,56 @@
14501467
/* 101 */ "expr ::= LP expr RP",
14511468
/* 102 */ "expr ::= NUMBER",
14521469
/* 103 */ "expr ::= ID",
14531470
/* 104 */ "expr ::= FUNC1 LP expr RP",
14541471
/* 105 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1455
- /* 106 */ "expr ::= place2 DOT_XY X",
1456
- /* 107 */ "expr ::= place2 DOT_XY Y",
1457
- /* 108 */ "expr ::= object DOT_L numproperty",
1458
- /* 109 */ "expr ::= object DOT_L dashproperty",
1459
- /* 110 */ "expr ::= object DOT_L colorproperty",
1460
- /* 111 */ "lvalue ::= ID",
1461
- /* 112 */ "lvalue ::= FILL",
1462
- /* 113 */ "lvalue ::= COLOR",
1463
- /* 114 */ "lvalue ::= THICKNESS",
1464
- /* 115 */ "rvalue ::= expr",
1465
- /* 116 */ "print ::= PRINT",
1466
- /* 117 */ "prlist ::= pritem",
1467
- /* 118 */ "prlist ::= prlist prsep pritem",
1468
- /* 119 */ "direction ::= UP",
1469
- /* 120 */ "direction ::= DOWN",
1470
- /* 121 */ "direction ::= LEFT",
1471
- /* 122 */ "direction ::= RIGHT",
1472
- /* 123 */ "optrelexpr ::= relexpr",
1473
- /* 124 */ "attribute_list ::= alist",
1474
- /* 125 */ "alist ::=",
1475
- /* 126 */ "alist ::= alist attribute",
1476
- /* 127 */ "attribute ::= boolproperty",
1477
- /* 128 */ "attribute ::= WITH withclause",
1478
- /* 129 */ "go ::= GO",
1479
- /* 130 */ "go ::=",
1480
- /* 131 */ "even ::= UNTIL EVEN WITH",
1481
- /* 132 */ "even ::= EVEN WITH",
1482
- /* 133 */ "dashproperty ::= DOTTED",
1483
- /* 134 */ "dashproperty ::= DASHED",
1484
- /* 135 */ "colorproperty ::= FILL",
1485
- /* 136 */ "colorproperty ::= COLOR",
1486
- /* 137 */ "position ::= place",
1487
- /* 138 */ "between ::= WAY BETWEEN",
1488
- /* 139 */ "between ::= BETWEEN",
1489
- /* 140 */ "between ::= OF THE WAY BETWEEN",
1490
- /* 141 */ "place ::= place2",
1491
- /* 142 */ "edge ::= CENTER",
1492
- /* 143 */ "edge ::= EDGEPT",
1493
- /* 144 */ "edge ::= TOP",
1494
- /* 145 */ "edge ::= BOTTOM",
1495
- /* 146 */ "edge ::= START",
1496
- /* 147 */ "edge ::= END",
1497
- /* 148 */ "edge ::= RIGHT",
1498
- /* 149 */ "edge ::= LEFT",
1499
- /* 150 */ "object ::= objectname",
1472
+ /* 106 */ "expr ::= DIST LP position COMMA position RP",
1473
+ /* 107 */ "expr ::= place2 DOT_XY X",
1474
+ /* 108 */ "expr ::= place2 DOT_XY Y",
1475
+ /* 109 */ "expr ::= object DOT_L numproperty",
1476
+ /* 110 */ "expr ::= object DOT_L dashproperty",
1477
+ /* 111 */ "expr ::= object DOT_L colorproperty",
1478
+ /* 112 */ "lvalue ::= ID",
1479
+ /* 113 */ "lvalue ::= FILL",
1480
+ /* 114 */ "lvalue ::= COLOR",
1481
+ /* 115 */ "lvalue ::= THICKNESS",
1482
+ /* 116 */ "rvalue ::= expr",
1483
+ /* 117 */ "print ::= PRINT",
1484
+ /* 118 */ "prlist ::= pritem",
1485
+ /* 119 */ "prlist ::= prlist prsep pritem",
1486
+ /* 120 */ "direction ::= UP",
1487
+ /* 121 */ "direction ::= DOWN",
1488
+ /* 122 */ "direction ::= LEFT",
1489
+ /* 123 */ "direction ::= RIGHT",
1490
+ /* 124 */ "optrelexpr ::= relexpr",
1491
+ /* 125 */ "attribute_list ::= alist",
1492
+ /* 126 */ "alist ::=",
1493
+ /* 127 */ "alist ::= alist attribute",
1494
+ /* 128 */ "attribute ::= boolproperty",
1495
+ /* 129 */ "attribute ::= WITH withclause",
1496
+ /* 130 */ "go ::= GO",
1497
+ /* 131 */ "go ::=",
1498
+ /* 132 */ "even ::= UNTIL EVEN WITH",
1499
+ /* 133 */ "even ::= EVEN WITH",
1500
+ /* 134 */ "dashproperty ::= DOTTED",
1501
+ /* 135 */ "dashproperty ::= DASHED",
1502
+ /* 136 */ "colorproperty ::= FILL",
1503
+ /* 137 */ "colorproperty ::= COLOR",
1504
+ /* 138 */ "position ::= place",
1505
+ /* 139 */ "between ::= WAY BETWEEN",
1506
+ /* 140 */ "between ::= BETWEEN",
1507
+ /* 141 */ "between ::= OF THE WAY BETWEEN",
1508
+ /* 142 */ "place ::= place2",
1509
+ /* 143 */ "edge ::= CENTER",
1510
+ /* 144 */ "edge ::= EDGEPT",
1511
+ /* 145 */ "edge ::= TOP",
1512
+ /* 146 */ "edge ::= BOTTOM",
1513
+ /* 147 */ "edge ::= START",
1514
+ /* 148 */ "edge ::= END",
1515
+ /* 149 */ "edge ::= RIGHT",
1516
+ /* 150 */ "edge ::= LEFT",
1517
+ /* 151 */ "object ::= objectname",
15001518
};
15011519
#endif /* NDEBUG */
15021520
15031521
15041522
#if YYSTACKDEPTH<=0
@@ -1620,24 +1638,24 @@
16201638
** Note: during a reduce, the only symbols destroyed are those
16211639
** which appear on the RHS of the rule, but which are *not* used
16221640
** inside the C code.
16231641
*/
16241642
/********* Begin destructor definitions ***************************************/
1625
- case 94: /* element_list */
1626
-{
1627
-#line 466 "pikchr.y"
1628
-pik_elist_free(p,(yypminor->yy72));
1629
-#line 1654 "pikchr.c"
1630
-}
1631
- break;
1632
- case 95: /* element */
1633
- case 96: /* unnamed_element */
1634
- case 97: /* basetype */
1635
-{
1636
-#line 468 "pikchr.y"
1637
-pik_elem_free(p,(yypminor->yy254));
1638
-#line 1663 "pikchr.c"
1643
+ case 95: /* element_list */
1644
+{
1645
+#line 467 "pikchr.y"
1646
+pik_elist_free(p,(yypminor->yy56));
1647
+#line 1672 "pikchr.c"
1648
+}
1649
+ break;
1650
+ case 96: /* element */
1651
+ case 97: /* unnamed_element */
1652
+ case 98: /* basetype */
1653
+{
1654
+#line 469 "pikchr.y"
1655
+pik_elem_free(p,(yypminor->yy226));
1656
+#line 1681 "pikchr.c"
16391657
}
16401658
break;
16411659
/********* End destructor definitions *****************************************/
16421660
default: break; /* If no destructor action specified: do nothing */
16431661
}
@@ -1851,14 +1869,14 @@
18511869
#endif
18521870
while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
18531871
/* Here code is inserted which will execute if the parser
18541872
** stack every overflows */
18551873
/******** Begin %stack_overflow code ******************************************/
1856
-#line 500 "pikchr.y"
1874
+#line 501 "pikchr.y"
18571875
18581876
pik_error(p, 0, "parser stack overflow");
1859
-#line 1884 "pikchr.c"
1877
+#line 1902 "pikchr.c"
18601878
/******** End %stack_overflow code ********************************************/
18611879
pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
18621880
pik_parserCTX_STORE
18631881
}
18641882
@@ -1926,161 +1944,162 @@
19261944
}
19271945
19281946
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
19291947
** of that rule */
19301948
static const YYCODETYPE yyRuleInfoLhs[] = {
1931
- 116, /* (0) document ::= element_list */
1932
- 94, /* (1) element_list ::= element */
1933
- 94, /* (2) element_list ::= element_list EOL element */
1934
- 95, /* (3) element ::= */
1935
- 95, /* (4) element ::= direction */
1936
- 95, /* (5) element ::= lvalue ASSIGN rvalue */
1937
- 95, /* (6) element ::= PLACENAME COLON unnamed_element */
1938
- 95, /* (7) element ::= PLACENAME COLON position */
1939
- 95, /* (8) element ::= unnamed_element */
1940
- 95, /* (9) element ::= print prlist */
1941
- 95, /* (10) element ::= ASSERT LP expr EQ expr RP */
1942
- 95, /* (11) element ::= ASSERT LP place EQ place RP */
1943
- 111, /* (12) rvalue ::= PLACENAME */
1944
- 119, /* (13) pritem ::= FILL */
1945
- 119, /* (14) pritem ::= COLOR */
1946
- 119, /* (15) pritem ::= THICKNESS */
1947
- 119, /* (16) pritem ::= rvalue */
1948
- 119, /* (17) pritem ::= STRING */
1949
- 120, /* (18) prsep ::= COMMA */
1950
- 96, /* (19) unnamed_element ::= basetype attribute_list */
1951
- 97, /* (20) basetype ::= CLASSNAME */
1952
- 97, /* (21) basetype ::= STRING textposition */
1953
- 97, /* (22) basetype ::= LB savelist element_list RB */
1954
- 122, /* (23) savelist ::= */
1955
- 114, /* (24) relexpr ::= expr */
1956
- 114, /* (25) relexpr ::= expr PERCENT */
1957
- 115, /* (26) optrelexpr ::= */
1958
- 121, /* (27) attribute_list ::= relexpr alist */
1959
- 124, /* (28) attribute ::= numproperty relexpr */
1960
- 124, /* (29) attribute ::= dashproperty expr */
1961
- 124, /* (30) attribute ::= dashproperty */
1962
- 124, /* (31) attribute ::= colorproperty rvalue */
1963
- 124, /* (32) attribute ::= go direction optrelexpr */
1964
- 124, /* (33) attribute ::= go direction even position */
1965
- 124, /* (34) attribute ::= CLOSE */
1966
- 124, /* (35) attribute ::= CHOP */
1967
- 124, /* (36) attribute ::= FROM position */
1968
- 124, /* (37) attribute ::= TO position */
1969
- 124, /* (38) attribute ::= THEN */
1970
- 124, /* (39) attribute ::= THEN optrelexpr HEADING expr */
1971
- 124, /* (40) attribute ::= THEN optrelexpr EDGEPT */
1972
- 124, /* (41) attribute ::= GO optrelexpr HEADING expr */
1973
- 124, /* (42) attribute ::= GO optrelexpr EDGEPT */
1974
- 124, /* (43) attribute ::= AT position */
1975
- 124, /* (44) attribute ::= SAME */
1976
- 124, /* (45) attribute ::= SAME AS object */
1977
- 124, /* (46) attribute ::= STRING textposition */
1978
- 124, /* (47) attribute ::= FIT */
1979
- 124, /* (48) attribute ::= BEHIND object */
1980
- 127, /* (49) withclause ::= DOT_E edge AT position */
1981
- 127, /* (50) withclause ::= edge AT position */
1982
- 99, /* (51) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1983
- 126, /* (52) boolproperty ::= CW */
1984
- 126, /* (53) boolproperty ::= CCW */
1985
- 126, /* (54) boolproperty ::= LARROW */
1986
- 126, /* (55) boolproperty ::= RARROW */
1987
- 126, /* (56) boolproperty ::= LRARROW */
1988
- 126, /* (57) boolproperty ::= INVIS */
1989
- 126, /* (58) boolproperty ::= THICK */
1990
- 126, /* (59) boolproperty ::= THIN */
1991
- 110, /* (60) textposition ::= */
1992
- 110, /* (61) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1993
- 105, /* (62) position ::= expr COMMA expr */
1994
- 105, /* (63) position ::= place PLUS expr COMMA expr */
1995
- 105, /* (64) position ::= place MINUS expr COMMA expr */
1996
- 105, /* (65) position ::= place PLUS LP expr COMMA expr RP */
1997
- 105, /* (66) position ::= place MINUS LP expr COMMA expr RP */
1998
- 105, /* (67) position ::= LP position COMMA position RP */
1999
- 105, /* (68) position ::= LP position RP */
2000
- 105, /* (69) position ::= expr between position AND position */
2001
- 105, /* (70) position ::= expr LT position COMMA position GT */
2002
- 105, /* (71) position ::= expr ABOVE position */
2003
- 105, /* (72) position ::= expr BELOW position */
2004
- 105, /* (73) position ::= expr LEFT OF position */
2005
- 105, /* (74) position ::= expr RIGHT OF position */
2006
- 105, /* (75) position ::= expr ON HEADING EDGEPT OF position */
2007
- 105, /* (76) position ::= expr HEADING EDGEPT OF position */
2008
- 105, /* (77) position ::= expr EDGEPT OF position */
2009
- 105, /* (78) position ::= expr ON HEADING expr FROM position */
2010
- 105, /* (79) position ::= expr HEADING expr FROM position */
2011
- 106, /* (80) place ::= edge OF object */
2012
- 129, /* (81) place2 ::= object */
2013
- 129, /* (82) place2 ::= object DOT_E edge */
2014
- 129, /* (83) place2 ::= NTH VERTEX OF object */
2015
- 107, /* (84) object ::= nth */
2016
- 107, /* (85) object ::= nth OF|IN object */
2017
- 108, /* (86) objectname ::= PLACENAME */
2018
- 108, /* (87) objectname ::= objectname DOT_U PLACENAME */
2019
- 109, /* (88) nth ::= NTH CLASSNAME */
2020
- 109, /* (89) nth ::= NTH LAST CLASSNAME */
2021
- 109, /* (90) nth ::= LAST CLASSNAME */
2022
- 109, /* (91) nth ::= LAST */
2023
- 109, /* (92) nth ::= NTH LB RB */
2024
- 109, /* (93) nth ::= NTH LAST LB RB */
2025
- 109, /* (94) nth ::= LAST LB RB */
2026
- 98, /* (95) expr ::= expr PLUS expr */
2027
- 98, /* (96) expr ::= expr MINUS expr */
2028
- 98, /* (97) expr ::= expr STAR expr */
2029
- 98, /* (98) expr ::= expr SLASH expr */
2030
- 98, /* (99) expr ::= MINUS expr */
2031
- 98, /* (100) expr ::= PLUS expr */
2032
- 98, /* (101) expr ::= LP expr RP */
2033
- 98, /* (102) expr ::= NUMBER */
2034
- 98, /* (103) expr ::= ID */
2035
- 98, /* (104) expr ::= FUNC1 LP expr RP */
2036
- 98, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2037
- 98, /* (106) expr ::= place2 DOT_XY X */
2038
- 98, /* (107) expr ::= place2 DOT_XY Y */
2039
- 98, /* (108) expr ::= object DOT_L numproperty */
2040
- 98, /* (109) expr ::= object DOT_L dashproperty */
2041
- 98, /* (110) expr ::= object DOT_L colorproperty */
2042
- 112, /* (111) lvalue ::= ID */
2043
- 112, /* (112) lvalue ::= FILL */
2044
- 112, /* (113) lvalue ::= COLOR */
2045
- 112, /* (114) lvalue ::= THICKNESS */
2046
- 111, /* (115) rvalue ::= expr */
2047
- 117, /* (116) print ::= PRINT */
2048
- 118, /* (117) prlist ::= pritem */
2049
- 118, /* (118) prlist ::= prlist prsep pritem */
2050
- 101, /* (119) direction ::= UP */
2051
- 101, /* (120) direction ::= DOWN */
2052
- 101, /* (121) direction ::= LEFT */
2053
- 101, /* (122) direction ::= RIGHT */
2054
- 115, /* (123) optrelexpr ::= relexpr */
2055
- 121, /* (124) attribute_list ::= alist */
2056
- 123, /* (125) alist ::= */
2057
- 123, /* (126) alist ::= alist attribute */
2058
- 124, /* (127) attribute ::= boolproperty */
2059
- 124, /* (128) attribute ::= WITH withclause */
2060
- 125, /* (129) go ::= GO */
2061
- 125, /* (130) go ::= */
2062
- 113, /* (131) even ::= UNTIL EVEN WITH */
2063
- 113, /* (132) even ::= EVEN WITH */
2064
- 102, /* (133) dashproperty ::= DOTTED */
2065
- 102, /* (134) dashproperty ::= DASHED */
2066
- 103, /* (135) colorproperty ::= FILL */
2067
- 103, /* (136) colorproperty ::= COLOR */
2068
- 105, /* (137) position ::= place */
2069
- 128, /* (138) between ::= WAY BETWEEN */
2070
- 128, /* (139) between ::= BETWEEN */
2071
- 128, /* (140) between ::= OF THE WAY BETWEEN */
2072
- 106, /* (141) place ::= place2 */
2073
- 100, /* (142) edge ::= CENTER */
2074
- 100, /* (143) edge ::= EDGEPT */
2075
- 100, /* (144) edge ::= TOP */
2076
- 100, /* (145) edge ::= BOTTOM */
2077
- 100, /* (146) edge ::= START */
2078
- 100, /* (147) edge ::= END */
2079
- 100, /* (148) edge ::= RIGHT */
2080
- 100, /* (149) edge ::= LEFT */
2081
- 107, /* (150) object ::= objectname */
1949
+ 117, /* (0) document ::= element_list */
1950
+ 95, /* (1) element_list ::= element */
1951
+ 95, /* (2) element_list ::= element_list EOL element */
1952
+ 96, /* (3) element ::= */
1953
+ 96, /* (4) element ::= direction */
1954
+ 96, /* (5) element ::= lvalue ASSIGN rvalue */
1955
+ 96, /* (6) element ::= PLACENAME COLON unnamed_element */
1956
+ 96, /* (7) element ::= PLACENAME COLON position */
1957
+ 96, /* (8) element ::= unnamed_element */
1958
+ 96, /* (9) element ::= print prlist */
1959
+ 96, /* (10) element ::= ASSERT LP expr EQ expr RP */
1960
+ 96, /* (11) element ::= ASSERT LP place EQ place RP */
1961
+ 112, /* (12) rvalue ::= PLACENAME */
1962
+ 120, /* (13) pritem ::= FILL */
1963
+ 120, /* (14) pritem ::= COLOR */
1964
+ 120, /* (15) pritem ::= THICKNESS */
1965
+ 120, /* (16) pritem ::= rvalue */
1966
+ 120, /* (17) pritem ::= STRING */
1967
+ 121, /* (18) prsep ::= COMMA */
1968
+ 97, /* (19) unnamed_element ::= basetype attribute_list */
1969
+ 98, /* (20) basetype ::= CLASSNAME */
1970
+ 98, /* (21) basetype ::= STRING textposition */
1971
+ 98, /* (22) basetype ::= LB savelist element_list RB */
1972
+ 123, /* (23) savelist ::= */
1973
+ 115, /* (24) relexpr ::= expr */
1974
+ 115, /* (25) relexpr ::= expr PERCENT */
1975
+ 116, /* (26) optrelexpr ::= */
1976
+ 122, /* (27) attribute_list ::= relexpr alist */
1977
+ 125, /* (28) attribute ::= numproperty relexpr */
1978
+ 125, /* (29) attribute ::= dashproperty expr */
1979
+ 125, /* (30) attribute ::= dashproperty */
1980
+ 125, /* (31) attribute ::= colorproperty rvalue */
1981
+ 125, /* (32) attribute ::= go direction optrelexpr */
1982
+ 125, /* (33) attribute ::= go direction even position */
1983
+ 125, /* (34) attribute ::= CLOSE */
1984
+ 125, /* (35) attribute ::= CHOP */
1985
+ 125, /* (36) attribute ::= FROM position */
1986
+ 125, /* (37) attribute ::= TO position */
1987
+ 125, /* (38) attribute ::= THEN */
1988
+ 125, /* (39) attribute ::= THEN optrelexpr HEADING expr */
1989
+ 125, /* (40) attribute ::= THEN optrelexpr EDGEPT */
1990
+ 125, /* (41) attribute ::= GO optrelexpr HEADING expr */
1991
+ 125, /* (42) attribute ::= GO optrelexpr EDGEPT */
1992
+ 125, /* (43) attribute ::= AT position */
1993
+ 125, /* (44) attribute ::= SAME */
1994
+ 125, /* (45) attribute ::= SAME AS object */
1995
+ 125, /* (46) attribute ::= STRING textposition */
1996
+ 125, /* (47) attribute ::= FIT */
1997
+ 125, /* (48) attribute ::= BEHIND object */
1998
+ 128, /* (49) withclause ::= DOT_E edge AT position */
1999
+ 128, /* (50) withclause ::= edge AT position */
2000
+ 100, /* (51) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2001
+ 127, /* (52) boolproperty ::= CW */
2002
+ 127, /* (53) boolproperty ::= CCW */
2003
+ 127, /* (54) boolproperty ::= LARROW */
2004
+ 127, /* (55) boolproperty ::= RARROW */
2005
+ 127, /* (56) boolproperty ::= LRARROW */
2006
+ 127, /* (57) boolproperty ::= INVIS */
2007
+ 127, /* (58) boolproperty ::= THICK */
2008
+ 127, /* (59) boolproperty ::= THIN */
2009
+ 111, /* (60) textposition ::= */
2010
+ 111, /* (61) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2011
+ 106, /* (62) position ::= expr COMMA expr */
2012
+ 106, /* (63) position ::= place PLUS expr COMMA expr */
2013
+ 106, /* (64) position ::= place MINUS expr COMMA expr */
2014
+ 106, /* (65) position ::= place PLUS LP expr COMMA expr RP */
2015
+ 106, /* (66) position ::= place MINUS LP expr COMMA expr RP */
2016
+ 106, /* (67) position ::= LP position COMMA position RP */
2017
+ 106, /* (68) position ::= LP position RP */
2018
+ 106, /* (69) position ::= expr between position AND position */
2019
+ 106, /* (70) position ::= expr LT position COMMA position GT */
2020
+ 106, /* (71) position ::= expr ABOVE position */
2021
+ 106, /* (72) position ::= expr BELOW position */
2022
+ 106, /* (73) position ::= expr LEFT OF position */
2023
+ 106, /* (74) position ::= expr RIGHT OF position */
2024
+ 106, /* (75) position ::= expr ON HEADING EDGEPT OF position */
2025
+ 106, /* (76) position ::= expr HEADING EDGEPT OF position */
2026
+ 106, /* (77) position ::= expr EDGEPT OF position */
2027
+ 106, /* (78) position ::= expr ON HEADING expr FROM position */
2028
+ 106, /* (79) position ::= expr HEADING expr FROM position */
2029
+ 107, /* (80) place ::= edge OF object */
2030
+ 130, /* (81) place2 ::= object */
2031
+ 130, /* (82) place2 ::= object DOT_E edge */
2032
+ 130, /* (83) place2 ::= NTH VERTEX OF object */
2033
+ 108, /* (84) object ::= nth */
2034
+ 108, /* (85) object ::= nth OF|IN object */
2035
+ 109, /* (86) objectname ::= PLACENAME */
2036
+ 109, /* (87) objectname ::= objectname DOT_U PLACENAME */
2037
+ 110, /* (88) nth ::= NTH CLASSNAME */
2038
+ 110, /* (89) nth ::= NTH LAST CLASSNAME */
2039
+ 110, /* (90) nth ::= LAST CLASSNAME */
2040
+ 110, /* (91) nth ::= LAST */
2041
+ 110, /* (92) nth ::= NTH LB RB */
2042
+ 110, /* (93) nth ::= NTH LAST LB RB */
2043
+ 110, /* (94) nth ::= LAST LB RB */
2044
+ 99, /* (95) expr ::= expr PLUS expr */
2045
+ 99, /* (96) expr ::= expr MINUS expr */
2046
+ 99, /* (97) expr ::= expr STAR expr */
2047
+ 99, /* (98) expr ::= expr SLASH expr */
2048
+ 99, /* (99) expr ::= MINUS expr */
2049
+ 99, /* (100) expr ::= PLUS expr */
2050
+ 99, /* (101) expr ::= LP expr RP */
2051
+ 99, /* (102) expr ::= NUMBER */
2052
+ 99, /* (103) expr ::= ID */
2053
+ 99, /* (104) expr ::= FUNC1 LP expr RP */
2054
+ 99, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2055
+ 99, /* (106) expr ::= DIST LP position COMMA position RP */
2056
+ 99, /* (107) expr ::= place2 DOT_XY X */
2057
+ 99, /* (108) expr ::= place2 DOT_XY Y */
2058
+ 99, /* (109) expr ::= object DOT_L numproperty */
2059
+ 99, /* (110) expr ::= object DOT_L dashproperty */
2060
+ 99, /* (111) expr ::= object DOT_L colorproperty */
2061
+ 113, /* (112) lvalue ::= ID */
2062
+ 113, /* (113) lvalue ::= FILL */
2063
+ 113, /* (114) lvalue ::= COLOR */
2064
+ 113, /* (115) lvalue ::= THICKNESS */
2065
+ 112, /* (116) rvalue ::= expr */
2066
+ 118, /* (117) print ::= PRINT */
2067
+ 119, /* (118) prlist ::= pritem */
2068
+ 119, /* (119) prlist ::= prlist prsep pritem */
2069
+ 102, /* (120) direction ::= UP */
2070
+ 102, /* (121) direction ::= DOWN */
2071
+ 102, /* (122) direction ::= LEFT */
2072
+ 102, /* (123) direction ::= RIGHT */
2073
+ 116, /* (124) optrelexpr ::= relexpr */
2074
+ 122, /* (125) attribute_list ::= alist */
2075
+ 124, /* (126) alist ::= */
2076
+ 124, /* (127) alist ::= alist attribute */
2077
+ 125, /* (128) attribute ::= boolproperty */
2078
+ 125, /* (129) attribute ::= WITH withclause */
2079
+ 126, /* (130) go ::= GO */
2080
+ 126, /* (131) go ::= */
2081
+ 114, /* (132) even ::= UNTIL EVEN WITH */
2082
+ 114, /* (133) even ::= EVEN WITH */
2083
+ 103, /* (134) dashproperty ::= DOTTED */
2084
+ 103, /* (135) dashproperty ::= DASHED */
2085
+ 104, /* (136) colorproperty ::= FILL */
2086
+ 104, /* (137) colorproperty ::= COLOR */
2087
+ 106, /* (138) position ::= place */
2088
+ 129, /* (139) between ::= WAY BETWEEN */
2089
+ 129, /* (140) between ::= BETWEEN */
2090
+ 129, /* (141) between ::= OF THE WAY BETWEEN */
2091
+ 107, /* (142) place ::= place2 */
2092
+ 101, /* (143) edge ::= CENTER */
2093
+ 101, /* (144) edge ::= EDGEPT */
2094
+ 101, /* (145) edge ::= TOP */
2095
+ 101, /* (146) edge ::= BOTTOM */
2096
+ 101, /* (147) edge ::= START */
2097
+ 101, /* (148) edge ::= END */
2098
+ 101, /* (149) edge ::= RIGHT */
2099
+ 101, /* (150) edge ::= LEFT */
2100
+ 108, /* (151) object ::= objectname */
20822101
};
20832102
20842103
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
20852104
** of symbols on the right-hand side of that rule. */
20862105
static const signed char yyRuleInfoNRhs[] = {
@@ -2188,55 +2207,56 @@
21882207
-3, /* (101) expr ::= LP expr RP */
21892208
-1, /* (102) expr ::= NUMBER */
21902209
-1, /* (103) expr ::= ID */
21912210
-4, /* (104) expr ::= FUNC1 LP expr RP */
21922211
-6, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2193
- -3, /* (106) expr ::= place2 DOT_XY X */
2194
- -3, /* (107) expr ::= place2 DOT_XY Y */
2195
- -3, /* (108) expr ::= object DOT_L numproperty */
2196
- -3, /* (109) expr ::= object DOT_L dashproperty */
2197
- -3, /* (110) expr ::= object DOT_L colorproperty */
2198
- -1, /* (111) lvalue ::= ID */
2199
- -1, /* (112) lvalue ::= FILL */
2200
- -1, /* (113) lvalue ::= COLOR */
2201
- -1, /* (114) lvalue ::= THICKNESS */
2202
- -1, /* (115) rvalue ::= expr */
2203
- -1, /* (116) print ::= PRINT */
2204
- -1, /* (117) prlist ::= pritem */
2205
- -3, /* (118) prlist ::= prlist prsep pritem */
2206
- -1, /* (119) direction ::= UP */
2207
- -1, /* (120) direction ::= DOWN */
2208
- -1, /* (121) direction ::= LEFT */
2209
- -1, /* (122) direction ::= RIGHT */
2210
- -1, /* (123) optrelexpr ::= relexpr */
2211
- -1, /* (124) attribute_list ::= alist */
2212
- 0, /* (125) alist ::= */
2213
- -2, /* (126) alist ::= alist attribute */
2214
- -1, /* (127) attribute ::= boolproperty */
2215
- -2, /* (128) attribute ::= WITH withclause */
2216
- -1, /* (129) go ::= GO */
2217
- 0, /* (130) go ::= */
2218
- -3, /* (131) even ::= UNTIL EVEN WITH */
2219
- -2, /* (132) even ::= EVEN WITH */
2220
- -1, /* (133) dashproperty ::= DOTTED */
2221
- -1, /* (134) dashproperty ::= DASHED */
2222
- -1, /* (135) colorproperty ::= FILL */
2223
- -1, /* (136) colorproperty ::= COLOR */
2224
- -1, /* (137) position ::= place */
2225
- -2, /* (138) between ::= WAY BETWEEN */
2226
- -1, /* (139) between ::= BETWEEN */
2227
- -4, /* (140) between ::= OF THE WAY BETWEEN */
2228
- -1, /* (141) place ::= place2 */
2229
- -1, /* (142) edge ::= CENTER */
2230
- -1, /* (143) edge ::= EDGEPT */
2231
- -1, /* (144) edge ::= TOP */
2232
- -1, /* (145) edge ::= BOTTOM */
2233
- -1, /* (146) edge ::= START */
2234
- -1, /* (147) edge ::= END */
2235
- -1, /* (148) edge ::= RIGHT */
2236
- -1, /* (149) edge ::= LEFT */
2237
- -1, /* (150) object ::= objectname */
2212
+ -6, /* (106) expr ::= DIST LP position COMMA position RP */
2213
+ -3, /* (107) expr ::= place2 DOT_XY X */
2214
+ -3, /* (108) expr ::= place2 DOT_XY Y */
2215
+ -3, /* (109) expr ::= object DOT_L numproperty */
2216
+ -3, /* (110) expr ::= object DOT_L dashproperty */
2217
+ -3, /* (111) expr ::= object DOT_L colorproperty */
2218
+ -1, /* (112) lvalue ::= ID */
2219
+ -1, /* (113) lvalue ::= FILL */
2220
+ -1, /* (114) lvalue ::= COLOR */
2221
+ -1, /* (115) lvalue ::= THICKNESS */
2222
+ -1, /* (116) rvalue ::= expr */
2223
+ -1, /* (117) print ::= PRINT */
2224
+ -1, /* (118) prlist ::= pritem */
2225
+ -3, /* (119) prlist ::= prlist prsep pritem */
2226
+ -1, /* (120) direction ::= UP */
2227
+ -1, /* (121) direction ::= DOWN */
2228
+ -1, /* (122) direction ::= LEFT */
2229
+ -1, /* (123) direction ::= RIGHT */
2230
+ -1, /* (124) optrelexpr ::= relexpr */
2231
+ -1, /* (125) attribute_list ::= alist */
2232
+ 0, /* (126) alist ::= */
2233
+ -2, /* (127) alist ::= alist attribute */
2234
+ -1, /* (128) attribute ::= boolproperty */
2235
+ -2, /* (129) attribute ::= WITH withclause */
2236
+ -1, /* (130) go ::= GO */
2237
+ 0, /* (131) go ::= */
2238
+ -3, /* (132) even ::= UNTIL EVEN WITH */
2239
+ -2, /* (133) even ::= EVEN WITH */
2240
+ -1, /* (134) dashproperty ::= DOTTED */
2241
+ -1, /* (135) dashproperty ::= DASHED */
2242
+ -1, /* (136) colorproperty ::= FILL */
2243
+ -1, /* (137) colorproperty ::= COLOR */
2244
+ -1, /* (138) position ::= place */
2245
+ -2, /* (139) between ::= WAY BETWEEN */
2246
+ -1, /* (140) between ::= BETWEEN */
2247
+ -4, /* (141) between ::= OF THE WAY BETWEEN */
2248
+ -1, /* (142) place ::= place2 */
2249
+ -1, /* (143) edge ::= CENTER */
2250
+ -1, /* (144) edge ::= EDGEPT */
2251
+ -1, /* (145) edge ::= TOP */
2252
+ -1, /* (146) edge ::= BOTTOM */
2253
+ -1, /* (147) edge ::= START */
2254
+ -1, /* (148) edge ::= END */
2255
+ -1, /* (149) edge ::= RIGHT */
2256
+ -1, /* (150) edge ::= LEFT */
2257
+ -1, /* (151) object ::= objectname */
22382258
};
22392259
22402260
static void yy_accept(yyParser*); /* Forward Declaration */
22412261
22422262
/*
@@ -2323,636 +2343,641 @@
23232343
** break;
23242344
*/
23252345
/********** Begin reduce actions **********************************************/
23262346
YYMINORTYPE yylhsminor;
23272347
case 0: /* document ::= element_list */
2328
-#line 504 "pikchr.y"
2329
-{pik_render(p,yymsp[0].minor.yy72);}
2330
-#line 2355 "pikchr.c"
2348
+#line 505 "pikchr.y"
2349
+{pik_render(p,yymsp[0].minor.yy56);}
2350
+#line 2375 "pikchr.c"
23312351
break;
23322352
case 1: /* element_list ::= element */
2333
-#line 507 "pikchr.y"
2334
-{ yylhsminor.yy72 = pik_elist_append(p,0,yymsp[0].minor.yy254); }
2335
-#line 2360 "pikchr.c"
2336
- yymsp[0].minor.yy72 = yylhsminor.yy72;
2353
+#line 508 "pikchr.y"
2354
+{ yylhsminor.yy56 = pik_elist_append(p,0,yymsp[0].minor.yy226); }
2355
+#line 2380 "pikchr.c"
2356
+ yymsp[0].minor.yy56 = yylhsminor.yy56;
23372357
break;
23382358
case 2: /* element_list ::= element_list EOL element */
2339
-#line 509 "pikchr.y"
2340
-{ yylhsminor.yy72 = pik_elist_append(p,yymsp[-2].minor.yy72,yymsp[0].minor.yy254); }
2341
-#line 2366 "pikchr.c"
2342
- yymsp[-2].minor.yy72 = yylhsminor.yy72;
2359
+#line 510 "pikchr.y"
2360
+{ yylhsminor.yy56 = pik_elist_append(p,yymsp[-2].minor.yy56,yymsp[0].minor.yy226); }
2361
+#line 2386 "pikchr.c"
2362
+ yymsp[-2].minor.yy56 = yylhsminor.yy56;
23432363
break;
23442364
case 3: /* element ::= */
2345
-#line 512 "pikchr.y"
2346
-{ yymsp[1].minor.yy254 = 0; }
2347
-#line 2372 "pikchr.c"
2365
+#line 513 "pikchr.y"
2366
+{ yymsp[1].minor.yy226 = 0; }
2367
+#line 2392 "pikchr.c"
23482368
break;
23492369
case 4: /* element ::= direction */
2350
-#line 513 "pikchr.y"
2351
-{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy254=0; }
2352
-#line 2377 "pikchr.c"
2353
- yymsp[0].minor.yy254 = yylhsminor.yy254;
2370
+#line 514 "pikchr.y"
2371
+{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy226=0; }
2372
+#line 2397 "pikchr.c"
2373
+ yymsp[0].minor.yy226 = yylhsminor.yy226;
23542374
break;
23552375
case 5: /* element ::= lvalue ASSIGN rvalue */
2356
-#line 514 "pikchr.y"
2357
-{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy73,&yymsp[-1].minor.yy0); yylhsminor.yy254=0;}
2358
-#line 2383 "pikchr.c"
2359
- yymsp[-2].minor.yy254 = yylhsminor.yy254;
2376
+#line 515 "pikchr.y"
2377
+{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy257,&yymsp[-1].minor.yy0); yylhsminor.yy226=0;}
2378
+#line 2403 "pikchr.c"
2379
+ yymsp[-2].minor.yy226 = yylhsminor.yy226;
23602380
break;
23612381
case 6: /* element ::= PLACENAME COLON unnamed_element */
2362
-#line 516 "pikchr.y"
2363
-{ yylhsminor.yy254 = yymsp[0].minor.yy254; pik_elem_setname(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0); }
2364
-#line 2389 "pikchr.c"
2365
- yymsp[-2].minor.yy254 = yylhsminor.yy254;
2382
+#line 517 "pikchr.y"
2383
+{ yylhsminor.yy226 = yymsp[0].minor.yy226; pik_elem_setname(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0); }
2384
+#line 2409 "pikchr.c"
2385
+ yymsp[-2].minor.yy226 = yylhsminor.yy226;
23662386
break;
23672387
case 7: /* element ::= PLACENAME COLON position */
2368
-#line 518 "pikchr.y"
2369
-{ yylhsminor.yy254 = pik_elem_new(p,0,0,0);
2370
- if(yylhsminor.yy254){ yylhsminor.yy254->ptAt = yymsp[0].minor.yy139; pik_elem_setname(p,yylhsminor.yy254,&yymsp[-2].minor.yy0); }}
2371
-#line 2396 "pikchr.c"
2372
- yymsp[-2].minor.yy254 = yylhsminor.yy254;
2388
+#line 519 "pikchr.y"
2389
+{ yylhsminor.yy226 = pik_elem_new(p,0,0,0);
2390
+ if(yylhsminor.yy226){ yylhsminor.yy226->ptAt = yymsp[0].minor.yy175; pik_elem_setname(p,yylhsminor.yy226,&yymsp[-2].minor.yy0); }}
2391
+#line 2416 "pikchr.c"
2392
+ yymsp[-2].minor.yy226 = yylhsminor.yy226;
23732393
break;
23742394
case 8: /* element ::= unnamed_element */
2375
-#line 520 "pikchr.y"
2376
-{yylhsminor.yy254 = yymsp[0].minor.yy254;}
2377
-#line 2402 "pikchr.c"
2378
- yymsp[0].minor.yy254 = yylhsminor.yy254;
2395
+#line 521 "pikchr.y"
2396
+{yylhsminor.yy226 = yymsp[0].minor.yy226;}
2397
+#line 2422 "pikchr.c"
2398
+ yymsp[0].minor.yy226 = yylhsminor.yy226;
23792399
break;
23802400
case 9: /* element ::= print prlist */
2381
-#line 521 "pikchr.y"
2382
-{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy254=0;}
2383
-#line 2408 "pikchr.c"
2401
+#line 522 "pikchr.y"
2402
+{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy226=0;}
2403
+#line 2428 "pikchr.c"
23842404
break;
23852405
case 10: /* element ::= ASSERT LP expr EQ expr RP */
2386
-#line 526 "pikchr.y"
2387
-{yymsp[-5].minor.yy254=pik_assert(p,yymsp[-3].minor.yy73,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy73);}
2388
-#line 2413 "pikchr.c"
2406
+#line 527 "pikchr.y"
2407
+{yymsp[-5].minor.yy226=pik_assert(p,yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy257);}
2408
+#line 2433 "pikchr.c"
23892409
break;
23902410
case 11: /* element ::= ASSERT LP place EQ place RP */
2391
-#line 528 "pikchr.y"
2392
-{yymsp[-5].minor.yy254=pik_place_assert(p,&yymsp[-3].minor.yy139,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy139);}
2393
-#line 2418 "pikchr.c"
2411
+#line 529 "pikchr.y"
2412
+{yymsp[-5].minor.yy226=pik_place_assert(p,&yymsp[-3].minor.yy175,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy175);}
2413
+#line 2438 "pikchr.c"
23942414
break;
23952415
case 12: /* rvalue ::= PLACENAME */
2396
-#line 539 "pikchr.y"
2397
-{yylhsminor.yy73 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2398
-#line 2423 "pikchr.c"
2399
- yymsp[0].minor.yy73 = yylhsminor.yy73;
2416
+#line 540 "pikchr.y"
2417
+{yylhsminor.yy257 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2418
+#line 2443 "pikchr.c"
2419
+ yymsp[0].minor.yy257 = yylhsminor.yy257;
24002420
break;
24012421
case 13: /* pritem ::= FILL */
24022422
case 14: /* pritem ::= COLOR */ yytestcase(yyruleno==14);
24032423
case 15: /* pritem ::= THICKNESS */ yytestcase(yyruleno==15);
2404
-#line 544 "pikchr.y"
2424
+#line 545 "pikchr.y"
24052425
{pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2406
-#line 2431 "pikchr.c"
2426
+#line 2451 "pikchr.c"
24072427
break;
24082428
case 16: /* pritem ::= rvalue */
2409
-#line 547 "pikchr.y"
2410
-{pik_append_num(p,"",yymsp[0].minor.yy73);}
2411
-#line 2436 "pikchr.c"
2429
+#line 548 "pikchr.y"
2430
+{pik_append_num(p,"",yymsp[0].minor.yy257);}
2431
+#line 2456 "pikchr.c"
24122432
break;
24132433
case 17: /* pritem ::= STRING */
2414
-#line 548 "pikchr.y"
2434
+#line 549 "pikchr.y"
24152435
{pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2416
-#line 2441 "pikchr.c"
2436
+#line 2461 "pikchr.c"
24172437
break;
24182438
case 18: /* prsep ::= COMMA */
2419
-#line 549 "pikchr.y"
2439
+#line 550 "pikchr.y"
24202440
{pik_append(p, " ", 1);}
2421
-#line 2446 "pikchr.c"
2441
+#line 2466 "pikchr.c"
24222442
break;
24232443
case 19: /* unnamed_element ::= basetype attribute_list */
2424
-#line 552 "pikchr.y"
2425
-{yylhsminor.yy254 = yymsp[-1].minor.yy254; pik_after_adding_attributes(p,yylhsminor.yy254);}
2426
-#line 2451 "pikchr.c"
2427
- yymsp[-1].minor.yy254 = yylhsminor.yy254;
2444
+#line 553 "pikchr.y"
2445
+{yylhsminor.yy226 = yymsp[-1].minor.yy226; pik_after_adding_attributes(p,yylhsminor.yy226);}
2446
+#line 2471 "pikchr.c"
2447
+ yymsp[-1].minor.yy226 = yylhsminor.yy226;
24282448
break;
24292449
case 20: /* basetype ::= CLASSNAME */
2430
-#line 554 "pikchr.y"
2431
-{yylhsminor.yy254 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2432
-#line 2457 "pikchr.c"
2433
- yymsp[0].minor.yy254 = yylhsminor.yy254;
2450
+#line 555 "pikchr.y"
2451
+{yylhsminor.yy226 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2452
+#line 2477 "pikchr.c"
2453
+ yymsp[0].minor.yy226 = yylhsminor.yy226;
24342454
break;
24352455
case 21: /* basetype ::= STRING textposition */
2436
-#line 556 "pikchr.y"
2437
-{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy74; yylhsminor.yy254 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2438
-#line 2463 "pikchr.c"
2439
- yymsp[-1].minor.yy254 = yylhsminor.yy254;
2456
+#line 557 "pikchr.y"
2457
+{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy116; yylhsminor.yy226 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2458
+#line 2483 "pikchr.c"
2459
+ yymsp[-1].minor.yy226 = yylhsminor.yy226;
24402460
break;
24412461
case 22: /* basetype ::= LB savelist element_list RB */
2442
-#line 558 "pikchr.y"
2443
-{ p->list = yymsp[-2].minor.yy72; yymsp[-3].minor.yy254 = pik_elem_new(p,0,0,yymsp[-1].minor.yy72); if(yymsp[-3].minor.yy254) yymsp[-3].minor.yy254->errTok = yymsp[0].minor.yy0; }
2444
-#line 2469 "pikchr.c"
2462
+#line 559 "pikchr.y"
2463
+{ p->list = yymsp[-2].minor.yy56; yymsp[-3].minor.yy226 = pik_elem_new(p,0,0,yymsp[-1].minor.yy56); if(yymsp[-3].minor.yy226) yymsp[-3].minor.yy226->errTok = yymsp[0].minor.yy0; }
2464
+#line 2489 "pikchr.c"
24452465
break;
24462466
case 23: /* savelist ::= */
2447
-#line 563 "pikchr.y"
2448
-{yymsp[1].minor.yy72 = p->list; p->list = 0;}
2449
-#line 2474 "pikchr.c"
2467
+#line 564 "pikchr.y"
2468
+{yymsp[1].minor.yy56 = p->list; p->list = 0;}
2469
+#line 2494 "pikchr.c"
24502470
break;
24512471
case 24: /* relexpr ::= expr */
2452
-#line 570 "pikchr.y"
2453
-{yylhsminor.yy60.rAbs = yymsp[0].minor.yy73; yylhsminor.yy60.rRel = 0;}
2454
-#line 2479 "pikchr.c"
2455
- yymsp[0].minor.yy60 = yylhsminor.yy60;
2472
+#line 571 "pikchr.y"
2473
+{yylhsminor.yy164.rAbs = yymsp[0].minor.yy257; yylhsminor.yy164.rRel = 0;}
2474
+#line 2499 "pikchr.c"
2475
+ yymsp[0].minor.yy164 = yylhsminor.yy164;
24562476
break;
24572477
case 25: /* relexpr ::= expr PERCENT */
2458
-#line 571 "pikchr.y"
2459
-{yylhsminor.yy60.rAbs = 0; yylhsminor.yy60.rRel = yymsp[-1].minor.yy73/100;}
2460
-#line 2485 "pikchr.c"
2461
- yymsp[-1].minor.yy60 = yylhsminor.yy60;
2478
+#line 572 "pikchr.y"
2479
+{yylhsminor.yy164.rAbs = 0; yylhsminor.yy164.rRel = yymsp[-1].minor.yy257/100;}
2480
+#line 2505 "pikchr.c"
2481
+ yymsp[-1].minor.yy164 = yylhsminor.yy164;
24622482
break;
24632483
case 26: /* optrelexpr ::= */
2464
-#line 573 "pikchr.y"
2465
-{yymsp[1].minor.yy60.rAbs = 0; yymsp[1].minor.yy60.rRel = 1.0;}
2466
-#line 2491 "pikchr.c"
2484
+#line 574 "pikchr.y"
2485
+{yymsp[1].minor.yy164.rAbs = 0; yymsp[1].minor.yy164.rRel = 1.0;}
2486
+#line 2511 "pikchr.c"
24672487
break;
24682488
case 27: /* attribute_list ::= relexpr alist */
2469
-#line 575 "pikchr.y"
2470
-{pik_add_direction(p,0,&yymsp[-1].minor.yy60);}
2471
-#line 2496 "pikchr.c"
2489
+#line 576 "pikchr.y"
2490
+{pik_add_direction(p,0,&yymsp[-1].minor.yy164);}
2491
+#line 2516 "pikchr.c"
24722492
break;
24732493
case 28: /* attribute ::= numproperty relexpr */
2474
-#line 579 "pikchr.y"
2475
-{ pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy60); }
2476
-#line 2501 "pikchr.c"
2494
+#line 580 "pikchr.y"
2495
+{ pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164); }
2496
+#line 2521 "pikchr.c"
24772497
break;
24782498
case 29: /* attribute ::= dashproperty expr */
2479
-#line 580 "pikchr.y"
2480
-{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy73); }
2481
-#line 2506 "pikchr.c"
2499
+#line 581 "pikchr.y"
2500
+{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy257); }
2501
+#line 2526 "pikchr.c"
24822502
break;
24832503
case 30: /* attribute ::= dashproperty */
2484
-#line 581 "pikchr.y"
2504
+#line 582 "pikchr.y"
24852505
{ pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2486
-#line 2511 "pikchr.c"
2506
+#line 2531 "pikchr.c"
24872507
break;
24882508
case 31: /* attribute ::= colorproperty rvalue */
2489
-#line 582 "pikchr.y"
2490
-{ pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy73); }
2491
-#line 2516 "pikchr.c"
2509
+#line 583 "pikchr.y"
2510
+{ pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257); }
2511
+#line 2536 "pikchr.c"
24922512
break;
24932513
case 32: /* attribute ::= go direction optrelexpr */
2494
-#line 583 "pikchr.y"
2495
-{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy60);}
2496
-#line 2521 "pikchr.c"
2514
+#line 584 "pikchr.y"
2515
+{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164);}
2516
+#line 2541 "pikchr.c"
24972517
break;
24982518
case 33: /* attribute ::= go direction even position */
2499
-#line 584 "pikchr.y"
2500
-{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy139);}
2501
-#line 2526 "pikchr.c"
2519
+#line 585 "pikchr.y"
2520
+{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175);}
2521
+#line 2546 "pikchr.c"
25022522
break;
25032523
case 34: /* attribute ::= CLOSE */
2504
-#line 585 "pikchr.y"
2524
+#line 586 "pikchr.y"
25052525
{ pik_close_path(p,&yymsp[0].minor.yy0); }
2506
-#line 2531 "pikchr.c"
2526
+#line 2551 "pikchr.c"
25072527
break;
25082528
case 35: /* attribute ::= CHOP */
2509
-#line 586 "pikchr.y"
2529
+#line 587 "pikchr.y"
25102530
{ p->cur->bChop = 1; }
2511
-#line 2536 "pikchr.c"
2531
+#line 2556 "pikchr.c"
25122532
break;
25132533
case 36: /* attribute ::= FROM position */
2514
-#line 587 "pikchr.y"
2515
-{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy139); }
2516
-#line 2541 "pikchr.c"
2534
+#line 588 "pikchr.y"
2535
+{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); }
2536
+#line 2561 "pikchr.c"
25172537
break;
25182538
case 37: /* attribute ::= TO position */
2519
-#line 588 "pikchr.y"
2520
-{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy139); }
2521
-#line 2546 "pikchr.c"
2539
+#line 589 "pikchr.y"
2540
+{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); }
2541
+#line 2566 "pikchr.c"
25222542
break;
25232543
case 38: /* attribute ::= THEN */
2524
-#line 589 "pikchr.y"
2544
+#line 590 "pikchr.y"
25252545
{ pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2526
-#line 2551 "pikchr.c"
2546
+#line 2571 "pikchr.c"
25272547
break;
25282548
case 39: /* attribute ::= THEN optrelexpr HEADING expr */
25292549
case 41: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==41);
2530
-#line 591 "pikchr.y"
2531
-{pik_move_hdg(p,&yymsp[-2].minor.yy60,&yymsp[-1].minor.yy0,yymsp[0].minor.yy73,0,&yymsp[-3].minor.yy0);}
2532
-#line 2557 "pikchr.c"
2550
+#line 592 "pikchr.y"
2551
+{pik_move_hdg(p,&yymsp[-2].minor.yy164,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257,0,&yymsp[-3].minor.yy0);}
2552
+#line 2577 "pikchr.c"
25332553
break;
25342554
case 40: /* attribute ::= THEN optrelexpr EDGEPT */
25352555
case 42: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==42);
2536
-#line 592 "pikchr.y"
2537
-{pik_move_hdg(p,&yymsp[-1].minor.yy60,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2538
-#line 2563 "pikchr.c"
2556
+#line 593 "pikchr.y"
2557
+{pik_move_hdg(p,&yymsp[-1].minor.yy164,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2558
+#line 2583 "pikchr.c"
25392559
break;
25402560
case 43: /* attribute ::= AT position */
2541
-#line 597 "pikchr.y"
2542
-{ pik_set_at(p,0,&yymsp[0].minor.yy139,&yymsp[-1].minor.yy0); }
2543
-#line 2568 "pikchr.c"
2561
+#line 598 "pikchr.y"
2562
+{ pik_set_at(p,0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); }
2563
+#line 2588 "pikchr.c"
25442564
break;
25452565
case 44: /* attribute ::= SAME */
2546
-#line 599 "pikchr.y"
2566
+#line 600 "pikchr.y"
25472567
{pik_same(p,0,&yymsp[0].minor.yy0);}
2548
-#line 2573 "pikchr.c"
2568
+#line 2593 "pikchr.c"
25492569
break;
25502570
case 45: /* attribute ::= SAME AS object */
2551
-#line 600 "pikchr.y"
2552
-{pik_same(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0);}
2553
-#line 2578 "pikchr.c"
2571
+#line 601 "pikchr.y"
2572
+{pik_same(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);}
2573
+#line 2598 "pikchr.c"
25542574
break;
25552575
case 46: /* attribute ::= STRING textposition */
2556
-#line 601 "pikchr.y"
2557
-{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy74);}
2558
-#line 2583 "pikchr.c"
2576
+#line 602 "pikchr.y"
2577
+{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy116);}
2578
+#line 2603 "pikchr.c"
25592579
break;
25602580
case 47: /* attribute ::= FIT */
2561
-#line 602 "pikchr.y"
2581
+#line 603 "pikchr.y"
25622582
{pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2563
-#line 2588 "pikchr.c"
2583
+#line 2608 "pikchr.c"
25642584
break;
25652585
case 48: /* attribute ::= BEHIND object */
2566
-#line 603 "pikchr.y"
2567
-{pik_behind(p,yymsp[0].minor.yy254);}
2568
-#line 2593 "pikchr.c"
2586
+#line 604 "pikchr.y"
2587
+{pik_behind(p,yymsp[0].minor.yy226);}
2588
+#line 2613 "pikchr.c"
25692589
break;
25702590
case 49: /* withclause ::= DOT_E edge AT position */
25712591
case 50: /* withclause ::= edge AT position */ yytestcase(yyruleno==50);
2572
-#line 611 "pikchr.y"
2573
-{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy139,&yymsp[-1].minor.yy0); }
2574
-#line 2599 "pikchr.c"
2592
+#line 612 "pikchr.y"
2593
+{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); }
2594
+#line 2619 "pikchr.c"
25752595
break;
25762596
case 51: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2577
-#line 615 "pikchr.y"
2597
+#line 616 "pikchr.y"
25782598
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
2579
-#line 2604 "pikchr.c"
2599
+#line 2624 "pikchr.c"
25802600
yymsp[0].minor.yy0 = yylhsminor.yy0;
25812601
break;
25822602
case 52: /* boolproperty ::= CW */
2583
-#line 626 "pikchr.y"
2603
+#line 627 "pikchr.y"
25842604
{p->cur->cw = 1;}
2585
-#line 2610 "pikchr.c"
2605
+#line 2630 "pikchr.c"
25862606
break;
25872607
case 53: /* boolproperty ::= CCW */
2588
-#line 627 "pikchr.y"
2608
+#line 628 "pikchr.y"
25892609
{p->cur->cw = 0;}
2590
-#line 2615 "pikchr.c"
2610
+#line 2635 "pikchr.c"
25912611
break;
25922612
case 54: /* boolproperty ::= LARROW */
2593
-#line 628 "pikchr.y"
2613
+#line 629 "pikchr.y"
25942614
{p->cur->larrow=1; p->cur->rarrow=0; }
2595
-#line 2620 "pikchr.c"
2615
+#line 2640 "pikchr.c"
25962616
break;
25972617
case 55: /* boolproperty ::= RARROW */
2598
-#line 629 "pikchr.y"
2618
+#line 630 "pikchr.y"
25992619
{p->cur->larrow=0; p->cur->rarrow=1; }
2600
-#line 2625 "pikchr.c"
2620
+#line 2645 "pikchr.c"
26012621
break;
26022622
case 56: /* boolproperty ::= LRARROW */
2603
-#line 630 "pikchr.y"
2623
+#line 631 "pikchr.y"
26042624
{p->cur->larrow=1; p->cur->rarrow=1; }
2605
-#line 2630 "pikchr.c"
2625
+#line 2650 "pikchr.c"
26062626
break;
26072627
case 57: /* boolproperty ::= INVIS */
2608
-#line 631 "pikchr.y"
2628
+#line 632 "pikchr.y"
26092629
{p->cur->sw = 0.0;}
2610
-#line 2635 "pikchr.c"
2630
+#line 2655 "pikchr.c"
26112631
break;
26122632
case 58: /* boolproperty ::= THICK */
2613
-#line 632 "pikchr.y"
2633
+#line 633 "pikchr.y"
26142634
{p->cur->sw *= 1.5;}
2615
-#line 2640 "pikchr.c"
2635
+#line 2660 "pikchr.c"
26162636
break;
26172637
case 59: /* boolproperty ::= THIN */
2618
-#line 633 "pikchr.y"
2638
+#line 634 "pikchr.y"
26192639
{p->cur->sw *= 0.67;}
2620
-#line 2645 "pikchr.c"
2640
+#line 2665 "pikchr.c"
26212641
break;
26222642
case 60: /* textposition ::= */
2623
-#line 635 "pikchr.y"
2624
-{yymsp[1].minor.yy74 = 0;}
2625
-#line 2650 "pikchr.c"
2643
+#line 636 "pikchr.y"
2644
+{yymsp[1].minor.yy116 = 0;}
2645
+#line 2670 "pikchr.c"
26262646
break;
26272647
case 61: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2628
-#line 638 "pikchr.y"
2629
-{yylhsminor.yy74 = pik_text_position(yymsp[-1].minor.yy74,&yymsp[0].minor.yy0);}
2630
-#line 2655 "pikchr.c"
2631
- yymsp[-1].minor.yy74 = yylhsminor.yy74;
2648
+#line 639 "pikchr.y"
2649
+{yylhsminor.yy116 = pik_text_position(yymsp[-1].minor.yy116,&yymsp[0].minor.yy0);}
2650
+#line 2675 "pikchr.c"
2651
+ yymsp[-1].minor.yy116 = yylhsminor.yy116;
26322652
break;
26332653
case 62: /* position ::= expr COMMA expr */
2634
-#line 641 "pikchr.y"
2635
-{yylhsminor.yy139.x=yymsp[-2].minor.yy73; yylhsminor.yy139.y=yymsp[0].minor.yy73;}
2636
-#line 2661 "pikchr.c"
2637
- yymsp[-2].minor.yy139 = yylhsminor.yy139;
2654
+#line 642 "pikchr.y"
2655
+{yylhsminor.yy175.x=yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[0].minor.yy257;}
2656
+#line 2681 "pikchr.c"
2657
+ yymsp[-2].minor.yy175 = yylhsminor.yy175;
26382658
break;
26392659
case 63: /* position ::= place PLUS expr COMMA expr */
2640
-#line 643 "pikchr.y"
2641
-{yylhsminor.yy139.x=yymsp[-4].minor.yy139.x+yymsp[-2].minor.yy73; yylhsminor.yy139.y=yymsp[-4].minor.yy139.y+yymsp[0].minor.yy73;}
2642
-#line 2667 "pikchr.c"
2643
- yymsp[-4].minor.yy139 = yylhsminor.yy139;
2660
+#line 644 "pikchr.y"
2661
+{yylhsminor.yy175.x=yymsp[-4].minor.yy175.x+yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y+yymsp[0].minor.yy257;}
2662
+#line 2687 "pikchr.c"
2663
+ yymsp[-4].minor.yy175 = yylhsminor.yy175;
26442664
break;
26452665
case 64: /* position ::= place MINUS expr COMMA expr */
2646
-#line 644 "pikchr.y"
2647
-{yylhsminor.yy139.x=yymsp[-4].minor.yy139.x-yymsp[-2].minor.yy73; yylhsminor.yy139.y=yymsp[-4].minor.yy139.y-yymsp[0].minor.yy73;}
2648
-#line 2673 "pikchr.c"
2649
- yymsp[-4].minor.yy139 = yylhsminor.yy139;
2666
+#line 645 "pikchr.y"
2667
+{yylhsminor.yy175.x=yymsp[-4].minor.yy175.x-yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y-yymsp[0].minor.yy257;}
2668
+#line 2693 "pikchr.c"
2669
+ yymsp[-4].minor.yy175 = yylhsminor.yy175;
26502670
break;
26512671
case 65: /* position ::= place PLUS LP expr COMMA expr RP */
2652
-#line 646 "pikchr.y"
2653
-{yylhsminor.yy139.x=yymsp[-6].minor.yy139.x+yymsp[-3].minor.yy73; yylhsminor.yy139.y=yymsp[-6].minor.yy139.y+yymsp[-1].minor.yy73;}
2654
-#line 2679 "pikchr.c"
2655
- yymsp[-6].minor.yy139 = yylhsminor.yy139;
2672
+#line 647 "pikchr.y"
2673
+{yylhsminor.yy175.x=yymsp[-6].minor.yy175.x+yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y+yymsp[-1].minor.yy257;}
2674
+#line 2699 "pikchr.c"
2675
+ yymsp[-6].minor.yy175 = yylhsminor.yy175;
26562676
break;
26572677
case 66: /* position ::= place MINUS LP expr COMMA expr RP */
2658
-#line 648 "pikchr.y"
2659
-{yylhsminor.yy139.x=yymsp[-6].minor.yy139.x-yymsp[-3].minor.yy73; yylhsminor.yy139.y=yymsp[-6].minor.yy139.y-yymsp[-1].minor.yy73;}
2660
-#line 2685 "pikchr.c"
2661
- yymsp[-6].minor.yy139 = yylhsminor.yy139;
2678
+#line 649 "pikchr.y"
2679
+{yylhsminor.yy175.x=yymsp[-6].minor.yy175.x-yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y-yymsp[-1].minor.yy257;}
2680
+#line 2705 "pikchr.c"
2681
+ yymsp[-6].minor.yy175 = yylhsminor.yy175;
26622682
break;
26632683
case 67: /* position ::= LP position COMMA position RP */
2664
-#line 649 "pikchr.y"
2665
-{yymsp[-4].minor.yy139.x=yymsp[-3].minor.yy139.x; yymsp[-4].minor.yy139.y=yymsp[-1].minor.yy139.y;}
2666
-#line 2691 "pikchr.c"
2684
+#line 650 "pikchr.y"
2685
+{yymsp[-4].minor.yy175.x=yymsp[-3].minor.yy175.x; yymsp[-4].minor.yy175.y=yymsp[-1].minor.yy175.y;}
2686
+#line 2711 "pikchr.c"
26672687
break;
26682688
case 68: /* position ::= LP position RP */
2669
-#line 650 "pikchr.y"
2670
-{yymsp[-2].minor.yy139=yymsp[-1].minor.yy139;}
2671
-#line 2696 "pikchr.c"
2689
+#line 651 "pikchr.y"
2690
+{yymsp[-2].minor.yy175=yymsp[-1].minor.yy175;}
2691
+#line 2716 "pikchr.c"
26722692
break;
26732693
case 69: /* position ::= expr between position AND position */
2674
-#line 652 "pikchr.y"
2675
-{yylhsminor.yy139 = pik_position_between(yymsp[-4].minor.yy73,yymsp[-2].minor.yy139,yymsp[0].minor.yy139);}
2676
-#line 2701 "pikchr.c"
2677
- yymsp[-4].minor.yy139 = yylhsminor.yy139;
2694
+#line 653 "pikchr.y"
2695
+{yylhsminor.yy175 = pik_position_between(yymsp[-4].minor.yy257,yymsp[-2].minor.yy175,yymsp[0].minor.yy175);}
2696
+#line 2721 "pikchr.c"
2697
+ yymsp[-4].minor.yy175 = yylhsminor.yy175;
26782698
break;
26792699
case 70: /* position ::= expr LT position COMMA position GT */
2680
-#line 654 "pikchr.y"
2681
-{yylhsminor.yy139 = pik_position_between(yymsp[-5].minor.yy73,yymsp[-3].minor.yy139,yymsp[-1].minor.yy139);}
2682
-#line 2707 "pikchr.c"
2683
- yymsp[-5].minor.yy139 = yylhsminor.yy139;
2700
+#line 655 "pikchr.y"
2701
+{yylhsminor.yy175 = pik_position_between(yymsp[-5].minor.yy257,yymsp[-3].minor.yy175,yymsp[-1].minor.yy175);}
2702
+#line 2727 "pikchr.c"
2703
+ yymsp[-5].minor.yy175 = yylhsminor.yy175;
26842704
break;
26852705
case 71: /* position ::= expr ABOVE position */
2686
-#line 655 "pikchr.y"
2687
-{yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.y += yymsp[-2].minor.yy73;}
2688
-#line 2713 "pikchr.c"
2689
- yymsp[-2].minor.yy139 = yylhsminor.yy139;
2706
+#line 656 "pikchr.y"
2707
+{yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y += yymsp[-2].minor.yy257;}
2708
+#line 2733 "pikchr.c"
2709
+ yymsp[-2].minor.yy175 = yylhsminor.yy175;
26902710
break;
26912711
case 72: /* position ::= expr BELOW position */
2692
-#line 656 "pikchr.y"
2693
-{yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.y -= yymsp[-2].minor.yy73;}
2694
-#line 2719 "pikchr.c"
2695
- yymsp[-2].minor.yy139 = yylhsminor.yy139;
2712
+#line 657 "pikchr.y"
2713
+{yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y -= yymsp[-2].minor.yy257;}
2714
+#line 2739 "pikchr.c"
2715
+ yymsp[-2].minor.yy175 = yylhsminor.yy175;
26962716
break;
26972717
case 73: /* position ::= expr LEFT OF position */
2698
-#line 657 "pikchr.y"
2699
-{yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.x -= yymsp[-3].minor.yy73;}
2700
-#line 2725 "pikchr.c"
2701
- yymsp[-3].minor.yy139 = yylhsminor.yy139;
2718
+#line 658 "pikchr.y"
2719
+{yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x -= yymsp[-3].minor.yy257;}
2720
+#line 2745 "pikchr.c"
2721
+ yymsp[-3].minor.yy175 = yylhsminor.yy175;
27022722
break;
27032723
case 74: /* position ::= expr RIGHT OF position */
2704
-#line 658 "pikchr.y"
2705
-{yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.x += yymsp[-3].minor.yy73;}
2706
-#line 2731 "pikchr.c"
2707
- yymsp[-3].minor.yy139 = yylhsminor.yy139;
2724
+#line 659 "pikchr.y"
2725
+{yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x += yymsp[-3].minor.yy257;}
2726
+#line 2751 "pikchr.c"
2727
+ yymsp[-3].minor.yy175 = yylhsminor.yy175;
27082728
break;
27092729
case 75: /* position ::= expr ON HEADING EDGEPT OF position */
2710
-#line 660 "pikchr.y"
2711
-{yylhsminor.yy139 = pik_position_at_hdg(yymsp[-5].minor.yy73,&yymsp[-2].minor.yy0,yymsp[0].minor.yy139);}
2712
-#line 2737 "pikchr.c"
2713
- yymsp[-5].minor.yy139 = yylhsminor.yy139;
2730
+#line 661 "pikchr.y"
2731
+{yylhsminor.yy175 = pik_position_at_hdg(yymsp[-5].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);}
2732
+#line 2757 "pikchr.c"
2733
+ yymsp[-5].minor.yy175 = yylhsminor.yy175;
27142734
break;
27152735
case 76: /* position ::= expr HEADING EDGEPT OF position */
2716
-#line 662 "pikchr.y"
2717
-{yylhsminor.yy139 = pik_position_at_hdg(yymsp[-4].minor.yy73,&yymsp[-2].minor.yy0,yymsp[0].minor.yy139);}
2718
-#line 2743 "pikchr.c"
2719
- yymsp[-4].minor.yy139 = yylhsminor.yy139;
2736
+#line 663 "pikchr.y"
2737
+{yylhsminor.yy175 = pik_position_at_hdg(yymsp[-4].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);}
2738
+#line 2763 "pikchr.c"
2739
+ yymsp[-4].minor.yy175 = yylhsminor.yy175;
27202740
break;
27212741
case 77: /* position ::= expr EDGEPT OF position */
2722
-#line 664 "pikchr.y"
2723
-{yylhsminor.yy139 = pik_position_at_hdg(yymsp[-3].minor.yy73,&yymsp[-2].minor.yy0,yymsp[0].minor.yy139);}
2724
-#line 2749 "pikchr.c"
2725
- yymsp[-3].minor.yy139 = yylhsminor.yy139;
2742
+#line 665 "pikchr.y"
2743
+{yylhsminor.yy175 = pik_position_at_hdg(yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);}
2744
+#line 2769 "pikchr.c"
2745
+ yymsp[-3].minor.yy175 = yylhsminor.yy175;
27262746
break;
27272747
case 78: /* position ::= expr ON HEADING expr FROM position */
2728
-#line 666 "pikchr.y"
2729
-{yylhsminor.yy139 = pik_position_at_angle(yymsp[-5].minor.yy73,yymsp[-2].minor.yy73,yymsp[0].minor.yy139);}
2730
-#line 2755 "pikchr.c"
2731
- yymsp[-5].minor.yy139 = yylhsminor.yy139;
2748
+#line 667 "pikchr.y"
2749
+{yylhsminor.yy175 = pik_position_at_angle(yymsp[-5].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);}
2750
+#line 2775 "pikchr.c"
2751
+ yymsp[-5].minor.yy175 = yylhsminor.yy175;
27322752
break;
27332753
case 79: /* position ::= expr HEADING expr FROM position */
2734
-#line 668 "pikchr.y"
2735
-{yylhsminor.yy139 = pik_position_at_angle(yymsp[-4].minor.yy73,yymsp[-2].minor.yy73,yymsp[0].minor.yy139);}
2736
-#line 2761 "pikchr.c"
2737
- yymsp[-4].minor.yy139 = yylhsminor.yy139;
2754
+#line 669 "pikchr.y"
2755
+{yylhsminor.yy175 = pik_position_at_angle(yymsp[-4].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);}
2756
+#line 2781 "pikchr.c"
2757
+ yymsp[-4].minor.yy175 = yylhsminor.yy175;
27382758
break;
27392759
case 80: /* place ::= edge OF object */
2740
-#line 680 "pikchr.y"
2741
-{yylhsminor.yy139 = pik_place_of_elem(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0);}
2742
-#line 2767 "pikchr.c"
2743
- yymsp[-2].minor.yy139 = yylhsminor.yy139;
2760
+#line 681 "pikchr.y"
2761
+{yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);}
2762
+#line 2787 "pikchr.c"
2763
+ yymsp[-2].minor.yy175 = yylhsminor.yy175;
27442764
break;
27452765
case 81: /* place2 ::= object */
2746
-#line 681 "pikchr.y"
2747
-{yylhsminor.yy139 = pik_place_of_elem(p,yymsp[0].minor.yy254,0);}
2748
-#line 2773 "pikchr.c"
2749
- yymsp[0].minor.yy139 = yylhsminor.yy139;
2766
+#line 682 "pikchr.y"
2767
+{yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,0);}
2768
+#line 2793 "pikchr.c"
2769
+ yymsp[0].minor.yy175 = yylhsminor.yy175;
27502770
break;
27512771
case 82: /* place2 ::= object DOT_E edge */
2752
-#line 682 "pikchr.y"
2753
-{yylhsminor.yy139 = pik_place_of_elem(p,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
2754
-#line 2779 "pikchr.c"
2755
- yymsp[-2].minor.yy139 = yylhsminor.yy139;
2772
+#line 683 "pikchr.y"
2773
+{yylhsminor.yy175 = pik_place_of_elem(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);}
2774
+#line 2799 "pikchr.c"
2775
+ yymsp[-2].minor.yy175 = yylhsminor.yy175;
27562776
break;
27572777
case 83: /* place2 ::= NTH VERTEX OF object */
2758
-#line 683 "pikchr.y"
2759
-{yylhsminor.yy139 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy254);}
2760
-#line 2785 "pikchr.c"
2761
- yymsp[-3].minor.yy139 = yylhsminor.yy139;
2778
+#line 684 "pikchr.y"
2779
+{yylhsminor.yy175 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy226);}
2780
+#line 2805 "pikchr.c"
2781
+ yymsp[-3].minor.yy175 = yylhsminor.yy175;
27622782
break;
27632783
case 84: /* object ::= nth */
2764
-#line 695 "pikchr.y"
2765
-{yylhsminor.yy254 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2766
-#line 2791 "pikchr.c"
2767
- yymsp[0].minor.yy254 = yylhsminor.yy254;
2784
+#line 696 "pikchr.y"
2785
+{yylhsminor.yy226 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2786
+#line 2811 "pikchr.c"
2787
+ yymsp[0].minor.yy226 = yylhsminor.yy226;
27682788
break;
27692789
case 85: /* object ::= nth OF|IN object */
2770
-#line 696 "pikchr.y"
2771
-{yylhsminor.yy254 = pik_find_nth(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0);}
2772
-#line 2797 "pikchr.c"
2773
- yymsp[-2].minor.yy254 = yylhsminor.yy254;
2790
+#line 697 "pikchr.y"
2791
+{yylhsminor.yy226 = pik_find_nth(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);}
2792
+#line 2817 "pikchr.c"
2793
+ yymsp[-2].minor.yy226 = yylhsminor.yy226;
27742794
break;
27752795
case 86: /* objectname ::= PLACENAME */
2776
-#line 698 "pikchr.y"
2777
-{yylhsminor.yy254 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2778
-#line 2803 "pikchr.c"
2779
- yymsp[0].minor.yy254 = yylhsminor.yy254;
2796
+#line 699 "pikchr.y"
2797
+{yylhsminor.yy226 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2798
+#line 2823 "pikchr.c"
2799
+ yymsp[0].minor.yy226 = yylhsminor.yy226;
27802800
break;
27812801
case 87: /* objectname ::= objectname DOT_U PLACENAME */
2782
-#line 700 "pikchr.y"
2783
-{yylhsminor.yy254 = pik_find_byname(p,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
2784
-#line 2809 "pikchr.c"
2785
- yymsp[-2].minor.yy254 = yylhsminor.yy254;
2802
+#line 701 "pikchr.y"
2803
+{yylhsminor.yy226 = pik_find_byname(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);}
2804
+#line 2829 "pikchr.c"
2805
+ yymsp[-2].minor.yy226 = yylhsminor.yy226;
27862806
break;
27872807
case 88: /* nth ::= NTH CLASSNAME */
2788
-#line 702 "pikchr.y"
2808
+#line 703 "pikchr.y"
27892809
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2790
-#line 2815 "pikchr.c"
2810
+#line 2835 "pikchr.c"
27912811
yymsp[-1].minor.yy0 = yylhsminor.yy0;
27922812
break;
27932813
case 89: /* nth ::= NTH LAST CLASSNAME */
2794
-#line 703 "pikchr.y"
2814
+#line 704 "pikchr.y"
27952815
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2796
-#line 2821 "pikchr.c"
2816
+#line 2841 "pikchr.c"
27972817
yymsp[-2].minor.yy0 = yylhsminor.yy0;
27982818
break;
27992819
case 90: /* nth ::= LAST CLASSNAME */
2800
-#line 704 "pikchr.y"
2820
+#line 705 "pikchr.y"
28012821
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2802
-#line 2827 "pikchr.c"
2822
+#line 2847 "pikchr.c"
28032823
break;
28042824
case 91: /* nth ::= LAST */
2805
-#line 705 "pikchr.y"
2825
+#line 706 "pikchr.y"
28062826
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2807
-#line 2832 "pikchr.c"
2827
+#line 2852 "pikchr.c"
28082828
yymsp[0].minor.yy0 = yylhsminor.yy0;
28092829
break;
28102830
case 92: /* nth ::= NTH LB RB */
2811
-#line 706 "pikchr.y"
2831
+#line 707 "pikchr.y"
28122832
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2813
-#line 2838 "pikchr.c"
2833
+#line 2858 "pikchr.c"
28142834
yymsp[-2].minor.yy0 = yylhsminor.yy0;
28152835
break;
28162836
case 93: /* nth ::= NTH LAST LB RB */
2817
-#line 707 "pikchr.y"
2837
+#line 708 "pikchr.y"
28182838
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2819
-#line 2844 "pikchr.c"
2839
+#line 2864 "pikchr.c"
28202840
yymsp[-3].minor.yy0 = yylhsminor.yy0;
28212841
break;
28222842
case 94: /* nth ::= LAST LB RB */
2823
-#line 708 "pikchr.y"
2843
+#line 709 "pikchr.y"
28242844
{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2825
-#line 2850 "pikchr.c"
2845
+#line 2870 "pikchr.c"
28262846
break;
28272847
case 95: /* expr ::= expr PLUS expr */
2828
-#line 710 "pikchr.y"
2829
-{yylhsminor.yy73=yymsp[-2].minor.yy73+yymsp[0].minor.yy73;}
2830
-#line 2855 "pikchr.c"
2831
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2848
+#line 711 "pikchr.y"
2849
+{yylhsminor.yy257=yymsp[-2].minor.yy257+yymsp[0].minor.yy257;}
2850
+#line 2875 "pikchr.c"
2851
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
28322852
break;
28332853
case 96: /* expr ::= expr MINUS expr */
2834
-#line 711 "pikchr.y"
2835
-{yylhsminor.yy73=yymsp[-2].minor.yy73-yymsp[0].minor.yy73;}
2836
-#line 2861 "pikchr.c"
2837
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2854
+#line 712 "pikchr.y"
2855
+{yylhsminor.yy257=yymsp[-2].minor.yy257-yymsp[0].minor.yy257;}
2856
+#line 2881 "pikchr.c"
2857
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
28382858
break;
28392859
case 97: /* expr ::= expr STAR expr */
2840
-#line 712 "pikchr.y"
2841
-{yylhsminor.yy73=yymsp[-2].minor.yy73*yymsp[0].minor.yy73;}
2842
-#line 2867 "pikchr.c"
2843
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2860
+#line 713 "pikchr.y"
2861
+{yylhsminor.yy257=yymsp[-2].minor.yy257*yymsp[0].minor.yy257;}
2862
+#line 2887 "pikchr.c"
2863
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
28442864
break;
28452865
case 98: /* expr ::= expr SLASH expr */
2846
-#line 713 "pikchr.y"
2866
+#line 714 "pikchr.y"
28472867
{
2848
- if( yymsp[0].minor.yy73==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy73 = 0.0; }
2849
- else{ yylhsminor.yy73 = yymsp[-2].minor.yy73/yymsp[0].minor.yy73; }
2868
+ if( yymsp[0].minor.yy257==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy257 = 0.0; }
2869
+ else{ yylhsminor.yy257 = yymsp[-2].minor.yy257/yymsp[0].minor.yy257; }
28502870
}
2851
-#line 2876 "pikchr.c"
2852
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2871
+#line 2896 "pikchr.c"
2872
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
28532873
break;
28542874
case 99: /* expr ::= MINUS expr */
2855
-#line 717 "pikchr.y"
2856
-{yymsp[-1].minor.yy73=-yymsp[0].minor.yy73;}
2857
-#line 2882 "pikchr.c"
2875
+#line 718 "pikchr.y"
2876
+{yymsp[-1].minor.yy257=-yymsp[0].minor.yy257;}
2877
+#line 2902 "pikchr.c"
28582878
break;
28592879
case 100: /* expr ::= PLUS expr */
2860
-#line 718 "pikchr.y"
2861
-{yymsp[-1].minor.yy73=yymsp[0].minor.yy73;}
2862
-#line 2887 "pikchr.c"
2880
+#line 719 "pikchr.y"
2881
+{yymsp[-1].minor.yy257=yymsp[0].minor.yy257;}
2882
+#line 2907 "pikchr.c"
28632883
break;
28642884
case 101: /* expr ::= LP expr RP */
2865
-#line 719 "pikchr.y"
2866
-{yymsp[-2].minor.yy73=yymsp[-1].minor.yy73;}
2867
-#line 2892 "pikchr.c"
2885
+#line 720 "pikchr.y"
2886
+{yymsp[-2].minor.yy257=yymsp[-1].minor.yy257;}
2887
+#line 2912 "pikchr.c"
28682888
break;
28692889
case 102: /* expr ::= NUMBER */
2870
-#line 720 "pikchr.y"
2871
-{yylhsminor.yy73=pik_atof(&yymsp[0].minor.yy0);}
2872
-#line 2897 "pikchr.c"
2873
- yymsp[0].minor.yy73 = yylhsminor.yy73;
2890
+#line 721 "pikchr.y"
2891
+{yylhsminor.yy257=pik_atof(&yymsp[0].minor.yy0);}
2892
+#line 2917 "pikchr.c"
2893
+ yymsp[0].minor.yy257 = yylhsminor.yy257;
28742894
break;
28752895
case 103: /* expr ::= ID */
2876
-#line 721 "pikchr.y"
2877
-{yylhsminor.yy73=pik_get_var(p,&yymsp[0].minor.yy0);}
2878
-#line 2903 "pikchr.c"
2879
- yymsp[0].minor.yy73 = yylhsminor.yy73;
2896
+#line 722 "pikchr.y"
2897
+{yylhsminor.yy257=pik_get_var(p,&yymsp[0].minor.yy0);}
2898
+#line 2923 "pikchr.c"
2899
+ yymsp[0].minor.yy257 = yylhsminor.yy257;
28802900
break;
28812901
case 104: /* expr ::= FUNC1 LP expr RP */
2882
-#line 722 "pikchr.y"
2883
-{yylhsminor.yy73 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy73,0.0);}
2884
-#line 2909 "pikchr.c"
2885
- yymsp[-3].minor.yy73 = yylhsminor.yy73;
2902
+#line 723 "pikchr.y"
2903
+{yylhsminor.yy257 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy257,0.0);}
2904
+#line 2929 "pikchr.c"
2905
+ yymsp[-3].minor.yy257 = yylhsminor.yy257;
28862906
break;
28872907
case 105: /* expr ::= FUNC2 LP expr COMMA expr RP */
2888
-#line 723 "pikchr.y"
2889
-{yylhsminor.yy73 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy73,yymsp[-1].minor.yy73);}
2890
-#line 2915 "pikchr.c"
2891
- yymsp[-5].minor.yy73 = yylhsminor.yy73;
2892
- break;
2893
- case 106: /* expr ::= place2 DOT_XY X */
2894
-#line 724 "pikchr.y"
2895
-{yylhsminor.yy73 = yymsp[-2].minor.yy139.x;}
2896
-#line 2921 "pikchr.c"
2897
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2898
- break;
2899
- case 107: /* expr ::= place2 DOT_XY Y */
2908
+#line 724 "pikchr.y"
2909
+{yylhsminor.yy257 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy257,yymsp[-1].minor.yy257);}
2910
+#line 2935 "pikchr.c"
2911
+ yymsp[-5].minor.yy257 = yylhsminor.yy257;
2912
+ break;
2913
+ case 106: /* expr ::= DIST LP position COMMA position RP */
29002914
#line 725 "pikchr.y"
2901
-{yylhsminor.yy73 = yymsp[-2].minor.yy139.y;}
2902
-#line 2927 "pikchr.c"
2903
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2915
+{yymsp[-5].minor.yy257 = pik_dist(&yymsp[-3].minor.yy175,&yymsp[-1].minor.yy175);}
2916
+#line 2941 "pikchr.c"
29042917
break;
2905
- case 108: /* expr ::= object DOT_L numproperty */
2906
- case 109: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==109);
2907
- case 110: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==110);
2918
+ case 107: /* expr ::= place2 DOT_XY X */
29082919
#line 726 "pikchr.y"
2909
-{yylhsminor.yy73=pik_property_of(yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
2910
-#line 2935 "pikchr.c"
2911
- yymsp[-2].minor.yy73 = yylhsminor.yy73;
2920
+{yylhsminor.yy257 = yymsp[-2].minor.yy175.x;}
2921
+#line 2946 "pikchr.c"
2922
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
2923
+ break;
2924
+ case 108: /* expr ::= place2 DOT_XY Y */
2925
+#line 727 "pikchr.y"
2926
+{yylhsminor.yy257 = yymsp[-2].minor.yy175.y;}
2927
+#line 2952 "pikchr.c"
2928
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
2929
+ break;
2930
+ case 109: /* expr ::= object DOT_L numproperty */
2931
+ case 110: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==110);
2932
+ case 111: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==111);
2933
+#line 728 "pikchr.y"
2934
+{yylhsminor.yy257=pik_property_of(yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);}
2935
+#line 2960 "pikchr.c"
2936
+ yymsp[-2].minor.yy257 = yylhsminor.yy257;
29122937
break;
29132938
default:
2914
- /* (111) lvalue ::= ID */ yytestcase(yyruleno==111);
2915
- /* (112) lvalue ::= FILL */ yytestcase(yyruleno==112);
2916
- /* (113) lvalue ::= COLOR */ yytestcase(yyruleno==113);
2917
- /* (114) lvalue ::= THICKNESS */ yytestcase(yyruleno==114);
2918
- /* (115) rvalue ::= expr */ yytestcase(yyruleno==115);
2919
- /* (116) print ::= PRINT */ yytestcase(yyruleno==116);
2920
- /* (117) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=117);
2921
- /* (118) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==118);
2922
- /* (119) direction ::= UP */ yytestcase(yyruleno==119);
2923
- /* (120) direction ::= DOWN */ yytestcase(yyruleno==120);
2924
- /* (121) direction ::= LEFT */ yytestcase(yyruleno==121);
2925
- /* (122) direction ::= RIGHT */ yytestcase(yyruleno==122);
2926
- /* (123) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=123);
2927
- /* (124) attribute_list ::= alist */ yytestcase(yyruleno==124);
2928
- /* (125) alist ::= */ yytestcase(yyruleno==125);
2929
- /* (126) alist ::= alist attribute */ yytestcase(yyruleno==126);
2930
- /* (127) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=127);
2931
- /* (128) attribute ::= WITH withclause */ yytestcase(yyruleno==128);
2932
- /* (129) go ::= GO */ yytestcase(yyruleno==129);
2933
- /* (130) go ::= */ yytestcase(yyruleno==130);
2934
- /* (131) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==131);
2935
- /* (132) even ::= EVEN WITH */ yytestcase(yyruleno==132);
2936
- /* (133) dashproperty ::= DOTTED */ yytestcase(yyruleno==133);
2937
- /* (134) dashproperty ::= DASHED */ yytestcase(yyruleno==134);
2938
- /* (135) colorproperty ::= FILL */ yytestcase(yyruleno==135);
2939
- /* (136) colorproperty ::= COLOR */ yytestcase(yyruleno==136);
2940
- /* (137) position ::= place */ yytestcase(yyruleno==137);
2941
- /* (138) between ::= WAY BETWEEN */ yytestcase(yyruleno==138);
2942
- /* (139) between ::= BETWEEN */ yytestcase(yyruleno==139);
2943
- /* (140) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==140);
2944
- /* (141) place ::= place2 */ yytestcase(yyruleno==141);
2945
- /* (142) edge ::= CENTER */ yytestcase(yyruleno==142);
2946
- /* (143) edge ::= EDGEPT */ yytestcase(yyruleno==143);
2947
- /* (144) edge ::= TOP */ yytestcase(yyruleno==144);
2948
- /* (145) edge ::= BOTTOM */ yytestcase(yyruleno==145);
2949
- /* (146) edge ::= START */ yytestcase(yyruleno==146);
2950
- /* (147) edge ::= END */ yytestcase(yyruleno==147);
2951
- /* (148) edge ::= RIGHT */ yytestcase(yyruleno==148);
2952
- /* (149) edge ::= LEFT */ yytestcase(yyruleno==149);
2953
- /* (150) object ::= objectname */ yytestcase(yyruleno==150);
2939
+ /* (112) lvalue ::= ID */ yytestcase(yyruleno==112);
2940
+ /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113);
2941
+ /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114);
2942
+ /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115);
2943
+ /* (116) rvalue ::= expr */ yytestcase(yyruleno==116);
2944
+ /* (117) print ::= PRINT */ yytestcase(yyruleno==117);
2945
+ /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118);
2946
+ /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119);
2947
+ /* (120) direction ::= UP */ yytestcase(yyruleno==120);
2948
+ /* (121) direction ::= DOWN */ yytestcase(yyruleno==121);
2949
+ /* (122) direction ::= LEFT */ yytestcase(yyruleno==122);
2950
+ /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123);
2951
+ /* (124) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=124);
2952
+ /* (125) attribute_list ::= alist */ yytestcase(yyruleno==125);
2953
+ /* (126) alist ::= */ yytestcase(yyruleno==126);
2954
+ /* (127) alist ::= alist attribute */ yytestcase(yyruleno==127);
2955
+ /* (128) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=128);
2956
+ /* (129) attribute ::= WITH withclause */ yytestcase(yyruleno==129);
2957
+ /* (130) go ::= GO */ yytestcase(yyruleno==130);
2958
+ /* (131) go ::= */ yytestcase(yyruleno==131);
2959
+ /* (132) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==132);
2960
+ /* (133) even ::= EVEN WITH */ yytestcase(yyruleno==133);
2961
+ /* (134) dashproperty ::= DOTTED */ yytestcase(yyruleno==134);
2962
+ /* (135) dashproperty ::= DASHED */ yytestcase(yyruleno==135);
2963
+ /* (136) colorproperty ::= FILL */ yytestcase(yyruleno==136);
2964
+ /* (137) colorproperty ::= COLOR */ yytestcase(yyruleno==137);
2965
+ /* (138) position ::= place */ yytestcase(yyruleno==138);
2966
+ /* (139) between ::= WAY BETWEEN */ yytestcase(yyruleno==139);
2967
+ /* (140) between ::= BETWEEN */ yytestcase(yyruleno==140);
2968
+ /* (141) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==141);
2969
+ /* (142) place ::= place2 */ yytestcase(yyruleno==142);
2970
+ /* (143) edge ::= CENTER */ yytestcase(yyruleno==143);
2971
+ /* (144) edge ::= EDGEPT */ yytestcase(yyruleno==144);
2972
+ /* (145) edge ::= TOP */ yytestcase(yyruleno==145);
2973
+ /* (146) edge ::= BOTTOM */ yytestcase(yyruleno==146);
2974
+ /* (147) edge ::= START */ yytestcase(yyruleno==147);
2975
+ /* (148) edge ::= END */ yytestcase(yyruleno==148);
2976
+ /* (149) edge ::= RIGHT */ yytestcase(yyruleno==149);
2977
+ /* (150) edge ::= LEFT */ yytestcase(yyruleno==150);
2978
+ /* (151) object ::= objectname */ yytestcase(yyruleno==151);
29542979
break;
29552980
/********** End reduce actions ************************************************/
29562981
};
29572982
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
29582983
yygoto = yyRuleInfoLhs[yyruleno];
@@ -3008,19 +3033,19 @@
30083033
){
30093034
pik_parserARG_FETCH
30103035
pik_parserCTX_FETCH
30113036
#define TOKEN yyminor
30123037
/************ Begin %syntax_error code ****************************************/
3013
-#line 492 "pikchr.y"
3038
+#line 493 "pikchr.y"
30143039
30153040
if( TOKEN.z && TOKEN.z[0] ){
30163041
pik_error(p, &TOKEN, "syntax error");
30173042
}else{
30183043
pik_error(p, 0, "syntax error");
30193044
}
30203045
UNUSED_PARAMETER(yymajor);
3021
-#line 3046 "pikchr.c"
3046
+#line 3071 "pikchr.c"
30223047
/************ End %syntax_error code ******************************************/
30233048
pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
30243049
pik_parserCTX_STORE
30253050
}
30263051
@@ -3249,11 +3274,11 @@
32493274
#else
32503275
(void)iToken;
32513276
return 0;
32523277
#endif
32533278
}
3254
-#line 731 "pikchr.y"
3279
+#line 733 "pikchr.y"
32553280
32563281
32573282
32583283
/* Chart of the 140 official HTML color names with their
32593284
** corresponding RGB value.
@@ -4893,10 +4918,20 @@
48934918
ans /= 6;
48944919
}
48954920
}
48964921
return ans;
48974922
}
4923
+
4924
+/*
4925
+** Compute the distance between two points
4926
+*/
4927
+static PNum pik_dist(PPoint *pA, PPoint *pB){
4928
+ PNum dx, dy;
4929
+ dx = pB->x - pA->x;
4930
+ dy = pB->y - pA->y;
4931
+ return hypot(dx,dy);
4932
+}
48984933
48994934
/* Return true if a bounding box is empty.
49004935
*/
49014936
static int pik_bbox_isempty(PBox *p){
49024937
return p->sw.x>p->ne.x;
@@ -6075,10 +6110,11 @@
60756110
pElem->rarrow = pOther->rarrow;
60766111
pElem->bClose = pOther->bClose;
60776112
pElem->bChop = pOther->bChop;
60786113
pElem->inDir = pOther->inDir;
60796114
pElem->outDir = pOther->outDir;
6115
+ pElem->iLayer = pOther->iLayer;
60806116
}
60816117
60826118
60836119
/* Return a "Place" associated with element pElem. If pEdge is NULL
60846120
** return the center of the object. Otherwise, return the corner
@@ -6596,10 +6632,11 @@
65966632
{ "color", 5, T_COLOR, 0, 0 },
65976633
{ "cos", 3, T_FUNC1, FN_COS, 0 },
65986634
{ "cw", 2, T_CW, 0, 0 },
65996635
{ "dashed", 6, T_DASHED, 0, 0 },
66006636
{ "diameter", 8, T_DIAMETER, 0, 0 },
6637
+ { "dist", 4, T_DIST, 0, 0 },
66016638
{ "dotted", 6, T_DOTTED, 0, 0 },
66026639
{ "down", 4, T_DOWN, DIR_DOWN, 0 },
66036640
{ "e", 1, T_EDGEPT, 0, CP_E },
66046641
{ "east", 4, T_EDGEPT, 0, CP_E },
66056642
{ "end", 3, T_END, 0, CP_END },
@@ -7228,6 +7265,6 @@
72287265
}
72297266
return 0;
72307267
}
72317268
#endif /* PIKCHR_SHELL */
72327269
7233
-#line 7258 "pikchr.c"
7270
+#line 7295 "pikchr.c"
72347271
--- src/pikchr.c
+++ src/pikchr.c
@@ -444,13 +444,14 @@
444 static PToken pik_next_semantic_token(PToken *pThis);
445 static void pik_compute_layout_settings(Pik*);
446 static void pik_behind(Pik*,PElem*);
447 static PElem *pik_assert(Pik*,PNum,PToken*,PNum);
448 static PElem *pik_place_assert(Pik*,PPoint*,PToken*,PPoint*);
 
449
450
451 #line 477 "pikchr.c"
452 /**************** End of %include directives **********************************/
453 /* These constants specify the various numeric values for terminal symbols.
454 ***************** Begin token definitions *************************************/
455 #ifndef T_ID
456 #define T_ID 1
@@ -540,14 +541,15 @@
540 #define T_DOT_U 85
541 #define T_LAST 86
542 #define T_NUMBER 87
543 #define T_FUNC1 88
544 #define T_FUNC2 89
545 #define T_DOT_XY 90
546 #define T_X 91
547 #define T_Y 92
548 #define T_DOT_L 93
 
549 #endif
550 /**************** End token definitions ***************************************/
551
552 /* The next sections is a series of control #defines.
553 ** various aspects of the generated parser.
@@ -603,22 +605,22 @@
603 #ifndef INTERFACE
604 # define INTERFACE 1
605 #endif
606 /************* Begin control #defines *****************************************/
607 #define YYCODETYPE unsigned char
608 #define YYNOCODE 130
609 #define YYACTIONTYPE unsigned short int
610 #define pik_parserTOKENTYPE PToken
611 typedef union {
612 int yyinit;
613 pik_parserTOKENTYPE yy0;
614 PRel yy60;
615 PEList* yy72;
616 PNum yy73;
617 int yy74;
618 PPoint yy139;
619 PElem* yy254;
620 } YYMINORTYPE;
621 #ifndef YYSTACKDEPTH
622 #define YYSTACKDEPTH 100
623 #endif
624 #define pik_parserARG_SDECL
@@ -630,22 +632,22 @@
630 #define pik_parserCTX_PDECL ,Pik *p
631 #define pik_parserCTX_PARAM ,p
632 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
633 #define pik_parserCTX_STORE yypParser->p=p;
634 #define YYFALLBACK 1
635 #define YYNSTATE 157
636 #define YYNRULE 151
637 #define YYNRULE_WITH_ACTION 111
638 #define YYNTOKEN 94
639 #define YY_MAX_SHIFT 156
640 #define YY_MIN_SHIFTREDUCE 276
641 #define YY_MAX_SHIFTREDUCE 426
642 #define YY_ERROR_ACTION 427
643 #define YY_ACCEPT_ACTION 428
644 #define YY_NO_ACTION 429
645 #define YY_MIN_REDUCE 430
646 #define YY_MAX_REDUCE 580
647 /************* End control #defines *******************************************/
648 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
649
650 /* Define the yytestcase() macro to be a no-op if is not already defined
651 ** otherwise.
@@ -708,308 +710,321 @@
708 ** yy_reduce_ofst[] For each state, the offset into yy_action for
709 ** shifting non-terminals after a reduce.
710 ** yy_default[] Default action for each state.
711 **
712 *********** Begin parsing tables **********************************************/
713 #define YY_ACTTAB_COUNT (1159)
714 static const YYACTIONTYPE yy_action[] = {
715 /* 0 */ 554, 430, 21, 436, 25, 71, 126, 142, 50, 46,
716 /* 10 */ 554, 33, 437, 111, 118, 154, 117, 125, 411, 412,
717 /* 20 */ 327, 538, 78, 512, 539, 540, 554, 62, 61, 60,
718 /* 30 */ 59, 310, 311, 6, 5, 30, 143, 29, 4, 69,
719 /* 40 */ 124, 24, 323, 64, 558, 294, 45, 327, 327, 327,
720 /* 50 */ 327, 409, 410, 328, 329, 330, 331, 332, 333, 334,
721 /* 60 */ 335, 457, 62, 61, 60, 59, 119, 431, 438, 25,
722 /* 70 */ 33, 457, 67, 434, 27, 286, 478, 154, 117, 411,
723 /* 80 */ 412, 327, 28, 78, 156, 344, 298, 457, 428, 23,
724 /* 90 */ 318, 8, 310, 311, 6, 5, 30, 80, 29, 4,
725 /* 100 */ 69, 124, 81, 323, 64, 475, 154, 117, 327, 327,
726 /* 110 */ 327, 327, 409, 410, 328, 329, 330, 331, 332, 333,
727 /* 120 */ 334, 335, 379, 419, 41, 57, 58, 73, 62, 61,
728 /* 130 */ 60, 59, 32, 362, 382, 383, 20, 287, 379, 419,
729 /* 140 */ 40, 57, 58, 77, 316, 296, 76, 60, 59, 362,
730 /* 150 */ 425, 424, 20, 67, 337, 337, 337, 337, 337, 337,
731 /* 160 */ 337, 337, 337, 337, 366, 150, 425, 424, 387, 362,
732 /* 170 */ 364, 151, 62, 61, 60, 59, 301, 34, 42, 146,
733 /* 180 */ 26, 123, 418, 365, 152, 388, 389, 390, 392, 77,
734 /* 190 */ 65, 296, 76, 73, 395, 396, 397, 398, 418, 104,
735 /* 200 */ 2, 420, 421, 422, 423, 142, 7, 115, 378, 149,
736 /* 210 */ 148, 121, 120, 154, 117, 104, 3, 420, 421, 422,
737 /* 220 */ 423, 128, 408, 115, 378, 149, 148, 379, 419, 407,
738 /* 230 */ 57, 58, 116, 343, 121, 106, 416, 71, 362, 142,
739 /* 240 */ 63, 56, 414, 115, 480, 111, 118, 154, 117, 36,
740 /* 250 */ 132, 133, 52, 35, 9, 425, 424, 11, 136, 134,
741 /* 260 */ 62, 61, 60, 59, 62, 61, 60, 59, 143, 395,
742 /* 270 */ 396, 397, 398, 377, 556, 74, 556, 377, 13, 51,
743 /* 280 */ 85, 39, 142, 43, 14, 141, 140, 418, 122, 118,
744 /* 290 */ 154, 117, 38, 364, 151, 136, 134, 62, 61, 60,
745 /* 300 */ 59, 15, 66, 112, 104, 346, 420, 421, 422, 423,
746 /* 310 */ 18, 143, 115, 378, 149, 148, 51, 516, 1, 54,
747 /* 320 */ 17, 16, 141, 140, 55, 510, 154, 117, 19, 38,
748 /* 330 */ 139, 135, 415, 379, 370, 363, 57, 58, 62, 61,
749 /* 340 */ 60, 59, 368, 369, 103, 68, 153, 56, 155, 37,
750 /* 350 */ 289, 290, 291, 429, 293, 116, 516, 17, 16, 379,
751 /* 360 */ 429, 516, 57, 58, 516, 19, 429, 139, 135, 415,
752 /* 370 */ 362, 379, 456, 56, 57, 58, 429, 429, 62, 61,
753 /* 380 */ 60, 59, 362, 429, 379, 56, 429, 57, 58, 429,
754 /* 390 */ 379, 377, 429, 57, 58, 362, 429, 47, 56, 429,
755 /* 400 */ 429, 103, 129, 127, 56, 419, 456, 515, 154, 117,
756 /* 410 */ 104, 62, 61, 60, 59, 362, 429, 429, 115, 378,
757 /* 420 */ 149, 148, 429, 379, 137, 429, 57, 58, 513, 154,
758 /* 430 */ 117, 429, 425, 424, 362, 429, 104, 56, 379, 138,
759 /* 440 */ 10, 57, 58, 429, 115, 378, 149, 148, 104, 362,
760 /* 450 */ 429, 379, 56, 429, 57, 58, 115, 378, 149, 148,
761 /* 460 */ 429, 104, 362, 429, 418, 44, 429, 104, 429, 115,
762 /* 470 */ 378, 149, 148, 429, 429, 115, 378, 149, 148, 429,
763 /* 480 */ 429, 104, 429, 420, 421, 422, 423, 379, 429, 115,
764 /* 490 */ 57, 58, 62, 61, 60, 59, 429, 429, 362, 429,
765 /* 500 */ 104, 48, 429, 105, 429, 429, 429, 429, 115, 378,
766 /* 510 */ 149, 148, 118, 154, 117, 104, 461, 411, 412, 327,
767 /* 520 */ 429, 12, 105, 115, 378, 149, 148, 419, 104, 429,
768 /* 530 */ 429, 118, 154, 117, 147, 446, 115, 378, 149, 148,
769 /* 540 */ 429, 429, 75, 75, 429, 429, 327, 327, 327, 327,
770 /* 550 */ 409, 410, 429, 147, 425, 424, 429, 429, 71, 429,
771 /* 560 */ 142, 429, 429, 429, 104, 479, 111, 118, 154, 117,
772 /* 570 */ 86, 72, 115, 378, 149, 148, 429, 429, 429, 118,
773 /* 580 */ 154, 117, 429, 71, 429, 142, 418, 429, 429, 143,
774 /* 590 */ 473, 111, 118, 154, 117, 429, 429, 62, 61, 60,
775 /* 600 */ 59, 147, 429, 429, 429, 420, 421, 422, 423, 71,
776 /* 610 */ 342, 142, 429, 429, 143, 429, 467, 111, 118, 154,
777 /* 620 */ 117, 429, 71, 429, 142, 429, 429, 429, 429, 466,
778 /* 630 */ 111, 118, 154, 117, 429, 71, 429, 142, 429, 429,
779 /* 640 */ 143, 429, 499, 111, 118, 154, 117, 71, 429, 142,
780 /* 650 */ 87, 429, 429, 143, 131, 111, 118, 154, 117, 118,
781 /* 660 */ 154, 117, 429, 71, 429, 142, 143, 429, 429, 429,
782 /* 670 */ 507, 111, 118, 154, 117, 429, 429, 429, 143, 429,
783 /* 680 */ 429, 147, 71, 429, 142, 429, 429, 429, 429, 509,
784 /* 690 */ 111, 118, 154, 117, 143, 62, 61, 60, 59, 429,
785 /* 700 */ 429, 62, 61, 60, 59, 429, 429, 71, 341, 142,
786 /* 710 */ 429, 429, 429, 143, 506, 111, 118, 154, 117, 71,
787 /* 720 */ 49, 142, 62, 61, 60, 59, 508, 111, 118, 154,
788 /* 730 */ 117, 429, 71, 429, 142, 381, 429, 429, 143, 505,
789 /* 740 */ 111, 118, 154, 117, 71, 419, 142, 429, 429, 429,
790 /* 750 */ 143, 504, 111, 118, 154, 117, 429, 71, 429, 142,
791 /* 760 */ 429, 429, 429, 143, 503, 111, 118, 154, 117, 71,
792 /* 770 */ 429, 142, 425, 424, 429, 143, 502, 111, 118, 154,
793 /* 780 */ 117, 429, 429, 71, 429, 142, 429, 429, 143, 429,
794 /* 790 */ 501, 111, 118, 154, 117, 429, 62, 61, 60, 59,
795 /* 800 */ 143, 429, 429, 429, 418, 429, 429, 429, 71, 380,
796 /* 810 */ 142, 429, 429, 429, 143, 144, 111, 118, 154, 117,
797 /* 820 */ 71, 429, 142, 420, 421, 422, 423, 145, 111, 118,
798 /* 830 */ 154, 117, 429, 70, 429, 142, 429, 429, 429, 143,
799 /* 840 */ 110, 111, 118, 154, 117, 71, 429, 142, 429, 429,
800 /* 850 */ 429, 143, 130, 111, 118, 154, 117, 429, 71, 429,
801 /* 860 */ 142, 429, 92, 429, 143, 463, 111, 118, 154, 117,
802 /* 870 */ 429, 118, 154, 117, 92, 429, 143, 22, 462, 462,
803 /* 880 */ 429, 429, 429, 118, 154, 117, 432, 438, 25, 143,
804 /* 890 */ 79, 105, 434, 147, 429, 429, 429, 449, 429, 31,
805 /* 900 */ 118, 154, 117, 156, 446, 147, 429, 429, 23, 429,
806 /* 910 */ 429, 429, 548, 107, 431, 438, 25, 429, 92, 429,
807 /* 920 */ 434, 429, 147, 429, 429, 429, 429, 118, 154, 117,
808 /* 930 */ 92, 156, 429, 429, 108, 108, 23, 429, 429, 118,
809 /* 940 */ 154, 117, 92, 429, 429, 429, 109, 109, 429, 147,
810 /* 950 */ 429, 118, 154, 117, 105, 429, 429, 429, 458, 84,
811 /* 960 */ 429, 147, 429, 118, 154, 117, 97, 435, 118, 154,
812 /* 970 */ 117, 98, 429, 147, 429, 118, 154, 117, 88, 429,
813 /* 980 */ 118, 154, 117, 82, 429, 147, 429, 118, 154, 117,
814 /* 990 */ 147, 429, 118, 154, 117, 429, 99, 147, 429, 429,
815 /* 1000 */ 429, 89, 147, 429, 429, 118, 154, 117, 429, 147,
816 /* 1010 */ 118, 154, 117, 90, 147, 62, 61, 60, 59, 83,
817 /* 1020 */ 429, 429, 118, 154, 117, 429, 100, 147, 118, 154,
818 /* 1030 */ 117, 429, 147, 429, 53, 118, 154, 117, 91, 62,
819 /* 1040 */ 61, 60, 59, 429, 147, 101, 429, 118, 154, 117,
820 /* 1050 */ 147, 102, 377, 429, 118, 154, 117, 147, 429, 429,
821 /* 1060 */ 118, 154, 117, 93, 429, 429, 429, 429, 94, 147,
822 /* 1070 */ 429, 429, 118, 154, 117, 95, 147, 118, 154, 117,
823 /* 1080 */ 96, 429, 147, 429, 118, 154, 117, 530, 429, 118,
824 /* 1090 */ 154, 117, 529, 429, 147, 429, 118, 154, 117, 147,
825 /* 1100 */ 429, 118, 154, 117, 528, 429, 147, 429, 429, 429,
826 /* 1110 */ 527, 147, 429, 118, 154, 117, 429, 429, 147, 118,
827 /* 1120 */ 154, 117, 113, 147, 429, 429, 429, 114, 429, 429,
828 /* 1130 */ 429, 118, 154, 117, 429, 147, 118, 154, 117, 429,
829 /* 1140 */ 429, 147, 429, 429, 429, 429, 429, 429, 429, 429,
830 /* 1150 */ 429, 429, 429, 147, 429, 429, 429, 429, 147,
 
 
 
 
 
831 };
832 static const YYCODETYPE yy_lookahead[] = {
833 /* 0 */ 0, 0, 128, 96, 97, 98, 100, 100, 4, 5,
834 /* 10 */ 10, 10, 105, 106, 107, 108, 109, 100, 18, 19,
835 /* 20 */ 20, 99, 22, 100, 102, 103, 26, 4, 5, 6,
836 /* 30 */ 7, 31, 32, 33, 34, 35, 129, 37, 38, 39,
837 /* 40 */ 40, 101, 42, 43, 127, 23, 23, 47, 48, 49,
838 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
839 /* 60 */ 60, 0, 4, 5, 6, 7, 94, 95, 96, 97,
840 /* 70 */ 10, 10, 3, 101, 120, 17, 107, 108, 109, 18,
841 /* 80 */ 19, 20, 122, 22, 112, 17, 26, 26, 116, 117,
842 /* 90 */ 2, 23, 31, 32, 33, 34, 35, 110, 37, 38,
843 /* 100 */ 39, 40, 110, 42, 43, 107, 108, 109, 47, 48,
844 /* 110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
845 /* 120 */ 59, 60, 1, 2, 36, 4, 5, 46, 4, 5,
846 /* 130 */ 6, 7, 123, 12, 91, 92, 15, 17, 1, 2,
847 /* 140 */ 16, 4, 5, 22, 2, 24, 25, 6, 7, 12,
848 /* 150 */ 29, 30, 15, 84, 61, 62, 63, 64, 65, 66,
849 /* 160 */ 67, 68, 69, 70, 24, 25, 29, 30, 1, 12,
850 /* 170 */ 24, 25, 4, 5, 6, 7, 8, 16, 36, 12,
851 /* 180 */ 15, 14, 61, 24, 25, 18, 19, 20, 21, 22,
852 /* 190 */ 41, 24, 25, 46, 27, 28, 29, 30, 61, 78,
853 /* 200 */ 38, 80, 81, 82, 83, 100, 71, 86, 87, 88,
854 /* 210 */ 89, 106, 107, 108, 109, 78, 38, 80, 81, 82,
855 /* 220 */ 83, 45, 39, 86, 87, 88, 89, 1, 2, 39,
856 /* 230 */ 4, 5, 86, 17, 129, 78, 76, 98, 12, 100,
857 /* 240 */ 93, 15, 76, 86, 105, 106, 107, 108, 109, 99,
858 /* 250 */ 75, 77, 102, 103, 3, 29, 30, 3, 2, 3,
859 /* 260 */ 4, 5, 6, 7, 4, 5, 6, 7, 129, 27,
860 /* 270 */ 28, 29, 30, 17, 124, 125, 126, 17, 3, 23,
861 /* 280 */ 98, 36, 100, 23, 3, 29, 30, 61, 106, 107,
862 /* 290 */ 108, 109, 36, 24, 25, 2, 3, 4, 5, 6,
863 /* 300 */ 7, 3, 3, 90, 78, 73, 80, 81, 82, 83,
864 /* 310 */ 23, 129, 86, 87, 88, 89, 23, 46, 13, 15,
865 /* 320 */ 64, 65, 29, 30, 15, 107, 108, 109, 72, 36,
866 /* 330 */ 74, 75, 76, 1, 26, 12, 4, 5, 4, 5,
867 /* 340 */ 6, 7, 26, 26, 12, 3, 85, 15, 79, 11,
868 /* 350 */ 18, 19, 20, 130, 22, 86, 85, 64, 65, 1,
869 /* 360 */ 130, 90, 4, 5, 93, 72, 130, 74, 75, 76,
870 /* 370 */ 12, 1, 2, 15, 4, 5, 130, 130, 4, 5,
871 /* 380 */ 6, 7, 12, 130, 1, 15, 130, 4, 5, 130,
872 /* 390 */ 1, 17, 130, 4, 5, 12, 130, 23, 15, 130,
873 /* 400 */ 130, 12, 44, 45, 15, 2, 36, 107, 108, 109,
874 /* 410 */ 78, 4, 5, 6, 7, 12, 130, 130, 86, 87,
875 /* 420 */ 88, 89, 130, 1, 2, 130, 4, 5, 107, 108,
876 /* 430 */ 109, 130, 29, 30, 12, 130, 78, 15, 1, 2,
877 /* 440 */ 33, 4, 5, 130, 86, 87, 88, 89, 78, 12,
878 /* 450 */ 130, 1, 15, 130, 4, 5, 86, 87, 88, 89,
879 /* 460 */ 130, 78, 12, 130, 61, 15, 130, 78, 130, 86,
880 /* 470 */ 87, 88, 89, 130, 130, 86, 87, 88, 89, 130,
881 /* 480 */ 130, 78, 130, 80, 81, 82, 83, 1, 130, 86,
882 /* 490 */ 4, 5, 4, 5, 6, 7, 130, 130, 12, 130,
883 /* 500 */ 78, 15, 130, 98, 130, 130, 130, 130, 86, 87,
884 /* 510 */ 88, 89, 107, 108, 109, 78, 111, 18, 19, 20,
885 /* 520 */ 130, 33, 98, 86, 87, 88, 89, 2, 78, 130,
886 /* 530 */ 130, 107, 108, 109, 129, 111, 86, 87, 88, 89,
887 /* 540 */ 130, 130, 118, 119, 130, 130, 47, 48, 49, 50,
888 /* 550 */ 51, 52, 130, 129, 29, 30, 130, 130, 98, 130,
889 /* 560 */ 100, 130, 130, 130, 78, 105, 106, 107, 108, 109,
890 /* 570 */ 98, 46, 86, 87, 88, 89, 130, 130, 130, 107,
891 /* 580 */ 108, 109, 130, 98, 130, 100, 61, 130, 130, 129,
892 /* 590 */ 105, 106, 107, 108, 109, 130, 130, 4, 5, 6,
893 /* 600 */ 7, 129, 130, 130, 130, 80, 81, 82, 83, 98,
894 /* 610 */ 17, 100, 130, 130, 129, 130, 105, 106, 107, 108,
895 /* 620 */ 109, 130, 98, 130, 100, 130, 130, 130, 130, 105,
896 /* 630 */ 106, 107, 108, 109, 130, 98, 130, 100, 130, 130,
897 /* 640 */ 129, 130, 105, 106, 107, 108, 109, 98, 130, 100,
898 /* 650 */ 98, 130, 130, 129, 105, 106, 107, 108, 109, 107,
899 /* 660 */ 108, 109, 130, 98, 130, 100, 129, 130, 130, 130,
900 /* 670 */ 105, 106, 107, 108, 109, 130, 130, 130, 129, 130,
901 /* 680 */ 130, 129, 98, 130, 100, 130, 130, 130, 130, 105,
902 /* 690 */ 106, 107, 108, 109, 129, 4, 5, 6, 7, 130,
903 /* 700 */ 130, 4, 5, 6, 7, 130, 130, 98, 17, 100,
904 /* 710 */ 130, 130, 130, 129, 105, 106, 107, 108, 109, 98,
905 /* 720 */ 23, 100, 4, 5, 6, 7, 105, 106, 107, 108,
906 /* 730 */ 109, 130, 98, 130, 100, 17, 130, 130, 129, 105,
907 /* 740 */ 106, 107, 108, 109, 98, 2, 100, 130, 130, 130,
908 /* 750 */ 129, 105, 106, 107, 108, 109, 130, 98, 130, 100,
909 /* 760 */ 130, 130, 130, 129, 105, 106, 107, 108, 109, 98,
910 /* 770 */ 130, 100, 29, 30, 130, 129, 105, 106, 107, 108,
911 /* 780 */ 109, 130, 130, 98, 130, 100, 130, 130, 129, 130,
912 /* 790 */ 105, 106, 107, 108, 109, 130, 4, 5, 6, 7,
913 /* 800 */ 129, 130, 130, 130, 61, 130, 130, 130, 98, 17,
914 /* 810 */ 100, 130, 130, 130, 129, 105, 106, 107, 108, 109,
915 /* 820 */ 98, 130, 100, 80, 81, 82, 83, 105, 106, 107,
916 /* 830 */ 108, 109, 130, 98, 130, 100, 130, 130, 130, 129,
917 /* 840 */ 105, 106, 107, 108, 109, 98, 130, 100, 130, 130,
918 /* 850 */ 130, 129, 105, 106, 107, 108, 109, 130, 98, 130,
919 /* 860 */ 100, 130, 98, 130, 129, 105, 106, 107, 108, 109,
920 /* 870 */ 130, 107, 108, 109, 98, 130, 129, 113, 114, 115,
921 /* 880 */ 130, 130, 130, 107, 108, 109, 95, 96, 97, 129,
922 /* 890 */ 114, 98, 101, 129, 130, 130, 130, 121, 130, 123,
923 /* 900 */ 107, 108, 109, 112, 111, 129, 130, 130, 117, 130,
924 /* 910 */ 130, 130, 119, 94, 95, 96, 97, 130, 98, 130,
925 /* 920 */ 101, 130, 129, 130, 130, 130, 130, 107, 108, 109,
926 /* 930 */ 98, 112, 130, 130, 114, 115, 117, 130, 130, 107,
927 /* 940 */ 108, 109, 98, 130, 130, 130, 114, 115, 130, 129,
928 /* 950 */ 130, 107, 108, 109, 98, 130, 130, 130, 114, 98,
929 /* 960 */ 130, 129, 130, 107, 108, 109, 98, 111, 107, 108,
930 /* 970 */ 109, 98, 130, 129, 130, 107, 108, 109, 98, 130,
931 /* 980 */ 107, 108, 109, 98, 130, 129, 130, 107, 108, 109,
932 /* 990 */ 129, 130, 107, 108, 109, 130, 98, 129, 130, 130,
933 /* 1000 */ 130, 98, 129, 130, 130, 107, 108, 109, 130, 129,
934 /* 1010 */ 107, 108, 109, 98, 129, 4, 5, 6, 7, 98,
935 /* 1020 */ 130, 130, 107, 108, 109, 130, 98, 129, 107, 108,
936 /* 1030 */ 109, 130, 129, 130, 23, 107, 108, 109, 98, 4,
937 /* 1040 */ 5, 6, 7, 130, 129, 98, 130, 107, 108, 109,
938 /* 1050 */ 129, 98, 17, 130, 107, 108, 109, 129, 130, 130,
939 /* 1060 */ 107, 108, 109, 98, 130, 130, 130, 130, 98, 129,
940 /* 1070 */ 130, 130, 107, 108, 109, 98, 129, 107, 108, 109,
941 /* 1080 */ 98, 130, 129, 130, 107, 108, 109, 98, 130, 107,
942 /* 1090 */ 108, 109, 98, 130, 129, 130, 107, 108, 109, 129,
943 /* 1100 */ 130, 107, 108, 109, 98, 130, 129, 130, 130, 130,
944 /* 1110 */ 98, 129, 130, 107, 108, 109, 130, 130, 129, 107,
945 /* 1120 */ 108, 109, 98, 129, 130, 130, 130, 98, 130, 130,
946 /* 1130 */ 130, 107, 108, 109, 130, 129, 107, 108, 109, 130,
947 /* 1140 */ 130, 129, 130, 130, 130, 130, 130, 130, 130, 130,
948 /* 1150 */ 130, 130, 130, 129, 130, 130, 130, 130, 129, 94,
949 /* 1160 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
950 /* 1170 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
951 /* 1180 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
952 /* 1190 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
953 /* 1200 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
954 /* 1210 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
955 /* 1220 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
956 /* 1230 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
957 /* 1240 */ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
958 /* 1250 */ 94, 94, 94,
 
 
 
 
 
959 };
960 #define YY_SHIFT_COUNT (156)
961 #define YY_SHIFT_MIN (0)
962 #define YY_SHIFT_MAX (1035)
963 static const unsigned short int yy_shift_ofst[] = {
964 /* 0 */ 167, 121, 137, 137, 137, 137, 137, 137, 137, 137,
965 /* 10 */ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
966 /* 20 */ 137, 137, 137, 332, 358, 383, 226, 332, 167, 370,
967 /* 30 */ 370, 0, 61, 167, 403, 389, 383, 389, 422, 437,
968 /* 40 */ 383, 383, 383, 383, 383, 383, 450, 383, 383, 383,
969 /* 50 */ 486, 383, 383, 383, 383, 383, 383, 383, 383, 383,
970 /* 60 */ 383, 383, 383, 499, 157, 157, 157, 157, 157, 525,
971 /* 70 */ 256, 293, 743, 743, 242, 22, 1159, 1159, 1159, 1159,
972 /* 80 */ 93, 93, 260, 374, 58, 124, 407, 488, 593, 23,
973 /* 90 */ 691, 697, 168, 718, 1011, 792, 1035, 334, 334, 334,
974 /* 100 */ 334, 334, 334, 271, 269, 334, 146, 60, 88, 142,
975 /* 110 */ 68, 4, 43, 141, 141, 140, 159, 69, 147, 1,
976 /* 120 */ 81, 120, 161, 165, 149, 162, 178, 183, 190, 176,
977 /* 130 */ 135, 216, 160, 175, 174, 166, 251, 254, 275, 245,
978 /* 140 */ 281, 298, 299, 213, 232, 287, 305, 213, 304, 309,
979 /* 150 */ 308, 316, 317, 323, 261, 342, 338,
 
980 };
981 #define YY_REDUCE_COUNT (79)
982 #define YY_REDUCE_MIN (-126)
983 #define YY_REDUCE_MAX (1029)
984 static const short yy_reduce_ofst[] = {
985 /* 0 */ -28, -93, 139, 460, 485, 511, 524, 537, 549, 565,
986 /* 10 */ 584, 609, 621, 634, 646, 659, 671, 685, 710, 722,
987 /* 20 */ 735, 747, 760, 424, 764, 776, 182, 793, 819, 820,
988 /* 30 */ 832, 150, 150, 791, 105, 405, 844, 856, 472, 552,
989 /* 40 */ 861, 868, 873, 880, 885, 898, 903, 915, 921, 928,
990 /* 50 */ 940, 947, 953, 965, 970, 977, 982, 989, 994, 1006,
991 /* 60 */ 1012, 1024, 1029, -78, -31, -2, 218, 300, 321, -83,
992 /* 70 */ -126, -126, -94, -77, -60, -46, -40, -13, -8, 9,
 
993 };
994 static const YYACTIONTYPE yy_default[] = {
995 /* 0 */ 433, 427, 427, 427, 427, 427, 427, 427, 427, 427,
996 /* 10 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
997 /* 20 */ 427, 427, 427, 427, 456, 555, 427, 427, 433, 559,
998 /* 30 */ 468, 560, 560, 433, 427, 427, 427, 427, 427, 427,
999 /* 40 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1000 /* 50 */ 427, 427, 460, 427, 427, 427, 427, 427, 427, 427,
1001 /* 60 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1002 /* 70 */ 427, 427, 427, 427, 427, 439, 453, 490, 490, 555,
1003 /* 80 */ 451, 476, 427, 427, 427, 427, 427, 427, 427, 427,
1004 /* 90 */ 427, 427, 454, 427, 427, 427, 427, 471, 469, 494,
1005 /* 100 */ 493, 492, 459, 442, 427, 545, 427, 427, 427, 427,
1006 /* 110 */ 427, 567, 427, 526, 525, 521, 427, 514, 511, 427,
1007 /* 120 */ 511, 427, 427, 427, 474, 427, 427, 427, 427, 427,
1008 /* 130 */ 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1009 /* 140 */ 427, 427, 427, 571, 427, 427, 427, 427, 427, 427,
1010 /* 150 */ 427, 427, 427, 427, 580, 427, 427,
 
1011 };
1012 /********** End of lemon-generated parsing tables *****************************/
1013
1014 /* The next table maps tokens (terminal symbols) into fallback tokens.
1015 ** If a construct like the following:
@@ -1115,10 +1130,11 @@
1115 0, /* DOT_U => nothing */
1116 0, /* LAST => nothing */
1117 0, /* NUMBER => nothing */
1118 0, /* FUNC1 => nothing */
1119 0, /* FUNC2 => nothing */
 
1120 0, /* DOT_XY => nothing */
1121 0, /* X => nothing */
1122 0, /* Y => nothing */
1123 0, /* DOT_L => nothing */
1124 };
@@ -1297,50 +1313,51 @@
1297 /* 85 */ "DOT_U",
1298 /* 86 */ "LAST",
1299 /* 87 */ "NUMBER",
1300 /* 88 */ "FUNC1",
1301 /* 89 */ "FUNC2",
1302 /* 90 */ "DOT_XY",
1303 /* 91 */ "X",
1304 /* 92 */ "Y",
1305 /* 93 */ "DOT_L",
1306 /* 94 */ "element_list",
1307 /* 95 */ "element",
1308 /* 96 */ "unnamed_element",
1309 /* 97 */ "basetype",
1310 /* 98 */ "expr",
1311 /* 99 */ "numproperty",
1312 /* 100 */ "edge",
1313 /* 101 */ "direction",
1314 /* 102 */ "dashproperty",
1315 /* 103 */ "colorproperty",
1316 /* 104 */ "locproperty",
1317 /* 105 */ "position",
1318 /* 106 */ "place",
1319 /* 107 */ "object",
1320 /* 108 */ "objectname",
1321 /* 109 */ "nth",
1322 /* 110 */ "textposition",
1323 /* 111 */ "rvalue",
1324 /* 112 */ "lvalue",
1325 /* 113 */ "even",
1326 /* 114 */ "relexpr",
1327 /* 115 */ "optrelexpr",
1328 /* 116 */ "document",
1329 /* 117 */ "print",
1330 /* 118 */ "prlist",
1331 /* 119 */ "pritem",
1332 /* 120 */ "prsep",
1333 /* 121 */ "attribute_list",
1334 /* 122 */ "savelist",
1335 /* 123 */ "alist",
1336 /* 124 */ "attribute",
1337 /* 125 */ "go",
1338 /* 126 */ "boolproperty",
1339 /* 127 */ "withclause",
1340 /* 128 */ "between",
1341 /* 129 */ "place2",
 
1342 };
1343 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1344
1345 #ifndef NDEBUG
1346 /* For tracing reduce actions, the names of all rules are required.
@@ -1450,55 +1467,56 @@
1450 /* 101 */ "expr ::= LP expr RP",
1451 /* 102 */ "expr ::= NUMBER",
1452 /* 103 */ "expr ::= ID",
1453 /* 104 */ "expr ::= FUNC1 LP expr RP",
1454 /* 105 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1455 /* 106 */ "expr ::= place2 DOT_XY X",
1456 /* 107 */ "expr ::= place2 DOT_XY Y",
1457 /* 108 */ "expr ::= object DOT_L numproperty",
1458 /* 109 */ "expr ::= object DOT_L dashproperty",
1459 /* 110 */ "expr ::= object DOT_L colorproperty",
1460 /* 111 */ "lvalue ::= ID",
1461 /* 112 */ "lvalue ::= FILL",
1462 /* 113 */ "lvalue ::= COLOR",
1463 /* 114 */ "lvalue ::= THICKNESS",
1464 /* 115 */ "rvalue ::= expr",
1465 /* 116 */ "print ::= PRINT",
1466 /* 117 */ "prlist ::= pritem",
1467 /* 118 */ "prlist ::= prlist prsep pritem",
1468 /* 119 */ "direction ::= UP",
1469 /* 120 */ "direction ::= DOWN",
1470 /* 121 */ "direction ::= LEFT",
1471 /* 122 */ "direction ::= RIGHT",
1472 /* 123 */ "optrelexpr ::= relexpr",
1473 /* 124 */ "attribute_list ::= alist",
1474 /* 125 */ "alist ::=",
1475 /* 126 */ "alist ::= alist attribute",
1476 /* 127 */ "attribute ::= boolproperty",
1477 /* 128 */ "attribute ::= WITH withclause",
1478 /* 129 */ "go ::= GO",
1479 /* 130 */ "go ::=",
1480 /* 131 */ "even ::= UNTIL EVEN WITH",
1481 /* 132 */ "even ::= EVEN WITH",
1482 /* 133 */ "dashproperty ::= DOTTED",
1483 /* 134 */ "dashproperty ::= DASHED",
1484 /* 135 */ "colorproperty ::= FILL",
1485 /* 136 */ "colorproperty ::= COLOR",
1486 /* 137 */ "position ::= place",
1487 /* 138 */ "between ::= WAY BETWEEN",
1488 /* 139 */ "between ::= BETWEEN",
1489 /* 140 */ "between ::= OF THE WAY BETWEEN",
1490 /* 141 */ "place ::= place2",
1491 /* 142 */ "edge ::= CENTER",
1492 /* 143 */ "edge ::= EDGEPT",
1493 /* 144 */ "edge ::= TOP",
1494 /* 145 */ "edge ::= BOTTOM",
1495 /* 146 */ "edge ::= START",
1496 /* 147 */ "edge ::= END",
1497 /* 148 */ "edge ::= RIGHT",
1498 /* 149 */ "edge ::= LEFT",
1499 /* 150 */ "object ::= objectname",
 
1500 };
1501 #endif /* NDEBUG */
1502
1503
1504 #if YYSTACKDEPTH<=0
@@ -1620,24 +1638,24 @@
1620 ** Note: during a reduce, the only symbols destroyed are those
1621 ** which appear on the RHS of the rule, but which are *not* used
1622 ** inside the C code.
1623 */
1624 /********* Begin destructor definitions ***************************************/
1625 case 94: /* element_list */
1626 {
1627 #line 466 "pikchr.y"
1628 pik_elist_free(p,(yypminor->yy72));
1629 #line 1654 "pikchr.c"
1630 }
1631 break;
1632 case 95: /* element */
1633 case 96: /* unnamed_element */
1634 case 97: /* basetype */
1635 {
1636 #line 468 "pikchr.y"
1637 pik_elem_free(p,(yypminor->yy254));
1638 #line 1663 "pikchr.c"
1639 }
1640 break;
1641 /********* End destructor definitions *****************************************/
1642 default: break; /* If no destructor action specified: do nothing */
1643 }
@@ -1851,14 +1869,14 @@
1851 #endif
1852 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1853 /* Here code is inserted which will execute if the parser
1854 ** stack every overflows */
1855 /******** Begin %stack_overflow code ******************************************/
1856 #line 500 "pikchr.y"
1857
1858 pik_error(p, 0, "parser stack overflow");
1859 #line 1884 "pikchr.c"
1860 /******** End %stack_overflow code ********************************************/
1861 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1862 pik_parserCTX_STORE
1863 }
1864
@@ -1926,161 +1944,162 @@
1926 }
1927
1928 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1929 ** of that rule */
1930 static const YYCODETYPE yyRuleInfoLhs[] = {
1931 116, /* (0) document ::= element_list */
1932 94, /* (1) element_list ::= element */
1933 94, /* (2) element_list ::= element_list EOL element */
1934 95, /* (3) element ::= */
1935 95, /* (4) element ::= direction */
1936 95, /* (5) element ::= lvalue ASSIGN rvalue */
1937 95, /* (6) element ::= PLACENAME COLON unnamed_element */
1938 95, /* (7) element ::= PLACENAME COLON position */
1939 95, /* (8) element ::= unnamed_element */
1940 95, /* (9) element ::= print prlist */
1941 95, /* (10) element ::= ASSERT LP expr EQ expr RP */
1942 95, /* (11) element ::= ASSERT LP place EQ place RP */
1943 111, /* (12) rvalue ::= PLACENAME */
1944 119, /* (13) pritem ::= FILL */
1945 119, /* (14) pritem ::= COLOR */
1946 119, /* (15) pritem ::= THICKNESS */
1947 119, /* (16) pritem ::= rvalue */
1948 119, /* (17) pritem ::= STRING */
1949 120, /* (18) prsep ::= COMMA */
1950 96, /* (19) unnamed_element ::= basetype attribute_list */
1951 97, /* (20) basetype ::= CLASSNAME */
1952 97, /* (21) basetype ::= STRING textposition */
1953 97, /* (22) basetype ::= LB savelist element_list RB */
1954 122, /* (23) savelist ::= */
1955 114, /* (24) relexpr ::= expr */
1956 114, /* (25) relexpr ::= expr PERCENT */
1957 115, /* (26) optrelexpr ::= */
1958 121, /* (27) attribute_list ::= relexpr alist */
1959 124, /* (28) attribute ::= numproperty relexpr */
1960 124, /* (29) attribute ::= dashproperty expr */
1961 124, /* (30) attribute ::= dashproperty */
1962 124, /* (31) attribute ::= colorproperty rvalue */
1963 124, /* (32) attribute ::= go direction optrelexpr */
1964 124, /* (33) attribute ::= go direction even position */
1965 124, /* (34) attribute ::= CLOSE */
1966 124, /* (35) attribute ::= CHOP */
1967 124, /* (36) attribute ::= FROM position */
1968 124, /* (37) attribute ::= TO position */
1969 124, /* (38) attribute ::= THEN */
1970 124, /* (39) attribute ::= THEN optrelexpr HEADING expr */
1971 124, /* (40) attribute ::= THEN optrelexpr EDGEPT */
1972 124, /* (41) attribute ::= GO optrelexpr HEADING expr */
1973 124, /* (42) attribute ::= GO optrelexpr EDGEPT */
1974 124, /* (43) attribute ::= AT position */
1975 124, /* (44) attribute ::= SAME */
1976 124, /* (45) attribute ::= SAME AS object */
1977 124, /* (46) attribute ::= STRING textposition */
1978 124, /* (47) attribute ::= FIT */
1979 124, /* (48) attribute ::= BEHIND object */
1980 127, /* (49) withclause ::= DOT_E edge AT position */
1981 127, /* (50) withclause ::= edge AT position */
1982 99, /* (51) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1983 126, /* (52) boolproperty ::= CW */
1984 126, /* (53) boolproperty ::= CCW */
1985 126, /* (54) boolproperty ::= LARROW */
1986 126, /* (55) boolproperty ::= RARROW */
1987 126, /* (56) boolproperty ::= LRARROW */
1988 126, /* (57) boolproperty ::= INVIS */
1989 126, /* (58) boolproperty ::= THICK */
1990 126, /* (59) boolproperty ::= THIN */
1991 110, /* (60) textposition ::= */
1992 110, /* (61) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1993 105, /* (62) position ::= expr COMMA expr */
1994 105, /* (63) position ::= place PLUS expr COMMA expr */
1995 105, /* (64) position ::= place MINUS expr COMMA expr */
1996 105, /* (65) position ::= place PLUS LP expr COMMA expr RP */
1997 105, /* (66) position ::= place MINUS LP expr COMMA expr RP */
1998 105, /* (67) position ::= LP position COMMA position RP */
1999 105, /* (68) position ::= LP position RP */
2000 105, /* (69) position ::= expr between position AND position */
2001 105, /* (70) position ::= expr LT position COMMA position GT */
2002 105, /* (71) position ::= expr ABOVE position */
2003 105, /* (72) position ::= expr BELOW position */
2004 105, /* (73) position ::= expr LEFT OF position */
2005 105, /* (74) position ::= expr RIGHT OF position */
2006 105, /* (75) position ::= expr ON HEADING EDGEPT OF position */
2007 105, /* (76) position ::= expr HEADING EDGEPT OF position */
2008 105, /* (77) position ::= expr EDGEPT OF position */
2009 105, /* (78) position ::= expr ON HEADING expr FROM position */
2010 105, /* (79) position ::= expr HEADING expr FROM position */
2011 106, /* (80) place ::= edge OF object */
2012 129, /* (81) place2 ::= object */
2013 129, /* (82) place2 ::= object DOT_E edge */
2014 129, /* (83) place2 ::= NTH VERTEX OF object */
2015 107, /* (84) object ::= nth */
2016 107, /* (85) object ::= nth OF|IN object */
2017 108, /* (86) objectname ::= PLACENAME */
2018 108, /* (87) objectname ::= objectname DOT_U PLACENAME */
2019 109, /* (88) nth ::= NTH CLASSNAME */
2020 109, /* (89) nth ::= NTH LAST CLASSNAME */
2021 109, /* (90) nth ::= LAST CLASSNAME */
2022 109, /* (91) nth ::= LAST */
2023 109, /* (92) nth ::= NTH LB RB */
2024 109, /* (93) nth ::= NTH LAST LB RB */
2025 109, /* (94) nth ::= LAST LB RB */
2026 98, /* (95) expr ::= expr PLUS expr */
2027 98, /* (96) expr ::= expr MINUS expr */
2028 98, /* (97) expr ::= expr STAR expr */
2029 98, /* (98) expr ::= expr SLASH expr */
2030 98, /* (99) expr ::= MINUS expr */
2031 98, /* (100) expr ::= PLUS expr */
2032 98, /* (101) expr ::= LP expr RP */
2033 98, /* (102) expr ::= NUMBER */
2034 98, /* (103) expr ::= ID */
2035 98, /* (104) expr ::= FUNC1 LP expr RP */
2036 98, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2037 98, /* (106) expr ::= place2 DOT_XY X */
2038 98, /* (107) expr ::= place2 DOT_XY Y */
2039 98, /* (108) expr ::= object DOT_L numproperty */
2040 98, /* (109) expr ::= object DOT_L dashproperty */
2041 98, /* (110) expr ::= object DOT_L colorproperty */
2042 112, /* (111) lvalue ::= ID */
2043 112, /* (112) lvalue ::= FILL */
2044 112, /* (113) lvalue ::= COLOR */
2045 112, /* (114) lvalue ::= THICKNESS */
2046 111, /* (115) rvalue ::= expr */
2047 117, /* (116) print ::= PRINT */
2048 118, /* (117) prlist ::= pritem */
2049 118, /* (118) prlist ::= prlist prsep pritem */
2050 101, /* (119) direction ::= UP */
2051 101, /* (120) direction ::= DOWN */
2052 101, /* (121) direction ::= LEFT */
2053 101, /* (122) direction ::= RIGHT */
2054 115, /* (123) optrelexpr ::= relexpr */
2055 121, /* (124) attribute_list ::= alist */
2056 123, /* (125) alist ::= */
2057 123, /* (126) alist ::= alist attribute */
2058 124, /* (127) attribute ::= boolproperty */
2059 124, /* (128) attribute ::= WITH withclause */
2060 125, /* (129) go ::= GO */
2061 125, /* (130) go ::= */
2062 113, /* (131) even ::= UNTIL EVEN WITH */
2063 113, /* (132) even ::= EVEN WITH */
2064 102, /* (133) dashproperty ::= DOTTED */
2065 102, /* (134) dashproperty ::= DASHED */
2066 103, /* (135) colorproperty ::= FILL */
2067 103, /* (136) colorproperty ::= COLOR */
2068 105, /* (137) position ::= place */
2069 128, /* (138) between ::= WAY BETWEEN */
2070 128, /* (139) between ::= BETWEEN */
2071 128, /* (140) between ::= OF THE WAY BETWEEN */
2072 106, /* (141) place ::= place2 */
2073 100, /* (142) edge ::= CENTER */
2074 100, /* (143) edge ::= EDGEPT */
2075 100, /* (144) edge ::= TOP */
2076 100, /* (145) edge ::= BOTTOM */
2077 100, /* (146) edge ::= START */
2078 100, /* (147) edge ::= END */
2079 100, /* (148) edge ::= RIGHT */
2080 100, /* (149) edge ::= LEFT */
2081 107, /* (150) object ::= objectname */
 
2082 };
2083
2084 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2085 ** of symbols on the right-hand side of that rule. */
2086 static const signed char yyRuleInfoNRhs[] = {
@@ -2188,55 +2207,56 @@
2188 -3, /* (101) expr ::= LP expr RP */
2189 -1, /* (102) expr ::= NUMBER */
2190 -1, /* (103) expr ::= ID */
2191 -4, /* (104) expr ::= FUNC1 LP expr RP */
2192 -6, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2193 -3, /* (106) expr ::= place2 DOT_XY X */
2194 -3, /* (107) expr ::= place2 DOT_XY Y */
2195 -3, /* (108) expr ::= object DOT_L numproperty */
2196 -3, /* (109) expr ::= object DOT_L dashproperty */
2197 -3, /* (110) expr ::= object DOT_L colorproperty */
2198 -1, /* (111) lvalue ::= ID */
2199 -1, /* (112) lvalue ::= FILL */
2200 -1, /* (113) lvalue ::= COLOR */
2201 -1, /* (114) lvalue ::= THICKNESS */
2202 -1, /* (115) rvalue ::= expr */
2203 -1, /* (116) print ::= PRINT */
2204 -1, /* (117) prlist ::= pritem */
2205 -3, /* (118) prlist ::= prlist prsep pritem */
2206 -1, /* (119) direction ::= UP */
2207 -1, /* (120) direction ::= DOWN */
2208 -1, /* (121) direction ::= LEFT */
2209 -1, /* (122) direction ::= RIGHT */
2210 -1, /* (123) optrelexpr ::= relexpr */
2211 -1, /* (124) attribute_list ::= alist */
2212 0, /* (125) alist ::= */
2213 -2, /* (126) alist ::= alist attribute */
2214 -1, /* (127) attribute ::= boolproperty */
2215 -2, /* (128) attribute ::= WITH withclause */
2216 -1, /* (129) go ::= GO */
2217 0, /* (130) go ::= */
2218 -3, /* (131) even ::= UNTIL EVEN WITH */
2219 -2, /* (132) even ::= EVEN WITH */
2220 -1, /* (133) dashproperty ::= DOTTED */
2221 -1, /* (134) dashproperty ::= DASHED */
2222 -1, /* (135) colorproperty ::= FILL */
2223 -1, /* (136) colorproperty ::= COLOR */
2224 -1, /* (137) position ::= place */
2225 -2, /* (138) between ::= WAY BETWEEN */
2226 -1, /* (139) between ::= BETWEEN */
2227 -4, /* (140) between ::= OF THE WAY BETWEEN */
2228 -1, /* (141) place ::= place2 */
2229 -1, /* (142) edge ::= CENTER */
2230 -1, /* (143) edge ::= EDGEPT */
2231 -1, /* (144) edge ::= TOP */
2232 -1, /* (145) edge ::= BOTTOM */
2233 -1, /* (146) edge ::= START */
2234 -1, /* (147) edge ::= END */
2235 -1, /* (148) edge ::= RIGHT */
2236 -1, /* (149) edge ::= LEFT */
2237 -1, /* (150) object ::= objectname */
 
2238 };
2239
2240 static void yy_accept(yyParser*); /* Forward Declaration */
2241
2242 /*
@@ -2323,636 +2343,641 @@
2323 ** break;
2324 */
2325 /********** Begin reduce actions **********************************************/
2326 YYMINORTYPE yylhsminor;
2327 case 0: /* document ::= element_list */
2328 #line 504 "pikchr.y"
2329 {pik_render(p,yymsp[0].minor.yy72);}
2330 #line 2355 "pikchr.c"
2331 break;
2332 case 1: /* element_list ::= element */
2333 #line 507 "pikchr.y"
2334 { yylhsminor.yy72 = pik_elist_append(p,0,yymsp[0].minor.yy254); }
2335 #line 2360 "pikchr.c"
2336 yymsp[0].minor.yy72 = yylhsminor.yy72;
2337 break;
2338 case 2: /* element_list ::= element_list EOL element */
2339 #line 509 "pikchr.y"
2340 { yylhsminor.yy72 = pik_elist_append(p,yymsp[-2].minor.yy72,yymsp[0].minor.yy254); }
2341 #line 2366 "pikchr.c"
2342 yymsp[-2].minor.yy72 = yylhsminor.yy72;
2343 break;
2344 case 3: /* element ::= */
2345 #line 512 "pikchr.y"
2346 { yymsp[1].minor.yy254 = 0; }
2347 #line 2372 "pikchr.c"
2348 break;
2349 case 4: /* element ::= direction */
2350 #line 513 "pikchr.y"
2351 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy254=0; }
2352 #line 2377 "pikchr.c"
2353 yymsp[0].minor.yy254 = yylhsminor.yy254;
2354 break;
2355 case 5: /* element ::= lvalue ASSIGN rvalue */
2356 #line 514 "pikchr.y"
2357 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy73,&yymsp[-1].minor.yy0); yylhsminor.yy254=0;}
2358 #line 2383 "pikchr.c"
2359 yymsp[-2].minor.yy254 = yylhsminor.yy254;
2360 break;
2361 case 6: /* element ::= PLACENAME COLON unnamed_element */
2362 #line 516 "pikchr.y"
2363 { yylhsminor.yy254 = yymsp[0].minor.yy254; pik_elem_setname(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0); }
2364 #line 2389 "pikchr.c"
2365 yymsp[-2].minor.yy254 = yylhsminor.yy254;
2366 break;
2367 case 7: /* element ::= PLACENAME COLON position */
2368 #line 518 "pikchr.y"
2369 { yylhsminor.yy254 = pik_elem_new(p,0,0,0);
2370 if(yylhsminor.yy254){ yylhsminor.yy254->ptAt = yymsp[0].minor.yy139; pik_elem_setname(p,yylhsminor.yy254,&yymsp[-2].minor.yy0); }}
2371 #line 2396 "pikchr.c"
2372 yymsp[-2].minor.yy254 = yylhsminor.yy254;
2373 break;
2374 case 8: /* element ::= unnamed_element */
2375 #line 520 "pikchr.y"
2376 {yylhsminor.yy254 = yymsp[0].minor.yy254;}
2377 #line 2402 "pikchr.c"
2378 yymsp[0].minor.yy254 = yylhsminor.yy254;
2379 break;
2380 case 9: /* element ::= print prlist */
2381 #line 521 "pikchr.y"
2382 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy254=0;}
2383 #line 2408 "pikchr.c"
2384 break;
2385 case 10: /* element ::= ASSERT LP expr EQ expr RP */
2386 #line 526 "pikchr.y"
2387 {yymsp[-5].minor.yy254=pik_assert(p,yymsp[-3].minor.yy73,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy73);}
2388 #line 2413 "pikchr.c"
2389 break;
2390 case 11: /* element ::= ASSERT LP place EQ place RP */
2391 #line 528 "pikchr.y"
2392 {yymsp[-5].minor.yy254=pik_place_assert(p,&yymsp[-3].minor.yy139,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy139);}
2393 #line 2418 "pikchr.c"
2394 break;
2395 case 12: /* rvalue ::= PLACENAME */
2396 #line 539 "pikchr.y"
2397 {yylhsminor.yy73 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2398 #line 2423 "pikchr.c"
2399 yymsp[0].minor.yy73 = yylhsminor.yy73;
2400 break;
2401 case 13: /* pritem ::= FILL */
2402 case 14: /* pritem ::= COLOR */ yytestcase(yyruleno==14);
2403 case 15: /* pritem ::= THICKNESS */ yytestcase(yyruleno==15);
2404 #line 544 "pikchr.y"
2405 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2406 #line 2431 "pikchr.c"
2407 break;
2408 case 16: /* pritem ::= rvalue */
2409 #line 547 "pikchr.y"
2410 {pik_append_num(p,"",yymsp[0].minor.yy73);}
2411 #line 2436 "pikchr.c"
2412 break;
2413 case 17: /* pritem ::= STRING */
2414 #line 548 "pikchr.y"
2415 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2416 #line 2441 "pikchr.c"
2417 break;
2418 case 18: /* prsep ::= COMMA */
2419 #line 549 "pikchr.y"
2420 {pik_append(p, " ", 1);}
2421 #line 2446 "pikchr.c"
2422 break;
2423 case 19: /* unnamed_element ::= basetype attribute_list */
2424 #line 552 "pikchr.y"
2425 {yylhsminor.yy254 = yymsp[-1].minor.yy254; pik_after_adding_attributes(p,yylhsminor.yy254);}
2426 #line 2451 "pikchr.c"
2427 yymsp[-1].minor.yy254 = yylhsminor.yy254;
2428 break;
2429 case 20: /* basetype ::= CLASSNAME */
2430 #line 554 "pikchr.y"
2431 {yylhsminor.yy254 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2432 #line 2457 "pikchr.c"
2433 yymsp[0].minor.yy254 = yylhsminor.yy254;
2434 break;
2435 case 21: /* basetype ::= STRING textposition */
2436 #line 556 "pikchr.y"
2437 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy74; yylhsminor.yy254 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2438 #line 2463 "pikchr.c"
2439 yymsp[-1].minor.yy254 = yylhsminor.yy254;
2440 break;
2441 case 22: /* basetype ::= LB savelist element_list RB */
2442 #line 558 "pikchr.y"
2443 { p->list = yymsp[-2].minor.yy72; yymsp[-3].minor.yy254 = pik_elem_new(p,0,0,yymsp[-1].minor.yy72); if(yymsp[-3].minor.yy254) yymsp[-3].minor.yy254->errTok = yymsp[0].minor.yy0; }
2444 #line 2469 "pikchr.c"
2445 break;
2446 case 23: /* savelist ::= */
2447 #line 563 "pikchr.y"
2448 {yymsp[1].minor.yy72 = p->list; p->list = 0;}
2449 #line 2474 "pikchr.c"
2450 break;
2451 case 24: /* relexpr ::= expr */
2452 #line 570 "pikchr.y"
2453 {yylhsminor.yy60.rAbs = yymsp[0].minor.yy73; yylhsminor.yy60.rRel = 0;}
2454 #line 2479 "pikchr.c"
2455 yymsp[0].minor.yy60 = yylhsminor.yy60;
2456 break;
2457 case 25: /* relexpr ::= expr PERCENT */
2458 #line 571 "pikchr.y"
2459 {yylhsminor.yy60.rAbs = 0; yylhsminor.yy60.rRel = yymsp[-1].minor.yy73/100;}
2460 #line 2485 "pikchr.c"
2461 yymsp[-1].minor.yy60 = yylhsminor.yy60;
2462 break;
2463 case 26: /* optrelexpr ::= */
2464 #line 573 "pikchr.y"
2465 {yymsp[1].minor.yy60.rAbs = 0; yymsp[1].minor.yy60.rRel = 1.0;}
2466 #line 2491 "pikchr.c"
2467 break;
2468 case 27: /* attribute_list ::= relexpr alist */
2469 #line 575 "pikchr.y"
2470 {pik_add_direction(p,0,&yymsp[-1].minor.yy60);}
2471 #line 2496 "pikchr.c"
2472 break;
2473 case 28: /* attribute ::= numproperty relexpr */
2474 #line 579 "pikchr.y"
2475 { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy60); }
2476 #line 2501 "pikchr.c"
2477 break;
2478 case 29: /* attribute ::= dashproperty expr */
2479 #line 580 "pikchr.y"
2480 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy73); }
2481 #line 2506 "pikchr.c"
2482 break;
2483 case 30: /* attribute ::= dashproperty */
2484 #line 581 "pikchr.y"
2485 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2486 #line 2511 "pikchr.c"
2487 break;
2488 case 31: /* attribute ::= colorproperty rvalue */
2489 #line 582 "pikchr.y"
2490 { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy73); }
2491 #line 2516 "pikchr.c"
2492 break;
2493 case 32: /* attribute ::= go direction optrelexpr */
2494 #line 583 "pikchr.y"
2495 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy60);}
2496 #line 2521 "pikchr.c"
2497 break;
2498 case 33: /* attribute ::= go direction even position */
2499 #line 584 "pikchr.y"
2500 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy139);}
2501 #line 2526 "pikchr.c"
2502 break;
2503 case 34: /* attribute ::= CLOSE */
2504 #line 585 "pikchr.y"
2505 { pik_close_path(p,&yymsp[0].minor.yy0); }
2506 #line 2531 "pikchr.c"
2507 break;
2508 case 35: /* attribute ::= CHOP */
2509 #line 586 "pikchr.y"
2510 { p->cur->bChop = 1; }
2511 #line 2536 "pikchr.c"
2512 break;
2513 case 36: /* attribute ::= FROM position */
2514 #line 587 "pikchr.y"
2515 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy139); }
2516 #line 2541 "pikchr.c"
2517 break;
2518 case 37: /* attribute ::= TO position */
2519 #line 588 "pikchr.y"
2520 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy139); }
2521 #line 2546 "pikchr.c"
2522 break;
2523 case 38: /* attribute ::= THEN */
2524 #line 589 "pikchr.y"
2525 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2526 #line 2551 "pikchr.c"
2527 break;
2528 case 39: /* attribute ::= THEN optrelexpr HEADING expr */
2529 case 41: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==41);
2530 #line 591 "pikchr.y"
2531 {pik_move_hdg(p,&yymsp[-2].minor.yy60,&yymsp[-1].minor.yy0,yymsp[0].minor.yy73,0,&yymsp[-3].minor.yy0);}
2532 #line 2557 "pikchr.c"
2533 break;
2534 case 40: /* attribute ::= THEN optrelexpr EDGEPT */
2535 case 42: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==42);
2536 #line 592 "pikchr.y"
2537 {pik_move_hdg(p,&yymsp[-1].minor.yy60,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2538 #line 2563 "pikchr.c"
2539 break;
2540 case 43: /* attribute ::= AT position */
2541 #line 597 "pikchr.y"
2542 { pik_set_at(p,0,&yymsp[0].minor.yy139,&yymsp[-1].minor.yy0); }
2543 #line 2568 "pikchr.c"
2544 break;
2545 case 44: /* attribute ::= SAME */
2546 #line 599 "pikchr.y"
2547 {pik_same(p,0,&yymsp[0].minor.yy0);}
2548 #line 2573 "pikchr.c"
2549 break;
2550 case 45: /* attribute ::= SAME AS object */
2551 #line 600 "pikchr.y"
2552 {pik_same(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0);}
2553 #line 2578 "pikchr.c"
2554 break;
2555 case 46: /* attribute ::= STRING textposition */
2556 #line 601 "pikchr.y"
2557 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy74);}
2558 #line 2583 "pikchr.c"
2559 break;
2560 case 47: /* attribute ::= FIT */
2561 #line 602 "pikchr.y"
2562 {pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2563 #line 2588 "pikchr.c"
2564 break;
2565 case 48: /* attribute ::= BEHIND object */
2566 #line 603 "pikchr.y"
2567 {pik_behind(p,yymsp[0].minor.yy254);}
2568 #line 2593 "pikchr.c"
2569 break;
2570 case 49: /* withclause ::= DOT_E edge AT position */
2571 case 50: /* withclause ::= edge AT position */ yytestcase(yyruleno==50);
2572 #line 611 "pikchr.y"
2573 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy139,&yymsp[-1].minor.yy0); }
2574 #line 2599 "pikchr.c"
2575 break;
2576 case 51: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2577 #line 615 "pikchr.y"
2578 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2579 #line 2604 "pikchr.c"
2580 yymsp[0].minor.yy0 = yylhsminor.yy0;
2581 break;
2582 case 52: /* boolproperty ::= CW */
2583 #line 626 "pikchr.y"
2584 {p->cur->cw = 1;}
2585 #line 2610 "pikchr.c"
2586 break;
2587 case 53: /* boolproperty ::= CCW */
2588 #line 627 "pikchr.y"
2589 {p->cur->cw = 0;}
2590 #line 2615 "pikchr.c"
2591 break;
2592 case 54: /* boolproperty ::= LARROW */
2593 #line 628 "pikchr.y"
2594 {p->cur->larrow=1; p->cur->rarrow=0; }
2595 #line 2620 "pikchr.c"
2596 break;
2597 case 55: /* boolproperty ::= RARROW */
2598 #line 629 "pikchr.y"
2599 {p->cur->larrow=0; p->cur->rarrow=1; }
2600 #line 2625 "pikchr.c"
2601 break;
2602 case 56: /* boolproperty ::= LRARROW */
2603 #line 630 "pikchr.y"
2604 {p->cur->larrow=1; p->cur->rarrow=1; }
2605 #line 2630 "pikchr.c"
2606 break;
2607 case 57: /* boolproperty ::= INVIS */
2608 #line 631 "pikchr.y"
2609 {p->cur->sw = 0.0;}
2610 #line 2635 "pikchr.c"
2611 break;
2612 case 58: /* boolproperty ::= THICK */
2613 #line 632 "pikchr.y"
2614 {p->cur->sw *= 1.5;}
2615 #line 2640 "pikchr.c"
2616 break;
2617 case 59: /* boolproperty ::= THIN */
2618 #line 633 "pikchr.y"
2619 {p->cur->sw *= 0.67;}
2620 #line 2645 "pikchr.c"
2621 break;
2622 case 60: /* textposition ::= */
2623 #line 635 "pikchr.y"
2624 {yymsp[1].minor.yy74 = 0;}
2625 #line 2650 "pikchr.c"
2626 break;
2627 case 61: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2628 #line 638 "pikchr.y"
2629 {yylhsminor.yy74 = pik_text_position(yymsp[-1].minor.yy74,&yymsp[0].minor.yy0);}
2630 #line 2655 "pikchr.c"
2631 yymsp[-1].minor.yy74 = yylhsminor.yy74;
2632 break;
2633 case 62: /* position ::= expr COMMA expr */
2634 #line 641 "pikchr.y"
2635 {yylhsminor.yy139.x=yymsp[-2].minor.yy73; yylhsminor.yy139.y=yymsp[0].minor.yy73;}
2636 #line 2661 "pikchr.c"
2637 yymsp[-2].minor.yy139 = yylhsminor.yy139;
2638 break;
2639 case 63: /* position ::= place PLUS expr COMMA expr */
2640 #line 643 "pikchr.y"
2641 {yylhsminor.yy139.x=yymsp[-4].minor.yy139.x+yymsp[-2].minor.yy73; yylhsminor.yy139.y=yymsp[-4].minor.yy139.y+yymsp[0].minor.yy73;}
2642 #line 2667 "pikchr.c"
2643 yymsp[-4].minor.yy139 = yylhsminor.yy139;
2644 break;
2645 case 64: /* position ::= place MINUS expr COMMA expr */
2646 #line 644 "pikchr.y"
2647 {yylhsminor.yy139.x=yymsp[-4].minor.yy139.x-yymsp[-2].minor.yy73; yylhsminor.yy139.y=yymsp[-4].minor.yy139.y-yymsp[0].minor.yy73;}
2648 #line 2673 "pikchr.c"
2649 yymsp[-4].minor.yy139 = yylhsminor.yy139;
2650 break;
2651 case 65: /* position ::= place PLUS LP expr COMMA expr RP */
2652 #line 646 "pikchr.y"
2653 {yylhsminor.yy139.x=yymsp[-6].minor.yy139.x+yymsp[-3].minor.yy73; yylhsminor.yy139.y=yymsp[-6].minor.yy139.y+yymsp[-1].minor.yy73;}
2654 #line 2679 "pikchr.c"
2655 yymsp[-6].minor.yy139 = yylhsminor.yy139;
2656 break;
2657 case 66: /* position ::= place MINUS LP expr COMMA expr RP */
2658 #line 648 "pikchr.y"
2659 {yylhsminor.yy139.x=yymsp[-6].minor.yy139.x-yymsp[-3].minor.yy73; yylhsminor.yy139.y=yymsp[-6].minor.yy139.y-yymsp[-1].minor.yy73;}
2660 #line 2685 "pikchr.c"
2661 yymsp[-6].minor.yy139 = yylhsminor.yy139;
2662 break;
2663 case 67: /* position ::= LP position COMMA position RP */
2664 #line 649 "pikchr.y"
2665 {yymsp[-4].minor.yy139.x=yymsp[-3].minor.yy139.x; yymsp[-4].minor.yy139.y=yymsp[-1].minor.yy139.y;}
2666 #line 2691 "pikchr.c"
2667 break;
2668 case 68: /* position ::= LP position RP */
2669 #line 650 "pikchr.y"
2670 {yymsp[-2].minor.yy139=yymsp[-1].minor.yy139;}
2671 #line 2696 "pikchr.c"
2672 break;
2673 case 69: /* position ::= expr between position AND position */
2674 #line 652 "pikchr.y"
2675 {yylhsminor.yy139 = pik_position_between(yymsp[-4].minor.yy73,yymsp[-2].minor.yy139,yymsp[0].minor.yy139);}
2676 #line 2701 "pikchr.c"
2677 yymsp[-4].minor.yy139 = yylhsminor.yy139;
2678 break;
2679 case 70: /* position ::= expr LT position COMMA position GT */
2680 #line 654 "pikchr.y"
2681 {yylhsminor.yy139 = pik_position_between(yymsp[-5].minor.yy73,yymsp[-3].minor.yy139,yymsp[-1].minor.yy139);}
2682 #line 2707 "pikchr.c"
2683 yymsp[-5].minor.yy139 = yylhsminor.yy139;
2684 break;
2685 case 71: /* position ::= expr ABOVE position */
2686 #line 655 "pikchr.y"
2687 {yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.y += yymsp[-2].minor.yy73;}
2688 #line 2713 "pikchr.c"
2689 yymsp[-2].minor.yy139 = yylhsminor.yy139;
2690 break;
2691 case 72: /* position ::= expr BELOW position */
2692 #line 656 "pikchr.y"
2693 {yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.y -= yymsp[-2].minor.yy73;}
2694 #line 2719 "pikchr.c"
2695 yymsp[-2].minor.yy139 = yylhsminor.yy139;
2696 break;
2697 case 73: /* position ::= expr LEFT OF position */
2698 #line 657 "pikchr.y"
2699 {yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.x -= yymsp[-3].minor.yy73;}
2700 #line 2725 "pikchr.c"
2701 yymsp[-3].minor.yy139 = yylhsminor.yy139;
2702 break;
2703 case 74: /* position ::= expr RIGHT OF position */
2704 #line 658 "pikchr.y"
2705 {yylhsminor.yy139=yymsp[0].minor.yy139; yylhsminor.yy139.x += yymsp[-3].minor.yy73;}
2706 #line 2731 "pikchr.c"
2707 yymsp[-3].minor.yy139 = yylhsminor.yy139;
2708 break;
2709 case 75: /* position ::= expr ON HEADING EDGEPT OF position */
2710 #line 660 "pikchr.y"
2711 {yylhsminor.yy139 = pik_position_at_hdg(yymsp[-5].minor.yy73,&yymsp[-2].minor.yy0,yymsp[0].minor.yy139);}
2712 #line 2737 "pikchr.c"
2713 yymsp[-5].minor.yy139 = yylhsminor.yy139;
2714 break;
2715 case 76: /* position ::= expr HEADING EDGEPT OF position */
2716 #line 662 "pikchr.y"
2717 {yylhsminor.yy139 = pik_position_at_hdg(yymsp[-4].minor.yy73,&yymsp[-2].minor.yy0,yymsp[0].minor.yy139);}
2718 #line 2743 "pikchr.c"
2719 yymsp[-4].minor.yy139 = yylhsminor.yy139;
2720 break;
2721 case 77: /* position ::= expr EDGEPT OF position */
2722 #line 664 "pikchr.y"
2723 {yylhsminor.yy139 = pik_position_at_hdg(yymsp[-3].minor.yy73,&yymsp[-2].minor.yy0,yymsp[0].minor.yy139);}
2724 #line 2749 "pikchr.c"
2725 yymsp[-3].minor.yy139 = yylhsminor.yy139;
2726 break;
2727 case 78: /* position ::= expr ON HEADING expr FROM position */
2728 #line 666 "pikchr.y"
2729 {yylhsminor.yy139 = pik_position_at_angle(yymsp[-5].minor.yy73,yymsp[-2].minor.yy73,yymsp[0].minor.yy139);}
2730 #line 2755 "pikchr.c"
2731 yymsp[-5].minor.yy139 = yylhsminor.yy139;
2732 break;
2733 case 79: /* position ::= expr HEADING expr FROM position */
2734 #line 668 "pikchr.y"
2735 {yylhsminor.yy139 = pik_position_at_angle(yymsp[-4].minor.yy73,yymsp[-2].minor.yy73,yymsp[0].minor.yy139);}
2736 #line 2761 "pikchr.c"
2737 yymsp[-4].minor.yy139 = yylhsminor.yy139;
2738 break;
2739 case 80: /* place ::= edge OF object */
2740 #line 680 "pikchr.y"
2741 {yylhsminor.yy139 = pik_place_of_elem(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0);}
2742 #line 2767 "pikchr.c"
2743 yymsp[-2].minor.yy139 = yylhsminor.yy139;
2744 break;
2745 case 81: /* place2 ::= object */
2746 #line 681 "pikchr.y"
2747 {yylhsminor.yy139 = pik_place_of_elem(p,yymsp[0].minor.yy254,0);}
2748 #line 2773 "pikchr.c"
2749 yymsp[0].minor.yy139 = yylhsminor.yy139;
2750 break;
2751 case 82: /* place2 ::= object DOT_E edge */
2752 #line 682 "pikchr.y"
2753 {yylhsminor.yy139 = pik_place_of_elem(p,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
2754 #line 2779 "pikchr.c"
2755 yymsp[-2].minor.yy139 = yylhsminor.yy139;
2756 break;
2757 case 83: /* place2 ::= NTH VERTEX OF object */
2758 #line 683 "pikchr.y"
2759 {yylhsminor.yy139 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy254);}
2760 #line 2785 "pikchr.c"
2761 yymsp[-3].minor.yy139 = yylhsminor.yy139;
2762 break;
2763 case 84: /* object ::= nth */
2764 #line 695 "pikchr.y"
2765 {yylhsminor.yy254 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2766 #line 2791 "pikchr.c"
2767 yymsp[0].minor.yy254 = yylhsminor.yy254;
2768 break;
2769 case 85: /* object ::= nth OF|IN object */
2770 #line 696 "pikchr.y"
2771 {yylhsminor.yy254 = pik_find_nth(p,yymsp[0].minor.yy254,&yymsp[-2].minor.yy0);}
2772 #line 2797 "pikchr.c"
2773 yymsp[-2].minor.yy254 = yylhsminor.yy254;
2774 break;
2775 case 86: /* objectname ::= PLACENAME */
2776 #line 698 "pikchr.y"
2777 {yylhsminor.yy254 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2778 #line 2803 "pikchr.c"
2779 yymsp[0].minor.yy254 = yylhsminor.yy254;
2780 break;
2781 case 87: /* objectname ::= objectname DOT_U PLACENAME */
2782 #line 700 "pikchr.y"
2783 {yylhsminor.yy254 = pik_find_byname(p,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
2784 #line 2809 "pikchr.c"
2785 yymsp[-2].minor.yy254 = yylhsminor.yy254;
2786 break;
2787 case 88: /* nth ::= NTH CLASSNAME */
2788 #line 702 "pikchr.y"
2789 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2790 #line 2815 "pikchr.c"
2791 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2792 break;
2793 case 89: /* nth ::= NTH LAST CLASSNAME */
2794 #line 703 "pikchr.y"
2795 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2796 #line 2821 "pikchr.c"
2797 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2798 break;
2799 case 90: /* nth ::= LAST CLASSNAME */
2800 #line 704 "pikchr.y"
2801 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2802 #line 2827 "pikchr.c"
2803 break;
2804 case 91: /* nth ::= LAST */
2805 #line 705 "pikchr.y"
2806 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2807 #line 2832 "pikchr.c"
2808 yymsp[0].minor.yy0 = yylhsminor.yy0;
2809 break;
2810 case 92: /* nth ::= NTH LB RB */
2811 #line 706 "pikchr.y"
2812 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2813 #line 2838 "pikchr.c"
2814 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2815 break;
2816 case 93: /* nth ::= NTH LAST LB RB */
2817 #line 707 "pikchr.y"
2818 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2819 #line 2844 "pikchr.c"
2820 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2821 break;
2822 case 94: /* nth ::= LAST LB RB */
2823 #line 708 "pikchr.y"
2824 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2825 #line 2850 "pikchr.c"
2826 break;
2827 case 95: /* expr ::= expr PLUS expr */
2828 #line 710 "pikchr.y"
2829 {yylhsminor.yy73=yymsp[-2].minor.yy73+yymsp[0].minor.yy73;}
2830 #line 2855 "pikchr.c"
2831 yymsp[-2].minor.yy73 = yylhsminor.yy73;
2832 break;
2833 case 96: /* expr ::= expr MINUS expr */
2834 #line 711 "pikchr.y"
2835 {yylhsminor.yy73=yymsp[-2].minor.yy73-yymsp[0].minor.yy73;}
2836 #line 2861 "pikchr.c"
2837 yymsp[-2].minor.yy73 = yylhsminor.yy73;
2838 break;
2839 case 97: /* expr ::= expr STAR expr */
2840 #line 712 "pikchr.y"
2841 {yylhsminor.yy73=yymsp[-2].minor.yy73*yymsp[0].minor.yy73;}
2842 #line 2867 "pikchr.c"
2843 yymsp[-2].minor.yy73 = yylhsminor.yy73;
2844 break;
2845 case 98: /* expr ::= expr SLASH expr */
2846 #line 713 "pikchr.y"
2847 {
2848 if( yymsp[0].minor.yy73==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy73 = 0.0; }
2849 else{ yylhsminor.yy73 = yymsp[-2].minor.yy73/yymsp[0].minor.yy73; }
2850 }
2851 #line 2876 "pikchr.c"
2852 yymsp[-2].minor.yy73 = yylhsminor.yy73;
2853 break;
2854 case 99: /* expr ::= MINUS expr */
2855 #line 717 "pikchr.y"
2856 {yymsp[-1].minor.yy73=-yymsp[0].minor.yy73;}
2857 #line 2882 "pikchr.c"
2858 break;
2859 case 100: /* expr ::= PLUS expr */
2860 #line 718 "pikchr.y"
2861 {yymsp[-1].minor.yy73=yymsp[0].minor.yy73;}
2862 #line 2887 "pikchr.c"
2863 break;
2864 case 101: /* expr ::= LP expr RP */
2865 #line 719 "pikchr.y"
2866 {yymsp[-2].minor.yy73=yymsp[-1].minor.yy73;}
2867 #line 2892 "pikchr.c"
2868 break;
2869 case 102: /* expr ::= NUMBER */
2870 #line 720 "pikchr.y"
2871 {yylhsminor.yy73=pik_atof(&yymsp[0].minor.yy0);}
2872 #line 2897 "pikchr.c"
2873 yymsp[0].minor.yy73 = yylhsminor.yy73;
2874 break;
2875 case 103: /* expr ::= ID */
2876 #line 721 "pikchr.y"
2877 {yylhsminor.yy73=pik_get_var(p,&yymsp[0].minor.yy0);}
2878 #line 2903 "pikchr.c"
2879 yymsp[0].minor.yy73 = yylhsminor.yy73;
2880 break;
2881 case 104: /* expr ::= FUNC1 LP expr RP */
2882 #line 722 "pikchr.y"
2883 {yylhsminor.yy73 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy73,0.0);}
2884 #line 2909 "pikchr.c"
2885 yymsp[-3].minor.yy73 = yylhsminor.yy73;
2886 break;
2887 case 105: /* expr ::= FUNC2 LP expr COMMA expr RP */
2888 #line 723 "pikchr.y"
2889 {yylhsminor.yy73 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy73,yymsp[-1].minor.yy73);}
2890 #line 2915 "pikchr.c"
2891 yymsp[-5].minor.yy73 = yylhsminor.yy73;
2892 break;
2893 case 106: /* expr ::= place2 DOT_XY X */
2894 #line 724 "pikchr.y"
2895 {yylhsminor.yy73 = yymsp[-2].minor.yy139.x;}
2896 #line 2921 "pikchr.c"
2897 yymsp[-2].minor.yy73 = yylhsminor.yy73;
2898 break;
2899 case 107: /* expr ::= place2 DOT_XY Y */
2900 #line 725 "pikchr.y"
2901 {yylhsminor.yy73 = yymsp[-2].minor.yy139.y;}
2902 #line 2927 "pikchr.c"
2903 yymsp[-2].minor.yy73 = yylhsminor.yy73;
2904 break;
2905 case 108: /* expr ::= object DOT_L numproperty */
2906 case 109: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==109);
2907 case 110: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==110);
2908 #line 726 "pikchr.y"
2909 {yylhsminor.yy73=pik_property_of(yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
2910 #line 2935 "pikchr.c"
2911 yymsp[-2].minor.yy73 = yylhsminor.yy73;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2912 break;
2913 default:
2914 /* (111) lvalue ::= ID */ yytestcase(yyruleno==111);
2915 /* (112) lvalue ::= FILL */ yytestcase(yyruleno==112);
2916 /* (113) lvalue ::= COLOR */ yytestcase(yyruleno==113);
2917 /* (114) lvalue ::= THICKNESS */ yytestcase(yyruleno==114);
2918 /* (115) rvalue ::= expr */ yytestcase(yyruleno==115);
2919 /* (116) print ::= PRINT */ yytestcase(yyruleno==116);
2920 /* (117) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=117);
2921 /* (118) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==118);
2922 /* (119) direction ::= UP */ yytestcase(yyruleno==119);
2923 /* (120) direction ::= DOWN */ yytestcase(yyruleno==120);
2924 /* (121) direction ::= LEFT */ yytestcase(yyruleno==121);
2925 /* (122) direction ::= RIGHT */ yytestcase(yyruleno==122);
2926 /* (123) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=123);
2927 /* (124) attribute_list ::= alist */ yytestcase(yyruleno==124);
2928 /* (125) alist ::= */ yytestcase(yyruleno==125);
2929 /* (126) alist ::= alist attribute */ yytestcase(yyruleno==126);
2930 /* (127) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=127);
2931 /* (128) attribute ::= WITH withclause */ yytestcase(yyruleno==128);
2932 /* (129) go ::= GO */ yytestcase(yyruleno==129);
2933 /* (130) go ::= */ yytestcase(yyruleno==130);
2934 /* (131) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==131);
2935 /* (132) even ::= EVEN WITH */ yytestcase(yyruleno==132);
2936 /* (133) dashproperty ::= DOTTED */ yytestcase(yyruleno==133);
2937 /* (134) dashproperty ::= DASHED */ yytestcase(yyruleno==134);
2938 /* (135) colorproperty ::= FILL */ yytestcase(yyruleno==135);
2939 /* (136) colorproperty ::= COLOR */ yytestcase(yyruleno==136);
2940 /* (137) position ::= place */ yytestcase(yyruleno==137);
2941 /* (138) between ::= WAY BETWEEN */ yytestcase(yyruleno==138);
2942 /* (139) between ::= BETWEEN */ yytestcase(yyruleno==139);
2943 /* (140) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==140);
2944 /* (141) place ::= place2 */ yytestcase(yyruleno==141);
2945 /* (142) edge ::= CENTER */ yytestcase(yyruleno==142);
2946 /* (143) edge ::= EDGEPT */ yytestcase(yyruleno==143);
2947 /* (144) edge ::= TOP */ yytestcase(yyruleno==144);
2948 /* (145) edge ::= BOTTOM */ yytestcase(yyruleno==145);
2949 /* (146) edge ::= START */ yytestcase(yyruleno==146);
2950 /* (147) edge ::= END */ yytestcase(yyruleno==147);
2951 /* (148) edge ::= RIGHT */ yytestcase(yyruleno==148);
2952 /* (149) edge ::= LEFT */ yytestcase(yyruleno==149);
2953 /* (150) object ::= objectname */ yytestcase(yyruleno==150);
2954 break;
2955 /********** End reduce actions ************************************************/
2956 };
2957 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
2958 yygoto = yyRuleInfoLhs[yyruleno];
@@ -3008,19 +3033,19 @@
3008 ){
3009 pik_parserARG_FETCH
3010 pik_parserCTX_FETCH
3011 #define TOKEN yyminor
3012 /************ Begin %syntax_error code ****************************************/
3013 #line 492 "pikchr.y"
3014
3015 if( TOKEN.z && TOKEN.z[0] ){
3016 pik_error(p, &TOKEN, "syntax error");
3017 }else{
3018 pik_error(p, 0, "syntax error");
3019 }
3020 UNUSED_PARAMETER(yymajor);
3021 #line 3046 "pikchr.c"
3022 /************ End %syntax_error code ******************************************/
3023 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
3024 pik_parserCTX_STORE
3025 }
3026
@@ -3249,11 +3274,11 @@
3249 #else
3250 (void)iToken;
3251 return 0;
3252 #endif
3253 }
3254 #line 731 "pikchr.y"
3255
3256
3257
3258 /* Chart of the 140 official HTML color names with their
3259 ** corresponding RGB value.
@@ -4893,10 +4918,20 @@
4893 ans /= 6;
4894 }
4895 }
4896 return ans;
4897 }
 
 
 
 
 
 
 
 
 
 
4898
4899 /* Return true if a bounding box is empty.
4900 */
4901 static int pik_bbox_isempty(PBox *p){
4902 return p->sw.x>p->ne.x;
@@ -6075,10 +6110,11 @@
6075 pElem->rarrow = pOther->rarrow;
6076 pElem->bClose = pOther->bClose;
6077 pElem->bChop = pOther->bChop;
6078 pElem->inDir = pOther->inDir;
6079 pElem->outDir = pOther->outDir;
 
6080 }
6081
6082
6083 /* Return a "Place" associated with element pElem. If pEdge is NULL
6084 ** return the center of the object. Otherwise, return the corner
@@ -6596,10 +6632,11 @@
6596 { "color", 5, T_COLOR, 0, 0 },
6597 { "cos", 3, T_FUNC1, FN_COS, 0 },
6598 { "cw", 2, T_CW, 0, 0 },
6599 { "dashed", 6, T_DASHED, 0, 0 },
6600 { "diameter", 8, T_DIAMETER, 0, 0 },
 
6601 { "dotted", 6, T_DOTTED, 0, 0 },
6602 { "down", 4, T_DOWN, DIR_DOWN, 0 },
6603 { "e", 1, T_EDGEPT, 0, CP_E },
6604 { "east", 4, T_EDGEPT, 0, CP_E },
6605 { "end", 3, T_END, 0, CP_END },
@@ -7228,6 +7265,6 @@
7228 }
7229 return 0;
7230 }
7231 #endif /* PIKCHR_SHELL */
7232
7233 #line 7258 "pikchr.c"
7234
--- src/pikchr.c
+++ src/pikchr.c
@@ -444,13 +444,14 @@
444 static PToken pik_next_semantic_token(PToken *pThis);
445 static void pik_compute_layout_settings(Pik*);
446 static void pik_behind(Pik*,PElem*);
447 static PElem *pik_assert(Pik*,PNum,PToken*,PNum);
448 static PElem *pik_place_assert(Pik*,PPoint*,PToken*,PPoint*);
449 static PNum pik_dist(PPoint*,PPoint*);
450
451
452 #line 478 "pikchr.c"
453 /**************** End of %include directives **********************************/
454 /* These constants specify the various numeric values for terminal symbols.
455 ***************** Begin token definitions *************************************/
456 #ifndef T_ID
457 #define T_ID 1
@@ -540,14 +541,15 @@
541 #define T_DOT_U 85
542 #define T_LAST 86
543 #define T_NUMBER 87
544 #define T_FUNC1 88
545 #define T_FUNC2 89
546 #define T_DIST 90
547 #define T_DOT_XY 91
548 #define T_X 92
549 #define T_Y 93
550 #define T_DOT_L 94
551 #endif
552 /**************** End token definitions ***************************************/
553
554 /* The next sections is a series of control #defines.
555 ** various aspects of the generated parser.
@@ -603,22 +605,22 @@
605 #ifndef INTERFACE
606 # define INTERFACE 1
607 #endif
608 /************* Begin control #defines *****************************************/
609 #define YYCODETYPE unsigned char
610 #define YYNOCODE 131
611 #define YYACTIONTYPE unsigned short int
612 #define pik_parserTOKENTYPE PToken
613 typedef union {
614 int yyinit;
615 pik_parserTOKENTYPE yy0;
616 PEList* yy56;
617 int yy116;
618 PRel yy164;
619 PPoint yy175;
620 PElem* yy226;
621 PNum yy257;
622 } YYMINORTYPE;
623 #ifndef YYSTACKDEPTH
624 #define YYSTACKDEPTH 100
625 #endif
626 #define pik_parserARG_SDECL
@@ -630,22 +632,22 @@
632 #define pik_parserCTX_PDECL ,Pik *p
633 #define pik_parserCTX_PARAM ,p
634 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
635 #define pik_parserCTX_STORE yypParser->p=p;
636 #define YYFALLBACK 1
637 #define YYNSTATE 162
638 #define YYNRULE 152
639 #define YYNRULE_WITH_ACTION 112
640 #define YYNTOKEN 95
641 #define YY_MAX_SHIFT 161
642 #define YY_MIN_SHIFTREDUCE 282
643 #define YY_MAX_SHIFTREDUCE 433
644 #define YY_ERROR_ACTION 434
645 #define YY_ACCEPT_ACTION 435
646 #define YY_NO_ACTION 436
647 #define YY_MIN_REDUCE 437
648 #define YY_MAX_REDUCE 588
649 /************* End control #defines *******************************************/
650 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
651
652 /* Define the yytestcase() macro to be a no-op if is not already defined
653 ** otherwise.
@@ -708,308 +710,321 @@
710 ** yy_reduce_ofst[] For each state, the offset into yy_action for
711 ** shifting non-terminals after a reduce.
712 ** yy_default[] Default action for each state.
713 **
714 *********** Begin parsing tables **********************************************/
715 #define YY_ACTTAB_COUNT (1206)
716 static const YYACTIONTYPE yy_action[] = {
717 /* 0 */ 562, 437, 23, 443, 27, 73, 128, 147, 53, 49,
718 /* 10 */ 562, 35, 444, 113, 120, 159, 119, 127, 418, 419,
719 /* 20 */ 333, 546, 80, 519, 547, 548, 562, 64, 63, 62,
720 /* 30 */ 61, 316, 317, 6, 5, 32, 148, 31, 4, 71,
721 /* 40 */ 126, 26, 329, 66, 566, 300, 48, 333, 333, 333,
722 /* 50 */ 333, 416, 417, 334, 335, 336, 337, 338, 339, 340,
723 /* 60 */ 341, 464, 64, 63, 62, 61, 121, 438, 445, 27,
724 /* 70 */ 35, 464, 69, 441, 29, 292, 485, 159, 119, 418,
725 /* 80 */ 419, 333, 30, 80, 161, 350, 304, 464, 435, 25,
726 /* 90 */ 324, 10, 316, 317, 6, 5, 32, 82, 31, 4,
727 /* 100 */ 71, 126, 83, 329, 66, 482, 159, 119, 333, 333,
728 /* 110 */ 333, 333, 416, 417, 334, 335, 336, 337, 338, 339,
729 /* 120 */ 340, 341, 385, 426, 43, 59, 60, 34, 64, 63,
730 /* 130 */ 62, 61, 75, 368, 372, 155, 22, 75, 385, 426,
731 /* 140 */ 42, 59, 60, 79, 38, 302, 78, 45, 37, 368,
732 /* 150 */ 432, 431, 22, 69, 343, 343, 343, 343, 343, 343,
733 /* 160 */ 343, 343, 343, 343, 368, 293, 432, 431, 394, 564,
734 /* 170 */ 76, 564, 64, 63, 62, 61, 307, 389, 390, 132,
735 /* 180 */ 65, 125, 425, 62, 61, 395, 396, 397, 399, 79,
736 /* 190 */ 36, 302, 78, 28, 402, 403, 404, 405, 425, 106,
737 /* 200 */ 67, 427, 428, 429, 430, 415, 322, 117, 384, 154,
738 /* 210 */ 153, 152, 517, 159, 119, 106, 130, 427, 428, 429,
739 /* 220 */ 430, 371, 157, 117, 384, 154, 153, 152, 385, 426,
740 /* 230 */ 108, 59, 60, 64, 63, 62, 61, 2, 117, 368,
741 /* 240 */ 44, 147, 58, 3, 89, 426, 383, 123, 122, 159,
742 /* 250 */ 119, 414, 46, 120, 159, 119, 432, 431, 1, 141,
743 /* 260 */ 139, 64, 63, 62, 61, 385, 463, 388, 59, 60,
744 /* 270 */ 123, 8, 432, 431, 383, 151, 368, 9, 423, 58,
745 /* 280 */ 54, 107, 402, 403, 404, 405, 146, 145, 425, 74,
746 /* 290 */ 120, 159, 119, 40, 453, 64, 63, 62, 61, 349,
747 /* 300 */ 463, 77, 77, 137, 425, 106, 421, 427, 428, 429,
748 /* 310 */ 430, 138, 151, 117, 384, 154, 153, 152, 522, 159,
749 /* 320 */ 119, 19, 18, 427, 428, 429, 430, 114, 11, 21,
750 /* 330 */ 13, 144, 140, 422, 141, 139, 64, 63, 62, 61,
751 /* 340 */ 15, 41, 106, 64, 63, 62, 61, 16, 370, 156,
752 /* 350 */ 117, 384, 154, 153, 152, 54, 418, 419, 333, 17,
753 /* 360 */ 107, 146, 145, 385, 370, 156, 59, 60, 40, 120,
754 /* 370 */ 159, 119, 12, 468, 102, 68, 352, 58, 20, 24,
755 /* 380 */ 295, 296, 297, 56, 299, 333, 333, 333, 333, 416,
756 /* 390 */ 417, 151, 64, 63, 62, 61, 19, 18, 385, 523,
757 /* 400 */ 57, 59, 60, 160, 21, 383, 144, 140, 422, 368,
758 /* 410 */ 118, 50, 58, 376, 385, 142, 374, 59, 60, 385,
759 /* 420 */ 143, 375, 59, 60, 369, 368, 118, 158, 58, 70,
760 /* 430 */ 368, 39, 385, 58, 436, 59, 60, 436, 523, 436,
761 /* 440 */ 106, 131, 129, 368, 523, 436, 58, 523, 117, 384,
762 /* 450 */ 154, 153, 152, 426, 64, 63, 62, 61, 64, 63,
763 /* 460 */ 62, 61, 87, 368, 147, 385, 436, 348, 59, 60,
764 /* 470 */ 124, 120, 159, 119, 436, 106, 102, 52, 436, 58,
765 /* 480 */ 432, 431, 436, 117, 384, 154, 153, 152, 436, 436,
766 /* 490 */ 436, 106, 436, 148, 436, 436, 106, 436, 436, 117,
767 /* 500 */ 384, 154, 153, 152, 117, 384, 154, 153, 152, 106,
768 /* 510 */ 436, 385, 425, 436, 59, 60, 436, 117, 384, 154,
769 /* 520 */ 153, 152, 368, 436, 385, 47, 436, 59, 60, 106,
770 /* 530 */ 436, 427, 428, 429, 430, 368, 436, 117, 51, 439,
771 /* 540 */ 445, 27, 106, 436, 436, 441, 436, 436, 88, 436,
772 /* 550 */ 117, 384, 154, 153, 152, 436, 161, 120, 159, 119,
773 /* 560 */ 436, 25, 436, 7, 469, 469, 520, 159, 119, 109,
774 /* 570 */ 438, 445, 27, 436, 436, 73, 441, 147, 436, 151,
775 /* 580 */ 436, 436, 487, 113, 120, 159, 119, 161, 106, 436,
776 /* 590 */ 436, 436, 25, 436, 436, 436, 117, 384, 154, 153,
777 /* 600 */ 152, 106, 64, 63, 62, 61, 148, 436, 90, 117,
778 /* 610 */ 384, 154, 153, 152, 73, 436, 147, 120, 159, 119,
779 /* 620 */ 436, 486, 113, 120, 159, 119, 436, 73, 436, 147,
780 /* 630 */ 436, 14, 436, 436, 480, 113, 120, 159, 119, 151,
781 /* 640 */ 436, 436, 73, 436, 147, 148, 436, 436, 436, 474,
782 /* 650 */ 113, 120, 159, 119, 73, 436, 147, 107, 148, 436,
783 /* 660 */ 436, 473, 113, 120, 159, 119, 120, 159, 119, 436,
784 /* 670 */ 453, 436, 436, 148, 436, 436, 436, 436, 556, 436,
785 /* 680 */ 436, 436, 73, 436, 147, 148, 436, 436, 151, 470,
786 /* 690 */ 113, 120, 159, 119, 436, 436, 73, 436, 147, 436,
787 /* 700 */ 436, 436, 436, 133, 113, 120, 159, 119, 436, 73,
788 /* 710 */ 436, 147, 436, 148, 436, 436, 506, 113, 120, 159,
789 /* 720 */ 119, 73, 436, 147, 436, 436, 436, 148, 136, 113,
790 /* 730 */ 120, 159, 119, 436, 73, 436, 147, 436, 436, 436,
791 /* 740 */ 148, 514, 113, 120, 159, 119, 436, 436, 436, 73,
792 /* 750 */ 436, 147, 148, 436, 436, 436, 516, 113, 120, 159,
793 /* 760 */ 119, 73, 436, 147, 107, 148, 436, 436, 513, 113,
794 /* 770 */ 120, 159, 119, 120, 159, 119, 436, 442, 436, 436,
795 /* 780 */ 148, 436, 64, 63, 62, 61, 436, 436, 436, 73,
796 /* 790 */ 436, 147, 148, 436, 436, 151, 515, 113, 120, 159,
797 /* 800 */ 119, 55, 436, 73, 436, 147, 64, 63, 62, 61,
798 /* 810 */ 512, 113, 120, 159, 119, 436, 73, 436, 147, 386,
799 /* 820 */ 148, 436, 436, 511, 113, 120, 159, 119, 73, 436,
800 /* 830 */ 147, 436, 436, 436, 148, 510, 113, 120, 159, 119,
801 /* 840 */ 436, 73, 436, 147, 436, 436, 436, 148, 509, 113,
802 /* 850 */ 120, 159, 119, 436, 436, 436, 73, 436, 147, 148,
803 /* 860 */ 436, 436, 436, 508, 113, 120, 159, 119, 73, 436,
804 /* 870 */ 147, 86, 148, 436, 436, 149, 113, 120, 159, 119,
805 /* 880 */ 120, 159, 119, 436, 436, 436, 436, 148, 436, 436,
806 /* 890 */ 436, 436, 436, 436, 436, 436, 73, 436, 147, 148,
807 /* 900 */ 436, 426, 151, 150, 113, 120, 159, 119, 436, 436,
808 /* 910 */ 72, 436, 147, 436, 436, 436, 436, 112, 113, 120,
809 /* 920 */ 159, 119, 436, 73, 436, 147, 436, 148, 432, 431,
810 /* 930 */ 135, 113, 120, 159, 119, 73, 436, 147, 436, 88,
811 /* 940 */ 436, 148, 134, 113, 120, 159, 119, 436, 120, 159,
812 /* 950 */ 119, 436, 436, 436, 148, 81, 436, 436, 88, 436,
813 /* 960 */ 425, 436, 456, 436, 33, 436, 148, 120, 159, 119,
814 /* 970 */ 151, 436, 436, 436, 110, 110, 88, 436, 436, 427,
815 /* 980 */ 428, 429, 430, 436, 436, 120, 159, 119, 436, 151,
816 /* 990 */ 436, 436, 111, 111, 436, 436, 436, 436, 436, 88,
817 /* 1000 */ 436, 436, 99, 436, 436, 436, 436, 151, 120, 159,
818 /* 1010 */ 119, 120, 159, 119, 436, 465, 436, 100, 64, 63,
819 /* 1020 */ 62, 61, 436, 436, 436, 101, 120, 159, 119, 91,
820 /* 1030 */ 151, 347, 84, 151, 120, 159, 119, 436, 120, 159,
821 /* 1040 */ 119, 120, 159, 119, 103, 436, 436, 436, 151, 436,
822 /* 1050 */ 436, 436, 436, 120, 159, 119, 151, 436, 92, 436,
823 /* 1060 */ 151, 436, 93, 151, 436, 436, 436, 120, 159, 119,
824 /* 1070 */ 85, 120, 159, 119, 104, 151, 436, 436, 436, 120,
825 /* 1080 */ 159, 119, 436, 120, 159, 119, 94, 436, 436, 151,
826 /* 1090 */ 436, 436, 436, 151, 436, 120, 159, 119, 436, 105,
827 /* 1100 */ 436, 151, 95, 436, 436, 151, 436, 436, 120, 159,
828 /* 1110 */ 119, 120, 159, 119, 436, 96, 436, 151, 64, 63,
829 /* 1120 */ 62, 61, 436, 436, 120, 159, 119, 97, 436, 436,
830 /* 1130 */ 151, 387, 98, 151, 436, 436, 120, 159, 119, 537,
831 /* 1140 */ 436, 120, 159, 119, 536, 436, 151, 436, 120, 159,
832 /* 1150 */ 119, 436, 436, 120, 159, 119, 535, 436, 151, 436,
833 /* 1160 */ 436, 436, 534, 151, 436, 120, 159, 119, 115, 436,
834 /* 1170 */ 151, 120, 159, 119, 116, 151, 436, 120, 159, 119,
835 /* 1180 */ 436, 436, 436, 120, 159, 119, 436, 151, 64, 63,
836 /* 1190 */ 62, 61, 436, 151, 436, 436, 436, 436, 436, 151,
837 /* 1200 */ 436, 383, 436, 436, 436, 151,
838 };
839 static const YYCODETYPE yy_lookahead[] = {
840 /* 0 */ 0, 0, 129, 97, 98, 99, 101, 101, 4, 5,
841 /* 10 */ 10, 10, 106, 107, 108, 109, 110, 101, 18, 19,
842 /* 20 */ 20, 100, 22, 101, 103, 104, 26, 4, 5, 6,
843 /* 30 */ 7, 31, 32, 33, 34, 35, 130, 37, 38, 39,
844 /* 40 */ 40, 102, 42, 43, 128, 23, 23, 47, 48, 49,
845 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
846 /* 60 */ 60, 0, 4, 5, 6, 7, 95, 96, 97, 98,
847 /* 70 */ 10, 10, 3, 102, 121, 17, 108, 109, 110, 18,
848 /* 80 */ 19, 20, 123, 22, 113, 17, 26, 26, 117, 118,
849 /* 90 */ 2, 23, 31, 32, 33, 34, 35, 111, 37, 38,
850 /* 100 */ 39, 40, 111, 42, 43, 108, 109, 110, 47, 48,
851 /* 110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
852 /* 120 */ 59, 60, 1, 2, 36, 4, 5, 124, 4, 5,
853 /* 130 */ 6, 7, 46, 12, 24, 25, 15, 46, 1, 2,
854 /* 140 */ 16, 4, 5, 22, 100, 24, 25, 103, 104, 12,
855 /* 150 */ 29, 30, 15, 84, 61, 62, 63, 64, 65, 66,
856 /* 160 */ 67, 68, 69, 70, 12, 17, 29, 30, 1, 125,
857 /* 170 */ 126, 127, 4, 5, 6, 7, 8, 92, 93, 12,
858 /* 180 */ 94, 14, 61, 6, 7, 18, 19, 20, 21, 22,
859 /* 190 */ 16, 24, 25, 15, 27, 28, 29, 30, 61, 78,
860 /* 200 */ 41, 80, 81, 82, 83, 39, 2, 86, 87, 88,
861 /* 210 */ 89, 90, 108, 109, 110, 78, 45, 80, 81, 82,
862 /* 220 */ 83, 24, 25, 86, 87, 88, 89, 90, 1, 2,
863 /* 230 */ 78, 4, 5, 4, 5, 6, 7, 38, 86, 12,
864 /* 240 */ 36, 101, 15, 38, 99, 2, 17, 107, 108, 109,
865 /* 250 */ 110, 39, 23, 108, 109, 110, 29, 30, 13, 2,
866 /* 260 */ 3, 4, 5, 6, 7, 1, 2, 17, 4, 5,
867 /* 270 */ 130, 23, 29, 30, 17, 130, 12, 71, 76, 15,
868 /* 280 */ 23, 99, 27, 28, 29, 30, 29, 30, 61, 46,
869 /* 290 */ 108, 109, 110, 36, 112, 4, 5, 6, 7, 17,
870 /* 300 */ 36, 119, 120, 75, 61, 78, 76, 80, 81, 82,
871 /* 310 */ 83, 77, 130, 86, 87, 88, 89, 90, 108, 109,
872 /* 320 */ 110, 64, 65, 80, 81, 82, 83, 91, 3, 72,
873 /* 330 */ 3, 74, 75, 76, 2, 3, 4, 5, 6, 7,
874 /* 340 */ 3, 36, 78, 4, 5, 6, 7, 3, 24, 25,
875 /* 350 */ 86, 87, 88, 89, 90, 23, 18, 19, 20, 3,
876 /* 360 */ 99, 29, 30, 1, 24, 25, 4, 5, 36, 108,
877 /* 370 */ 109, 110, 33, 112, 12, 3, 73, 15, 23, 15,
878 /* 380 */ 18, 19, 20, 15, 22, 47, 48, 49, 50, 51,
879 /* 390 */ 52, 130, 4, 5, 6, 7, 64, 65, 1, 46,
880 /* 400 */ 15, 4, 5, 79, 72, 17, 74, 75, 76, 12,
881 /* 410 */ 86, 23, 15, 26, 1, 2, 26, 4, 5, 1,
882 /* 420 */ 2, 26, 4, 5, 12, 12, 86, 85, 15, 3,
883 /* 430 */ 12, 11, 1, 15, 131, 4, 5, 131, 85, 131,
884 /* 440 */ 78, 44, 45, 12, 91, 131, 15, 94, 86, 87,
885 /* 450 */ 88, 89, 90, 2, 4, 5, 6, 7, 4, 5,
886 /* 460 */ 6, 7, 99, 12, 101, 1, 131, 17, 4, 5,
887 /* 470 */ 107, 108, 109, 110, 131, 78, 12, 23, 131, 15,
888 /* 480 */ 29, 30, 131, 86, 87, 88, 89, 90, 131, 131,
889 /* 490 */ 131, 78, 131, 130, 131, 131, 78, 131, 131, 86,
890 /* 500 */ 87, 88, 89, 90, 86, 87, 88, 89, 90, 78,
891 /* 510 */ 131, 1, 61, 131, 4, 5, 131, 86, 87, 88,
892 /* 520 */ 89, 90, 12, 131, 1, 15, 131, 4, 5, 78,
893 /* 530 */ 131, 80, 81, 82, 83, 12, 131, 86, 15, 96,
894 /* 540 */ 97, 98, 78, 131, 131, 102, 131, 131, 99, 131,
895 /* 550 */ 86, 87, 88, 89, 90, 131, 113, 108, 109, 110,
896 /* 560 */ 131, 118, 131, 114, 115, 116, 108, 109, 110, 95,
897 /* 570 */ 96, 97, 98, 131, 131, 99, 102, 101, 131, 130,
898 /* 580 */ 131, 131, 106, 107, 108, 109, 110, 113, 78, 131,
899 /* 590 */ 131, 131, 118, 131, 131, 131, 86, 87, 88, 89,
900 /* 600 */ 90, 78, 4, 5, 6, 7, 130, 131, 99, 86,
901 /* 610 */ 87, 88, 89, 90, 99, 131, 101, 108, 109, 110,
902 /* 620 */ 131, 106, 107, 108, 109, 110, 131, 99, 131, 101,
903 /* 630 */ 131, 33, 131, 131, 106, 107, 108, 109, 110, 130,
904 /* 640 */ 131, 131, 99, 131, 101, 130, 131, 131, 131, 106,
905 /* 650 */ 107, 108, 109, 110, 99, 131, 101, 99, 130, 131,
906 /* 660 */ 131, 106, 107, 108, 109, 110, 108, 109, 110, 131,
907 /* 670 */ 112, 131, 131, 130, 131, 131, 131, 131, 120, 131,
908 /* 680 */ 131, 131, 99, 131, 101, 130, 131, 131, 130, 106,
909 /* 690 */ 107, 108, 109, 110, 131, 131, 99, 131, 101, 131,
910 /* 700 */ 131, 131, 131, 106, 107, 108, 109, 110, 131, 99,
911 /* 710 */ 131, 101, 131, 130, 131, 131, 106, 107, 108, 109,
912 /* 720 */ 110, 99, 131, 101, 131, 131, 131, 130, 106, 107,
913 /* 730 */ 108, 109, 110, 131, 99, 131, 101, 131, 131, 131,
914 /* 740 */ 130, 106, 107, 108, 109, 110, 131, 131, 131, 99,
915 /* 750 */ 131, 101, 130, 131, 131, 131, 106, 107, 108, 109,
916 /* 760 */ 110, 99, 131, 101, 99, 130, 131, 131, 106, 107,
917 /* 770 */ 108, 109, 110, 108, 109, 110, 131, 112, 131, 131,
918 /* 780 */ 130, 131, 4, 5, 6, 7, 131, 131, 131, 99,
919 /* 790 */ 131, 101, 130, 131, 131, 130, 106, 107, 108, 109,
920 /* 800 */ 110, 23, 131, 99, 131, 101, 4, 5, 6, 7,
921 /* 810 */ 106, 107, 108, 109, 110, 131, 99, 131, 101, 17,
922 /* 820 */ 130, 131, 131, 106, 107, 108, 109, 110, 99, 131,
923 /* 830 */ 101, 131, 131, 131, 130, 106, 107, 108, 109, 110,
924 /* 840 */ 131, 99, 131, 101, 131, 131, 131, 130, 106, 107,
925 /* 850 */ 108, 109, 110, 131, 131, 131, 99, 131, 101, 130,
926 /* 860 */ 131, 131, 131, 106, 107, 108, 109, 110, 99, 131,
927 /* 870 */ 101, 99, 130, 131, 131, 106, 107, 108, 109, 110,
928 /* 880 */ 108, 109, 110, 131, 131, 131, 131, 130, 131, 131,
929 /* 890 */ 131, 131, 131, 131, 131, 131, 99, 131, 101, 130,
930 /* 900 */ 131, 2, 130, 106, 107, 108, 109, 110, 131, 131,
931 /* 910 */ 99, 131, 101, 131, 131, 131, 131, 106, 107, 108,
932 /* 920 */ 109, 110, 131, 99, 131, 101, 131, 130, 29, 30,
933 /* 930 */ 106, 107, 108, 109, 110, 99, 131, 101, 131, 99,
934 /* 940 */ 131, 130, 106, 107, 108, 109, 110, 131, 108, 109,
935 /* 950 */ 110, 131, 131, 131, 130, 115, 131, 131, 99, 131,
936 /* 960 */ 61, 131, 122, 131, 124, 131, 130, 108, 109, 110,
937 /* 970 */ 130, 131, 131, 131, 115, 116, 99, 131, 131, 80,
938 /* 980 */ 81, 82, 83, 131, 131, 108, 109, 110, 131, 130,
939 /* 990 */ 131, 131, 115, 116, 131, 131, 131, 131, 131, 99,
940 /* 1000 */ 131, 131, 99, 131, 131, 131, 131, 130, 108, 109,
941 /* 1010 */ 110, 108, 109, 110, 131, 115, 131, 99, 4, 5,
942 /* 1020 */ 6, 7, 131, 131, 131, 99, 108, 109, 110, 99,
943 /* 1030 */ 130, 17, 99, 130, 108, 109, 110, 131, 108, 109,
944 /* 1040 */ 110, 108, 109, 110, 99, 131, 131, 131, 130, 131,
945 /* 1050 */ 131, 131, 131, 108, 109, 110, 130, 131, 99, 131,
946 /* 1060 */ 130, 131, 99, 130, 131, 131, 131, 108, 109, 110,
947 /* 1070 */ 99, 108, 109, 110, 99, 130, 131, 131, 131, 108,
948 /* 1080 */ 109, 110, 131, 108, 109, 110, 99, 131, 131, 130,
949 /* 1090 */ 131, 131, 131, 130, 131, 108, 109, 110, 131, 99,
950 /* 1100 */ 131, 130, 99, 131, 131, 130, 131, 131, 108, 109,
951 /* 1110 */ 110, 108, 109, 110, 131, 99, 131, 130, 4, 5,
952 /* 1120 */ 6, 7, 131, 131, 108, 109, 110, 99, 131, 131,
953 /* 1130 */ 130, 17, 99, 130, 131, 131, 108, 109, 110, 99,
954 /* 1140 */ 131, 108, 109, 110, 99, 131, 130, 131, 108, 109,
955 /* 1150 */ 110, 131, 131, 108, 109, 110, 99, 131, 130, 131,
956 /* 1160 */ 131, 131, 99, 130, 131, 108, 109, 110, 99, 131,
957 /* 1170 */ 130, 108, 109, 110, 99, 130, 131, 108, 109, 110,
958 /* 1180 */ 131, 131, 131, 108, 109, 110, 131, 130, 4, 5,
959 /* 1190 */ 6, 7, 131, 130, 131, 131, 131, 131, 131, 130,
960 /* 1200 */ 131, 17, 131, 131, 131, 130, 131, 131, 131, 131,
961 /* 1210 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
962 /* 1220 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
963 /* 1230 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
964 /* 1240 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
965 /* 1250 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
966 /* 1260 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
967 /* 1270 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
968 /* 1280 */ 131, 131, 131, 131, 95, 95, 95, 95, 95, 95,
969 /* 1290 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
970 /* 1300 */ 95,
971 };
972 #define YY_SHIFT_COUNT (161)
973 #define YY_SHIFT_MIN (0)
974 #define YY_SHIFT_MAX (1184)
975 static const unsigned short int yy_shift_ofst[] = {
976 /* 0 */ 167, 121, 137, 137, 137, 137, 137, 137, 137, 137,
977 /* 10 */ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
978 /* 20 */ 137, 137, 137, 137, 137, 362, 397, 431, 227, 362,
979 /* 30 */ 167, 264, 264, 0, 61, 167, 451, 464, 431, 464,
980 /* 40 */ 413, 418, 431, 431, 431, 431, 431, 431, 431, 510,
981 /* 50 */ 431, 431, 431, 523, 431, 431, 431, 431, 431, 431,
982 /* 60 */ 431, 431, 431, 431, 431, 338, 152, 152, 152, 152,
983 /* 70 */ 152, 243, 257, 332, 899, 899, 255, 22, 1206, 1206,
984 /* 80 */ 1206, 1206, 93, 93, 229, 388, 58, 124, 168, 339,
985 /* 90 */ 598, 450, 23, 1014, 454, 1114, 778, 802, 1184, 291,
986 /* 100 */ 291, 291, 353, 291, 291, 291, 324, 291, 340, 60,
987 /* 110 */ 88, 204, 68, 4, 85, 177, 177, 110, 197, 69,
988 /* 120 */ 86, 1, 91, 148, 174, 178, 159, 199, 205, 166,
989 /* 130 */ 212, 171, 245, 250, 248, 206, 282, 202, 228, 234,
990 /* 140 */ 230, 325, 327, 337, 305, 344, 356, 372, 236, 303,
991 /* 150 */ 355, 236, 364, 368, 385, 387, 390, 395, 412, 342,
992 /* 160 */ 426, 420,
993 };
994 #define YY_REDUCE_COUNT (81)
995 #define YY_REDUCE_MIN (-127)
996 #define YY_REDUCE_MAX (1075)
997 static const short yy_reduce_ofst[] = {
998 /* 0 */ -29, -94, 476, 515, 528, 543, 555, 583, 597, 610,
999 /* 10 */ 622, 635, 650, 662, 690, 704, 717, 729, 742, 757,
1000 /* 20 */ 769, 797, 811, 824, 836, 182, 449, 840, 363, 558,
1001 /* 30 */ 474, 859, 877, 44, 44, 443, 140, 261, 900, 665,
1002 /* 40 */ 145, 509, 772, 903, 918, 926, 930, 933, 945, 959,
1003 /* 50 */ 963, 971, 975, 987, 1000, 1003, 1016, 1028, 1033, 1040,
1004 /* 60 */ 1045, 1057, 1063, 1069, 1075, -79, -32, -3, 104, 210,
1005 /* 70 */ 458, -84, -127, -127, -95, -78, -61, -47, -41, -14,
1006 /* 80 */ -9, 3,
1007 };
1008 static const YYACTIONTYPE yy_default[] = {
1009 /* 0 */ 440, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1010 /* 10 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1011 /* 20 */ 434, 434, 434, 434, 434, 434, 463, 563, 434, 434,
1012 /* 30 */ 440, 567, 475, 568, 568, 440, 434, 434, 434, 434,
1013 /* 40 */ 434, 434, 434, 434, 434, 467, 434, 434, 434, 434,
1014 /* 50 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1015 /* 60 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1016 /* 70 */ 434, 434, 434, 434, 434, 434, 434, 446, 460, 497,
1017 /* 80 */ 497, 563, 458, 483, 434, 434, 434, 434, 461, 434,
1018 /* 90 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 478,
1019 /* 100 */ 476, 466, 449, 501, 500, 499, 434, 553, 434, 434,
1020 /* 110 */ 434, 434, 434, 575, 434, 533, 532, 528, 434, 521,
1021 /* 120 */ 518, 434, 518, 434, 434, 434, 481, 434, 434, 434,
1022 /* 130 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1023 /* 140 */ 434, 434, 434, 434, 434, 434, 434, 434, 579, 434,
1024 /* 150 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 588,
1025 /* 160 */ 434, 434,
1026 };
1027 /********** End of lemon-generated parsing tables *****************************/
1028
1029 /* The next table maps tokens (terminal symbols) into fallback tokens.
1030 ** If a construct like the following:
@@ -1115,10 +1130,11 @@
1130 0, /* DOT_U => nothing */
1131 0, /* LAST => nothing */
1132 0, /* NUMBER => nothing */
1133 0, /* FUNC1 => nothing */
1134 0, /* FUNC2 => nothing */
1135 0, /* DIST => nothing */
1136 0, /* DOT_XY => nothing */
1137 0, /* X => nothing */
1138 0, /* Y => nothing */
1139 0, /* DOT_L => nothing */
1140 };
@@ -1297,50 +1313,51 @@
1313 /* 85 */ "DOT_U",
1314 /* 86 */ "LAST",
1315 /* 87 */ "NUMBER",
1316 /* 88 */ "FUNC1",
1317 /* 89 */ "FUNC2",
1318 /* 90 */ "DIST",
1319 /* 91 */ "DOT_XY",
1320 /* 92 */ "X",
1321 /* 93 */ "Y",
1322 /* 94 */ "DOT_L",
1323 /* 95 */ "element_list",
1324 /* 96 */ "element",
1325 /* 97 */ "unnamed_element",
1326 /* 98 */ "basetype",
1327 /* 99 */ "expr",
1328 /* 100 */ "numproperty",
1329 /* 101 */ "edge",
1330 /* 102 */ "direction",
1331 /* 103 */ "dashproperty",
1332 /* 104 */ "colorproperty",
1333 /* 105 */ "locproperty",
1334 /* 106 */ "position",
1335 /* 107 */ "place",
1336 /* 108 */ "object",
1337 /* 109 */ "objectname",
1338 /* 110 */ "nth",
1339 /* 111 */ "textposition",
1340 /* 112 */ "rvalue",
1341 /* 113 */ "lvalue",
1342 /* 114 */ "even",
1343 /* 115 */ "relexpr",
1344 /* 116 */ "optrelexpr",
1345 /* 117 */ "document",
1346 /* 118 */ "print",
1347 /* 119 */ "prlist",
1348 /* 120 */ "pritem",
1349 /* 121 */ "prsep",
1350 /* 122 */ "attribute_list",
1351 /* 123 */ "savelist",
1352 /* 124 */ "alist",
1353 /* 125 */ "attribute",
1354 /* 126 */ "go",
1355 /* 127 */ "boolproperty",
1356 /* 128 */ "withclause",
1357 /* 129 */ "between",
1358 /* 130 */ "place2",
1359 };
1360 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1361
1362 #ifndef NDEBUG
1363 /* For tracing reduce actions, the names of all rules are required.
@@ -1450,55 +1467,56 @@
1467 /* 101 */ "expr ::= LP expr RP",
1468 /* 102 */ "expr ::= NUMBER",
1469 /* 103 */ "expr ::= ID",
1470 /* 104 */ "expr ::= FUNC1 LP expr RP",
1471 /* 105 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1472 /* 106 */ "expr ::= DIST LP position COMMA position RP",
1473 /* 107 */ "expr ::= place2 DOT_XY X",
1474 /* 108 */ "expr ::= place2 DOT_XY Y",
1475 /* 109 */ "expr ::= object DOT_L numproperty",
1476 /* 110 */ "expr ::= object DOT_L dashproperty",
1477 /* 111 */ "expr ::= object DOT_L colorproperty",
1478 /* 112 */ "lvalue ::= ID",
1479 /* 113 */ "lvalue ::= FILL",
1480 /* 114 */ "lvalue ::= COLOR",
1481 /* 115 */ "lvalue ::= THICKNESS",
1482 /* 116 */ "rvalue ::= expr",
1483 /* 117 */ "print ::= PRINT",
1484 /* 118 */ "prlist ::= pritem",
1485 /* 119 */ "prlist ::= prlist prsep pritem",
1486 /* 120 */ "direction ::= UP",
1487 /* 121 */ "direction ::= DOWN",
1488 /* 122 */ "direction ::= LEFT",
1489 /* 123 */ "direction ::= RIGHT",
1490 /* 124 */ "optrelexpr ::= relexpr",
1491 /* 125 */ "attribute_list ::= alist",
1492 /* 126 */ "alist ::=",
1493 /* 127 */ "alist ::= alist attribute",
1494 /* 128 */ "attribute ::= boolproperty",
1495 /* 129 */ "attribute ::= WITH withclause",
1496 /* 130 */ "go ::= GO",
1497 /* 131 */ "go ::=",
1498 /* 132 */ "even ::= UNTIL EVEN WITH",
1499 /* 133 */ "even ::= EVEN WITH",
1500 /* 134 */ "dashproperty ::= DOTTED",
1501 /* 135 */ "dashproperty ::= DASHED",
1502 /* 136 */ "colorproperty ::= FILL",
1503 /* 137 */ "colorproperty ::= COLOR",
1504 /* 138 */ "position ::= place",
1505 /* 139 */ "between ::= WAY BETWEEN",
1506 /* 140 */ "between ::= BETWEEN",
1507 /* 141 */ "between ::= OF THE WAY BETWEEN",
1508 /* 142 */ "place ::= place2",
1509 /* 143 */ "edge ::= CENTER",
1510 /* 144 */ "edge ::= EDGEPT",
1511 /* 145 */ "edge ::= TOP",
1512 /* 146 */ "edge ::= BOTTOM",
1513 /* 147 */ "edge ::= START",
1514 /* 148 */ "edge ::= END",
1515 /* 149 */ "edge ::= RIGHT",
1516 /* 150 */ "edge ::= LEFT",
1517 /* 151 */ "object ::= objectname",
1518 };
1519 #endif /* NDEBUG */
1520
1521
1522 #if YYSTACKDEPTH<=0
@@ -1620,24 +1638,24 @@
1638 ** Note: during a reduce, the only symbols destroyed are those
1639 ** which appear on the RHS of the rule, but which are *not* used
1640 ** inside the C code.
1641 */
1642 /********* Begin destructor definitions ***************************************/
1643 case 95: /* element_list */
1644 {
1645 #line 467 "pikchr.y"
1646 pik_elist_free(p,(yypminor->yy56));
1647 #line 1672 "pikchr.c"
1648 }
1649 break;
1650 case 96: /* element */
1651 case 97: /* unnamed_element */
1652 case 98: /* basetype */
1653 {
1654 #line 469 "pikchr.y"
1655 pik_elem_free(p,(yypminor->yy226));
1656 #line 1681 "pikchr.c"
1657 }
1658 break;
1659 /********* End destructor definitions *****************************************/
1660 default: break; /* If no destructor action specified: do nothing */
1661 }
@@ -1851,14 +1869,14 @@
1869 #endif
1870 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1871 /* Here code is inserted which will execute if the parser
1872 ** stack every overflows */
1873 /******** Begin %stack_overflow code ******************************************/
1874 #line 501 "pikchr.y"
1875
1876 pik_error(p, 0, "parser stack overflow");
1877 #line 1902 "pikchr.c"
1878 /******** End %stack_overflow code ********************************************/
1879 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1880 pik_parserCTX_STORE
1881 }
1882
@@ -1926,161 +1944,162 @@
1944 }
1945
1946 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1947 ** of that rule */
1948 static const YYCODETYPE yyRuleInfoLhs[] = {
1949 117, /* (0) document ::= element_list */
1950 95, /* (1) element_list ::= element */
1951 95, /* (2) element_list ::= element_list EOL element */
1952 96, /* (3) element ::= */
1953 96, /* (4) element ::= direction */
1954 96, /* (5) element ::= lvalue ASSIGN rvalue */
1955 96, /* (6) element ::= PLACENAME COLON unnamed_element */
1956 96, /* (7) element ::= PLACENAME COLON position */
1957 96, /* (8) element ::= unnamed_element */
1958 96, /* (9) element ::= print prlist */
1959 96, /* (10) element ::= ASSERT LP expr EQ expr RP */
1960 96, /* (11) element ::= ASSERT LP place EQ place RP */
1961 112, /* (12) rvalue ::= PLACENAME */
1962 120, /* (13) pritem ::= FILL */
1963 120, /* (14) pritem ::= COLOR */
1964 120, /* (15) pritem ::= THICKNESS */
1965 120, /* (16) pritem ::= rvalue */
1966 120, /* (17) pritem ::= STRING */
1967 121, /* (18) prsep ::= COMMA */
1968 97, /* (19) unnamed_element ::= basetype attribute_list */
1969 98, /* (20) basetype ::= CLASSNAME */
1970 98, /* (21) basetype ::= STRING textposition */
1971 98, /* (22) basetype ::= LB savelist element_list RB */
1972 123, /* (23) savelist ::= */
1973 115, /* (24) relexpr ::= expr */
1974 115, /* (25) relexpr ::= expr PERCENT */
1975 116, /* (26) optrelexpr ::= */
1976 122, /* (27) attribute_list ::= relexpr alist */
1977 125, /* (28) attribute ::= numproperty relexpr */
1978 125, /* (29) attribute ::= dashproperty expr */
1979 125, /* (30) attribute ::= dashproperty */
1980 125, /* (31) attribute ::= colorproperty rvalue */
1981 125, /* (32) attribute ::= go direction optrelexpr */
1982 125, /* (33) attribute ::= go direction even position */
1983 125, /* (34) attribute ::= CLOSE */
1984 125, /* (35) attribute ::= CHOP */
1985 125, /* (36) attribute ::= FROM position */
1986 125, /* (37) attribute ::= TO position */
1987 125, /* (38) attribute ::= THEN */
1988 125, /* (39) attribute ::= THEN optrelexpr HEADING expr */
1989 125, /* (40) attribute ::= THEN optrelexpr EDGEPT */
1990 125, /* (41) attribute ::= GO optrelexpr HEADING expr */
1991 125, /* (42) attribute ::= GO optrelexpr EDGEPT */
1992 125, /* (43) attribute ::= AT position */
1993 125, /* (44) attribute ::= SAME */
1994 125, /* (45) attribute ::= SAME AS object */
1995 125, /* (46) attribute ::= STRING textposition */
1996 125, /* (47) attribute ::= FIT */
1997 125, /* (48) attribute ::= BEHIND object */
1998 128, /* (49) withclause ::= DOT_E edge AT position */
1999 128, /* (50) withclause ::= edge AT position */
2000 100, /* (51) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2001 127, /* (52) boolproperty ::= CW */
2002 127, /* (53) boolproperty ::= CCW */
2003 127, /* (54) boolproperty ::= LARROW */
2004 127, /* (55) boolproperty ::= RARROW */
2005 127, /* (56) boolproperty ::= LRARROW */
2006 127, /* (57) boolproperty ::= INVIS */
2007 127, /* (58) boolproperty ::= THICK */
2008 127, /* (59) boolproperty ::= THIN */
2009 111, /* (60) textposition ::= */
2010 111, /* (61) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2011 106, /* (62) position ::= expr COMMA expr */
2012 106, /* (63) position ::= place PLUS expr COMMA expr */
2013 106, /* (64) position ::= place MINUS expr COMMA expr */
2014 106, /* (65) position ::= place PLUS LP expr COMMA expr RP */
2015 106, /* (66) position ::= place MINUS LP expr COMMA expr RP */
2016 106, /* (67) position ::= LP position COMMA position RP */
2017 106, /* (68) position ::= LP position RP */
2018 106, /* (69) position ::= expr between position AND position */
2019 106, /* (70) position ::= expr LT position COMMA position GT */
2020 106, /* (71) position ::= expr ABOVE position */
2021 106, /* (72) position ::= expr BELOW position */
2022 106, /* (73) position ::= expr LEFT OF position */
2023 106, /* (74) position ::= expr RIGHT OF position */
2024 106, /* (75) position ::= expr ON HEADING EDGEPT OF position */
2025 106, /* (76) position ::= expr HEADING EDGEPT OF position */
2026 106, /* (77) position ::= expr EDGEPT OF position */
2027 106, /* (78) position ::= expr ON HEADING expr FROM position */
2028 106, /* (79) position ::= expr HEADING expr FROM position */
2029 107, /* (80) place ::= edge OF object */
2030 130, /* (81) place2 ::= object */
2031 130, /* (82) place2 ::= object DOT_E edge */
2032 130, /* (83) place2 ::= NTH VERTEX OF object */
2033 108, /* (84) object ::= nth */
2034 108, /* (85) object ::= nth OF|IN object */
2035 109, /* (86) objectname ::= PLACENAME */
2036 109, /* (87) objectname ::= objectname DOT_U PLACENAME */
2037 110, /* (88) nth ::= NTH CLASSNAME */
2038 110, /* (89) nth ::= NTH LAST CLASSNAME */
2039 110, /* (90) nth ::= LAST CLASSNAME */
2040 110, /* (91) nth ::= LAST */
2041 110, /* (92) nth ::= NTH LB RB */
2042 110, /* (93) nth ::= NTH LAST LB RB */
2043 110, /* (94) nth ::= LAST LB RB */
2044 99, /* (95) expr ::= expr PLUS expr */
2045 99, /* (96) expr ::= expr MINUS expr */
2046 99, /* (97) expr ::= expr STAR expr */
2047 99, /* (98) expr ::= expr SLASH expr */
2048 99, /* (99) expr ::= MINUS expr */
2049 99, /* (100) expr ::= PLUS expr */
2050 99, /* (101) expr ::= LP expr RP */
2051 99, /* (102) expr ::= NUMBER */
2052 99, /* (103) expr ::= ID */
2053 99, /* (104) expr ::= FUNC1 LP expr RP */
2054 99, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2055 99, /* (106) expr ::= DIST LP position COMMA position RP */
2056 99, /* (107) expr ::= place2 DOT_XY X */
2057 99, /* (108) expr ::= place2 DOT_XY Y */
2058 99, /* (109) expr ::= object DOT_L numproperty */
2059 99, /* (110) expr ::= object DOT_L dashproperty */
2060 99, /* (111) expr ::= object DOT_L colorproperty */
2061 113, /* (112) lvalue ::= ID */
2062 113, /* (113) lvalue ::= FILL */
2063 113, /* (114) lvalue ::= COLOR */
2064 113, /* (115) lvalue ::= THICKNESS */
2065 112, /* (116) rvalue ::= expr */
2066 118, /* (117) print ::= PRINT */
2067 119, /* (118) prlist ::= pritem */
2068 119, /* (119) prlist ::= prlist prsep pritem */
2069 102, /* (120) direction ::= UP */
2070 102, /* (121) direction ::= DOWN */
2071 102, /* (122) direction ::= LEFT */
2072 102, /* (123) direction ::= RIGHT */
2073 116, /* (124) optrelexpr ::= relexpr */
2074 122, /* (125) attribute_list ::= alist */
2075 124, /* (126) alist ::= */
2076 124, /* (127) alist ::= alist attribute */
2077 125, /* (128) attribute ::= boolproperty */
2078 125, /* (129) attribute ::= WITH withclause */
2079 126, /* (130) go ::= GO */
2080 126, /* (131) go ::= */
2081 114, /* (132) even ::= UNTIL EVEN WITH */
2082 114, /* (133) even ::= EVEN WITH */
2083 103, /* (134) dashproperty ::= DOTTED */
2084 103, /* (135) dashproperty ::= DASHED */
2085 104, /* (136) colorproperty ::= FILL */
2086 104, /* (137) colorproperty ::= COLOR */
2087 106, /* (138) position ::= place */
2088 129, /* (139) between ::= WAY BETWEEN */
2089 129, /* (140) between ::= BETWEEN */
2090 129, /* (141) between ::= OF THE WAY BETWEEN */
2091 107, /* (142) place ::= place2 */
2092 101, /* (143) edge ::= CENTER */
2093 101, /* (144) edge ::= EDGEPT */
2094 101, /* (145) edge ::= TOP */
2095 101, /* (146) edge ::= BOTTOM */
2096 101, /* (147) edge ::= START */
2097 101, /* (148) edge ::= END */
2098 101, /* (149) edge ::= RIGHT */
2099 101, /* (150) edge ::= LEFT */
2100 108, /* (151) object ::= objectname */
2101 };
2102
2103 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2104 ** of symbols on the right-hand side of that rule. */
2105 static const signed char yyRuleInfoNRhs[] = {
@@ -2188,55 +2207,56 @@
2207 -3, /* (101) expr ::= LP expr RP */
2208 -1, /* (102) expr ::= NUMBER */
2209 -1, /* (103) expr ::= ID */
2210 -4, /* (104) expr ::= FUNC1 LP expr RP */
2211 -6, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */
2212 -6, /* (106) expr ::= DIST LP position COMMA position RP */
2213 -3, /* (107) expr ::= place2 DOT_XY X */
2214 -3, /* (108) expr ::= place2 DOT_XY Y */
2215 -3, /* (109) expr ::= object DOT_L numproperty */
2216 -3, /* (110) expr ::= object DOT_L dashproperty */
2217 -3, /* (111) expr ::= object DOT_L colorproperty */
2218 -1, /* (112) lvalue ::= ID */
2219 -1, /* (113) lvalue ::= FILL */
2220 -1, /* (114) lvalue ::= COLOR */
2221 -1, /* (115) lvalue ::= THICKNESS */
2222 -1, /* (116) rvalue ::= expr */
2223 -1, /* (117) print ::= PRINT */
2224 -1, /* (118) prlist ::= pritem */
2225 -3, /* (119) prlist ::= prlist prsep pritem */
2226 -1, /* (120) direction ::= UP */
2227 -1, /* (121) direction ::= DOWN */
2228 -1, /* (122) direction ::= LEFT */
2229 -1, /* (123) direction ::= RIGHT */
2230 -1, /* (124) optrelexpr ::= relexpr */
2231 -1, /* (125) attribute_list ::= alist */
2232 0, /* (126) alist ::= */
2233 -2, /* (127) alist ::= alist attribute */
2234 -1, /* (128) attribute ::= boolproperty */
2235 -2, /* (129) attribute ::= WITH withclause */
2236 -1, /* (130) go ::= GO */
2237 0, /* (131) go ::= */
2238 -3, /* (132) even ::= UNTIL EVEN WITH */
2239 -2, /* (133) even ::= EVEN WITH */
2240 -1, /* (134) dashproperty ::= DOTTED */
2241 -1, /* (135) dashproperty ::= DASHED */
2242 -1, /* (136) colorproperty ::= FILL */
2243 -1, /* (137) colorproperty ::= COLOR */
2244 -1, /* (138) position ::= place */
2245 -2, /* (139) between ::= WAY BETWEEN */
2246 -1, /* (140) between ::= BETWEEN */
2247 -4, /* (141) between ::= OF THE WAY BETWEEN */
2248 -1, /* (142) place ::= place2 */
2249 -1, /* (143) edge ::= CENTER */
2250 -1, /* (144) edge ::= EDGEPT */
2251 -1, /* (145) edge ::= TOP */
2252 -1, /* (146) edge ::= BOTTOM */
2253 -1, /* (147) edge ::= START */
2254 -1, /* (148) edge ::= END */
2255 -1, /* (149) edge ::= RIGHT */
2256 -1, /* (150) edge ::= LEFT */
2257 -1, /* (151) object ::= objectname */
2258 };
2259
2260 static void yy_accept(yyParser*); /* Forward Declaration */
2261
2262 /*
@@ -2323,636 +2343,641 @@
2343 ** break;
2344 */
2345 /********** Begin reduce actions **********************************************/
2346 YYMINORTYPE yylhsminor;
2347 case 0: /* document ::= element_list */
2348 #line 505 "pikchr.y"
2349 {pik_render(p,yymsp[0].minor.yy56);}
2350 #line 2375 "pikchr.c"
2351 break;
2352 case 1: /* element_list ::= element */
2353 #line 508 "pikchr.y"
2354 { yylhsminor.yy56 = pik_elist_append(p,0,yymsp[0].minor.yy226); }
2355 #line 2380 "pikchr.c"
2356 yymsp[0].minor.yy56 = yylhsminor.yy56;
2357 break;
2358 case 2: /* element_list ::= element_list EOL element */
2359 #line 510 "pikchr.y"
2360 { yylhsminor.yy56 = pik_elist_append(p,yymsp[-2].minor.yy56,yymsp[0].minor.yy226); }
2361 #line 2386 "pikchr.c"
2362 yymsp[-2].minor.yy56 = yylhsminor.yy56;
2363 break;
2364 case 3: /* element ::= */
2365 #line 513 "pikchr.y"
2366 { yymsp[1].minor.yy226 = 0; }
2367 #line 2392 "pikchr.c"
2368 break;
2369 case 4: /* element ::= direction */
2370 #line 514 "pikchr.y"
2371 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy226=0; }
2372 #line 2397 "pikchr.c"
2373 yymsp[0].minor.yy226 = yylhsminor.yy226;
2374 break;
2375 case 5: /* element ::= lvalue ASSIGN rvalue */
2376 #line 515 "pikchr.y"
2377 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy257,&yymsp[-1].minor.yy0); yylhsminor.yy226=0;}
2378 #line 2403 "pikchr.c"
2379 yymsp[-2].minor.yy226 = yylhsminor.yy226;
2380 break;
2381 case 6: /* element ::= PLACENAME COLON unnamed_element */
2382 #line 517 "pikchr.y"
2383 { yylhsminor.yy226 = yymsp[0].minor.yy226; pik_elem_setname(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0); }
2384 #line 2409 "pikchr.c"
2385 yymsp[-2].minor.yy226 = yylhsminor.yy226;
2386 break;
2387 case 7: /* element ::= PLACENAME COLON position */
2388 #line 519 "pikchr.y"
2389 { yylhsminor.yy226 = pik_elem_new(p,0,0,0);
2390 if(yylhsminor.yy226){ yylhsminor.yy226->ptAt = yymsp[0].minor.yy175; pik_elem_setname(p,yylhsminor.yy226,&yymsp[-2].minor.yy0); }}
2391 #line 2416 "pikchr.c"
2392 yymsp[-2].minor.yy226 = yylhsminor.yy226;
2393 break;
2394 case 8: /* element ::= unnamed_element */
2395 #line 521 "pikchr.y"
2396 {yylhsminor.yy226 = yymsp[0].minor.yy226;}
2397 #line 2422 "pikchr.c"
2398 yymsp[0].minor.yy226 = yylhsminor.yy226;
2399 break;
2400 case 9: /* element ::= print prlist */
2401 #line 522 "pikchr.y"
2402 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy226=0;}
2403 #line 2428 "pikchr.c"
2404 break;
2405 case 10: /* element ::= ASSERT LP expr EQ expr RP */
2406 #line 527 "pikchr.y"
2407 {yymsp[-5].minor.yy226=pik_assert(p,yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy257);}
2408 #line 2433 "pikchr.c"
2409 break;
2410 case 11: /* element ::= ASSERT LP place EQ place RP */
2411 #line 529 "pikchr.y"
2412 {yymsp[-5].minor.yy226=pik_place_assert(p,&yymsp[-3].minor.yy175,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy175);}
2413 #line 2438 "pikchr.c"
2414 break;
2415 case 12: /* rvalue ::= PLACENAME */
2416 #line 540 "pikchr.y"
2417 {yylhsminor.yy257 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2418 #line 2443 "pikchr.c"
2419 yymsp[0].minor.yy257 = yylhsminor.yy257;
2420 break;
2421 case 13: /* pritem ::= FILL */
2422 case 14: /* pritem ::= COLOR */ yytestcase(yyruleno==14);
2423 case 15: /* pritem ::= THICKNESS */ yytestcase(yyruleno==15);
2424 #line 545 "pikchr.y"
2425 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2426 #line 2451 "pikchr.c"
2427 break;
2428 case 16: /* pritem ::= rvalue */
2429 #line 548 "pikchr.y"
2430 {pik_append_num(p,"",yymsp[0].minor.yy257);}
2431 #line 2456 "pikchr.c"
2432 break;
2433 case 17: /* pritem ::= STRING */
2434 #line 549 "pikchr.y"
2435 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2436 #line 2461 "pikchr.c"
2437 break;
2438 case 18: /* prsep ::= COMMA */
2439 #line 550 "pikchr.y"
2440 {pik_append(p, " ", 1);}
2441 #line 2466 "pikchr.c"
2442 break;
2443 case 19: /* unnamed_element ::= basetype attribute_list */
2444 #line 553 "pikchr.y"
2445 {yylhsminor.yy226 = yymsp[-1].minor.yy226; pik_after_adding_attributes(p,yylhsminor.yy226);}
2446 #line 2471 "pikchr.c"
2447 yymsp[-1].minor.yy226 = yylhsminor.yy226;
2448 break;
2449 case 20: /* basetype ::= CLASSNAME */
2450 #line 555 "pikchr.y"
2451 {yylhsminor.yy226 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2452 #line 2477 "pikchr.c"
2453 yymsp[0].minor.yy226 = yylhsminor.yy226;
2454 break;
2455 case 21: /* basetype ::= STRING textposition */
2456 #line 557 "pikchr.y"
2457 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy116; yylhsminor.yy226 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2458 #line 2483 "pikchr.c"
2459 yymsp[-1].minor.yy226 = yylhsminor.yy226;
2460 break;
2461 case 22: /* basetype ::= LB savelist element_list RB */
2462 #line 559 "pikchr.y"
2463 { p->list = yymsp[-2].minor.yy56; yymsp[-3].minor.yy226 = pik_elem_new(p,0,0,yymsp[-1].minor.yy56); if(yymsp[-3].minor.yy226) yymsp[-3].minor.yy226->errTok = yymsp[0].minor.yy0; }
2464 #line 2489 "pikchr.c"
2465 break;
2466 case 23: /* savelist ::= */
2467 #line 564 "pikchr.y"
2468 {yymsp[1].minor.yy56 = p->list; p->list = 0;}
2469 #line 2494 "pikchr.c"
2470 break;
2471 case 24: /* relexpr ::= expr */
2472 #line 571 "pikchr.y"
2473 {yylhsminor.yy164.rAbs = yymsp[0].minor.yy257; yylhsminor.yy164.rRel = 0;}
2474 #line 2499 "pikchr.c"
2475 yymsp[0].minor.yy164 = yylhsminor.yy164;
2476 break;
2477 case 25: /* relexpr ::= expr PERCENT */
2478 #line 572 "pikchr.y"
2479 {yylhsminor.yy164.rAbs = 0; yylhsminor.yy164.rRel = yymsp[-1].minor.yy257/100;}
2480 #line 2505 "pikchr.c"
2481 yymsp[-1].minor.yy164 = yylhsminor.yy164;
2482 break;
2483 case 26: /* optrelexpr ::= */
2484 #line 574 "pikchr.y"
2485 {yymsp[1].minor.yy164.rAbs = 0; yymsp[1].minor.yy164.rRel = 1.0;}
2486 #line 2511 "pikchr.c"
2487 break;
2488 case 27: /* attribute_list ::= relexpr alist */
2489 #line 576 "pikchr.y"
2490 {pik_add_direction(p,0,&yymsp[-1].minor.yy164);}
2491 #line 2516 "pikchr.c"
2492 break;
2493 case 28: /* attribute ::= numproperty relexpr */
2494 #line 580 "pikchr.y"
2495 { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164); }
2496 #line 2521 "pikchr.c"
2497 break;
2498 case 29: /* attribute ::= dashproperty expr */
2499 #line 581 "pikchr.y"
2500 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy257); }
2501 #line 2526 "pikchr.c"
2502 break;
2503 case 30: /* attribute ::= dashproperty */
2504 #line 582 "pikchr.y"
2505 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2506 #line 2531 "pikchr.c"
2507 break;
2508 case 31: /* attribute ::= colorproperty rvalue */
2509 #line 583 "pikchr.y"
2510 { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257); }
2511 #line 2536 "pikchr.c"
2512 break;
2513 case 32: /* attribute ::= go direction optrelexpr */
2514 #line 584 "pikchr.y"
2515 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164);}
2516 #line 2541 "pikchr.c"
2517 break;
2518 case 33: /* attribute ::= go direction even position */
2519 #line 585 "pikchr.y"
2520 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175);}
2521 #line 2546 "pikchr.c"
2522 break;
2523 case 34: /* attribute ::= CLOSE */
2524 #line 586 "pikchr.y"
2525 { pik_close_path(p,&yymsp[0].minor.yy0); }
2526 #line 2551 "pikchr.c"
2527 break;
2528 case 35: /* attribute ::= CHOP */
2529 #line 587 "pikchr.y"
2530 { p->cur->bChop = 1; }
2531 #line 2556 "pikchr.c"
2532 break;
2533 case 36: /* attribute ::= FROM position */
2534 #line 588 "pikchr.y"
2535 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); }
2536 #line 2561 "pikchr.c"
2537 break;
2538 case 37: /* attribute ::= TO position */
2539 #line 589 "pikchr.y"
2540 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); }
2541 #line 2566 "pikchr.c"
2542 break;
2543 case 38: /* attribute ::= THEN */
2544 #line 590 "pikchr.y"
2545 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2546 #line 2571 "pikchr.c"
2547 break;
2548 case 39: /* attribute ::= THEN optrelexpr HEADING expr */
2549 case 41: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==41);
2550 #line 592 "pikchr.y"
2551 {pik_move_hdg(p,&yymsp[-2].minor.yy164,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257,0,&yymsp[-3].minor.yy0);}
2552 #line 2577 "pikchr.c"
2553 break;
2554 case 40: /* attribute ::= THEN optrelexpr EDGEPT */
2555 case 42: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==42);
2556 #line 593 "pikchr.y"
2557 {pik_move_hdg(p,&yymsp[-1].minor.yy164,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2558 #line 2583 "pikchr.c"
2559 break;
2560 case 43: /* attribute ::= AT position */
2561 #line 598 "pikchr.y"
2562 { pik_set_at(p,0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); }
2563 #line 2588 "pikchr.c"
2564 break;
2565 case 44: /* attribute ::= SAME */
2566 #line 600 "pikchr.y"
2567 {pik_same(p,0,&yymsp[0].minor.yy0);}
2568 #line 2593 "pikchr.c"
2569 break;
2570 case 45: /* attribute ::= SAME AS object */
2571 #line 601 "pikchr.y"
2572 {pik_same(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);}
2573 #line 2598 "pikchr.c"
2574 break;
2575 case 46: /* attribute ::= STRING textposition */
2576 #line 602 "pikchr.y"
2577 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy116);}
2578 #line 2603 "pikchr.c"
2579 break;
2580 case 47: /* attribute ::= FIT */
2581 #line 603 "pikchr.y"
2582 {pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2583 #line 2608 "pikchr.c"
2584 break;
2585 case 48: /* attribute ::= BEHIND object */
2586 #line 604 "pikchr.y"
2587 {pik_behind(p,yymsp[0].minor.yy226);}
2588 #line 2613 "pikchr.c"
2589 break;
2590 case 49: /* withclause ::= DOT_E edge AT position */
2591 case 50: /* withclause ::= edge AT position */ yytestcase(yyruleno==50);
2592 #line 612 "pikchr.y"
2593 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); }
2594 #line 2619 "pikchr.c"
2595 break;
2596 case 51: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2597 #line 616 "pikchr.y"
2598 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2599 #line 2624 "pikchr.c"
2600 yymsp[0].minor.yy0 = yylhsminor.yy0;
2601 break;
2602 case 52: /* boolproperty ::= CW */
2603 #line 627 "pikchr.y"
2604 {p->cur->cw = 1;}
2605 #line 2630 "pikchr.c"
2606 break;
2607 case 53: /* boolproperty ::= CCW */
2608 #line 628 "pikchr.y"
2609 {p->cur->cw = 0;}
2610 #line 2635 "pikchr.c"
2611 break;
2612 case 54: /* boolproperty ::= LARROW */
2613 #line 629 "pikchr.y"
2614 {p->cur->larrow=1; p->cur->rarrow=0; }
2615 #line 2640 "pikchr.c"
2616 break;
2617 case 55: /* boolproperty ::= RARROW */
2618 #line 630 "pikchr.y"
2619 {p->cur->larrow=0; p->cur->rarrow=1; }
2620 #line 2645 "pikchr.c"
2621 break;
2622 case 56: /* boolproperty ::= LRARROW */
2623 #line 631 "pikchr.y"
2624 {p->cur->larrow=1; p->cur->rarrow=1; }
2625 #line 2650 "pikchr.c"
2626 break;
2627 case 57: /* boolproperty ::= INVIS */
2628 #line 632 "pikchr.y"
2629 {p->cur->sw = 0.0;}
2630 #line 2655 "pikchr.c"
2631 break;
2632 case 58: /* boolproperty ::= THICK */
2633 #line 633 "pikchr.y"
2634 {p->cur->sw *= 1.5;}
2635 #line 2660 "pikchr.c"
2636 break;
2637 case 59: /* boolproperty ::= THIN */
2638 #line 634 "pikchr.y"
2639 {p->cur->sw *= 0.67;}
2640 #line 2665 "pikchr.c"
2641 break;
2642 case 60: /* textposition ::= */
2643 #line 636 "pikchr.y"
2644 {yymsp[1].minor.yy116 = 0;}
2645 #line 2670 "pikchr.c"
2646 break;
2647 case 61: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2648 #line 639 "pikchr.y"
2649 {yylhsminor.yy116 = pik_text_position(yymsp[-1].minor.yy116,&yymsp[0].minor.yy0);}
2650 #line 2675 "pikchr.c"
2651 yymsp[-1].minor.yy116 = yylhsminor.yy116;
2652 break;
2653 case 62: /* position ::= expr COMMA expr */
2654 #line 642 "pikchr.y"
2655 {yylhsminor.yy175.x=yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[0].minor.yy257;}
2656 #line 2681 "pikchr.c"
2657 yymsp[-2].minor.yy175 = yylhsminor.yy175;
2658 break;
2659 case 63: /* position ::= place PLUS expr COMMA expr */
2660 #line 644 "pikchr.y"
2661 {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x+yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y+yymsp[0].minor.yy257;}
2662 #line 2687 "pikchr.c"
2663 yymsp[-4].minor.yy175 = yylhsminor.yy175;
2664 break;
2665 case 64: /* position ::= place MINUS expr COMMA expr */
2666 #line 645 "pikchr.y"
2667 {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x-yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y-yymsp[0].minor.yy257;}
2668 #line 2693 "pikchr.c"
2669 yymsp[-4].minor.yy175 = yylhsminor.yy175;
2670 break;
2671 case 65: /* position ::= place PLUS LP expr COMMA expr RP */
2672 #line 647 "pikchr.y"
2673 {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x+yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y+yymsp[-1].minor.yy257;}
2674 #line 2699 "pikchr.c"
2675 yymsp[-6].minor.yy175 = yylhsminor.yy175;
2676 break;
2677 case 66: /* position ::= place MINUS LP expr COMMA expr RP */
2678 #line 649 "pikchr.y"
2679 {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x-yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y-yymsp[-1].minor.yy257;}
2680 #line 2705 "pikchr.c"
2681 yymsp[-6].minor.yy175 = yylhsminor.yy175;
2682 break;
2683 case 67: /* position ::= LP position COMMA position RP */
2684 #line 650 "pikchr.y"
2685 {yymsp[-4].minor.yy175.x=yymsp[-3].minor.yy175.x; yymsp[-4].minor.yy175.y=yymsp[-1].minor.yy175.y;}
2686 #line 2711 "pikchr.c"
2687 break;
2688 case 68: /* position ::= LP position RP */
2689 #line 651 "pikchr.y"
2690 {yymsp[-2].minor.yy175=yymsp[-1].minor.yy175;}
2691 #line 2716 "pikchr.c"
2692 break;
2693 case 69: /* position ::= expr between position AND position */
2694 #line 653 "pikchr.y"
2695 {yylhsminor.yy175 = pik_position_between(yymsp[-4].minor.yy257,yymsp[-2].minor.yy175,yymsp[0].minor.yy175);}
2696 #line 2721 "pikchr.c"
2697 yymsp[-4].minor.yy175 = yylhsminor.yy175;
2698 break;
2699 case 70: /* position ::= expr LT position COMMA position GT */
2700 #line 655 "pikchr.y"
2701 {yylhsminor.yy175 = pik_position_between(yymsp[-5].minor.yy257,yymsp[-3].minor.yy175,yymsp[-1].minor.yy175);}
2702 #line 2727 "pikchr.c"
2703 yymsp[-5].minor.yy175 = yylhsminor.yy175;
2704 break;
2705 case 71: /* position ::= expr ABOVE position */
2706 #line 656 "pikchr.y"
2707 {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y += yymsp[-2].minor.yy257;}
2708 #line 2733 "pikchr.c"
2709 yymsp[-2].minor.yy175 = yylhsminor.yy175;
2710 break;
2711 case 72: /* position ::= expr BELOW position */
2712 #line 657 "pikchr.y"
2713 {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y -= yymsp[-2].minor.yy257;}
2714 #line 2739 "pikchr.c"
2715 yymsp[-2].minor.yy175 = yylhsminor.yy175;
2716 break;
2717 case 73: /* position ::= expr LEFT OF position */
2718 #line 658 "pikchr.y"
2719 {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x -= yymsp[-3].minor.yy257;}
2720 #line 2745 "pikchr.c"
2721 yymsp[-3].minor.yy175 = yylhsminor.yy175;
2722 break;
2723 case 74: /* position ::= expr RIGHT OF position */
2724 #line 659 "pikchr.y"
2725 {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x += yymsp[-3].minor.yy257;}
2726 #line 2751 "pikchr.c"
2727 yymsp[-3].minor.yy175 = yylhsminor.yy175;
2728 break;
2729 case 75: /* position ::= expr ON HEADING EDGEPT OF position */
2730 #line 661 "pikchr.y"
2731 {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-5].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);}
2732 #line 2757 "pikchr.c"
2733 yymsp[-5].minor.yy175 = yylhsminor.yy175;
2734 break;
2735 case 76: /* position ::= expr HEADING EDGEPT OF position */
2736 #line 663 "pikchr.y"
2737 {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-4].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);}
2738 #line 2763 "pikchr.c"
2739 yymsp[-4].minor.yy175 = yylhsminor.yy175;
2740 break;
2741 case 77: /* position ::= expr EDGEPT OF position */
2742 #line 665 "pikchr.y"
2743 {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);}
2744 #line 2769 "pikchr.c"
2745 yymsp[-3].minor.yy175 = yylhsminor.yy175;
2746 break;
2747 case 78: /* position ::= expr ON HEADING expr FROM position */
2748 #line 667 "pikchr.y"
2749 {yylhsminor.yy175 = pik_position_at_angle(yymsp[-5].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);}
2750 #line 2775 "pikchr.c"
2751 yymsp[-5].minor.yy175 = yylhsminor.yy175;
2752 break;
2753 case 79: /* position ::= expr HEADING expr FROM position */
2754 #line 669 "pikchr.y"
2755 {yylhsminor.yy175 = pik_position_at_angle(yymsp[-4].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);}
2756 #line 2781 "pikchr.c"
2757 yymsp[-4].minor.yy175 = yylhsminor.yy175;
2758 break;
2759 case 80: /* place ::= edge OF object */
2760 #line 681 "pikchr.y"
2761 {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);}
2762 #line 2787 "pikchr.c"
2763 yymsp[-2].minor.yy175 = yylhsminor.yy175;
2764 break;
2765 case 81: /* place2 ::= object */
2766 #line 682 "pikchr.y"
2767 {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,0);}
2768 #line 2793 "pikchr.c"
2769 yymsp[0].minor.yy175 = yylhsminor.yy175;
2770 break;
2771 case 82: /* place2 ::= object DOT_E edge */
2772 #line 683 "pikchr.y"
2773 {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);}
2774 #line 2799 "pikchr.c"
2775 yymsp[-2].minor.yy175 = yylhsminor.yy175;
2776 break;
2777 case 83: /* place2 ::= NTH VERTEX OF object */
2778 #line 684 "pikchr.y"
2779 {yylhsminor.yy175 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy226);}
2780 #line 2805 "pikchr.c"
2781 yymsp[-3].minor.yy175 = yylhsminor.yy175;
2782 break;
2783 case 84: /* object ::= nth */
2784 #line 696 "pikchr.y"
2785 {yylhsminor.yy226 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2786 #line 2811 "pikchr.c"
2787 yymsp[0].minor.yy226 = yylhsminor.yy226;
2788 break;
2789 case 85: /* object ::= nth OF|IN object */
2790 #line 697 "pikchr.y"
2791 {yylhsminor.yy226 = pik_find_nth(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);}
2792 #line 2817 "pikchr.c"
2793 yymsp[-2].minor.yy226 = yylhsminor.yy226;
2794 break;
2795 case 86: /* objectname ::= PLACENAME */
2796 #line 699 "pikchr.y"
2797 {yylhsminor.yy226 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2798 #line 2823 "pikchr.c"
2799 yymsp[0].minor.yy226 = yylhsminor.yy226;
2800 break;
2801 case 87: /* objectname ::= objectname DOT_U PLACENAME */
2802 #line 701 "pikchr.y"
2803 {yylhsminor.yy226 = pik_find_byname(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);}
2804 #line 2829 "pikchr.c"
2805 yymsp[-2].minor.yy226 = yylhsminor.yy226;
2806 break;
2807 case 88: /* nth ::= NTH CLASSNAME */
2808 #line 703 "pikchr.y"
2809 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2810 #line 2835 "pikchr.c"
2811 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2812 break;
2813 case 89: /* nth ::= NTH LAST CLASSNAME */
2814 #line 704 "pikchr.y"
2815 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2816 #line 2841 "pikchr.c"
2817 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2818 break;
2819 case 90: /* nth ::= LAST CLASSNAME */
2820 #line 705 "pikchr.y"
2821 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2822 #line 2847 "pikchr.c"
2823 break;
2824 case 91: /* nth ::= LAST */
2825 #line 706 "pikchr.y"
2826 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2827 #line 2852 "pikchr.c"
2828 yymsp[0].minor.yy0 = yylhsminor.yy0;
2829 break;
2830 case 92: /* nth ::= NTH LB RB */
2831 #line 707 "pikchr.y"
2832 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2833 #line 2858 "pikchr.c"
2834 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2835 break;
2836 case 93: /* nth ::= NTH LAST LB RB */
2837 #line 708 "pikchr.y"
2838 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2839 #line 2864 "pikchr.c"
2840 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2841 break;
2842 case 94: /* nth ::= LAST LB RB */
2843 #line 709 "pikchr.y"
2844 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2845 #line 2870 "pikchr.c"
2846 break;
2847 case 95: /* expr ::= expr PLUS expr */
2848 #line 711 "pikchr.y"
2849 {yylhsminor.yy257=yymsp[-2].minor.yy257+yymsp[0].minor.yy257;}
2850 #line 2875 "pikchr.c"
2851 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2852 break;
2853 case 96: /* expr ::= expr MINUS expr */
2854 #line 712 "pikchr.y"
2855 {yylhsminor.yy257=yymsp[-2].minor.yy257-yymsp[0].minor.yy257;}
2856 #line 2881 "pikchr.c"
2857 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2858 break;
2859 case 97: /* expr ::= expr STAR expr */
2860 #line 713 "pikchr.y"
2861 {yylhsminor.yy257=yymsp[-2].minor.yy257*yymsp[0].minor.yy257;}
2862 #line 2887 "pikchr.c"
2863 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2864 break;
2865 case 98: /* expr ::= expr SLASH expr */
2866 #line 714 "pikchr.y"
2867 {
2868 if( yymsp[0].minor.yy257==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy257 = 0.0; }
2869 else{ yylhsminor.yy257 = yymsp[-2].minor.yy257/yymsp[0].minor.yy257; }
2870 }
2871 #line 2896 "pikchr.c"
2872 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2873 break;
2874 case 99: /* expr ::= MINUS expr */
2875 #line 718 "pikchr.y"
2876 {yymsp[-1].minor.yy257=-yymsp[0].minor.yy257;}
2877 #line 2902 "pikchr.c"
2878 break;
2879 case 100: /* expr ::= PLUS expr */
2880 #line 719 "pikchr.y"
2881 {yymsp[-1].minor.yy257=yymsp[0].minor.yy257;}
2882 #line 2907 "pikchr.c"
2883 break;
2884 case 101: /* expr ::= LP expr RP */
2885 #line 720 "pikchr.y"
2886 {yymsp[-2].minor.yy257=yymsp[-1].minor.yy257;}
2887 #line 2912 "pikchr.c"
2888 break;
2889 case 102: /* expr ::= NUMBER */
2890 #line 721 "pikchr.y"
2891 {yylhsminor.yy257=pik_atof(&yymsp[0].minor.yy0);}
2892 #line 2917 "pikchr.c"
2893 yymsp[0].minor.yy257 = yylhsminor.yy257;
2894 break;
2895 case 103: /* expr ::= ID */
2896 #line 722 "pikchr.y"
2897 {yylhsminor.yy257=pik_get_var(p,&yymsp[0].minor.yy0);}
2898 #line 2923 "pikchr.c"
2899 yymsp[0].minor.yy257 = yylhsminor.yy257;
2900 break;
2901 case 104: /* expr ::= FUNC1 LP expr RP */
2902 #line 723 "pikchr.y"
2903 {yylhsminor.yy257 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy257,0.0);}
2904 #line 2929 "pikchr.c"
2905 yymsp[-3].minor.yy257 = yylhsminor.yy257;
2906 break;
2907 case 105: /* expr ::= FUNC2 LP expr COMMA expr RP */
2908 #line 724 "pikchr.y"
2909 {yylhsminor.yy257 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy257,yymsp[-1].minor.yy257);}
2910 #line 2935 "pikchr.c"
2911 yymsp[-5].minor.yy257 = yylhsminor.yy257;
2912 break;
2913 case 106: /* expr ::= DIST LP position COMMA position RP */
 
 
 
 
 
 
2914 #line 725 "pikchr.y"
2915 {yymsp[-5].minor.yy257 = pik_dist(&yymsp[-3].minor.yy175,&yymsp[-1].minor.yy175);}
2916 #line 2941 "pikchr.c"
 
2917 break;
2918 case 107: /* expr ::= place2 DOT_XY X */
 
 
2919 #line 726 "pikchr.y"
2920 {yylhsminor.yy257 = yymsp[-2].minor.yy175.x;}
2921 #line 2946 "pikchr.c"
2922 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2923 break;
2924 case 108: /* expr ::= place2 DOT_XY Y */
2925 #line 727 "pikchr.y"
2926 {yylhsminor.yy257 = yymsp[-2].minor.yy175.y;}
2927 #line 2952 "pikchr.c"
2928 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2929 break;
2930 case 109: /* expr ::= object DOT_L numproperty */
2931 case 110: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==110);
2932 case 111: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==111);
2933 #line 728 "pikchr.y"
2934 {yylhsminor.yy257=pik_property_of(yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);}
2935 #line 2960 "pikchr.c"
2936 yymsp[-2].minor.yy257 = yylhsminor.yy257;
2937 break;
2938 default:
2939 /* (112) lvalue ::= ID */ yytestcase(yyruleno==112);
2940 /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113);
2941 /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114);
2942 /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115);
2943 /* (116) rvalue ::= expr */ yytestcase(yyruleno==116);
2944 /* (117) print ::= PRINT */ yytestcase(yyruleno==117);
2945 /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118);
2946 /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119);
2947 /* (120) direction ::= UP */ yytestcase(yyruleno==120);
2948 /* (121) direction ::= DOWN */ yytestcase(yyruleno==121);
2949 /* (122) direction ::= LEFT */ yytestcase(yyruleno==122);
2950 /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123);
2951 /* (124) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=124);
2952 /* (125) attribute_list ::= alist */ yytestcase(yyruleno==125);
2953 /* (126) alist ::= */ yytestcase(yyruleno==126);
2954 /* (127) alist ::= alist attribute */ yytestcase(yyruleno==127);
2955 /* (128) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=128);
2956 /* (129) attribute ::= WITH withclause */ yytestcase(yyruleno==129);
2957 /* (130) go ::= GO */ yytestcase(yyruleno==130);
2958 /* (131) go ::= */ yytestcase(yyruleno==131);
2959 /* (132) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==132);
2960 /* (133) even ::= EVEN WITH */ yytestcase(yyruleno==133);
2961 /* (134) dashproperty ::= DOTTED */ yytestcase(yyruleno==134);
2962 /* (135) dashproperty ::= DASHED */ yytestcase(yyruleno==135);
2963 /* (136) colorproperty ::= FILL */ yytestcase(yyruleno==136);
2964 /* (137) colorproperty ::= COLOR */ yytestcase(yyruleno==137);
2965 /* (138) position ::= place */ yytestcase(yyruleno==138);
2966 /* (139) between ::= WAY BETWEEN */ yytestcase(yyruleno==139);
2967 /* (140) between ::= BETWEEN */ yytestcase(yyruleno==140);
2968 /* (141) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==141);
2969 /* (142) place ::= place2 */ yytestcase(yyruleno==142);
2970 /* (143) edge ::= CENTER */ yytestcase(yyruleno==143);
2971 /* (144) edge ::= EDGEPT */ yytestcase(yyruleno==144);
2972 /* (145) edge ::= TOP */ yytestcase(yyruleno==145);
2973 /* (146) edge ::= BOTTOM */ yytestcase(yyruleno==146);
2974 /* (147) edge ::= START */ yytestcase(yyruleno==147);
2975 /* (148) edge ::= END */ yytestcase(yyruleno==148);
2976 /* (149) edge ::= RIGHT */ yytestcase(yyruleno==149);
2977 /* (150) edge ::= LEFT */ yytestcase(yyruleno==150);
2978 /* (151) object ::= objectname */ yytestcase(yyruleno==151);
2979 break;
2980 /********** End reduce actions ************************************************/
2981 };
2982 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
2983 yygoto = yyRuleInfoLhs[yyruleno];
@@ -3008,19 +3033,19 @@
3033 ){
3034 pik_parserARG_FETCH
3035 pik_parserCTX_FETCH
3036 #define TOKEN yyminor
3037 /************ Begin %syntax_error code ****************************************/
3038 #line 493 "pikchr.y"
3039
3040 if( TOKEN.z && TOKEN.z[0] ){
3041 pik_error(p, &TOKEN, "syntax error");
3042 }else{
3043 pik_error(p, 0, "syntax error");
3044 }
3045 UNUSED_PARAMETER(yymajor);
3046 #line 3071 "pikchr.c"
3047 /************ End %syntax_error code ******************************************/
3048 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
3049 pik_parserCTX_STORE
3050 }
3051
@@ -3249,11 +3274,11 @@
3274 #else
3275 (void)iToken;
3276 return 0;
3277 #endif
3278 }
3279 #line 733 "pikchr.y"
3280
3281
3282
3283 /* Chart of the 140 official HTML color names with their
3284 ** corresponding RGB value.
@@ -4893,10 +4918,20 @@
4918 ans /= 6;
4919 }
4920 }
4921 return ans;
4922 }
4923
4924 /*
4925 ** Compute the distance between two points
4926 */
4927 static PNum pik_dist(PPoint *pA, PPoint *pB){
4928 PNum dx, dy;
4929 dx = pB->x - pA->x;
4930 dy = pB->y - pA->y;
4931 return hypot(dx,dy);
4932 }
4933
4934 /* Return true if a bounding box is empty.
4935 */
4936 static int pik_bbox_isempty(PBox *p){
4937 return p->sw.x>p->ne.x;
@@ -6075,10 +6110,11 @@
6110 pElem->rarrow = pOther->rarrow;
6111 pElem->bClose = pOther->bClose;
6112 pElem->bChop = pOther->bChop;
6113 pElem->inDir = pOther->inDir;
6114 pElem->outDir = pOther->outDir;
6115 pElem->iLayer = pOther->iLayer;
6116 }
6117
6118
6119 /* Return a "Place" associated with element pElem. If pEdge is NULL
6120 ** return the center of the object. Otherwise, return the corner
@@ -6596,10 +6632,11 @@
6632 { "color", 5, T_COLOR, 0, 0 },
6633 { "cos", 3, T_FUNC1, FN_COS, 0 },
6634 { "cw", 2, T_CW, 0, 0 },
6635 { "dashed", 6, T_DASHED, 0, 0 },
6636 { "diameter", 8, T_DIAMETER, 0, 0 },
6637 { "dist", 4, T_DIST, 0, 0 },
6638 { "dotted", 6, T_DOTTED, 0, 0 },
6639 { "down", 4, T_DOWN, DIR_DOWN, 0 },
6640 { "e", 1, T_EDGEPT, 0, CP_E },
6641 { "east", 4, T_EDGEPT, 0, CP_E },
6642 { "end", 3, T_END, 0, CP_END },
@@ -7228,6 +7265,6 @@
7265 }
7266 return 0;
7267 }
7268 #endif /* PIKCHR_SHELL */
7269
7270 #line 7295 "pikchr.c"
7271

Keyboard Shortcuts

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