Fossil SCM

Update pikchr.c to a version that avoids using the " " entity.

drh 2020-09-13 11:31 trunk
Commit 931f782ff3f02ea4e4276b8245f167da9bb65e73af8c48de0ee8cb9c8bdc282f
1 file changed +1161 -1124
+1161 -1124
--- src/pikchr.c
+++ src/pikchr.c
@@ -422,13 +422,14 @@
422422
static PPoint pik_position_at_hdg(Pik *p, PNum dist, PToken *pD, PPoint pt);
423423
static void pik_same(Pik *p, PElem*, PToken*);
424424
static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
425425
static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
426426
static void pik_compute_layout_settings(Pik*);
427
+static void pik_behind(Pik*,PElem*);
427428
428429
429
-#line 455 "pikchr.c"
430
+#line 456 "pikchr.c"
430431
/**************** End of %include directives **********************************/
431432
/* These constants specify the various numeric values for terminal symbols.
432433
***************** Begin token definitions *************************************/
433434
#ifndef T_ID
434435
#define T_ID 1
@@ -467,13 +468,13 @@
467468
#define T_AT 34
468469
#define T_WITH 35
469470
#define T_SAME 36
470471
#define T_AS 37
471472
#define T_FIT 38
472
-#define T_UNTIL 39
473
-#define T_EVEN 40
474
-#define T_AND 41
473
+#define T_BEHIND 39
474
+#define T_UNTIL 40
475
+#define T_EVEN 41
475476
#define T_DOT_E 42
476477
#define T_HEIGHT 43
477478
#define T_WIDTH 44
478479
#define T_RADIUS 45
479480
#define T_DIAMETER 46
@@ -497,28 +498,31 @@
497498
#define T_ALIGNED 64
498499
#define T_BIG 65
499500
#define T_SMALL 66
500501
#define T_LP 67
501502
#define T_RP 68
502
-#define T_WAY 69
503
-#define T_BETWEEN 70
504
-#define T_THE 71
505
-#define T_DOT_L 72
506
-#define T_START 73
507
-#define T_END 74
508
-#define T_NTH 75
509
-#define T_VERTEX 76
510
-#define T_IN 77
511
-#define T_DOT_U 78
512
-#define T_LAST 79
513
-#define T_NUMBER 80
514
-#define T_FUNC1 81
515
-#define T_FUNC2 82
516
-#define T_X 83
517
-#define T_Y 84
518
-#define T_TOP 85
519
-#define T_BOTTOM 86
503
+#define T_AND 69
504
+#define T_LT 70
505
+#define T_GT 71
506
+#define T_WAY 72
507
+#define T_BETWEEN 73
508
+#define T_THE 74
509
+#define T_DOT_L 75
510
+#define T_START 76
511
+#define T_END 77
512
+#define T_NTH 78
513
+#define T_VERTEX 79
514
+#define T_IN 80
515
+#define T_DOT_U 81
516
+#define T_LAST 82
517
+#define T_NUMBER 83
518
+#define T_FUNC1 84
519
+#define T_FUNC2 85
520
+#define T_X 86
521
+#define T_Y 87
522
+#define T_TOP 88
523
+#define T_BOTTOM 89
520524
#endif
521525
/**************** End token definitions ***************************************/
522526
523527
/* The next sections is a series of control #defines.
524528
** various aspects of the generated parser.
@@ -574,21 +578,21 @@
574578
#ifndef INTERFACE
575579
# define INTERFACE 1
576580
#endif
577581
/************* Begin control #defines *****************************************/
578582
#define YYCODETYPE unsigned char
579
-#define YYNOCODE 121
583
+#define YYNOCODE 123
580584
#define YYACTIONTYPE unsigned short int
581585
#define pik_parserTOKENTYPE PToken
582586
typedef union {
583587
int yyinit;
584588
pik_parserTOKENTYPE yy0;
585
- PElem* yy2;
586
- PEList* yy66;
587
- int yy86;
588
- PPoint yy187;
589
- PNum yy241;
589
+ int yy34;
590
+ PEList* yy80;
591
+ PNum yy147;
592
+ PElem* yy174;
593
+ PPoint yy211;
590594
} YYMINORTYPE;
591595
#ifndef YYSTACKDEPTH
592596
#define YYSTACKDEPTH 100
593597
#endif
594598
#define pik_parserARG_SDECL
@@ -600,22 +604,22 @@
600604
#define pik_parserCTX_PDECL ,Pik *p
601605
#define pik_parserCTX_PARAM ,p
602606
#define pik_parserCTX_FETCH Pik *p=yypParser->p;
603607
#define pik_parserCTX_STORE yypParser->p=p;
604608
#define YYFALLBACK 1
605
-#define YYNSTATE 166
609
+#define YYNSTATE 169
606610
#define YYNRULE 158
607
-#define YYNRULE_WITH_ACTION 120
608
-#define YYNTOKEN 87
609
-#define YY_MAX_SHIFT 165
610
-#define YY_MIN_SHIFTREDUCE 286
611
-#define YY_MAX_SHIFTREDUCE 443
612
-#define YY_ERROR_ACTION 444
613
-#define YY_ACCEPT_ACTION 445
614
-#define YY_NO_ACTION 446
615
-#define YY_MIN_REDUCE 447
616
-#define YY_MAX_REDUCE 604
611
+#define YYNRULE_WITH_ACTION 122
612
+#define YYNTOKEN 90
613
+#define YY_MAX_SHIFT 168
614
+#define YY_MIN_SHIFTREDUCE 290
615
+#define YY_MAX_SHIFTREDUCE 447
616
+#define YY_ERROR_ACTION 448
617
+#define YY_ACCEPT_ACTION 449
618
+#define YY_NO_ACTION 450
619
+#define YY_MIN_REDUCE 451
620
+#define YY_MAX_REDUCE 608
617621
/************* End control #defines *******************************************/
618622
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
619623
620624
/* Define the yytestcase() macro to be a no-op if is not already defined
621625
** otherwise.
@@ -678,265 +682,270 @@
678682
** yy_reduce_ofst[] For each state, the offset into yy_action for
679683
** shifting non-terminals after a reduce.
680684
** yy_default[] Default action for each state.
681685
**
682686
*********** Begin parsing tables **********************************************/
683
-#define YY_ACTTAB_COUNT (936)
687
+#define YY_ACTTAB_COUNT (957)
684688
static const YYACTIONTYPE yy_action[] = {
685
- /* 0 */ 579, 495, 164, 122, 19, 123, 448, 455, 26, 447,
686
- /* 10 */ 579, 68, 451, 125, 431, 432, 339, 47, 79, 25,
687
- /* 20 */ 46, 28, 579, 165, 126, 445, 21, 319, 320, 10,
688
- /* 30 */ 9, 32, 145, 31, 8, 57, 124, 155, 336, 589,
689
- /* 40 */ 581, 75, 581, 339, 339, 339, 339, 429, 430, 340,
690
- /* 50 */ 341, 342, 343, 344, 345, 346, 347, 391, 439, 556,
691
- /* 60 */ 51, 52, 557, 558, 555, 453, 26, 71, 374, 142,
692
- /* 70 */ 431, 432, 339, 406, 454, 114, 113, 164, 122, 44,
693
- /* 80 */ 41, 442, 443, 12, 146, 68, 407, 408, 409, 411,
694
- /* 90 */ 78, 535, 304, 77, 24, 414, 415, 416, 417, 339,
695
- /* 100 */ 339, 339, 339, 429, 430, 391, 398, 399, 51, 52,
696
- /* 110 */ 414, 415, 416, 417, 27, 108, 374, 302, 431, 432,
697
- /* 120 */ 339, 535, 80, 1, 116, 164, 122, 535, 461, 144,
698
- /* 130 */ 143, 102, 356, 76, 76, 120, 390, 157, 156, 438,
699
- /* 140 */ 438, 440, 441, 56, 55, 54, 53, 339, 339, 339,
700
- /* 150 */ 339, 429, 430, 391, 439, 125, 51, 52, 71, 22,
701
- /* 160 */ 142, 374, 54, 53, 374, 499, 114, 113, 164, 122,
702
- /* 170 */ 78, 5, 304, 77, 140, 164, 122, 442, 443, 107,
703
- /* 180 */ 127, 127, 81, 120, 390, 157, 156, 438, 438, 391,
704
- /* 190 */ 439, 58, 51, 52, 531, 164, 122, 70, 150, 142,
705
- /* 200 */ 374, 152, 148, 154, 112, 114, 113, 164, 122, 404,
706
- /* 210 */ 405, 84, 150, 442, 443, 152, 148, 154, 73, 1,
707
- /* 220 */ 116, 164, 122, 25, 110, 144, 143, 102, 120, 376,
708
- /* 230 */ 161, 120, 390, 157, 156, 306, 391, 440, 441, 51,
709
- /* 240 */ 52, 137, 135, 56, 55, 54, 53, 109, 30, 297,
710
- /* 250 */ 298, 299, 6, 301, 129, 1, 7, 74, 45, 426,
711
- /* 260 */ 69, 144, 143, 102, 139, 138, 439, 120, 390, 157,
712
- /* 270 */ 156, 38, 425, 440, 441, 11, 355, 349, 349, 349,
713
- /* 280 */ 349, 349, 349, 349, 349, 349, 349, 33, 121, 442,
714
- /* 290 */ 443, 56, 55, 54, 53, 315, 530, 164, 122, 18,
715
- /* 300 */ 17, 391, 5, 436, 51, 52, 72, 389, 136, 435,
716
- /* 310 */ 107, 133, 374, 434, 120, 390, 157, 156, 137, 135,
717
- /* 320 */ 56, 55, 54, 53, 431, 432, 339, 56, 55, 54,
718
- /* 330 */ 53, 56, 55, 54, 53, 45, 71, 134, 142, 130,
719
- /* 340 */ 128, 139, 138, 498, 114, 113, 164, 122, 38, 440,
720
- /* 350 */ 441, 119, 13, 339, 339, 339, 339, 429, 430, 391,
721
- /* 360 */ 331, 115, 51, 52, 378, 160, 14, 5, 377, 162,
722
- /* 370 */ 374, 529, 164, 122, 15, 107, 18, 17, 16, 120,
723
- /* 380 */ 390, 157, 156, 366, 367, 136, 435, 59, 391, 327,
724
- /* 390 */ 34, 51, 52, 438, 438, 354, 85, 150, 60, 374,
725
- /* 400 */ 152, 148, 154, 2, 61, 116, 164, 122, 147, 164,
726
- /* 410 */ 122, 149, 164, 122, 431, 432, 339, 97, 150, 36,
727
- /* 420 */ 82, 152, 148, 154, 62, 5, 116, 164, 122, 116,
728
- /* 430 */ 164, 122, 403, 107, 151, 164, 122, 120, 390, 157,
729
- /* 440 */ 156, 439, 402, 339, 339, 339, 339, 429, 430, 391,
730
- /* 450 */ 63, 401, 51, 52, 5, 153, 164, 122, 64, 65,
731
- /* 460 */ 374, 400, 107, 66, 442, 443, 120, 390, 157, 156,
732
- /* 470 */ 391, 49, 50, 51, 52, 56, 55, 54, 53, 310,
733
- /* 480 */ 67, 109, 446, 438, 438, 71, 391, 142, 382, 51,
734
- /* 490 */ 52, 375, 493, 114, 113, 164, 122, 374, 71, 29,
735
- /* 500 */ 142, 56, 55, 54, 53, 483, 114, 113, 164, 122,
736
- /* 510 */ 71, 380, 142, 381, 163, 5, 40, 482, 114, 113,
737
- /* 520 */ 164, 122, 446, 107, 440, 441, 446, 120, 390, 157,
738
- /* 530 */ 156, 391, 446, 446, 51, 52, 5, 449, 455, 26,
739
- /* 540 */ 446, 446, 374, 451, 107, 158, 164, 122, 120, 390,
740
- /* 550 */ 157, 156, 3, 446, 165, 446, 446, 21, 446, 446,
741
- /* 560 */ 107, 71, 446, 142, 120, 390, 157, 156, 518, 114,
742
- /* 570 */ 113, 164, 122, 71, 330, 142, 56, 55, 54, 53,
743
- /* 580 */ 132, 114, 113, 164, 122, 71, 446, 142, 446, 108,
744
- /* 590 */ 446, 446, 524, 114, 113, 164, 122, 4, 116, 164,
745
- /* 600 */ 122, 446, 461, 446, 35, 107, 446, 446, 574, 120,
746
- /* 610 */ 390, 157, 156, 71, 326, 142, 56, 55, 54, 53,
747
- /* 620 */ 523, 114, 113, 164, 122, 446, 71, 446, 142, 56,
748
- /* 630 */ 55, 54, 53, 522, 114, 113, 164, 122, 446, 446,
749
- /* 640 */ 71, 446, 142, 446, 37, 446, 93, 521, 114, 113,
750
- /* 650 */ 164, 122, 71, 446, 142, 116, 164, 122, 446, 520,
751
- /* 660 */ 114, 113, 164, 122, 71, 446, 142, 464, 446, 23,
752
- /* 670 */ 446, 519, 114, 113, 164, 122, 71, 446, 142, 56,
753
- /* 680 */ 55, 54, 53, 131, 114, 113, 164, 122, 71, 446,
754
- /* 690 */ 142, 446, 446, 353, 39, 479, 114, 113, 164, 122,
755
- /* 700 */ 111, 448, 455, 26, 446, 91, 446, 451, 56, 55,
756
- /* 710 */ 54, 53, 446, 446, 116, 164, 122, 446, 165, 446,
757
- /* 720 */ 20, 21, 446, 42, 446, 108, 56, 55, 54, 53,
758
- /* 730 */ 56, 55, 54, 53, 116, 164, 122, 446, 475, 108,
759
- /* 740 */ 446, 43, 446, 389, 56, 55, 54, 53, 116, 164,
760
- /* 750 */ 122, 446, 452, 56, 55, 54, 53, 309, 446, 48,
761
- /* 760 */ 56, 55, 54, 53, 56, 55, 54, 53, 83, 446,
762
- /* 770 */ 446, 98, 389, 446, 99, 446, 446, 116, 164, 122,
763
- /* 780 */ 116, 164, 122, 116, 164, 122, 100, 446, 446, 101,
764
- /* 790 */ 446, 446, 86, 446, 393, 116, 164, 122, 116, 164,
765
- /* 800 */ 122, 116, 164, 122, 446, 446, 87, 446, 446, 446,
766
- /* 810 */ 103, 534, 164, 122, 446, 116, 164, 122, 446, 116,
767
- /* 820 */ 164, 122, 88, 446, 392, 89, 446, 446, 389, 446,
768
- /* 830 */ 104, 116, 164, 122, 116, 164, 122, 90, 446, 116,
769
- /* 840 */ 164, 122, 105, 446, 446, 106, 116, 164, 122, 92,
770
- /* 850 */ 446, 116, 164, 122, 116, 164, 122, 94, 116, 164,
771
- /* 860 */ 122, 446, 446, 95, 446, 446, 116, 164, 122, 96,
772
- /* 870 */ 376, 161, 116, 164, 122, 549, 376, 161, 116, 164,
773
- /* 880 */ 122, 548, 446, 446, 116, 164, 122, 547, 446, 446,
774
- /* 890 */ 116, 164, 122, 546, 446, 446, 116, 164, 122, 446,
775
- /* 900 */ 446, 446, 116, 164, 122, 446, 446, 117, 446, 446,
776
- /* 910 */ 446, 118, 446, 446, 446, 446, 116, 164, 122, 446,
777
- /* 920 */ 116, 164, 122, 446, 446, 446, 141, 446, 446, 121,
778
- /* 930 */ 446, 446, 159, 446, 446, 121,
689
+ /* 0 */ 585, 502, 167, 124, 21, 125, 452, 459, 28, 451,
690
+ /* 10 */ 585, 70, 455, 128, 435, 436, 344, 49, 81, 27,
691
+ /* 20 */ 48, 30, 585, 168, 146, 449, 23, 323, 324, 10,
692
+ /* 30 */ 9, 34, 158, 33, 8, 71, 126, 29, 340, 59,
693
+ /* 40 */ 587, 77, 587, 344, 344, 344, 344, 433, 434, 345,
694
+ /* 50 */ 346, 347, 348, 349, 350, 351, 352, 397, 443, 562,
695
+ /* 60 */ 53, 54, 563, 564, 561, 457, 28, 73, 380, 143,
696
+ /* 70 */ 435, 436, 344, 27, 458, 116, 115, 167, 124, 306,
697
+ /* 80 */ 93, 446, 447, 397, 26, 310, 53, 54, 70, 118,
698
+ /* 90 */ 167, 124, 127, 380, 380, 22, 435, 436, 344, 344,
699
+ /* 100 */ 344, 344, 344, 433, 434, 72, 153, 143, 24, 155,
700
+ /* 110 */ 151, 157, 114, 116, 115, 167, 124, 589, 58, 57,
701
+ /* 120 */ 56, 55, 82, 1, 83, 344, 344, 344, 344, 433,
702
+ /* 130 */ 434, 60, 145, 144, 104, 12, 6, 110, 122, 396,
703
+ /* 140 */ 160, 159, 442, 442, 444, 445, 118, 167, 124, 5,
704
+ /* 150 */ 465, 397, 443, 541, 53, 54, 580, 46, 43, 112,
705
+ /* 160 */ 109, 7, 380, 122, 122, 396, 160, 159, 442, 442,
706
+ /* 170 */ 397, 443, 432, 53, 54, 446, 447, 431, 499, 167,
707
+ /* 180 */ 124, 380, 359, 360, 361, 130, 541, 80, 11, 308,
708
+ /* 190 */ 79, 412, 541, 440, 446, 447, 134, 420, 421, 422,
709
+ /* 200 */ 423, 438, 149, 135, 413, 414, 415, 417, 80, 75,
710
+ /* 210 */ 308, 79, 14, 420, 421, 422, 423, 1, 382, 164,
711
+ /* 220 */ 138, 136, 58, 57, 56, 55, 145, 144, 104, 141,
712
+ /* 230 */ 167, 124, 122, 396, 160, 159, 1, 47, 444, 445,
713
+ /* 240 */ 404, 405, 32, 140, 139, 145, 144, 104, 76, 15,
714
+ /* 250 */ 40, 122, 396, 160, 159, 110, 397, 444, 445, 53,
715
+ /* 260 */ 54, 16, 56, 55, 118, 167, 124, 111, 479, 301,
716
+ /* 270 */ 302, 303, 121, 305, 61, 435, 436, 344, 18, 17,
717
+ /* 280 */ 123, 35, 113, 452, 459, 28, 395, 62, 20, 455,
718
+ /* 290 */ 137, 439, 63, 138, 136, 58, 57, 56, 55, 64,
719
+ /* 300 */ 168, 410, 411, 23, 344, 344, 344, 344, 433, 434,
720
+ /* 310 */ 47, 117, 435, 436, 344, 397, 140, 139, 53, 54,
721
+ /* 320 */ 363, 110, 5, 40, 397, 19, 380, 53, 54, 2,
722
+ /* 330 */ 118, 167, 124, 109, 456, 380, 409, 122, 396, 160,
723
+ /* 340 */ 159, 344, 344, 344, 344, 433, 434, 442, 442, 384,
724
+ /* 350 */ 163, 18, 17, 65, 131, 129, 397, 335, 408, 53,
725
+ /* 360 */ 54, 20, 66, 137, 439, 383, 165, 380, 95, 397,
726
+ /* 370 */ 331, 407, 53, 54, 372, 373, 67, 118, 167, 124,
727
+ /* 380 */ 380, 5, 68, 406, 442, 442, 51, 36, 52, 468,
728
+ /* 390 */ 5, 25, 109, 84, 443, 381, 122, 396, 160, 159,
729
+ /* 400 */ 38, 109, 118, 167, 124, 122, 396, 160, 159, 397,
730
+ /* 410 */ 382, 164, 53, 54, 85, 69, 388, 446, 447, 73,
731
+ /* 420 */ 111, 143, 5, 118, 167, 124, 504, 116, 115, 167,
732
+ /* 430 */ 124, 386, 387, 109, 73, 5, 143, 122, 396, 160,
733
+ /* 440 */ 159, 503, 116, 115, 167, 124, 109, 382, 164, 450,
734
+ /* 450 */ 122, 396, 160, 159, 397, 166, 31, 53, 54, 537,
735
+ /* 460 */ 167, 124, 453, 459, 28, 380, 450, 397, 455, 142,
736
+ /* 470 */ 53, 54, 123, 450, 100, 5, 450, 450, 380, 168,
737
+ /* 480 */ 444, 445, 23, 118, 167, 124, 109, 450, 450, 450,
738
+ /* 490 */ 122, 396, 160, 159, 450, 354, 354, 354, 354, 354,
739
+ /* 500 */ 354, 354, 354, 354, 354, 450, 162, 86, 153, 123,
740
+ /* 510 */ 450, 155, 151, 157, 450, 450, 118, 167, 124, 450,
741
+ /* 520 */ 3, 450, 58, 57, 56, 55, 450, 58, 57, 56,
742
+ /* 530 */ 55, 109, 450, 4, 450, 122, 396, 160, 159, 536,
743
+ /* 540 */ 167, 124, 42, 450, 109, 450, 450, 13, 122, 396,
744
+ /* 550 */ 160, 159, 87, 153, 450, 450, 155, 151, 157, 450,
745
+ /* 560 */ 450, 118, 167, 124, 450, 99, 153, 450, 450, 155,
746
+ /* 570 */ 151, 157, 450, 450, 118, 167, 124, 450, 535, 167,
747
+ /* 580 */ 124, 73, 450, 143, 150, 167, 124, 101, 497, 116,
748
+ /* 590 */ 115, 167, 124, 73, 450, 143, 118, 167, 124, 450,
749
+ /* 600 */ 487, 116, 115, 167, 124, 450, 73, 450, 143, 450,
750
+ /* 610 */ 450, 110, 450, 486, 116, 115, 167, 124, 450, 450,
751
+ /* 620 */ 118, 167, 124, 450, 465, 450, 73, 450, 143, 78,
752
+ /* 630 */ 78, 450, 450, 523, 116, 115, 167, 124, 450, 73,
753
+ /* 640 */ 334, 143, 58, 57, 56, 55, 133, 116, 115, 167,
754
+ /* 650 */ 124, 73, 330, 143, 58, 57, 56, 55, 530, 116,
755
+ /* 660 */ 115, 167, 124, 450, 73, 450, 143, 152, 167, 124,
756
+ /* 670 */ 37, 529, 116, 115, 167, 124, 73, 450, 143, 154,
757
+ /* 680 */ 167, 124, 39, 528, 116, 115, 167, 124, 73, 450,
758
+ /* 690 */ 143, 58, 57, 56, 55, 527, 116, 115, 167, 124,
759
+ /* 700 */ 450, 73, 450, 143, 450, 450, 45, 450, 526, 116,
760
+ /* 710 */ 115, 167, 124, 58, 57, 56, 55, 319, 156, 167,
761
+ /* 720 */ 124, 73, 450, 143, 161, 167, 124, 450, 525, 116,
762
+ /* 730 */ 115, 167, 124, 450, 73, 450, 143, 58, 57, 56,
763
+ /* 740 */ 55, 147, 116, 115, 167, 124, 73, 450, 143, 450,
764
+ /* 750 */ 450, 443, 41, 148, 116, 115, 167, 124, 450, 73,
765
+ /* 760 */ 450, 143, 58, 57, 56, 55, 132, 116, 115, 167,
766
+ /* 770 */ 124, 73, 450, 143, 446, 447, 450, 44, 483, 116,
767
+ /* 780 */ 115, 167, 124, 58, 57, 56, 55, 58, 57, 56,
768
+ /* 790 */ 55, 74, 58, 57, 56, 55, 58, 57, 56, 55,
769
+ /* 800 */ 314, 395, 58, 57, 56, 55, 313, 50, 58, 57,
770
+ /* 810 */ 56, 55, 58, 57, 56, 55, 450, 450, 102, 58,
771
+ /* 820 */ 57, 56, 55, 103, 450, 450, 395, 118, 167, 124,
772
+ /* 830 */ 450, 88, 118, 167, 124, 89, 450, 444, 445, 105,
773
+ /* 840 */ 118, 167, 124, 450, 118, 167, 124, 358, 118, 167,
774
+ /* 850 */ 124, 399, 450, 450, 90, 450, 450, 91, 450, 450,
775
+ /* 860 */ 106, 450, 450, 118, 167, 124, 118, 167, 124, 118,
776
+ /* 870 */ 167, 124, 398, 450, 92, 450, 395, 450, 107, 450,
777
+ /* 880 */ 450, 108, 450, 118, 167, 124, 450, 118, 167, 124,
778
+ /* 890 */ 118, 167, 124, 94, 450, 450, 96, 450, 450, 97,
779
+ /* 900 */ 450, 450, 118, 167, 124, 118, 167, 124, 118, 167,
780
+ /* 910 */ 124, 450, 450, 98, 540, 167, 124, 450, 555, 450,
781
+ /* 920 */ 450, 554, 118, 167, 124, 450, 553, 118, 167, 124,
782
+ /* 930 */ 118, 167, 124, 552, 450, 118, 167, 124, 450, 119,
783
+ /* 940 */ 450, 450, 118, 167, 124, 120, 450, 450, 118, 167,
784
+ /* 950 */ 124, 450, 450, 450, 118, 167, 124,
779785
};
780786
static const YYCODETYPE yy_lookahead[] = {
781
- /* 0 */ 0, 100, 101, 102, 120, 87, 88, 89, 90, 0,
782
- /* 10 */ 10, 3, 94, 93, 14, 15, 16, 92, 18, 10,
783
- /* 20 */ 95, 96, 22, 105, 93, 107, 108, 27, 28, 29,
784
- /* 30 */ 30, 31, 93, 33, 34, 35, 36, 93, 38, 119,
785
- /* 40 */ 115, 116, 117, 43, 44, 45, 46, 47, 48, 49,
786
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 1, 2, 92,
787
- /* 60 */ 4, 5, 95, 96, 97, 89, 90, 91, 12, 93,
788
- /* 70 */ 14, 15, 16, 1, 98, 99, 100, 101, 102, 4,
789
- /* 80 */ 5, 25, 26, 19, 12, 77, 14, 15, 16, 17,
790
- /* 90 */ 18, 42, 20, 21, 111, 23, 24, 25, 26, 43,
791
- /* 100 */ 44, 45, 46, 47, 48, 1, 83, 84, 4, 5,
792
- /* 110 */ 23, 24, 25, 26, 94, 91, 12, 19, 14, 15,
793
- /* 120 */ 16, 72, 103, 67, 100, 101, 102, 78, 104, 73,
794
- /* 130 */ 74, 75, 68, 109, 110, 79, 80, 81, 82, 83,
795
- /* 140 */ 84, 85, 86, 4, 5, 6, 7, 43, 44, 45,
796
- /* 150 */ 46, 47, 48, 1, 2, 93, 4, 5, 91, 113,
797
- /* 160 */ 93, 12, 6, 7, 12, 98, 99, 100, 101, 102,
798
- /* 170 */ 18, 67, 20, 21, 100, 101, 102, 25, 26, 75,
799
- /* 180 */ 118, 119, 103, 79, 80, 81, 82, 83, 84, 1,
800
- /* 190 */ 2, 37, 4, 5, 100, 101, 102, 91, 92, 93,
801
- /* 200 */ 12, 95, 96, 97, 98, 99, 100, 101, 102, 83,
802
- /* 210 */ 84, 91, 92, 25, 26, 95, 96, 97, 42, 67,
803
- /* 220 */ 100, 101, 102, 10, 75, 73, 74, 75, 79, 20,
804
- /* 230 */ 21, 79, 80, 81, 82, 22, 1, 85, 86, 4,
805
- /* 240 */ 5, 2, 3, 4, 5, 6, 7, 12, 72, 14,
806
- /* 250 */ 15, 16, 34, 18, 40, 67, 34, 42, 19, 35,
807
- /* 260 */ 41, 73, 74, 75, 25, 26, 2, 79, 80, 81,
808
- /* 270 */ 82, 32, 35, 85, 86, 41, 68, 57, 58, 59,
809
- /* 280 */ 60, 61, 62, 63, 64, 65, 66, 72, 79, 25,
810
- /* 290 */ 26, 4, 5, 6, 7, 8, 100, 101, 102, 60,
811
- /* 300 */ 61, 1, 67, 70, 4, 5, 42, 68, 69, 70,
812
- /* 310 */ 75, 69, 12, 70, 79, 80, 81, 82, 2, 3,
813
- /* 320 */ 4, 5, 6, 7, 14, 15, 16, 4, 5, 6,
814
- /* 330 */ 7, 4, 5, 6, 7, 19, 91, 71, 93, 39,
815
- /* 340 */ 40, 25, 26, 98, 99, 100, 101, 102, 32, 85,
816
- /* 350 */ 86, 72, 29, 43, 44, 45, 46, 47, 48, 1,
817
- /* 360 */ 2, 72, 4, 5, 20, 21, 3, 67, 20, 21,
818
- /* 370 */ 12, 100, 101, 102, 3, 75, 60, 61, 3, 79,
819
- /* 380 */ 80, 81, 82, 73, 74, 69, 70, 3, 1, 2,
820
- /* 390 */ 32, 4, 5, 83, 84, 68, 91, 92, 3, 12,
821
- /* 400 */ 95, 96, 97, 13, 3, 100, 101, 102, 100, 101,
822
- /* 410 */ 102, 100, 101, 102, 14, 15, 16, 91, 92, 32,
823
- /* 420 */ 91, 95, 96, 97, 3, 67, 100, 101, 102, 100,
824
- /* 430 */ 101, 102, 68, 75, 100, 101, 102, 79, 80, 81,
825
- /* 440 */ 82, 2, 68, 43, 44, 45, 46, 47, 48, 1,
826
- /* 450 */ 3, 68, 4, 5, 67, 100, 101, 102, 3, 3,
827
- /* 460 */ 12, 68, 75, 3, 25, 26, 79, 80, 81, 82,
828
- /* 470 */ 1, 67, 67, 4, 5, 4, 5, 6, 7, 8,
829
- /* 480 */ 3, 12, 121, 83, 84, 91, 1, 93, 22, 4,
830
- /* 490 */ 5, 12, 98, 99, 100, 101, 102, 12, 91, 11,
831
- /* 500 */ 93, 4, 5, 6, 7, 98, 99, 100, 101, 102,
832
- /* 510 */ 91, 22, 93, 22, 78, 67, 19, 98, 99, 100,
833
- /* 520 */ 101, 102, 121, 75, 85, 86, 121, 79, 80, 81,
834
- /* 530 */ 82, 1, 121, 121, 4, 5, 67, 88, 89, 90,
835
- /* 540 */ 121, 121, 12, 94, 75, 100, 101, 102, 79, 80,
836
- /* 550 */ 81, 82, 67, 121, 105, 121, 121, 108, 121, 121,
837
- /* 560 */ 75, 91, 121, 93, 79, 80, 81, 82, 98, 99,
838
- /* 570 */ 100, 101, 102, 91, 2, 93, 4, 5, 6, 7,
839
- /* 580 */ 98, 99, 100, 101, 102, 91, 121, 93, 121, 91,
840
- /* 590 */ 121, 121, 98, 99, 100, 101, 102, 67, 100, 101,
841
- /* 600 */ 102, 121, 104, 121, 32, 75, 121, 121, 110, 79,
842
- /* 610 */ 80, 81, 82, 91, 2, 93, 4, 5, 6, 7,
843
- /* 620 */ 98, 99, 100, 101, 102, 121, 91, 121, 93, 4,
844
- /* 630 */ 5, 6, 7, 98, 99, 100, 101, 102, 121, 121,
845
- /* 640 */ 91, 121, 93, 121, 32, 121, 91, 98, 99, 100,
846
- /* 650 */ 101, 102, 91, 121, 93, 100, 101, 102, 121, 98,
847
- /* 660 */ 99, 100, 101, 102, 91, 121, 93, 112, 121, 114,
848
- /* 670 */ 121, 98, 99, 100, 101, 102, 91, 121, 93, 4,
849
- /* 680 */ 5, 6, 7, 98, 99, 100, 101, 102, 91, 121,
850
- /* 690 */ 93, 121, 121, 68, 19, 98, 99, 100, 101, 102,
851
- /* 700 */ 87, 88, 89, 90, 121, 91, 121, 94, 4, 5,
852
- /* 710 */ 6, 7, 121, 121, 100, 101, 102, 121, 105, 121,
853
- /* 720 */ 106, 108, 121, 19, 121, 91, 4, 5, 6, 7,
854
- /* 730 */ 4, 5, 6, 7, 100, 101, 102, 121, 104, 91,
855
- /* 740 */ 121, 19, 121, 68, 4, 5, 6, 7, 100, 101,
856
- /* 750 */ 102, 121, 104, 4, 5, 6, 7, 8, 121, 19,
857
- /* 760 */ 4, 5, 6, 7, 4, 5, 6, 7, 91, 121,
858
- /* 770 */ 121, 91, 68, 121, 91, 121, 121, 100, 101, 102,
859
- /* 780 */ 100, 101, 102, 100, 101, 102, 91, 121, 121, 91,
860
- /* 790 */ 121, 121, 91, 121, 68, 100, 101, 102, 100, 101,
861
- /* 800 */ 102, 100, 101, 102, 121, 121, 91, 121, 121, 121,
862
- /* 810 */ 91, 100, 101, 102, 121, 100, 101, 102, 121, 100,
863
- /* 820 */ 101, 102, 91, 121, 68, 91, 121, 121, 68, 121,
864
- /* 830 */ 91, 100, 101, 102, 100, 101, 102, 91, 121, 100,
865
- /* 840 */ 101, 102, 91, 121, 121, 91, 100, 101, 102, 91,
866
- /* 850 */ 121, 100, 101, 102, 100, 101, 102, 91, 100, 101,
867
- /* 860 */ 102, 121, 121, 91, 121, 121, 100, 101, 102, 91,
868
- /* 870 */ 20, 21, 100, 101, 102, 91, 20, 21, 100, 101,
869
- /* 880 */ 102, 91, 121, 121, 100, 101, 102, 91, 121, 121,
870
- /* 890 */ 100, 101, 102, 91, 121, 121, 100, 101, 102, 121,
871
- /* 900 */ 121, 121, 100, 101, 102, 121, 121, 91, 121, 121,
872
- /* 910 */ 121, 91, 121, 121, 121, 121, 100, 101, 102, 121,
873
- /* 920 */ 100, 101, 102, 121, 121, 121, 76, 121, 121, 79,
874
- /* 930 */ 121, 121, 76, 121, 121, 79, 121, 121, 121, 121,
875
- /* 940 */ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
876
- /* 950 */ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
877
- /* 960 */ 121, 121, 121, 121, 87, 87, 87, 87, 87, 87,
878
- /* 970 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
879
- /* 980 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
880
- /* 990 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
881
- /* 1000 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
882
- /* 1010 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
883
- /* 1020 */ 87, 87, 87,
787
+ /* 0 */ 0, 103, 104, 105, 122, 90, 91, 92, 93, 0,
788
+ /* 10 */ 10, 3, 97, 96, 14, 15, 16, 95, 18, 10,
789
+ /* 20 */ 98, 99, 22, 108, 96, 110, 111, 27, 28, 29,
790
+ /* 30 */ 30, 31, 96, 33, 34, 35, 36, 97, 38, 39,
791
+ /* 40 */ 118, 119, 120, 43, 44, 45, 46, 47, 48, 49,
792
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 1, 2, 95,
793
+ /* 60 */ 4, 5, 98, 99, 100, 92, 93, 94, 12, 96,
794
+ /* 70 */ 14, 15, 16, 10, 101, 102, 103, 104, 105, 19,
795
+ /* 80 */ 94, 25, 26, 1, 114, 22, 4, 5, 80, 103,
796
+ /* 90 */ 104, 105, 96, 12, 12, 109, 14, 15, 16, 43,
797
+ /* 100 */ 44, 45, 46, 47, 48, 94, 95, 96, 116, 98,
798
+ /* 110 */ 99, 100, 101, 102, 103, 104, 105, 121, 4, 5,
799
+ /* 120 */ 6, 7, 106, 67, 106, 43, 44, 45, 46, 47,
800
+ /* 130 */ 48, 37, 76, 77, 78, 19, 34, 94, 82, 83,
801
+ /* 140 */ 84, 85, 86, 87, 88, 89, 103, 104, 105, 67,
802
+ /* 150 */ 107, 1, 2, 42, 4, 5, 113, 4, 5, 78,
803
+ /* 160 */ 78, 34, 12, 82, 82, 83, 84, 85, 86, 87,
804
+ /* 170 */ 1, 2, 35, 4, 5, 25, 26, 35, 103, 104,
805
+ /* 180 */ 105, 12, 68, 68, 68, 41, 75, 18, 69, 20,
806
+ /* 190 */ 21, 1, 81, 73, 25, 26, 72, 23, 24, 25,
807
+ /* 200 */ 26, 73, 12, 74, 14, 15, 16, 17, 18, 42,
808
+ /* 210 */ 20, 21, 3, 23, 24, 25, 26, 67, 20, 21,
809
+ /* 220 */ 2, 3, 4, 5, 6, 7, 76, 77, 78, 103,
810
+ /* 230 */ 104, 105, 82, 83, 84, 85, 67, 19, 88, 89,
811
+ /* 240 */ 86, 87, 75, 25, 26, 76, 77, 78, 42, 3,
812
+ /* 250 */ 32, 82, 83, 84, 85, 94, 1, 88, 89, 4,
813
+ /* 260 */ 5, 3, 6, 7, 103, 104, 105, 12, 107, 14,
814
+ /* 270 */ 15, 16, 75, 18, 3, 14, 15, 16, 60, 61,
815
+ /* 280 */ 82, 75, 90, 91, 92, 93, 68, 3, 70, 97,
816
+ /* 290 */ 72, 73, 3, 2, 3, 4, 5, 6, 7, 3,
817
+ /* 300 */ 108, 86, 87, 111, 43, 44, 45, 46, 47, 48,
818
+ /* 310 */ 19, 75, 14, 15, 16, 1, 25, 26, 4, 5,
819
+ /* 320 */ 71, 94, 67, 32, 1, 19, 12, 4, 5, 13,
820
+ /* 330 */ 103, 104, 105, 78, 107, 12, 68, 82, 83, 84,
821
+ /* 340 */ 85, 43, 44, 45, 46, 47, 48, 86, 87, 20,
822
+ /* 350 */ 21, 60, 61, 3, 40, 41, 1, 2, 68, 4,
823
+ /* 360 */ 5, 70, 3, 72, 73, 20, 21, 12, 94, 1,
824
+ /* 370 */ 2, 68, 4, 5, 76, 77, 3, 103, 104, 105,
825
+ /* 380 */ 12, 67, 3, 68, 86, 87, 67, 32, 67, 115,
826
+ /* 390 */ 67, 117, 78, 94, 2, 12, 82, 83, 84, 85,
827
+ /* 400 */ 32, 78, 103, 104, 105, 82, 83, 84, 85, 1,
828
+ /* 410 */ 20, 21, 4, 5, 94, 3, 22, 25, 26, 94,
829
+ /* 420 */ 12, 96, 67, 103, 104, 105, 101, 102, 103, 104,
830
+ /* 430 */ 105, 22, 22, 78, 94, 67, 96, 82, 83, 84,
831
+ /* 440 */ 85, 101, 102, 103, 104, 105, 78, 20, 21, 123,
832
+ /* 450 */ 82, 83, 84, 85, 1, 81, 11, 4, 5, 103,
833
+ /* 460 */ 104, 105, 91, 92, 93, 12, 123, 1, 97, 79,
834
+ /* 470 */ 4, 5, 82, 123, 94, 67, 123, 123, 12, 108,
835
+ /* 480 */ 88, 89, 111, 103, 104, 105, 78, 123, 123, 123,
836
+ /* 490 */ 82, 83, 84, 85, 123, 57, 58, 59, 60, 61,
837
+ /* 500 */ 62, 63, 64, 65, 66, 123, 79, 94, 95, 82,
838
+ /* 510 */ 123, 98, 99, 100, 123, 123, 103, 104, 105, 123,
839
+ /* 520 */ 67, 123, 4, 5, 6, 7, 123, 4, 5, 6,
840
+ /* 530 */ 7, 78, 123, 67, 123, 82, 83, 84, 85, 103,
841
+ /* 540 */ 104, 105, 19, 123, 78, 123, 123, 29, 82, 83,
842
+ /* 550 */ 84, 85, 94, 95, 123, 123, 98, 99, 100, 123,
843
+ /* 560 */ 123, 103, 104, 105, 123, 94, 95, 123, 123, 98,
844
+ /* 570 */ 99, 100, 123, 123, 103, 104, 105, 123, 103, 104,
845
+ /* 580 */ 105, 94, 123, 96, 103, 104, 105, 94, 101, 102,
846
+ /* 590 */ 103, 104, 105, 94, 123, 96, 103, 104, 105, 123,
847
+ /* 600 */ 101, 102, 103, 104, 105, 123, 94, 123, 96, 123,
848
+ /* 610 */ 123, 94, 123, 101, 102, 103, 104, 105, 123, 123,
849
+ /* 620 */ 103, 104, 105, 123, 107, 123, 94, 123, 96, 112,
850
+ /* 630 */ 113, 123, 123, 101, 102, 103, 104, 105, 123, 94,
851
+ /* 640 */ 2, 96, 4, 5, 6, 7, 101, 102, 103, 104,
852
+ /* 650 */ 105, 94, 2, 96, 4, 5, 6, 7, 101, 102,
853
+ /* 660 */ 103, 104, 105, 123, 94, 123, 96, 103, 104, 105,
854
+ /* 670 */ 32, 101, 102, 103, 104, 105, 94, 123, 96, 103,
855
+ /* 680 */ 104, 105, 32, 101, 102, 103, 104, 105, 94, 123,
856
+ /* 690 */ 96, 4, 5, 6, 7, 101, 102, 103, 104, 105,
857
+ /* 700 */ 123, 94, 123, 96, 123, 123, 19, 123, 101, 102,
858
+ /* 710 */ 103, 104, 105, 4, 5, 6, 7, 8, 103, 104,
859
+ /* 720 */ 105, 94, 123, 96, 103, 104, 105, 123, 101, 102,
860
+ /* 730 */ 103, 104, 105, 123, 94, 123, 96, 4, 5, 6,
861
+ /* 740 */ 7, 101, 102, 103, 104, 105, 94, 123, 96, 123,
862
+ /* 750 */ 123, 2, 19, 101, 102, 103, 104, 105, 123, 94,
863
+ /* 760 */ 123, 96, 4, 5, 6, 7, 101, 102, 103, 104,
864
+ /* 770 */ 105, 94, 123, 96, 25, 26, 123, 19, 101, 102,
865
+ /* 780 */ 103, 104, 105, 4, 5, 6, 7, 4, 5, 6,
866
+ /* 790 */ 7, 42, 4, 5, 6, 7, 4, 5, 6, 7,
867
+ /* 800 */ 8, 68, 4, 5, 6, 7, 8, 19, 4, 5,
868
+ /* 810 */ 6, 7, 4, 5, 6, 7, 123, 123, 94, 4,
869
+ /* 820 */ 5, 6, 7, 94, 123, 123, 68, 103, 104, 105,
870
+ /* 830 */ 123, 94, 103, 104, 105, 94, 123, 88, 89, 94,
871
+ /* 840 */ 103, 104, 105, 123, 103, 104, 105, 68, 103, 104,
872
+ /* 850 */ 105, 68, 123, 123, 94, 123, 123, 94, 123, 123,
873
+ /* 860 */ 94, 123, 123, 103, 104, 105, 103, 104, 105, 103,
874
+ /* 870 */ 104, 105, 68, 123, 94, 123, 68, 123, 94, 123,
875
+ /* 880 */ 123, 94, 123, 103, 104, 105, 123, 103, 104, 105,
876
+ /* 890 */ 103, 104, 105, 94, 123, 123, 94, 123, 123, 94,
877
+ /* 900 */ 123, 123, 103, 104, 105, 103, 104, 105, 103, 104,
878
+ /* 910 */ 105, 123, 123, 94, 103, 104, 105, 123, 94, 123,
879
+ /* 920 */ 123, 94, 103, 104, 105, 123, 94, 103, 104, 105,
880
+ /* 930 */ 103, 104, 105, 94, 123, 103, 104, 105, 123, 94,
881
+ /* 940 */ 123, 123, 103, 104, 105, 94, 123, 123, 103, 104,
882
+ /* 950 */ 105, 123, 123, 123, 103, 104, 105, 90, 90, 90,
883
+ /* 960 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
884
+ /* 970 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
885
+ /* 980 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
886
+ /* 990 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
887
+ /* 1000 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
888
+ /* 1010 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
889
+ /* 1020 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
890
+ /* 1030 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
891
+ /* 1040 */ 90, 90, 90, 90, 90, 90, 90,
884892
};
885
-#define YY_SHIFT_COUNT (165)
893
+#define YY_SHIFT_COUNT (168)
886894
#define YY_SHIFT_MIN (0)
887
-#define YY_SHIFT_MAX (856)
895
+#define YY_SHIFT_MAX (815)
888896
static const unsigned short int yy_shift_ofst[] = {
889
- /* 0 */ 72, 56, 152, 104, 104, 104, 188, 188, 188, 188,
890
- /* 10 */ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
891
- /* 20 */ 188, 235, 72, 0, 235, 72, 448, 300, 469, 469,
892
- /* 30 */ 310, 358, 387, 400, 448, 448, 448, 448, 448, 448,
893
- /* 40 */ 448, 485, 448, 448, 530, 448, 448, 448, 448, 448,
894
- /* 50 */ 448, 448, 448, 448, 448, 448, 448, 264, 149, 149,
895
- /* 60 */ 149, 149, 149, 149, 149, 149, 149, 149, 149, 264,
896
- /* 70 */ 239, 316, 439, 439, 439, 87, 98, 936, 936, 936,
897
- /* 80 */ 220, 220, 572, 612, 675, 704, 323, 327, 497, 625,
898
- /* 90 */ 722, 287, 471, 749, 726, 740, 756, 760, 139, 139,
899
- /* 100 */ 139, 139, 850, 139, 139, 139, 139, 856, 139, 49,
900
- /* 110 */ 209, 213, 64, 176, 75, 23, 215, 156, 156, 126,
901
- /* 120 */ 344, 348, 8, 9, 154, 218, 222, 219, 224, 237,
902
- /* 130 */ 214, 234, 208, 233, 242, 266, 243, 363, 371, 375,
903
- /* 140 */ 279, 384, 395, 401, 421, 289, 390, 364, 447, 374,
904
- /* 150 */ 455, 383, 456, 393, 460, 289, 404, 405, 279, 477,
905
- /* 160 */ 466, 489, 491, 479, 436, 488,
897
+ /* 0 */ 190, 56, 169, 82, 82, 82, 150, 150, 150, 150,
898
+ /* 10 */ 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
899
+ /* 20 */ 150, 150, 150, 255, 190, 0, 255, 190, 323, 314,
900
+ /* 30 */ 408, 408, 298, 355, 368, 261, 323, 323, 323, 323,
901
+ /* 40 */ 323, 323, 323, 453, 323, 323, 466, 323, 323, 323,
902
+ /* 50 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 81,
903
+ /* 60 */ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
904
+ /* 70 */ 81, 749, 218, 291, 392, 392, 392, 174, 60, 957,
905
+ /* 80 */ 957, 957, 438, 438, 638, 650, 733, 758, 518, 114,
906
+ /* 90 */ 523, 779, 687, 709, 792, 798, 783, 788, 804, 808,
907
+ /* 100 */ 815, 815, 815, 815, 390, 815, 815, 815, 815, 427,
908
+ /* 110 */ 815, 111, 198, 63, 116, 167, 153, 154, 206, 256,
909
+ /* 120 */ 256, 215, 329, 345, 8, 9, 94, 102, 127, 137,
910
+ /* 130 */ 142, 144, 119, 115, 120, 124, 129, 128, 209, 246,
911
+ /* 140 */ 258, 197, 271, 284, 289, 296, 236, 249, 306, 316,
912
+ /* 150 */ 268, 350, 290, 359, 303, 373, 315, 379, 236, 319,
913
+ /* 160 */ 321, 197, 412, 394, 409, 410, 383, 374, 445,
906914
};
907
-#define YY_REDUCE_COUNT (79)
908
-#define YY_REDUCE_MIN (-116)
909
-#define YY_REDUCE_MAX (820)
915
+#define YY_REDUCE_COUNT (81)
916
+#define YY_REDUCE_MIN (-118)
917
+#define YY_REDUCE_MAX (851)
910918
static const short yy_reduce_ofst[] = {
911
- /* 0 */ -82, 106, -24, 120, 305, 326, 67, 245, 394, 407,
912
- /* 10 */ 419, 470, 482, 494, 522, 535, 549, 561, 573, 585,
913
- /* 20 */ 597, 24, 613, -75, 498, 449, 555, 614, 634, 648,
914
- /* 30 */ -33, 329, 677, -33, 680, 683, 695, 698, 701, 715,
915
- /* 40 */ 719, 731, 734, 739, 746, 751, 754, 758, 766, 772,
916
- /* 50 */ 778, 784, 790, 796, 802, 816, 820, 62, -99, 74,
917
- /* 60 */ 94, 196, 271, 308, 311, 334, 355, 445, 711, -80,
918
- /* 70 */ -116, -116, -69, -61, -56, 20, -17, 46, 19, 79,
919
+ /* 0 */ -85, 11, -27, 413, 458, 471, 325, 340, 487, 499,
920
+ /* 10 */ 512, 532, 545, 557, 570, 582, 594, 607, 627, 640,
921
+ /* 20 */ 652, 665, 677, 517, 192, -78, 43, 371, 274, -14,
922
+ /* 30 */ 161, 227, -36, 299, 320, -36, 380, 493, 724, 729,
923
+ /* 40 */ 737, 741, 745, 760, 763, 766, 780, 784, 787, 799,
924
+ /* 50 */ 802, 805, 819, 824, 827, 832, 839, 845, 851, -102,
925
+ /* 60 */ 75, 126, 356, 436, 475, 481, 564, 576, 615, 621,
926
+ /* 70 */ 811, -4, -118, -118, -83, -72, -64, -60, -30, -8,
927
+ /* 80 */ 16, 18,
919928
};
920929
static const YYACTIONTYPE yy_default[] = {
921
- /* 0 */ 450, 444, 444, 444, 444, 444, 444, 444, 444, 444,
922
- /* 10 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
923
- /* 20 */ 444, 444, 450, 585, 444, 450, 580, 478, 444, 444,
924
- /* 30 */ 444, 584, 484, 444, 444, 444, 444, 444, 444, 444,
925
- /* 40 */ 444, 444, 444, 444, 444, 444, 474, 444, 444, 444,
926
- /* 50 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
927
- /* 60 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
928
- /* 70 */ 444, 444, 444, 444, 444, 444, 456, 468, 509, 509,
929
- /* 80 */ 466, 496, 444, 444, 444, 444, 444, 444, 444, 444,
930
- /* 90 */ 444, 477, 472, 469, 444, 444, 444, 444, 490, 489,
931
- /* 100 */ 486, 485, 444, 513, 512, 511, 473, 444, 571, 457,
932
- /* 110 */ 444, 444, 444, 525, 594, 444, 444, 545, 544, 444,
933
- /* 120 */ 540, 444, 533, 444, 494, 444, 444, 583, 444, 444,
934
- /* 130 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
935
- /* 140 */ 532, 444, 444, 444, 444, 526, 444, 444, 444, 444,
936
- /* 150 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
937
- /* 160 */ 444, 444, 444, 444, 598, 444,
930
+ /* 0 */ 454, 448, 448, 448, 448, 448, 448, 448, 448, 448,
931
+ /* 10 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
932
+ /* 20 */ 448, 448, 448, 448, 454, 591, 448, 454, 586, 482,
933
+ /* 30 */ 448, 448, 448, 590, 488, 448, 448, 448, 448, 448,
934
+ /* 40 */ 448, 448, 448, 448, 448, 448, 448, 448, 478, 448,
935
+ /* 50 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
936
+ /* 60 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
937
+ /* 70 */ 448, 448, 448, 448, 448, 448, 448, 448, 460, 472,
938
+ /* 80 */ 514, 514, 470, 500, 448, 448, 448, 448, 448, 448,
939
+ /* 90 */ 448, 448, 448, 481, 476, 473, 448, 448, 448, 448,
940
+ /* 100 */ 494, 493, 490, 489, 448, 518, 517, 516, 477, 448,
941
+ /* 110 */ 577, 461, 448, 448, 448, 531, 598, 448, 448, 551,
942
+ /* 120 */ 550, 448, 546, 448, 539, 448, 498, 448, 448, 448,
943
+ /* 130 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
944
+ /* 140 */ 448, 538, 448, 448, 448, 448, 532, 448, 448, 448,
945
+ /* 150 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
946
+ /* 160 */ 448, 448, 448, 448, 448, 448, 448, 602, 448,
938947
};
939948
/********** End of lemon-generated parsing tables *****************************/
940949
941950
/* The next table maps tokens (terminal symbols) into fallback tokens.
942951
** If a construct like the following:
@@ -991,13 +1000,13 @@
9911000
0, /* AT => nothing */
9921001
0, /* WITH => nothing */
9931002
0, /* SAME => nothing */
9941003
0, /* AS => nothing */
9951004
0, /* FIT => nothing */
1005
+ 0, /* BEHIND => nothing */
9961006
0, /* UNTIL => nothing */
9971007
0, /* EVEN => nothing */
998
- 0, /* AND => nothing */
9991008
0, /* DOT_E => nothing */
10001009
0, /* HEIGHT => nothing */
10011010
0, /* WIDTH => nothing */
10021011
0, /* RADIUS => nothing */
10031012
0, /* DIAMETER => nothing */
@@ -1021,10 +1030,13 @@
10211030
0, /* ALIGNED => nothing */
10221031
0, /* BIG => nothing */
10231032
0, /* SMALL => nothing */
10241033
0, /* LP => nothing */
10251034
0, /* RP => nothing */
1035
+ 0, /* AND => nothing */
1036
+ 0, /* LT => nothing */
1037
+ 0, /* GT => nothing */
10261038
0, /* WAY => nothing */
10271039
0, /* BETWEEN => nothing */
10281040
0, /* THE => nothing */
10291041
0, /* DOT_L => nothing */
10301042
0, /* START => nothing */
@@ -1166,13 +1178,13 @@
11661178
/* 34 */ "AT",
11671179
/* 35 */ "WITH",
11681180
/* 36 */ "SAME",
11691181
/* 37 */ "AS",
11701182
/* 38 */ "FIT",
1171
- /* 39 */ "UNTIL",
1172
- /* 40 */ "EVEN",
1173
- /* 41 */ "AND",
1183
+ /* 39 */ "BEHIND",
1184
+ /* 40 */ "UNTIL",
1185
+ /* 41 */ "EVEN",
11741186
/* 42 */ "DOT_E",
11751187
/* 43 */ "HEIGHT",
11761188
/* 44 */ "WIDTH",
11771189
/* 45 */ "RADIUS",
11781190
/* 46 */ "DIAMETER",
@@ -1196,62 +1208,64 @@
11961208
/* 64 */ "ALIGNED",
11971209
/* 65 */ "BIG",
11981210
/* 66 */ "SMALL",
11991211
/* 67 */ "LP",
12001212
/* 68 */ "RP",
1201
- /* 69 */ "WAY",
1202
- /* 70 */ "BETWEEN",
1203
- /* 71 */ "THE",
1204
- /* 72 */ "DOT_L",
1205
- /* 73 */ "START",
1206
- /* 74 */ "END",
1207
- /* 75 */ "NTH",
1208
- /* 76 */ "VERTEX",
1209
- /* 77 */ "IN",
1210
- /* 78 */ "DOT_U",
1211
- /* 79 */ "LAST",
1212
- /* 80 */ "NUMBER",
1213
- /* 81 */ "FUNC1",
1214
- /* 82 */ "FUNC2",
1215
- /* 83 */ "X",
1216
- /* 84 */ "Y",
1217
- /* 85 */ "TOP",
1218
- /* 86 */ "BOTTOM",
1219
- /* 87 */ "element_list",
1220
- /* 88 */ "element",
1221
- /* 89 */ "unnamed_element",
1222
- /* 90 */ "basetype",
1223
- /* 91 */ "expr",
1224
- /* 92 */ "numproperty",
1225
- /* 93 */ "edge",
1226
- /* 94 */ "direction",
1227
- /* 95 */ "dashproperty",
1228
- /* 96 */ "colorproperty",
1229
- /* 97 */ "locproperty",
1230
- /* 98 */ "position",
1231
- /* 99 */ "place",
1232
- /* 100 */ "object",
1233
- /* 101 */ "objectname",
1234
- /* 102 */ "nth",
1235
- /* 103 */ "textposition",
1236
- /* 104 */ "rvalue",
1237
- /* 105 */ "lvalue",
1238
- /* 106 */ "even",
1239
- /* 107 */ "document",
1240
- /* 108 */ "print",
1241
- /* 109 */ "prlist",
1242
- /* 110 */ "pritem",
1243
- /* 111 */ "prsep",
1244
- /* 112 */ "attribute_list",
1245
- /* 113 */ "savelist",
1246
- /* 114 */ "alist",
1247
- /* 115 */ "attribute",
1248
- /* 116 */ "go",
1249
- /* 117 */ "boolproperty",
1250
- /* 118 */ "withclause",
1251
- /* 119 */ "with",
1252
- /* 120 */ "between",
1213
+ /* 69 */ "AND",
1214
+ /* 70 */ "LT",
1215
+ /* 71 */ "GT",
1216
+ /* 72 */ "WAY",
1217
+ /* 73 */ "BETWEEN",
1218
+ /* 74 */ "THE",
1219
+ /* 75 */ "DOT_L",
1220
+ /* 76 */ "START",
1221
+ /* 77 */ "END",
1222
+ /* 78 */ "NTH",
1223
+ /* 79 */ "VERTEX",
1224
+ /* 80 */ "IN",
1225
+ /* 81 */ "DOT_U",
1226
+ /* 82 */ "LAST",
1227
+ /* 83 */ "NUMBER",
1228
+ /* 84 */ "FUNC1",
1229
+ /* 85 */ "FUNC2",
1230
+ /* 86 */ "X",
1231
+ /* 87 */ "Y",
1232
+ /* 88 */ "TOP",
1233
+ /* 89 */ "BOTTOM",
1234
+ /* 90 */ "element_list",
1235
+ /* 91 */ "element",
1236
+ /* 92 */ "unnamed_element",
1237
+ /* 93 */ "basetype",
1238
+ /* 94 */ "expr",
1239
+ /* 95 */ "numproperty",
1240
+ /* 96 */ "edge",
1241
+ /* 97 */ "direction",
1242
+ /* 98 */ "dashproperty",
1243
+ /* 99 */ "colorproperty",
1244
+ /* 100 */ "locproperty",
1245
+ /* 101 */ "position",
1246
+ /* 102 */ "place",
1247
+ /* 103 */ "object",
1248
+ /* 104 */ "objectname",
1249
+ /* 105 */ "nth",
1250
+ /* 106 */ "textposition",
1251
+ /* 107 */ "rvalue",
1252
+ /* 108 */ "lvalue",
1253
+ /* 109 */ "even",
1254
+ /* 110 */ "document",
1255
+ /* 111 */ "print",
1256
+ /* 112 */ "prlist",
1257
+ /* 113 */ "pritem",
1258
+ /* 114 */ "prsep",
1259
+ /* 115 */ "attribute_list",
1260
+ /* 116 */ "savelist",
1261
+ /* 117 */ "alist",
1262
+ /* 118 */ "attribute",
1263
+ /* 119 */ "go",
1264
+ /* 120 */ "boolproperty",
1265
+ /* 121 */ "withclause",
1266
+ /* 122 */ "between",
12531267
};
12541268
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
12551269
12561270
#ifndef NDEBUG
12571271
/* For tracing reduce actions, the names of all rules are required.
@@ -1306,102 +1320,102 @@
13061320
/* 46 */ "attribute ::= AT position",
13071321
/* 47 */ "attribute ::= SAME",
13081322
/* 48 */ "attribute ::= SAME AS object",
13091323
/* 49 */ "attribute ::= STRING textposition",
13101324
/* 50 */ "attribute ::= FIT",
1311
- /* 51 */ "with ::= DOT_E edge AT position",
1312
- /* 52 */ "with ::= edge AT position",
1313
- /* 53 */ "numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS",
1314
- /* 54 */ "boolproperty ::= CW",
1315
- /* 55 */ "boolproperty ::= CCW",
1316
- /* 56 */ "boolproperty ::= LARROW",
1317
- /* 57 */ "boolproperty ::= RARROW",
1318
- /* 58 */ "boolproperty ::= LRARROW",
1319
- /* 59 */ "boolproperty ::= INVIS",
1320
- /* 60 */ "boolproperty ::= THICK",
1321
- /* 61 */ "boolproperty ::= THIN",
1322
- /* 62 */ "textposition ::=",
1323
- /* 63 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1324
- /* 64 */ "position ::= expr COMMA expr",
1325
- /* 65 */ "position ::= place PLUS expr COMMA expr",
1326
- /* 66 */ "position ::= place MINUS expr COMMA expr",
1327
- /* 67 */ "position ::= place PLUS LP expr COMMA expr RP",
1328
- /* 68 */ "position ::= place MINUS LP expr COMMA expr RP",
1329
- /* 69 */ "position ::= LP position COMMA position RP",
1330
- /* 70 */ "position ::= LP position RP",
1331
- /* 71 */ "position ::= expr between position AND position",
1332
- /* 72 */ "position ::= expr ABOVE position",
1333
- /* 73 */ "position ::= expr BELOW position",
1334
- /* 74 */ "position ::= expr LEFT OF position",
1335
- /* 75 */ "position ::= expr RIGHT OF position",
1336
- /* 76 */ "position ::= expr EDGEPT OF position",
1337
- /* 77 */ "position ::= expr HEADING expr FROM position",
1338
- /* 78 */ "place ::= object",
1339
- /* 79 */ "place ::= object DOT_E edge",
1340
- /* 80 */ "place ::= object DOT_L START",
1341
- /* 81 */ "place ::= object DOT_L END",
1342
- /* 82 */ "place ::= START OF object",
1343
- /* 83 */ "place ::= END OF object",
1344
- /* 84 */ "place ::= edge OF object",
1345
- /* 85 */ "place ::= NTH VERTEX OF object",
1346
- /* 86 */ "object ::= nth",
1347
- /* 87 */ "object ::= nth OF|IN object",
1348
- /* 88 */ "objectname ::= PLACENAME",
1349
- /* 89 */ "objectname ::= objectname DOT_U PLACENAME",
1350
- /* 90 */ "nth ::= NTH CLASSNAME",
1351
- /* 91 */ "nth ::= NTH LAST CLASSNAME",
1352
- /* 92 */ "nth ::= LAST CLASSNAME",
1353
- /* 93 */ "nth ::= LAST",
1354
- /* 94 */ "nth ::= NTH LB RB",
1355
- /* 95 */ "nth ::= NTH LAST LB RB",
1356
- /* 96 */ "nth ::= LAST LB RB",
1357
- /* 97 */ "expr ::= expr PLUS expr",
1358
- /* 98 */ "expr ::= expr MINUS expr",
1359
- /* 99 */ "expr ::= expr STAR expr",
1360
- /* 100 */ "expr ::= expr SLASH expr",
1361
- /* 101 */ "expr ::= MINUS expr",
1362
- /* 102 */ "expr ::= PLUS expr",
1363
- /* 103 */ "expr ::= LP expr RP",
1364
- /* 104 */ "expr ::= NUMBER",
1365
- /* 105 */ "expr ::= ID",
1366
- /* 106 */ "expr ::= FUNC1 LP expr RP",
1367
- /* 107 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1368
- /* 108 */ "expr ::= object DOT_L locproperty",
1369
- /* 109 */ "expr ::= object DOT_L numproperty",
1370
- /* 110 */ "expr ::= object DOT_L dashproperty",
1371
- /* 111 */ "expr ::= object DOT_L colorproperty",
1372
- /* 112 */ "expr ::= object DOT_E edge DOT_L X",
1373
- /* 113 */ "expr ::= object DOT_E edge DOT_L Y",
1374
- /* 114 */ "expr ::= LP locproperty OF object RP",
1375
- /* 115 */ "expr ::= LP dashproperty OF object RP",
1376
- /* 116 */ "expr ::= LP numproperty OF object RP",
1377
- /* 117 */ "expr ::= LP colorproperty OF object RP",
1378
- /* 118 */ "expr ::= NTH VERTEX OF object DOT_L X",
1379
- /* 119 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1380
- /* 120 */ "lvalue ::= ID",
1381
- /* 121 */ "lvalue ::= FILL",
1382
- /* 122 */ "lvalue ::= COLOR",
1383
- /* 123 */ "lvalue ::= THICKNESS",
1384
- /* 124 */ "rvalue ::= expr",
1385
- /* 125 */ "print ::= PRINT",
1386
- /* 126 */ "prlist ::= pritem",
1387
- /* 127 */ "prlist ::= prlist prsep pritem",
1388
- /* 128 */ "direction ::= UP",
1389
- /* 129 */ "direction ::= DOWN",
1390
- /* 130 */ "direction ::= LEFT",
1391
- /* 131 */ "direction ::= RIGHT",
1392
- /* 132 */ "attribute_list ::= alist",
1393
- /* 133 */ "alist ::=",
1394
- /* 134 */ "alist ::= alist attribute",
1395
- /* 135 */ "attribute ::= boolproperty",
1396
- /* 136 */ "attribute ::= WITH withclause",
1397
- /* 137 */ "go ::= GO",
1398
- /* 138 */ "go ::=",
1399
- /* 139 */ "even ::= UNTIL EVEN WITH",
1400
- /* 140 */ "even ::= EVEN WITH",
1401
- /* 141 */ "withclause ::= with",
1402
- /* 142 */ "withclause ::= withclause AND with",
1325
+ /* 51 */ "attribute ::= BEHIND object",
1326
+ /* 52 */ "withclause ::= DOT_E edge AT position",
1327
+ /* 53 */ "withclause ::= edge AT position",
1328
+ /* 54 */ "numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS",
1329
+ /* 55 */ "boolproperty ::= CW",
1330
+ /* 56 */ "boolproperty ::= CCW",
1331
+ /* 57 */ "boolproperty ::= LARROW",
1332
+ /* 58 */ "boolproperty ::= RARROW",
1333
+ /* 59 */ "boolproperty ::= LRARROW",
1334
+ /* 60 */ "boolproperty ::= INVIS",
1335
+ /* 61 */ "boolproperty ::= THICK",
1336
+ /* 62 */ "boolproperty ::= THIN",
1337
+ /* 63 */ "textposition ::=",
1338
+ /* 64 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1339
+ /* 65 */ "position ::= expr COMMA expr",
1340
+ /* 66 */ "position ::= place PLUS expr COMMA expr",
1341
+ /* 67 */ "position ::= place MINUS expr COMMA expr",
1342
+ /* 68 */ "position ::= place PLUS LP expr COMMA expr RP",
1343
+ /* 69 */ "position ::= place MINUS LP expr COMMA expr RP",
1344
+ /* 70 */ "position ::= LP position COMMA position RP",
1345
+ /* 71 */ "position ::= LP position RP",
1346
+ /* 72 */ "position ::= expr between position AND position",
1347
+ /* 73 */ "position ::= expr LT position COMMA position GT",
1348
+ /* 74 */ "position ::= expr ABOVE position",
1349
+ /* 75 */ "position ::= expr BELOW position",
1350
+ /* 76 */ "position ::= expr LEFT OF position",
1351
+ /* 77 */ "position ::= expr RIGHT OF position",
1352
+ /* 78 */ "position ::= expr EDGEPT OF position",
1353
+ /* 79 */ "position ::= expr HEADING expr FROM position",
1354
+ /* 80 */ "place ::= object",
1355
+ /* 81 */ "place ::= object DOT_E edge",
1356
+ /* 82 */ "place ::= object DOT_L START",
1357
+ /* 83 */ "place ::= object DOT_L END",
1358
+ /* 84 */ "place ::= START OF object",
1359
+ /* 85 */ "place ::= END OF object",
1360
+ /* 86 */ "place ::= edge OF object",
1361
+ /* 87 */ "place ::= NTH VERTEX OF object",
1362
+ /* 88 */ "object ::= nth",
1363
+ /* 89 */ "object ::= nth OF|IN object",
1364
+ /* 90 */ "objectname ::= PLACENAME",
1365
+ /* 91 */ "objectname ::= objectname DOT_U PLACENAME",
1366
+ /* 92 */ "nth ::= NTH CLASSNAME",
1367
+ /* 93 */ "nth ::= NTH LAST CLASSNAME",
1368
+ /* 94 */ "nth ::= LAST CLASSNAME",
1369
+ /* 95 */ "nth ::= LAST",
1370
+ /* 96 */ "nth ::= NTH LB RB",
1371
+ /* 97 */ "nth ::= NTH LAST LB RB",
1372
+ /* 98 */ "nth ::= LAST LB RB",
1373
+ /* 99 */ "expr ::= expr PLUS expr",
1374
+ /* 100 */ "expr ::= expr MINUS expr",
1375
+ /* 101 */ "expr ::= expr STAR expr",
1376
+ /* 102 */ "expr ::= expr SLASH expr",
1377
+ /* 103 */ "expr ::= MINUS expr",
1378
+ /* 104 */ "expr ::= PLUS expr",
1379
+ /* 105 */ "expr ::= LP expr RP",
1380
+ /* 106 */ "expr ::= NUMBER",
1381
+ /* 107 */ "expr ::= ID",
1382
+ /* 108 */ "expr ::= FUNC1 LP expr RP",
1383
+ /* 109 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1384
+ /* 110 */ "expr ::= object DOT_L locproperty",
1385
+ /* 111 */ "expr ::= object DOT_L numproperty",
1386
+ /* 112 */ "expr ::= object DOT_L dashproperty",
1387
+ /* 113 */ "expr ::= object DOT_L colorproperty",
1388
+ /* 114 */ "expr ::= object DOT_E edge DOT_L X",
1389
+ /* 115 */ "expr ::= object DOT_E edge DOT_L Y",
1390
+ /* 116 */ "expr ::= LP locproperty OF object RP",
1391
+ /* 117 */ "expr ::= LP dashproperty OF object RP",
1392
+ /* 118 */ "expr ::= LP numproperty OF object RP",
1393
+ /* 119 */ "expr ::= LP colorproperty OF object RP",
1394
+ /* 120 */ "expr ::= NTH VERTEX OF object DOT_L X",
1395
+ /* 121 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1396
+ /* 122 */ "lvalue ::= ID",
1397
+ /* 123 */ "lvalue ::= FILL",
1398
+ /* 124 */ "lvalue ::= COLOR",
1399
+ /* 125 */ "lvalue ::= THICKNESS",
1400
+ /* 126 */ "rvalue ::= expr",
1401
+ /* 127 */ "print ::= PRINT",
1402
+ /* 128 */ "prlist ::= pritem",
1403
+ /* 129 */ "prlist ::= prlist prsep pritem",
1404
+ /* 130 */ "direction ::= UP",
1405
+ /* 131 */ "direction ::= DOWN",
1406
+ /* 132 */ "direction ::= LEFT",
1407
+ /* 133 */ "direction ::= RIGHT",
1408
+ /* 134 */ "attribute_list ::= alist",
1409
+ /* 135 */ "alist ::=",
1410
+ /* 136 */ "alist ::= alist attribute",
1411
+ /* 137 */ "attribute ::= boolproperty",
1412
+ /* 138 */ "attribute ::= WITH withclause",
1413
+ /* 139 */ "go ::= GO",
1414
+ /* 140 */ "go ::=",
1415
+ /* 141 */ "even ::= UNTIL EVEN WITH",
1416
+ /* 142 */ "even ::= EVEN WITH",
14031417
/* 143 */ "dashproperty ::= DOTTED",
14041418
/* 144 */ "dashproperty ::= DASHED",
14051419
/* 145 */ "colorproperty ::= FILL",
14061420
/* 146 */ "colorproperty ::= COLOR",
14071421
/* 147 */ "position ::= place",
@@ -1538,24 +1552,24 @@
15381552
** Note: during a reduce, the only symbols destroyed are those
15391553
** which appear on the RHS of the rule, but which are *not* used
15401554
** inside the C code.
15411555
*/
15421556
/********* Begin destructor definitions ***************************************/
1543
- case 87: /* element_list */
1544
-{
1545
-#line 444 "pikchr.y"
1546
-pik_elist_free(p,(yypminor->yy66));
1547
-#line 1572 "pikchr.c"
1548
-}
1549
- break;
1550
- case 88: /* element */
1551
- case 89: /* unnamed_element */
1552
- case 90: /* basetype */
1553
-{
1554
-#line 446 "pikchr.y"
1555
-pik_elem_free(p,(yypminor->yy2));
1556
-#line 1581 "pikchr.c"
1557
+ case 90: /* element_list */
1558
+{
1559
+#line 445 "pikchr.y"
1560
+pik_elist_free(p,(yypminor->yy80));
1561
+#line 1586 "pikchr.c"
1562
+}
1563
+ break;
1564
+ case 91: /* element */
1565
+ case 92: /* unnamed_element */
1566
+ case 93: /* basetype */
1567
+{
1568
+#line 447 "pikchr.y"
1569
+pik_elem_free(p,(yypminor->yy174));
1570
+#line 1595 "pikchr.c"
15571571
}
15581572
break;
15591573
/********* End destructor definitions *****************************************/
15601574
default: break; /* If no destructor action specified: do nothing */
15611575
}
@@ -1769,14 +1783,14 @@
17691783
#endif
17701784
while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
17711785
/* Here code is inserted which will execute if the parser
17721786
** stack every overflows */
17731787
/******** Begin %stack_overflow code ******************************************/
1774
-#line 475 "pikchr.y"
1788
+#line 476 "pikchr.y"
17751789
17761790
pik_error(p, 0, "parser stack overflow");
1777
-#line 1802 "pikchr.c"
1791
+#line 1816 "pikchr.c"
17781792
/******** End %stack_overflow code ********************************************/
17791793
pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
17801794
pik_parserCTX_STORE
17811795
}
17821796
@@ -1844,168 +1858,168 @@
18441858
}
18451859
18461860
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
18471861
** of that rule */
18481862
static const YYCODETYPE yyRuleInfoLhs[] = {
1849
- 107, /* (0) document ::= element_list */
1850
- 87, /* (1) element_list ::= element */
1851
- 87, /* (2) element_list ::= element_list EOL element */
1852
- 88, /* (3) element ::= */
1853
- 88, /* (4) element ::= direction */
1854
- 88, /* (5) element ::= lvalue ASSIGN rvalue */
1855
- 88, /* (6) element ::= PLACENAME COLON unnamed_element */
1856
- 88, /* (7) element ::= PLACENAME COLON position */
1857
- 88, /* (8) element ::= unnamed_element */
1858
- 88, /* (9) element ::= print prlist */
1859
- 104, /* (10) rvalue ::= PLACENAME */
1860
- 110, /* (11) pritem ::= FILL */
1861
- 110, /* (12) pritem ::= COLOR */
1862
- 110, /* (13) pritem ::= THICKNESS */
1863
- 110, /* (14) pritem ::= rvalue */
1864
- 110, /* (15) pritem ::= STRING */
1865
- 111, /* (16) prsep ::= COMMA */
1866
- 89, /* (17) unnamed_element ::= basetype attribute_list */
1867
- 90, /* (18) basetype ::= CLASSNAME */
1868
- 90, /* (19) basetype ::= STRING textposition */
1869
- 90, /* (20) basetype ::= LB savelist element_list RB */
1870
- 113, /* (21) savelist ::= */
1871
- 112, /* (22) attribute_list ::= expr */
1872
- 112, /* (23) attribute_list ::= expr PERCENT */
1873
- 115, /* (24) attribute ::= numproperty expr PERCENT */
1874
- 115, /* (25) attribute ::= numproperty expr */
1875
- 115, /* (26) attribute ::= dashproperty expr */
1876
- 115, /* (27) attribute ::= dashproperty */
1877
- 115, /* (28) attribute ::= colorproperty rvalue */
1878
- 115, /* (29) attribute ::= go direction expr PERCENT */
1879
- 115, /* (30) attribute ::= go direction expr */
1880
- 115, /* (31) attribute ::= go direction */
1881
- 115, /* (32) attribute ::= go direction even position */
1882
- 115, /* (33) attribute ::= CLOSE */
1883
- 115, /* (34) attribute ::= CHOP */
1884
- 115, /* (35) attribute ::= FROM position */
1885
- 115, /* (36) attribute ::= TO position */
1886
- 115, /* (37) attribute ::= THEN */
1887
- 115, /* (38) attribute ::= THEN expr HEADING expr */
1888
- 115, /* (39) attribute ::= THEN HEADING expr */
1889
- 115, /* (40) attribute ::= THEN expr EDGEPT */
1890
- 115, /* (41) attribute ::= THEN EDGEPT */
1891
- 115, /* (42) attribute ::= GO expr HEADING expr */
1892
- 115, /* (43) attribute ::= GO HEADING expr */
1893
- 115, /* (44) attribute ::= GO expr EDGEPT */
1894
- 115, /* (45) attribute ::= GO EDGEPT */
1895
- 115, /* (46) attribute ::= AT position */
1896
- 115, /* (47) attribute ::= SAME */
1897
- 115, /* (48) attribute ::= SAME AS object */
1898
- 115, /* (49) attribute ::= STRING textposition */
1899
- 115, /* (50) attribute ::= FIT */
1900
- 119, /* (51) with ::= DOT_E edge AT position */
1901
- 119, /* (52) with ::= edge AT position */
1902
- 92, /* (53) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1903
- 117, /* (54) boolproperty ::= CW */
1904
- 117, /* (55) boolproperty ::= CCW */
1905
- 117, /* (56) boolproperty ::= LARROW */
1906
- 117, /* (57) boolproperty ::= RARROW */
1907
- 117, /* (58) boolproperty ::= LRARROW */
1908
- 117, /* (59) boolproperty ::= INVIS */
1909
- 117, /* (60) boolproperty ::= THICK */
1910
- 117, /* (61) boolproperty ::= THIN */
1911
- 103, /* (62) textposition ::= */
1912
- 103, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1913
- 98, /* (64) position ::= expr COMMA expr */
1914
- 98, /* (65) position ::= place PLUS expr COMMA expr */
1915
- 98, /* (66) position ::= place MINUS expr COMMA expr */
1916
- 98, /* (67) position ::= place PLUS LP expr COMMA expr RP */
1917
- 98, /* (68) position ::= place MINUS LP expr COMMA expr RP */
1918
- 98, /* (69) position ::= LP position COMMA position RP */
1919
- 98, /* (70) position ::= LP position RP */
1920
- 98, /* (71) position ::= expr between position AND position */
1921
- 98, /* (72) position ::= expr ABOVE position */
1922
- 98, /* (73) position ::= expr BELOW position */
1923
- 98, /* (74) position ::= expr LEFT OF position */
1924
- 98, /* (75) position ::= expr RIGHT OF position */
1925
- 98, /* (76) position ::= expr EDGEPT OF position */
1926
- 98, /* (77) position ::= expr HEADING expr FROM position */
1927
- 99, /* (78) place ::= object */
1928
- 99, /* (79) place ::= object DOT_E edge */
1929
- 99, /* (80) place ::= object DOT_L START */
1930
- 99, /* (81) place ::= object DOT_L END */
1931
- 99, /* (82) place ::= START OF object */
1932
- 99, /* (83) place ::= END OF object */
1933
- 99, /* (84) place ::= edge OF object */
1934
- 99, /* (85) place ::= NTH VERTEX OF object */
1935
- 100, /* (86) object ::= nth */
1936
- 100, /* (87) object ::= nth OF|IN object */
1937
- 101, /* (88) objectname ::= PLACENAME */
1938
- 101, /* (89) objectname ::= objectname DOT_U PLACENAME */
1939
- 102, /* (90) nth ::= NTH CLASSNAME */
1940
- 102, /* (91) nth ::= NTH LAST CLASSNAME */
1941
- 102, /* (92) nth ::= LAST CLASSNAME */
1942
- 102, /* (93) nth ::= LAST */
1943
- 102, /* (94) nth ::= NTH LB RB */
1944
- 102, /* (95) nth ::= NTH LAST LB RB */
1945
- 102, /* (96) nth ::= LAST LB RB */
1946
- 91, /* (97) expr ::= expr PLUS expr */
1947
- 91, /* (98) expr ::= expr MINUS expr */
1948
- 91, /* (99) expr ::= expr STAR expr */
1949
- 91, /* (100) expr ::= expr SLASH expr */
1950
- 91, /* (101) expr ::= MINUS expr */
1951
- 91, /* (102) expr ::= PLUS expr */
1952
- 91, /* (103) expr ::= LP expr RP */
1953
- 91, /* (104) expr ::= NUMBER */
1954
- 91, /* (105) expr ::= ID */
1955
- 91, /* (106) expr ::= FUNC1 LP expr RP */
1956
- 91, /* (107) expr ::= FUNC2 LP expr COMMA expr RP */
1957
- 91, /* (108) expr ::= object DOT_L locproperty */
1958
- 91, /* (109) expr ::= object DOT_L numproperty */
1959
- 91, /* (110) expr ::= object DOT_L dashproperty */
1960
- 91, /* (111) expr ::= object DOT_L colorproperty */
1961
- 91, /* (112) expr ::= object DOT_E edge DOT_L X */
1962
- 91, /* (113) expr ::= object DOT_E edge DOT_L Y */
1963
- 91, /* (114) expr ::= LP locproperty OF object RP */
1964
- 91, /* (115) expr ::= LP dashproperty OF object RP */
1965
- 91, /* (116) expr ::= LP numproperty OF object RP */
1966
- 91, /* (117) expr ::= LP colorproperty OF object RP */
1967
- 91, /* (118) expr ::= NTH VERTEX OF object DOT_L X */
1968
- 91, /* (119) expr ::= NTH VERTEX OF object DOT_L Y */
1969
- 105, /* (120) lvalue ::= ID */
1970
- 105, /* (121) lvalue ::= FILL */
1971
- 105, /* (122) lvalue ::= COLOR */
1972
- 105, /* (123) lvalue ::= THICKNESS */
1973
- 104, /* (124) rvalue ::= expr */
1974
- 108, /* (125) print ::= PRINT */
1975
- 109, /* (126) prlist ::= pritem */
1976
- 109, /* (127) prlist ::= prlist prsep pritem */
1977
- 94, /* (128) direction ::= UP */
1978
- 94, /* (129) direction ::= DOWN */
1979
- 94, /* (130) direction ::= LEFT */
1980
- 94, /* (131) direction ::= RIGHT */
1981
- 112, /* (132) attribute_list ::= alist */
1982
- 114, /* (133) alist ::= */
1983
- 114, /* (134) alist ::= alist attribute */
1984
- 115, /* (135) attribute ::= boolproperty */
1985
- 115, /* (136) attribute ::= WITH withclause */
1986
- 116, /* (137) go ::= GO */
1987
- 116, /* (138) go ::= */
1988
- 106, /* (139) even ::= UNTIL EVEN WITH */
1989
- 106, /* (140) even ::= EVEN WITH */
1990
- 118, /* (141) withclause ::= with */
1991
- 118, /* (142) withclause ::= withclause AND with */
1992
- 95, /* (143) dashproperty ::= DOTTED */
1993
- 95, /* (144) dashproperty ::= DASHED */
1994
- 96, /* (145) colorproperty ::= FILL */
1995
- 96, /* (146) colorproperty ::= COLOR */
1996
- 98, /* (147) position ::= place */
1997
- 120, /* (148) between ::= WAY BETWEEN */
1998
- 120, /* (149) between ::= BETWEEN */
1999
- 120, /* (150) between ::= OF THE WAY BETWEEN */
2000
- 100, /* (151) object ::= objectname */
2001
- 97, /* (152) locproperty ::= X|Y */
2002
- 93, /* (153) edge ::= EDGEPT */
2003
- 93, /* (154) edge ::= TOP */
2004
- 93, /* (155) edge ::= BOTTOM */
2005
- 93, /* (156) edge ::= LEFT */
2006
- 93, /* (157) edge ::= RIGHT */
1863
+ 110, /* (0) document ::= element_list */
1864
+ 90, /* (1) element_list ::= element */
1865
+ 90, /* (2) element_list ::= element_list EOL element */
1866
+ 91, /* (3) element ::= */
1867
+ 91, /* (4) element ::= direction */
1868
+ 91, /* (5) element ::= lvalue ASSIGN rvalue */
1869
+ 91, /* (6) element ::= PLACENAME COLON unnamed_element */
1870
+ 91, /* (7) element ::= PLACENAME COLON position */
1871
+ 91, /* (8) element ::= unnamed_element */
1872
+ 91, /* (9) element ::= print prlist */
1873
+ 107, /* (10) rvalue ::= PLACENAME */
1874
+ 113, /* (11) pritem ::= FILL */
1875
+ 113, /* (12) pritem ::= COLOR */
1876
+ 113, /* (13) pritem ::= THICKNESS */
1877
+ 113, /* (14) pritem ::= rvalue */
1878
+ 113, /* (15) pritem ::= STRING */
1879
+ 114, /* (16) prsep ::= COMMA */
1880
+ 92, /* (17) unnamed_element ::= basetype attribute_list */
1881
+ 93, /* (18) basetype ::= CLASSNAME */
1882
+ 93, /* (19) basetype ::= STRING textposition */
1883
+ 93, /* (20) basetype ::= LB savelist element_list RB */
1884
+ 116, /* (21) savelist ::= */
1885
+ 115, /* (22) attribute_list ::= expr */
1886
+ 115, /* (23) attribute_list ::= expr PERCENT */
1887
+ 118, /* (24) attribute ::= numproperty expr PERCENT */
1888
+ 118, /* (25) attribute ::= numproperty expr */
1889
+ 118, /* (26) attribute ::= dashproperty expr */
1890
+ 118, /* (27) attribute ::= dashproperty */
1891
+ 118, /* (28) attribute ::= colorproperty rvalue */
1892
+ 118, /* (29) attribute ::= go direction expr PERCENT */
1893
+ 118, /* (30) attribute ::= go direction expr */
1894
+ 118, /* (31) attribute ::= go direction */
1895
+ 118, /* (32) attribute ::= go direction even position */
1896
+ 118, /* (33) attribute ::= CLOSE */
1897
+ 118, /* (34) attribute ::= CHOP */
1898
+ 118, /* (35) attribute ::= FROM position */
1899
+ 118, /* (36) attribute ::= TO position */
1900
+ 118, /* (37) attribute ::= THEN */
1901
+ 118, /* (38) attribute ::= THEN expr HEADING expr */
1902
+ 118, /* (39) attribute ::= THEN HEADING expr */
1903
+ 118, /* (40) attribute ::= THEN expr EDGEPT */
1904
+ 118, /* (41) attribute ::= THEN EDGEPT */
1905
+ 118, /* (42) attribute ::= GO expr HEADING expr */
1906
+ 118, /* (43) attribute ::= GO HEADING expr */
1907
+ 118, /* (44) attribute ::= GO expr EDGEPT */
1908
+ 118, /* (45) attribute ::= GO EDGEPT */
1909
+ 118, /* (46) attribute ::= AT position */
1910
+ 118, /* (47) attribute ::= SAME */
1911
+ 118, /* (48) attribute ::= SAME AS object */
1912
+ 118, /* (49) attribute ::= STRING textposition */
1913
+ 118, /* (50) attribute ::= FIT */
1914
+ 118, /* (51) attribute ::= BEHIND object */
1915
+ 121, /* (52) withclause ::= DOT_E edge AT position */
1916
+ 121, /* (53) withclause ::= edge AT position */
1917
+ 95, /* (54) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1918
+ 120, /* (55) boolproperty ::= CW */
1919
+ 120, /* (56) boolproperty ::= CCW */
1920
+ 120, /* (57) boolproperty ::= LARROW */
1921
+ 120, /* (58) boolproperty ::= RARROW */
1922
+ 120, /* (59) boolproperty ::= LRARROW */
1923
+ 120, /* (60) boolproperty ::= INVIS */
1924
+ 120, /* (61) boolproperty ::= THICK */
1925
+ 120, /* (62) boolproperty ::= THIN */
1926
+ 106, /* (63) textposition ::= */
1927
+ 106, /* (64) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1928
+ 101, /* (65) position ::= expr COMMA expr */
1929
+ 101, /* (66) position ::= place PLUS expr COMMA expr */
1930
+ 101, /* (67) position ::= place MINUS expr COMMA expr */
1931
+ 101, /* (68) position ::= place PLUS LP expr COMMA expr RP */
1932
+ 101, /* (69) position ::= place MINUS LP expr COMMA expr RP */
1933
+ 101, /* (70) position ::= LP position COMMA position RP */
1934
+ 101, /* (71) position ::= LP position RP */
1935
+ 101, /* (72) position ::= expr between position AND position */
1936
+ 101, /* (73) position ::= expr LT position COMMA position GT */
1937
+ 101, /* (74) position ::= expr ABOVE position */
1938
+ 101, /* (75) position ::= expr BELOW position */
1939
+ 101, /* (76) position ::= expr LEFT OF position */
1940
+ 101, /* (77) position ::= expr RIGHT OF position */
1941
+ 101, /* (78) position ::= expr EDGEPT OF position */
1942
+ 101, /* (79) position ::= expr HEADING expr FROM position */
1943
+ 102, /* (80) place ::= object */
1944
+ 102, /* (81) place ::= object DOT_E edge */
1945
+ 102, /* (82) place ::= object DOT_L START */
1946
+ 102, /* (83) place ::= object DOT_L END */
1947
+ 102, /* (84) place ::= START OF object */
1948
+ 102, /* (85) place ::= END OF object */
1949
+ 102, /* (86) place ::= edge OF object */
1950
+ 102, /* (87) place ::= NTH VERTEX OF object */
1951
+ 103, /* (88) object ::= nth */
1952
+ 103, /* (89) object ::= nth OF|IN object */
1953
+ 104, /* (90) objectname ::= PLACENAME */
1954
+ 104, /* (91) objectname ::= objectname DOT_U PLACENAME */
1955
+ 105, /* (92) nth ::= NTH CLASSNAME */
1956
+ 105, /* (93) nth ::= NTH LAST CLASSNAME */
1957
+ 105, /* (94) nth ::= LAST CLASSNAME */
1958
+ 105, /* (95) nth ::= LAST */
1959
+ 105, /* (96) nth ::= NTH LB RB */
1960
+ 105, /* (97) nth ::= NTH LAST LB RB */
1961
+ 105, /* (98) nth ::= LAST LB RB */
1962
+ 94, /* (99) expr ::= expr PLUS expr */
1963
+ 94, /* (100) expr ::= expr MINUS expr */
1964
+ 94, /* (101) expr ::= expr STAR expr */
1965
+ 94, /* (102) expr ::= expr SLASH expr */
1966
+ 94, /* (103) expr ::= MINUS expr */
1967
+ 94, /* (104) expr ::= PLUS expr */
1968
+ 94, /* (105) expr ::= LP expr RP */
1969
+ 94, /* (106) expr ::= NUMBER */
1970
+ 94, /* (107) expr ::= ID */
1971
+ 94, /* (108) expr ::= FUNC1 LP expr RP */
1972
+ 94, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
1973
+ 94, /* (110) expr ::= object DOT_L locproperty */
1974
+ 94, /* (111) expr ::= object DOT_L numproperty */
1975
+ 94, /* (112) expr ::= object DOT_L dashproperty */
1976
+ 94, /* (113) expr ::= object DOT_L colorproperty */
1977
+ 94, /* (114) expr ::= object DOT_E edge DOT_L X */
1978
+ 94, /* (115) expr ::= object DOT_E edge DOT_L Y */
1979
+ 94, /* (116) expr ::= LP locproperty OF object RP */
1980
+ 94, /* (117) expr ::= LP dashproperty OF object RP */
1981
+ 94, /* (118) expr ::= LP numproperty OF object RP */
1982
+ 94, /* (119) expr ::= LP colorproperty OF object RP */
1983
+ 94, /* (120) expr ::= NTH VERTEX OF object DOT_L X */
1984
+ 94, /* (121) expr ::= NTH VERTEX OF object DOT_L Y */
1985
+ 108, /* (122) lvalue ::= ID */
1986
+ 108, /* (123) lvalue ::= FILL */
1987
+ 108, /* (124) lvalue ::= COLOR */
1988
+ 108, /* (125) lvalue ::= THICKNESS */
1989
+ 107, /* (126) rvalue ::= expr */
1990
+ 111, /* (127) print ::= PRINT */
1991
+ 112, /* (128) prlist ::= pritem */
1992
+ 112, /* (129) prlist ::= prlist prsep pritem */
1993
+ 97, /* (130) direction ::= UP */
1994
+ 97, /* (131) direction ::= DOWN */
1995
+ 97, /* (132) direction ::= LEFT */
1996
+ 97, /* (133) direction ::= RIGHT */
1997
+ 115, /* (134) attribute_list ::= alist */
1998
+ 117, /* (135) alist ::= */
1999
+ 117, /* (136) alist ::= alist attribute */
2000
+ 118, /* (137) attribute ::= boolproperty */
2001
+ 118, /* (138) attribute ::= WITH withclause */
2002
+ 119, /* (139) go ::= GO */
2003
+ 119, /* (140) go ::= */
2004
+ 109, /* (141) even ::= UNTIL EVEN WITH */
2005
+ 109, /* (142) even ::= EVEN WITH */
2006
+ 98, /* (143) dashproperty ::= DOTTED */
2007
+ 98, /* (144) dashproperty ::= DASHED */
2008
+ 99, /* (145) colorproperty ::= FILL */
2009
+ 99, /* (146) colorproperty ::= COLOR */
2010
+ 101, /* (147) position ::= place */
2011
+ 122, /* (148) between ::= WAY BETWEEN */
2012
+ 122, /* (149) between ::= BETWEEN */
2013
+ 122, /* (150) between ::= OF THE WAY BETWEEN */
2014
+ 103, /* (151) object ::= objectname */
2015
+ 100, /* (152) locproperty ::= X|Y */
2016
+ 96, /* (153) edge ::= EDGEPT */
2017
+ 96, /* (154) edge ::= TOP */
2018
+ 96, /* (155) edge ::= BOTTOM */
2019
+ 96, /* (156) edge ::= LEFT */
2020
+ 96, /* (157) edge ::= RIGHT */
20072021
};
20082022
20092023
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
20102024
** of symbols on the right-hand side of that rule. */
20112025
static const signed char yyRuleInfoNRhs[] = {
@@ -2058,102 +2072,102 @@
20582072
-2, /* (46) attribute ::= AT position */
20592073
-1, /* (47) attribute ::= SAME */
20602074
-3, /* (48) attribute ::= SAME AS object */
20612075
-2, /* (49) attribute ::= STRING textposition */
20622076
-1, /* (50) attribute ::= FIT */
2063
- -4, /* (51) with ::= DOT_E edge AT position */
2064
- -3, /* (52) with ::= edge AT position */
2065
- -1, /* (53) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2066
- -1, /* (54) boolproperty ::= CW */
2067
- -1, /* (55) boolproperty ::= CCW */
2068
- -1, /* (56) boolproperty ::= LARROW */
2069
- -1, /* (57) boolproperty ::= RARROW */
2070
- -1, /* (58) boolproperty ::= LRARROW */
2071
- -1, /* (59) boolproperty ::= INVIS */
2072
- -1, /* (60) boolproperty ::= THICK */
2073
- -1, /* (61) boolproperty ::= THIN */
2074
- 0, /* (62) textposition ::= */
2075
- -2, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2076
- -3, /* (64) position ::= expr COMMA expr */
2077
- -5, /* (65) position ::= place PLUS expr COMMA expr */
2078
- -5, /* (66) position ::= place MINUS expr COMMA expr */
2079
- -7, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2080
- -7, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2081
- -5, /* (69) position ::= LP position COMMA position RP */
2082
- -3, /* (70) position ::= LP position RP */
2083
- -5, /* (71) position ::= expr between position AND position */
2084
- -3, /* (72) position ::= expr ABOVE position */
2085
- -3, /* (73) position ::= expr BELOW position */
2086
- -4, /* (74) position ::= expr LEFT OF position */
2087
- -4, /* (75) position ::= expr RIGHT OF position */
2088
- -4, /* (76) position ::= expr EDGEPT OF position */
2089
- -5, /* (77) position ::= expr HEADING expr FROM position */
2090
- -1, /* (78) place ::= object */
2091
- -3, /* (79) place ::= object DOT_E edge */
2092
- -3, /* (80) place ::= object DOT_L START */
2093
- -3, /* (81) place ::= object DOT_L END */
2094
- -3, /* (82) place ::= START OF object */
2095
- -3, /* (83) place ::= END OF object */
2096
- -3, /* (84) place ::= edge OF object */
2097
- -4, /* (85) place ::= NTH VERTEX OF object */
2098
- -1, /* (86) object ::= nth */
2099
- -3, /* (87) object ::= nth OF|IN object */
2100
- -1, /* (88) objectname ::= PLACENAME */
2101
- -3, /* (89) objectname ::= objectname DOT_U PLACENAME */
2102
- -2, /* (90) nth ::= NTH CLASSNAME */
2103
- -3, /* (91) nth ::= NTH LAST CLASSNAME */
2104
- -2, /* (92) nth ::= LAST CLASSNAME */
2105
- -1, /* (93) nth ::= LAST */
2106
- -3, /* (94) nth ::= NTH LB RB */
2107
- -4, /* (95) nth ::= NTH LAST LB RB */
2108
- -3, /* (96) nth ::= LAST LB RB */
2109
- -3, /* (97) expr ::= expr PLUS expr */
2110
- -3, /* (98) expr ::= expr MINUS expr */
2111
- -3, /* (99) expr ::= expr STAR expr */
2112
- -3, /* (100) expr ::= expr SLASH expr */
2113
- -2, /* (101) expr ::= MINUS expr */
2114
- -2, /* (102) expr ::= PLUS expr */
2115
- -3, /* (103) expr ::= LP expr RP */
2116
- -1, /* (104) expr ::= NUMBER */
2117
- -1, /* (105) expr ::= ID */
2118
- -4, /* (106) expr ::= FUNC1 LP expr RP */
2119
- -6, /* (107) expr ::= FUNC2 LP expr COMMA expr RP */
2120
- -3, /* (108) expr ::= object DOT_L locproperty */
2121
- -3, /* (109) expr ::= object DOT_L numproperty */
2122
- -3, /* (110) expr ::= object DOT_L dashproperty */
2123
- -3, /* (111) expr ::= object DOT_L colorproperty */
2124
- -5, /* (112) expr ::= object DOT_E edge DOT_L X */
2125
- -5, /* (113) expr ::= object DOT_E edge DOT_L Y */
2126
- -5, /* (114) expr ::= LP locproperty OF object RP */
2127
- -5, /* (115) expr ::= LP dashproperty OF object RP */
2128
- -5, /* (116) expr ::= LP numproperty OF object RP */
2129
- -5, /* (117) expr ::= LP colorproperty OF object RP */
2130
- -6, /* (118) expr ::= NTH VERTEX OF object DOT_L X */
2131
- -6, /* (119) expr ::= NTH VERTEX OF object DOT_L Y */
2132
- -1, /* (120) lvalue ::= ID */
2133
- -1, /* (121) lvalue ::= FILL */
2134
- -1, /* (122) lvalue ::= COLOR */
2135
- -1, /* (123) lvalue ::= THICKNESS */
2136
- -1, /* (124) rvalue ::= expr */
2137
- -1, /* (125) print ::= PRINT */
2138
- -1, /* (126) prlist ::= pritem */
2139
- -3, /* (127) prlist ::= prlist prsep pritem */
2140
- -1, /* (128) direction ::= UP */
2141
- -1, /* (129) direction ::= DOWN */
2142
- -1, /* (130) direction ::= LEFT */
2143
- -1, /* (131) direction ::= RIGHT */
2144
- -1, /* (132) attribute_list ::= alist */
2145
- 0, /* (133) alist ::= */
2146
- -2, /* (134) alist ::= alist attribute */
2147
- -1, /* (135) attribute ::= boolproperty */
2148
- -2, /* (136) attribute ::= WITH withclause */
2149
- -1, /* (137) go ::= GO */
2150
- 0, /* (138) go ::= */
2151
- -3, /* (139) even ::= UNTIL EVEN WITH */
2152
- -2, /* (140) even ::= EVEN WITH */
2153
- -1, /* (141) withclause ::= with */
2154
- -3, /* (142) withclause ::= withclause AND with */
2077
+ -2, /* (51) attribute ::= BEHIND object */
2078
+ -4, /* (52) withclause ::= DOT_E edge AT position */
2079
+ -3, /* (53) withclause ::= edge AT position */
2080
+ -1, /* (54) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2081
+ -1, /* (55) boolproperty ::= CW */
2082
+ -1, /* (56) boolproperty ::= CCW */
2083
+ -1, /* (57) boolproperty ::= LARROW */
2084
+ -1, /* (58) boolproperty ::= RARROW */
2085
+ -1, /* (59) boolproperty ::= LRARROW */
2086
+ -1, /* (60) boolproperty ::= INVIS */
2087
+ -1, /* (61) boolproperty ::= THICK */
2088
+ -1, /* (62) boolproperty ::= THIN */
2089
+ 0, /* (63) textposition ::= */
2090
+ -2, /* (64) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2091
+ -3, /* (65) position ::= expr COMMA expr */
2092
+ -5, /* (66) position ::= place PLUS expr COMMA expr */
2093
+ -5, /* (67) position ::= place MINUS expr COMMA expr */
2094
+ -7, /* (68) position ::= place PLUS LP expr COMMA expr RP */
2095
+ -7, /* (69) position ::= place MINUS LP expr COMMA expr RP */
2096
+ -5, /* (70) position ::= LP position COMMA position RP */
2097
+ -3, /* (71) position ::= LP position RP */
2098
+ -5, /* (72) position ::= expr between position AND position */
2099
+ -6, /* (73) position ::= expr LT position COMMA position GT */
2100
+ -3, /* (74) position ::= expr ABOVE position */
2101
+ -3, /* (75) position ::= expr BELOW position */
2102
+ -4, /* (76) position ::= expr LEFT OF position */
2103
+ -4, /* (77) position ::= expr RIGHT OF position */
2104
+ -4, /* (78) position ::= expr EDGEPT OF position */
2105
+ -5, /* (79) position ::= expr HEADING expr FROM position */
2106
+ -1, /* (80) place ::= object */
2107
+ -3, /* (81) place ::= object DOT_E edge */
2108
+ -3, /* (82) place ::= object DOT_L START */
2109
+ -3, /* (83) place ::= object DOT_L END */
2110
+ -3, /* (84) place ::= START OF object */
2111
+ -3, /* (85) place ::= END OF object */
2112
+ -3, /* (86) place ::= edge OF object */
2113
+ -4, /* (87) place ::= NTH VERTEX OF object */
2114
+ -1, /* (88) object ::= nth */
2115
+ -3, /* (89) object ::= nth OF|IN object */
2116
+ -1, /* (90) objectname ::= PLACENAME */
2117
+ -3, /* (91) objectname ::= objectname DOT_U PLACENAME */
2118
+ -2, /* (92) nth ::= NTH CLASSNAME */
2119
+ -3, /* (93) nth ::= NTH LAST CLASSNAME */
2120
+ -2, /* (94) nth ::= LAST CLASSNAME */
2121
+ -1, /* (95) nth ::= LAST */
2122
+ -3, /* (96) nth ::= NTH LB RB */
2123
+ -4, /* (97) nth ::= NTH LAST LB RB */
2124
+ -3, /* (98) nth ::= LAST LB RB */
2125
+ -3, /* (99) expr ::= expr PLUS expr */
2126
+ -3, /* (100) expr ::= expr MINUS expr */
2127
+ -3, /* (101) expr ::= expr STAR expr */
2128
+ -3, /* (102) expr ::= expr SLASH expr */
2129
+ -2, /* (103) expr ::= MINUS expr */
2130
+ -2, /* (104) expr ::= PLUS expr */
2131
+ -3, /* (105) expr ::= LP expr RP */
2132
+ -1, /* (106) expr ::= NUMBER */
2133
+ -1, /* (107) expr ::= ID */
2134
+ -4, /* (108) expr ::= FUNC1 LP expr RP */
2135
+ -6, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2136
+ -3, /* (110) expr ::= object DOT_L locproperty */
2137
+ -3, /* (111) expr ::= object DOT_L numproperty */
2138
+ -3, /* (112) expr ::= object DOT_L dashproperty */
2139
+ -3, /* (113) expr ::= object DOT_L colorproperty */
2140
+ -5, /* (114) expr ::= object DOT_E edge DOT_L X */
2141
+ -5, /* (115) expr ::= object DOT_E edge DOT_L Y */
2142
+ -5, /* (116) expr ::= LP locproperty OF object RP */
2143
+ -5, /* (117) expr ::= LP dashproperty OF object RP */
2144
+ -5, /* (118) expr ::= LP numproperty OF object RP */
2145
+ -5, /* (119) expr ::= LP colorproperty OF object RP */
2146
+ -6, /* (120) expr ::= NTH VERTEX OF object DOT_L X */
2147
+ -6, /* (121) expr ::= NTH VERTEX OF object DOT_L Y */
2148
+ -1, /* (122) lvalue ::= ID */
2149
+ -1, /* (123) lvalue ::= FILL */
2150
+ -1, /* (124) lvalue ::= COLOR */
2151
+ -1, /* (125) lvalue ::= THICKNESS */
2152
+ -1, /* (126) rvalue ::= expr */
2153
+ -1, /* (127) print ::= PRINT */
2154
+ -1, /* (128) prlist ::= pritem */
2155
+ -3, /* (129) prlist ::= prlist prsep pritem */
2156
+ -1, /* (130) direction ::= UP */
2157
+ -1, /* (131) direction ::= DOWN */
2158
+ -1, /* (132) direction ::= LEFT */
2159
+ -1, /* (133) direction ::= RIGHT */
2160
+ -1, /* (134) attribute_list ::= alist */
2161
+ 0, /* (135) alist ::= */
2162
+ -2, /* (136) alist ::= alist attribute */
2163
+ -1, /* (137) attribute ::= boolproperty */
2164
+ -2, /* (138) attribute ::= WITH withclause */
2165
+ -1, /* (139) go ::= GO */
2166
+ 0, /* (140) go ::= */
2167
+ -3, /* (141) even ::= UNTIL EVEN WITH */
2168
+ -2, /* (142) even ::= EVEN WITH */
21552169
-1, /* (143) dashproperty ::= DOTTED */
21562170
-1, /* (144) dashproperty ::= DASHED */
21572171
-1, /* (145) colorproperty ::= FILL */
21582172
-1, /* (146) colorproperty ::= COLOR */
21592173
-1, /* (147) position ::= place */
@@ -2255,616 +2269,625 @@
22552269
** break;
22562270
*/
22572271
/********** Begin reduce actions **********************************************/
22582272
YYMINORTYPE yylhsminor;
22592273
case 0: /* document ::= element_list */
2260
-#line 479 "pikchr.y"
2261
-{pik_render(p,yymsp[0].minor.yy66);}
2262
-#line 2287 "pikchr.c"
2274
+#line 480 "pikchr.y"
2275
+{pik_render(p,yymsp[0].minor.yy80);}
2276
+#line 2301 "pikchr.c"
22632277
break;
22642278
case 1: /* element_list ::= element */
2265
-#line 482 "pikchr.y"
2266
-{ yylhsminor.yy66 = pik_elist_append(p,0,yymsp[0].minor.yy2); }
2267
-#line 2292 "pikchr.c"
2268
- yymsp[0].minor.yy66 = yylhsminor.yy66;
2279
+#line 483 "pikchr.y"
2280
+{ yylhsminor.yy80 = pik_elist_append(p,0,yymsp[0].minor.yy174); }
2281
+#line 2306 "pikchr.c"
2282
+ yymsp[0].minor.yy80 = yylhsminor.yy80;
22692283
break;
22702284
case 2: /* element_list ::= element_list EOL element */
2271
-#line 484 "pikchr.y"
2272
-{ yylhsminor.yy66 = pik_elist_append(p,yymsp[-2].minor.yy66,yymsp[0].minor.yy2); }
2273
-#line 2298 "pikchr.c"
2274
- yymsp[-2].minor.yy66 = yylhsminor.yy66;
2285
+#line 485 "pikchr.y"
2286
+{ yylhsminor.yy80 = pik_elist_append(p,yymsp[-2].minor.yy80,yymsp[0].minor.yy174); }
2287
+#line 2312 "pikchr.c"
2288
+ yymsp[-2].minor.yy80 = yylhsminor.yy80;
22752289
break;
22762290
case 3: /* element ::= */
2277
-#line 487 "pikchr.y"
2278
-{ yymsp[1].minor.yy2 = 0; }
2279
-#line 2304 "pikchr.c"
2291
+#line 488 "pikchr.y"
2292
+{ yymsp[1].minor.yy174 = 0; }
2293
+#line 2318 "pikchr.c"
22802294
break;
22812295
case 4: /* element ::= direction */
2282
-#line 488 "pikchr.y"
2283
-{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy2=0; }
2284
-#line 2309 "pikchr.c"
2285
- yymsp[0].minor.yy2 = yylhsminor.yy2;
2296
+#line 489 "pikchr.y"
2297
+{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy174=0; }
2298
+#line 2323 "pikchr.c"
2299
+ yymsp[0].minor.yy174 = yylhsminor.yy174;
22862300
break;
22872301
case 5: /* element ::= lvalue ASSIGN rvalue */
2288
-#line 489 "pikchr.y"
2289
-{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy241,&yymsp[-1].minor.yy0); yylhsminor.yy2=0;}
2290
-#line 2315 "pikchr.c"
2291
- yymsp[-2].minor.yy2 = yylhsminor.yy2;
2302
+#line 490 "pikchr.y"
2303
+{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy147,&yymsp[-1].minor.yy0); yylhsminor.yy174=0;}
2304
+#line 2329 "pikchr.c"
2305
+ yymsp[-2].minor.yy174 = yylhsminor.yy174;
22922306
break;
22932307
case 6: /* element ::= PLACENAME COLON unnamed_element */
2294
-#line 491 "pikchr.y"
2295
-{ yylhsminor.yy2 = yymsp[0].minor.yy2; pik_elem_setname(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0); }
2296
-#line 2321 "pikchr.c"
2297
- yymsp[-2].minor.yy2 = yylhsminor.yy2;
2308
+#line 492 "pikchr.y"
2309
+{ yylhsminor.yy174 = yymsp[0].minor.yy174; pik_elem_setname(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0); }
2310
+#line 2335 "pikchr.c"
2311
+ yymsp[-2].minor.yy174 = yylhsminor.yy174;
22982312
break;
22992313
case 7: /* element ::= PLACENAME COLON position */
2300
-#line 493 "pikchr.y"
2301
-{ yylhsminor.yy2 = pik_elem_new(p,0,0,0);
2302
- if(yylhsminor.yy2){ yylhsminor.yy2->ptAt = yymsp[0].minor.yy187; pik_elem_setname(p,yylhsminor.yy2,&yymsp[-2].minor.yy0); }}
2303
-#line 2328 "pikchr.c"
2304
- yymsp[-2].minor.yy2 = yylhsminor.yy2;
2314
+#line 494 "pikchr.y"
2315
+{ yylhsminor.yy174 = pik_elem_new(p,0,0,0);
2316
+ if(yylhsminor.yy174){ yylhsminor.yy174->ptAt = yymsp[0].minor.yy211; pik_elem_setname(p,yylhsminor.yy174,&yymsp[-2].minor.yy0); }}
2317
+#line 2342 "pikchr.c"
2318
+ yymsp[-2].minor.yy174 = yylhsminor.yy174;
23052319
break;
23062320
case 8: /* element ::= unnamed_element */
2307
-#line 495 "pikchr.y"
2308
-{yylhsminor.yy2 = yymsp[0].minor.yy2;}
2309
-#line 2334 "pikchr.c"
2310
- yymsp[0].minor.yy2 = yylhsminor.yy2;
2321
+#line 496 "pikchr.y"
2322
+{yylhsminor.yy174 = yymsp[0].minor.yy174;}
2323
+#line 2348 "pikchr.c"
2324
+ yymsp[0].minor.yy174 = yylhsminor.yy174;
23112325
break;
23122326
case 9: /* element ::= print prlist */
2313
-#line 496 "pikchr.y"
2314
-{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy2=0;}
2315
-#line 2340 "pikchr.c"
2327
+#line 497 "pikchr.y"
2328
+{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy174=0;}
2329
+#line 2354 "pikchr.c"
23162330
break;
23172331
case 10: /* rvalue ::= PLACENAME */
2318
-#line 507 "pikchr.y"
2319
-{yylhsminor.yy241 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2320
-#line 2345 "pikchr.c"
2321
- yymsp[0].minor.yy241 = yylhsminor.yy241;
2332
+#line 508 "pikchr.y"
2333
+{yylhsminor.yy147 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2334
+#line 2359 "pikchr.c"
2335
+ yymsp[0].minor.yy147 = yylhsminor.yy147;
23222336
break;
23232337
case 11: /* pritem ::= FILL */
23242338
case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
23252339
case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
2326
-#line 512 "pikchr.y"
2340
+#line 513 "pikchr.y"
23272341
{pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2328
-#line 2353 "pikchr.c"
2342
+#line 2367 "pikchr.c"
23292343
break;
23302344
case 14: /* pritem ::= rvalue */
2331
-#line 515 "pikchr.y"
2332
-{pik_append_num(p,"",yymsp[0].minor.yy241);}
2333
-#line 2358 "pikchr.c"
2345
+#line 516 "pikchr.y"
2346
+{pik_append_num(p,"",yymsp[0].minor.yy147);}
2347
+#line 2372 "pikchr.c"
23342348
break;
23352349
case 15: /* pritem ::= STRING */
2336
-#line 516 "pikchr.y"
2350
+#line 517 "pikchr.y"
23372351
{pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2338
-#line 2363 "pikchr.c"
2352
+#line 2377 "pikchr.c"
23392353
break;
23402354
case 16: /* prsep ::= COMMA */
2341
-#line 517 "pikchr.y"
2355
+#line 518 "pikchr.y"
23422356
{pik_append(p, " ", 1);}
2343
-#line 2368 "pikchr.c"
2357
+#line 2382 "pikchr.c"
23442358
break;
23452359
case 17: /* unnamed_element ::= basetype attribute_list */
2346
-#line 520 "pikchr.y"
2347
-{yylhsminor.yy2 = yymsp[-1].minor.yy2; pik_after_adding_attributes(p,yylhsminor.yy2);}
2348
-#line 2373 "pikchr.c"
2349
- yymsp[-1].minor.yy2 = yylhsminor.yy2;
2360
+#line 521 "pikchr.y"
2361
+{yylhsminor.yy174 = yymsp[-1].minor.yy174; pik_after_adding_attributes(p,yylhsminor.yy174);}
2362
+#line 2387 "pikchr.c"
2363
+ yymsp[-1].minor.yy174 = yylhsminor.yy174;
23502364
break;
23512365
case 18: /* basetype ::= CLASSNAME */
2352
-#line 522 "pikchr.y"
2353
-{yylhsminor.yy2 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2354
-#line 2379 "pikchr.c"
2355
- yymsp[0].minor.yy2 = yylhsminor.yy2;
2366
+#line 523 "pikchr.y"
2367
+{yylhsminor.yy174 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2368
+#line 2393 "pikchr.c"
2369
+ yymsp[0].minor.yy174 = yylhsminor.yy174;
23562370
break;
23572371
case 19: /* basetype ::= STRING textposition */
2358
-#line 524 "pikchr.y"
2359
-{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy86; yylhsminor.yy2 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2360
-#line 2385 "pikchr.c"
2361
- yymsp[-1].minor.yy2 = yylhsminor.yy2;
2372
+#line 525 "pikchr.y"
2373
+{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy34; yylhsminor.yy174 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2374
+#line 2399 "pikchr.c"
2375
+ yymsp[-1].minor.yy174 = yylhsminor.yy174;
23622376
break;
23632377
case 20: /* basetype ::= LB savelist element_list RB */
2364
-#line 526 "pikchr.y"
2365
-{ p->list = yymsp[-2].minor.yy66; yymsp[-3].minor.yy2 = pik_elem_new(p,0,0,yymsp[-1].minor.yy66); if(yymsp[-3].minor.yy2) yymsp[-3].minor.yy2->errTok = yymsp[0].minor.yy0; }
2366
-#line 2391 "pikchr.c"
2378
+#line 527 "pikchr.y"
2379
+{ p->list = yymsp[-2].minor.yy80; yymsp[-3].minor.yy174 = pik_elem_new(p,0,0,yymsp[-1].minor.yy80); if(yymsp[-3].minor.yy174) yymsp[-3].minor.yy174->errTok = yymsp[0].minor.yy0; }
2380
+#line 2405 "pikchr.c"
23672381
break;
23682382
case 21: /* savelist ::= */
2369
-#line 531 "pikchr.y"
2370
-{yymsp[1].minor.yy66 = p->list; p->list = 0;}
2371
-#line 2396 "pikchr.c"
2383
+#line 532 "pikchr.y"
2384
+{yymsp[1].minor.yy80 = p->list; p->list = 0;}
2385
+#line 2410 "pikchr.c"
23722386
break;
23732387
case 22: /* attribute_list ::= expr */
2374
-#line 538 "pikchr.y"
2375
-{ pik_add_direction(p,0,&yymsp[0].minor.yy241,0);}
2376
-#line 2401 "pikchr.c"
2388
+#line 539 "pikchr.y"
2389
+{ pik_add_direction(p,0,&yymsp[0].minor.yy147,0);}
2390
+#line 2415 "pikchr.c"
23772391
break;
23782392
case 23: /* attribute_list ::= expr PERCENT */
2379
-#line 539 "pikchr.y"
2380
-{ pik_add_direction(p,0,&yymsp[-1].minor.yy241,1);}
2381
-#line 2406 "pikchr.c"
2393
+#line 540 "pikchr.y"
2394
+{ pik_add_direction(p,0,&yymsp[-1].minor.yy147,1);}
2395
+#line 2420 "pikchr.c"
23822396
break;
23832397
case 24: /* attribute ::= numproperty expr PERCENT */
2384
-#line 544 "pikchr.y"
2385
-{ pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy241/100.0); }
2386
-#line 2411 "pikchr.c"
2398
+#line 545 "pikchr.y"
2399
+{ pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy147/100.0); }
2400
+#line 2425 "pikchr.c"
23872401
break;
23882402
case 25: /* attribute ::= numproperty expr */
23892403
case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
2390
-#line 545 "pikchr.y"
2391
-{ pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy241,0.0); }
2392
-#line 2417 "pikchr.c"
2404
+#line 546 "pikchr.y"
2405
+{ pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy147,0.0); }
2406
+#line 2431 "pikchr.c"
23932407
break;
23942408
case 26: /* attribute ::= dashproperty expr */
2395
-#line 546 "pikchr.y"
2396
-{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy241); }
2397
-#line 2422 "pikchr.c"
2409
+#line 547 "pikchr.y"
2410
+{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy147); }
2411
+#line 2436 "pikchr.c"
23982412
break;
23992413
case 27: /* attribute ::= dashproperty */
2400
-#line 547 "pikchr.y"
2414
+#line 548 "pikchr.y"
24012415
{ pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2402
-#line 2427 "pikchr.c"
2416
+#line 2441 "pikchr.c"
24032417
break;
24042418
case 29: /* attribute ::= go direction expr PERCENT */
2405
-#line 550 "pikchr.y"
2406
-{ pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy241,1);}
2407
-#line 2432 "pikchr.c"
2419
+#line 551 "pikchr.y"
2420
+{ pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy147,1);}
2421
+#line 2446 "pikchr.c"
24082422
break;
24092423
case 30: /* attribute ::= go direction expr */
2410
-#line 551 "pikchr.y"
2411
-{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy241,0);}
2412
-#line 2437 "pikchr.c"
2424
+#line 552 "pikchr.y"
2425
+{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy147,0);}
2426
+#line 2451 "pikchr.c"
24132427
break;
24142428
case 31: /* attribute ::= go direction */
2415
-#line 552 "pikchr.y"
2429
+#line 553 "pikchr.y"
24162430
{ pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
2417
-#line 2442 "pikchr.c"
2431
+#line 2456 "pikchr.c"
24182432
break;
24192433
case 32: /* attribute ::= go direction even position */
2420
-#line 553 "pikchr.y"
2421
-{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy187);}
2422
-#line 2447 "pikchr.c"
2434
+#line 554 "pikchr.y"
2435
+{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy211);}
2436
+#line 2461 "pikchr.c"
24232437
break;
24242438
case 33: /* attribute ::= CLOSE */
2425
-#line 554 "pikchr.y"
2439
+#line 555 "pikchr.y"
24262440
{ pik_close_path(p,&yymsp[0].minor.yy0); }
2427
-#line 2452 "pikchr.c"
2441
+#line 2466 "pikchr.c"
24282442
break;
24292443
case 34: /* attribute ::= CHOP */
2430
-#line 555 "pikchr.y"
2444
+#line 556 "pikchr.y"
24312445
{ p->cur->bChop = 1; }
2432
-#line 2457 "pikchr.c"
2446
+#line 2471 "pikchr.c"
24332447
break;
24342448
case 35: /* attribute ::= FROM position */
2435
-#line 556 "pikchr.y"
2436
-{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy187); }
2437
-#line 2462 "pikchr.c"
2449
+#line 557 "pikchr.y"
2450
+{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy211); }
2451
+#line 2476 "pikchr.c"
24382452
break;
24392453
case 36: /* attribute ::= TO position */
2440
-#line 557 "pikchr.y"
2441
-{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy187); }
2442
-#line 2467 "pikchr.c"
2454
+#line 558 "pikchr.y"
2455
+{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy211); }
2456
+#line 2481 "pikchr.c"
24432457
break;
24442458
case 37: /* attribute ::= THEN */
2445
-#line 558 "pikchr.y"
2459
+#line 559 "pikchr.y"
24462460
{ pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2447
-#line 2472 "pikchr.c"
2461
+#line 2486 "pikchr.c"
24482462
break;
24492463
case 38: /* attribute ::= THEN expr HEADING expr */
24502464
case 42: /* attribute ::= GO expr HEADING expr */ yytestcase(yyruleno==42);
2451
-#line 560 "pikchr.y"
2452
-{pik_move_hdg(p,&yymsp[-2].minor.yy241,&yymsp[-1].minor.yy0,yymsp[0].minor.yy241,0,&yymsp[-3].minor.yy0);}
2453
-#line 2478 "pikchr.c"
2465
+#line 561 "pikchr.y"
2466
+{pik_move_hdg(p,&yymsp[-2].minor.yy147,&yymsp[-1].minor.yy0,yymsp[0].minor.yy147,0,&yymsp[-3].minor.yy0);}
2467
+#line 2492 "pikchr.c"
24542468
break;
24552469
case 39: /* attribute ::= THEN HEADING expr */
24562470
case 43: /* attribute ::= GO HEADING expr */ yytestcase(yyruleno==43);
2457
-#line 561 "pikchr.y"
2458
-{pik_move_hdg(p,0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy241,0,&yymsp[-2].minor.yy0);}
2459
-#line 2484 "pikchr.c"
2471
+#line 562 "pikchr.y"
2472
+{pik_move_hdg(p,0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy147,0,&yymsp[-2].minor.yy0);}
2473
+#line 2498 "pikchr.c"
24602474
break;
24612475
case 40: /* attribute ::= THEN expr EDGEPT */
24622476
case 44: /* attribute ::= GO expr EDGEPT */ yytestcase(yyruleno==44);
2463
-#line 562 "pikchr.y"
2464
-{pik_move_hdg(p,&yymsp[-1].minor.yy241,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2465
-#line 2490 "pikchr.c"
2477
+#line 563 "pikchr.y"
2478
+{pik_move_hdg(p,&yymsp[-1].minor.yy147,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2479
+#line 2504 "pikchr.c"
24662480
break;
24672481
case 41: /* attribute ::= THEN EDGEPT */
24682482
case 45: /* attribute ::= GO EDGEPT */ yytestcase(yyruleno==45);
2469
-#line 563 "pikchr.y"
2483
+#line 564 "pikchr.y"
24702484
{pik_move_hdg(p,0,0,0,&yymsp[0].minor.yy0,&yymsp[-1].minor.yy0);}
2471
-#line 2496 "pikchr.c"
2485
+#line 2510 "pikchr.c"
24722486
break;
24732487
case 46: /* attribute ::= AT position */
2474
-#line 569 "pikchr.y"
2475
-{ pik_set_at(p,0,&yymsp[0].minor.yy187,&yymsp[-1].minor.yy0); }
2476
-#line 2501 "pikchr.c"
2488
+#line 570 "pikchr.y"
2489
+{ pik_set_at(p,0,&yymsp[0].minor.yy211,&yymsp[-1].minor.yy0); }
2490
+#line 2515 "pikchr.c"
24772491
break;
24782492
case 47: /* attribute ::= SAME */
2479
-#line 571 "pikchr.y"
2493
+#line 572 "pikchr.y"
24802494
{pik_same(p,0,&yymsp[0].minor.yy0);}
2481
-#line 2506 "pikchr.c"
2495
+#line 2520 "pikchr.c"
24822496
break;
24832497
case 48: /* attribute ::= SAME AS object */
2484
-#line 572 "pikchr.y"
2485
-{pik_same(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0);}
2486
-#line 2511 "pikchr.c"
2498
+#line 573 "pikchr.y"
2499
+{pik_same(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0);}
2500
+#line 2525 "pikchr.c"
24872501
break;
24882502
case 49: /* attribute ::= STRING textposition */
2489
-#line 573 "pikchr.y"
2490
-{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy86);}
2491
-#line 2516 "pikchr.c"
2503
+#line 574 "pikchr.y"
2504
+{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy34);}
2505
+#line 2530 "pikchr.c"
24922506
break;
24932507
case 50: /* attribute ::= FIT */
2494
-#line 574 "pikchr.y"
2508
+#line 575 "pikchr.y"
24952509
{pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2496
-#line 2521 "pikchr.c"
2510
+#line 2535 "pikchr.c"
2511
+ break;
2512
+ case 51: /* attribute ::= BEHIND object */
2513
+#line 576 "pikchr.y"
2514
+{pik_behind(p,yymsp[0].minor.yy174);}
2515
+#line 2540 "pikchr.c"
24972516
break;
2498
- case 51: /* with ::= DOT_E edge AT position */
2499
- case 52: /* with ::= edge AT position */ yytestcase(yyruleno==52);
2517
+ case 52: /* withclause ::= DOT_E edge AT position */
2518
+ case 53: /* withclause ::= edge AT position */ yytestcase(yyruleno==53);
25002519
#line 584 "pikchr.y"
2501
-{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy187,&yymsp[-1].minor.yy0); }
2502
-#line 2527 "pikchr.c"
2520
+{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy211,&yymsp[-1].minor.yy0); }
2521
+#line 2546 "pikchr.c"
25032522
break;
2504
- case 53: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2523
+ case 54: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
25052524
#line 588 "pikchr.y"
25062525
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
2507
-#line 2532 "pikchr.c"
2526
+#line 2551 "pikchr.c"
25082527
yymsp[0].minor.yy0 = yylhsminor.yy0;
25092528
break;
2510
- case 54: /* boolproperty ::= CW */
2529
+ case 55: /* boolproperty ::= CW */
25112530
#line 599 "pikchr.y"
25122531
{p->cur->cw = 1;}
2513
-#line 2538 "pikchr.c"
2532
+#line 2557 "pikchr.c"
25142533
break;
2515
- case 55: /* boolproperty ::= CCW */
2534
+ case 56: /* boolproperty ::= CCW */
25162535
#line 600 "pikchr.y"
25172536
{p->cur->cw = 0;}
2518
-#line 2543 "pikchr.c"
2537
+#line 2562 "pikchr.c"
25192538
break;
2520
- case 56: /* boolproperty ::= LARROW */
2539
+ case 57: /* boolproperty ::= LARROW */
25212540
#line 601 "pikchr.y"
25222541
{p->cur->larrow=1; p->cur->rarrow=0; }
2523
-#line 2548 "pikchr.c"
2542
+#line 2567 "pikchr.c"
25242543
break;
2525
- case 57: /* boolproperty ::= RARROW */
2544
+ case 58: /* boolproperty ::= RARROW */
25262545
#line 602 "pikchr.y"
25272546
{p->cur->larrow=0; p->cur->rarrow=1; }
2528
-#line 2553 "pikchr.c"
2547
+#line 2572 "pikchr.c"
25292548
break;
2530
- case 58: /* boolproperty ::= LRARROW */
2549
+ case 59: /* boolproperty ::= LRARROW */
25312550
#line 603 "pikchr.y"
25322551
{p->cur->larrow=1; p->cur->rarrow=1; }
2533
-#line 2558 "pikchr.c"
2552
+#line 2577 "pikchr.c"
25342553
break;
2535
- case 59: /* boolproperty ::= INVIS */
2554
+ case 60: /* boolproperty ::= INVIS */
25362555
#line 604 "pikchr.y"
25372556
{p->cur->sw = 0.0;}
2538
-#line 2563 "pikchr.c"
2557
+#line 2582 "pikchr.c"
25392558
break;
2540
- case 60: /* boolproperty ::= THICK */
2559
+ case 61: /* boolproperty ::= THICK */
25412560
#line 605 "pikchr.y"
25422561
{p->cur->sw *= 1.5;}
2543
-#line 2568 "pikchr.c"
2562
+#line 2587 "pikchr.c"
25442563
break;
2545
- case 61: /* boolproperty ::= THIN */
2564
+ case 62: /* boolproperty ::= THIN */
25462565
#line 606 "pikchr.y"
25472566
{p->cur->sw *= 0.67;}
2548
-#line 2573 "pikchr.c"
2567
+#line 2592 "pikchr.c"
25492568
break;
2550
- case 62: /* textposition ::= */
2569
+ case 63: /* textposition ::= */
25512570
#line 608 "pikchr.y"
2552
-{yymsp[1].minor.yy86 = 0;}
2553
-#line 2578 "pikchr.c"
2571
+{yymsp[1].minor.yy34 = 0;}
2572
+#line 2597 "pikchr.c"
25542573
break;
2555
- case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2574
+ case 64: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
25562575
#line 611 "pikchr.y"
2557
-{yylhsminor.yy86 = pik_text_position(p,yymsp[-1].minor.yy86,&yymsp[0].minor.yy0);}
2558
-#line 2583 "pikchr.c"
2559
- yymsp[-1].minor.yy86 = yylhsminor.yy86;
2576
+{yylhsminor.yy34 = pik_text_position(p,yymsp[-1].minor.yy34,&yymsp[0].minor.yy0);}
2577
+#line 2602 "pikchr.c"
2578
+ yymsp[-1].minor.yy34 = yylhsminor.yy34;
25602579
break;
2561
- case 64: /* position ::= expr COMMA expr */
2580
+ case 65: /* position ::= expr COMMA expr */
25622581
#line 614 "pikchr.y"
2563
-{yylhsminor.yy187.x=yymsp[-2].minor.yy241; yylhsminor.yy187.y=yymsp[0].minor.yy241;}
2564
-#line 2589 "pikchr.c"
2565
- yymsp[-2].minor.yy187 = yylhsminor.yy187;
2582
+{yylhsminor.yy211.x=yymsp[-2].minor.yy147; yylhsminor.yy211.y=yymsp[0].minor.yy147;}
2583
+#line 2608 "pikchr.c"
2584
+ yymsp[-2].minor.yy211 = yylhsminor.yy211;
25662585
break;
2567
- case 65: /* position ::= place PLUS expr COMMA expr */
2586
+ case 66: /* position ::= place PLUS expr COMMA expr */
25682587
#line 616 "pikchr.y"
2569
-{yylhsminor.yy187.x=yymsp[-4].minor.yy187.x+yymsp[-2].minor.yy241; yylhsminor.yy187.y=yymsp[-4].minor.yy187.y+yymsp[0].minor.yy241;}
2570
-#line 2595 "pikchr.c"
2571
- yymsp[-4].minor.yy187 = yylhsminor.yy187;
2588
+{yylhsminor.yy211.x=yymsp[-4].minor.yy211.x+yymsp[-2].minor.yy147; yylhsminor.yy211.y=yymsp[-4].minor.yy211.y+yymsp[0].minor.yy147;}
2589
+#line 2614 "pikchr.c"
2590
+ yymsp[-4].minor.yy211 = yylhsminor.yy211;
25722591
break;
2573
- case 66: /* position ::= place MINUS expr COMMA expr */
2592
+ case 67: /* position ::= place MINUS expr COMMA expr */
25742593
#line 617 "pikchr.y"
2575
-{yylhsminor.yy187.x=yymsp[-4].minor.yy187.x-yymsp[-2].minor.yy241; yylhsminor.yy187.y=yymsp[-4].minor.yy187.y-yymsp[0].minor.yy241;}
2576
-#line 2601 "pikchr.c"
2577
- yymsp[-4].minor.yy187 = yylhsminor.yy187;
2594
+{yylhsminor.yy211.x=yymsp[-4].minor.yy211.x-yymsp[-2].minor.yy147; yylhsminor.yy211.y=yymsp[-4].minor.yy211.y-yymsp[0].minor.yy147;}
2595
+#line 2620 "pikchr.c"
2596
+ yymsp[-4].minor.yy211 = yylhsminor.yy211;
25782597
break;
2579
- case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2598
+ case 68: /* position ::= place PLUS LP expr COMMA expr RP */
25802599
#line 619 "pikchr.y"
2581
-{yylhsminor.yy187.x=yymsp[-6].minor.yy187.x+yymsp[-3].minor.yy241; yylhsminor.yy187.y=yymsp[-6].minor.yy187.y+yymsp[-1].minor.yy241;}
2582
-#line 2607 "pikchr.c"
2583
- yymsp[-6].minor.yy187 = yylhsminor.yy187;
2600
+{yylhsminor.yy211.x=yymsp[-6].minor.yy211.x+yymsp[-3].minor.yy147; yylhsminor.yy211.y=yymsp[-6].minor.yy211.y+yymsp[-1].minor.yy147;}
2601
+#line 2626 "pikchr.c"
2602
+ yymsp[-6].minor.yy211 = yylhsminor.yy211;
25842603
break;
2585
- case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2604
+ case 69: /* position ::= place MINUS LP expr COMMA expr RP */
25862605
#line 621 "pikchr.y"
2587
-{yylhsminor.yy187.x=yymsp[-6].minor.yy187.x-yymsp[-3].minor.yy241; yylhsminor.yy187.y=yymsp[-6].minor.yy187.y-yymsp[-1].minor.yy241;}
2588
-#line 2613 "pikchr.c"
2589
- yymsp[-6].minor.yy187 = yylhsminor.yy187;
2606
+{yylhsminor.yy211.x=yymsp[-6].minor.yy211.x-yymsp[-3].minor.yy147; yylhsminor.yy211.y=yymsp[-6].minor.yy211.y-yymsp[-1].minor.yy147;}
2607
+#line 2632 "pikchr.c"
2608
+ yymsp[-6].minor.yy211 = yylhsminor.yy211;
25902609
break;
2591
- case 69: /* position ::= LP position COMMA position RP */
2610
+ case 70: /* position ::= LP position COMMA position RP */
25922611
#line 622 "pikchr.y"
2593
-{yymsp[-4].minor.yy187.x=yymsp[-3].minor.yy187.x; yymsp[-4].minor.yy187.y=yymsp[-1].minor.yy187.y;}
2594
-#line 2619 "pikchr.c"
2612
+{yymsp[-4].minor.yy211.x=yymsp[-3].minor.yy211.x; yymsp[-4].minor.yy211.y=yymsp[-1].minor.yy211.y;}
2613
+#line 2638 "pikchr.c"
25952614
break;
2596
- case 70: /* position ::= LP position RP */
2615
+ case 71: /* position ::= LP position RP */
25972616
#line 623 "pikchr.y"
2598
-{yymsp[-2].minor.yy187=yymsp[-1].minor.yy187;}
2599
-#line 2624 "pikchr.c"
2617
+{yymsp[-2].minor.yy211=yymsp[-1].minor.yy211;}
2618
+#line 2643 "pikchr.c"
26002619
break;
2601
- case 71: /* position ::= expr between position AND position */
2620
+ case 72: /* position ::= expr between position AND position */
26022621
#line 625 "pikchr.y"
2603
-{yylhsminor.yy187 = pik_position_between(p,yymsp[-4].minor.yy241,yymsp[-2].minor.yy187,yymsp[0].minor.yy187);}
2604
-#line 2629 "pikchr.c"
2605
- yymsp[-4].minor.yy187 = yylhsminor.yy187;
2606
- break;
2607
- case 72: /* position ::= expr ABOVE position */
2608
-#line 626 "pikchr.y"
2609
-{yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.y += yymsp[-2].minor.yy241;}
2610
-#line 2635 "pikchr.c"
2611
- yymsp[-2].minor.yy187 = yylhsminor.yy187;
2612
- break;
2613
- case 73: /* position ::= expr BELOW position */
2622
+{yylhsminor.yy211 = pik_position_between(p,yymsp[-4].minor.yy147,yymsp[-2].minor.yy211,yymsp[0].minor.yy211);}
2623
+#line 2648 "pikchr.c"
2624
+ yymsp[-4].minor.yy211 = yylhsminor.yy211;
2625
+ break;
2626
+ case 73: /* position ::= expr LT position COMMA position GT */
26142627
#line 627 "pikchr.y"
2615
-{yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.y -= yymsp[-2].minor.yy241;}
2616
-#line 2641 "pikchr.c"
2617
- yymsp[-2].minor.yy187 = yylhsminor.yy187;
2628
+{yylhsminor.yy211 = pik_position_between(p,yymsp[-5].minor.yy147,yymsp[-3].minor.yy211,yymsp[-1].minor.yy211);}
2629
+#line 2654 "pikchr.c"
2630
+ yymsp[-5].minor.yy211 = yylhsminor.yy211;
26182631
break;
2619
- case 74: /* position ::= expr LEFT OF position */
2632
+ case 74: /* position ::= expr ABOVE position */
26202633
#line 628 "pikchr.y"
2621
-{yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.x -= yymsp[-3].minor.yy241;}
2622
-#line 2647 "pikchr.c"
2623
- yymsp[-3].minor.yy187 = yylhsminor.yy187;
2634
+{yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.y += yymsp[-2].minor.yy147;}
2635
+#line 2660 "pikchr.c"
2636
+ yymsp[-2].minor.yy211 = yylhsminor.yy211;
26242637
break;
2625
- case 75: /* position ::= expr RIGHT OF position */
2638
+ case 75: /* position ::= expr BELOW position */
26262639
#line 629 "pikchr.y"
2627
-{yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.x += yymsp[-3].minor.yy241;}
2628
-#line 2653 "pikchr.c"
2629
- yymsp[-3].minor.yy187 = yylhsminor.yy187;
2640
+{yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.y -= yymsp[-2].minor.yy147;}
2641
+#line 2666 "pikchr.c"
2642
+ yymsp[-2].minor.yy211 = yylhsminor.yy211;
2643
+ break;
2644
+ case 76: /* position ::= expr LEFT OF position */
2645
+#line 630 "pikchr.y"
2646
+{yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.x -= yymsp[-3].minor.yy147;}
2647
+#line 2672 "pikchr.c"
2648
+ yymsp[-3].minor.yy211 = yylhsminor.yy211;
26302649
break;
2631
- case 76: /* position ::= expr EDGEPT OF position */
2650
+ case 77: /* position ::= expr RIGHT OF position */
26322651
#line 631 "pikchr.y"
2633
-{yylhsminor.yy187 = pik_position_at_hdg(p,yymsp[-3].minor.yy241,&yymsp[-2].minor.yy0,yymsp[0].minor.yy187);}
2634
-#line 2659 "pikchr.c"
2635
- yymsp[-3].minor.yy187 = yylhsminor.yy187;
2652
+{yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.x += yymsp[-3].minor.yy147;}
2653
+#line 2678 "pikchr.c"
2654
+ yymsp[-3].minor.yy211 = yylhsminor.yy211;
26362655
break;
2637
- case 77: /* position ::= expr HEADING expr FROM position */
2656
+ case 78: /* position ::= expr EDGEPT OF position */
26382657
#line 633 "pikchr.y"
2639
-{yylhsminor.yy187 = pik_position_at_angle(p,yymsp[-4].minor.yy241,yymsp[-2].minor.yy241,yymsp[0].minor.yy187);}
2640
-#line 2665 "pikchr.c"
2641
- yymsp[-4].minor.yy187 = yylhsminor.yy187;
2642
- break;
2643
- case 78: /* place ::= object */
2644
-#line 639 "pikchr.y"
2645
-{yylhsminor.yy187 = pik_place_of_elem(p,yymsp[0].minor.yy2,0);}
2646
-#line 2671 "pikchr.c"
2647
- yymsp[0].minor.yy187 = yylhsminor.yy187;
2648
- break;
2649
- case 79: /* place ::= object DOT_E edge */
2650
- case 80: /* place ::= object DOT_L START */ yytestcase(yyruleno==80);
2651
- case 81: /* place ::= object DOT_L END */ yytestcase(yyruleno==81);
2652
-#line 640 "pikchr.y"
2653
-{yylhsminor.yy187 = pik_place_of_elem(p,yymsp[-2].minor.yy2,&yymsp[0].minor.yy0);}
2654
-#line 2679 "pikchr.c"
2655
- yymsp[-2].minor.yy187 = yylhsminor.yy187;
2656
- break;
2657
- case 82: /* place ::= START OF object */
2658
- case 83: /* place ::= END OF object */ yytestcase(yyruleno==83);
2659
- case 84: /* place ::= edge OF object */ yytestcase(yyruleno==84);
2660
-#line 643 "pikchr.y"
2661
-{yylhsminor.yy187 = pik_place_of_elem(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0);}
2662
-#line 2687 "pikchr.c"
2663
- yymsp[-2].minor.yy187 = yylhsminor.yy187;
2664
- break;
2665
- case 85: /* place ::= NTH VERTEX OF object */
2666
-#line 646 "pikchr.y"
2667
-{yylhsminor.yy187 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy2);}
2668
-#line 2693 "pikchr.c"
2669
- yymsp[-3].minor.yy187 = yylhsminor.yy187;
2670
- break;
2671
- case 86: /* object ::= nth */
2672
-#line 649 "pikchr.y"
2673
-{yylhsminor.yy2 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2674
-#line 2699 "pikchr.c"
2675
- yymsp[0].minor.yy2 = yylhsminor.yy2;
2676
- break;
2677
- case 87: /* object ::= nth OF|IN object */
2678
-#line 650 "pikchr.y"
2679
-{yylhsminor.yy2 = pik_find_nth(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0);}
2680
-#line 2705 "pikchr.c"
2681
- yymsp[-2].minor.yy2 = yylhsminor.yy2;
2682
- break;
2683
- case 88: /* objectname ::= PLACENAME */
2658
+{yylhsminor.yy211 = pik_position_at_hdg(p,yymsp[-3].minor.yy147,&yymsp[-2].minor.yy0,yymsp[0].minor.yy211);}
2659
+#line 2684 "pikchr.c"
2660
+ yymsp[-3].minor.yy211 = yylhsminor.yy211;
2661
+ break;
2662
+ case 79: /* position ::= expr HEADING expr FROM position */
2663
+#line 635 "pikchr.y"
2664
+{yylhsminor.yy211 = pik_position_at_angle(p,yymsp[-4].minor.yy147,yymsp[-2].minor.yy147,yymsp[0].minor.yy211);}
2665
+#line 2690 "pikchr.c"
2666
+ yymsp[-4].minor.yy211 = yylhsminor.yy211;
2667
+ break;
2668
+ case 80: /* place ::= object */
2669
+#line 641 "pikchr.y"
2670
+{yylhsminor.yy211 = pik_place_of_elem(p,yymsp[0].minor.yy174,0);}
2671
+#line 2696 "pikchr.c"
2672
+ yymsp[0].minor.yy211 = yylhsminor.yy211;
2673
+ break;
2674
+ case 81: /* place ::= object DOT_E edge */
2675
+ case 82: /* place ::= object DOT_L START */ yytestcase(yyruleno==82);
2676
+ case 83: /* place ::= object DOT_L END */ yytestcase(yyruleno==83);
2677
+#line 642 "pikchr.y"
2678
+{yylhsminor.yy211 = pik_place_of_elem(p,yymsp[-2].minor.yy174,&yymsp[0].minor.yy0);}
2679
+#line 2704 "pikchr.c"
2680
+ yymsp[-2].minor.yy211 = yylhsminor.yy211;
2681
+ break;
2682
+ case 84: /* place ::= START OF object */
2683
+ case 85: /* place ::= END OF object */ yytestcase(yyruleno==85);
2684
+ case 86: /* place ::= edge OF object */ yytestcase(yyruleno==86);
2685
+#line 645 "pikchr.y"
2686
+{yylhsminor.yy211 = pik_place_of_elem(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0);}
2687
+#line 2712 "pikchr.c"
2688
+ yymsp[-2].minor.yy211 = yylhsminor.yy211;
2689
+ break;
2690
+ case 87: /* place ::= NTH VERTEX OF object */
2691
+#line 648 "pikchr.y"
2692
+{yylhsminor.yy211 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy174);}
2693
+#line 2718 "pikchr.c"
2694
+ yymsp[-3].minor.yy211 = yylhsminor.yy211;
2695
+ break;
2696
+ case 88: /* object ::= nth */
2697
+#line 651 "pikchr.y"
2698
+{yylhsminor.yy174 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2699
+#line 2724 "pikchr.c"
2700
+ yymsp[0].minor.yy174 = yylhsminor.yy174;
2701
+ break;
2702
+ case 89: /* object ::= nth OF|IN object */
26842703
#line 652 "pikchr.y"
2685
-{yylhsminor.yy2 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2686
-#line 2711 "pikchr.c"
2687
- yymsp[0].minor.yy2 = yylhsminor.yy2;
2704
+{yylhsminor.yy174 = pik_find_nth(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0);}
2705
+#line 2730 "pikchr.c"
2706
+ yymsp[-2].minor.yy174 = yylhsminor.yy174;
26882707
break;
2689
- case 89: /* objectname ::= objectname DOT_U PLACENAME */
2708
+ case 90: /* objectname ::= PLACENAME */
26902709
#line 654 "pikchr.y"
2691
-{yylhsminor.yy2 = pik_find_byname(p,yymsp[-2].minor.yy2,&yymsp[0].minor.yy0);}
2692
-#line 2717 "pikchr.c"
2693
- yymsp[-2].minor.yy2 = yylhsminor.yy2;
2710
+{yylhsminor.yy174 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2711
+#line 2736 "pikchr.c"
2712
+ yymsp[0].minor.yy174 = yylhsminor.yy174;
26942713
break;
2695
- case 90: /* nth ::= NTH CLASSNAME */
2714
+ case 91: /* objectname ::= objectname DOT_U PLACENAME */
26962715
#line 656 "pikchr.y"
2716
+{yylhsminor.yy174 = pik_find_byname(p,yymsp[-2].minor.yy174,&yymsp[0].minor.yy0);}
2717
+#line 2742 "pikchr.c"
2718
+ yymsp[-2].minor.yy174 = yylhsminor.yy174;
2719
+ break;
2720
+ case 92: /* nth ::= NTH CLASSNAME */
2721
+#line 658 "pikchr.y"
26972722
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2698
-#line 2723 "pikchr.c"
2723
+#line 2748 "pikchr.c"
26992724
yymsp[-1].minor.yy0 = yylhsminor.yy0;
27002725
break;
2701
- case 91: /* nth ::= NTH LAST CLASSNAME */
2702
-#line 657 "pikchr.y"
2726
+ case 93: /* nth ::= NTH LAST CLASSNAME */
2727
+#line 659 "pikchr.y"
27032728
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2704
-#line 2729 "pikchr.c"
2729
+#line 2754 "pikchr.c"
27052730
yymsp[-2].minor.yy0 = yylhsminor.yy0;
27062731
break;
2707
- case 92: /* nth ::= LAST CLASSNAME */
2708
-#line 658 "pikchr.y"
2732
+ case 94: /* nth ::= LAST CLASSNAME */
2733
+#line 660 "pikchr.y"
27092734
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2710
-#line 2735 "pikchr.c"
2735
+#line 2760 "pikchr.c"
27112736
break;
2712
- case 93: /* nth ::= LAST */
2713
-#line 659 "pikchr.y"
2737
+ case 95: /* nth ::= LAST */
2738
+#line 661 "pikchr.y"
27142739
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2715
-#line 2740 "pikchr.c"
2740
+#line 2765 "pikchr.c"
27162741
yymsp[0].minor.yy0 = yylhsminor.yy0;
27172742
break;
2718
- case 94: /* nth ::= NTH LB RB */
2719
-#line 660 "pikchr.y"
2743
+ case 96: /* nth ::= NTH LB RB */
2744
+#line 662 "pikchr.y"
27202745
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2721
-#line 2746 "pikchr.c"
2746
+#line 2771 "pikchr.c"
27222747
yymsp[-2].minor.yy0 = yylhsminor.yy0;
27232748
break;
2724
- case 95: /* nth ::= NTH LAST LB RB */
2725
-#line 661 "pikchr.y"
2749
+ case 97: /* nth ::= NTH LAST LB RB */
2750
+#line 663 "pikchr.y"
27262751
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2727
-#line 2752 "pikchr.c"
2752
+#line 2777 "pikchr.c"
27282753
yymsp[-3].minor.yy0 = yylhsminor.yy0;
27292754
break;
2730
- case 96: /* nth ::= LAST LB RB */
2731
-#line 662 "pikchr.y"
2732
-{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2733
-#line 2758 "pikchr.c"
2734
- break;
2735
- case 97: /* expr ::= expr PLUS expr */
2736
-#line 664 "pikchr.y"
2737
-{yylhsminor.yy241=yymsp[-2].minor.yy241+yymsp[0].minor.yy241;}
2738
-#line 2763 "pikchr.c"
2739
- yymsp[-2].minor.yy241 = yylhsminor.yy241;
2740
- break;
2741
- case 98: /* expr ::= expr MINUS expr */
2742
-#line 665 "pikchr.y"
2743
-{yylhsminor.yy241=yymsp[-2].minor.yy241-yymsp[0].minor.yy241;}
2744
-#line 2769 "pikchr.c"
2745
- yymsp[-2].minor.yy241 = yylhsminor.yy241;
2746
- break;
2747
- case 99: /* expr ::= expr STAR expr */
2748
-#line 666 "pikchr.y"
2749
-{yylhsminor.yy241=yymsp[-2].minor.yy241*yymsp[0].minor.yy241;}
2750
-#line 2775 "pikchr.c"
2751
- yymsp[-2].minor.yy241 = yylhsminor.yy241;
2752
- break;
2753
- case 100: /* expr ::= expr SLASH expr */
2754
-#line 667 "pikchr.y"
2755
-{
2756
- if( yymsp[0].minor.yy241==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy241 = 0.0; }
2757
- else{ yylhsminor.yy241 = yymsp[-2].minor.yy241/yymsp[0].minor.yy241; }
2758
-}
2759
-#line 2784 "pikchr.c"
2760
- yymsp[-2].minor.yy241 = yylhsminor.yy241;
2761
- break;
2762
- case 101: /* expr ::= MINUS expr */
2763
-#line 671 "pikchr.y"
2764
-{yymsp[-1].minor.yy241=-yymsp[0].minor.yy241;}
2765
-#line 2790 "pikchr.c"
2766
- break;
2767
- case 102: /* expr ::= PLUS expr */
2768
-#line 672 "pikchr.y"
2769
-{yymsp[-1].minor.yy241=yymsp[0].minor.yy241;}
2770
-#line 2795 "pikchr.c"
2771
- break;
2772
- case 103: /* expr ::= LP expr RP */
2773
-#line 673 "pikchr.y"
2774
-{yymsp[-2].minor.yy241=yymsp[-1].minor.yy241;}
2775
-#line 2800 "pikchr.c"
2776
- break;
2777
- case 104: /* expr ::= NUMBER */
2778
-#line 674 "pikchr.y"
2779
-{yylhsminor.yy241=pik_atof(p,&yymsp[0].minor.yy0);}
2780
-#line 2805 "pikchr.c"
2781
- yymsp[0].minor.yy241 = yylhsminor.yy241;
2782
- break;
2783
- case 105: /* expr ::= ID */
2755
+ case 98: /* nth ::= LAST LB RB */
2756
+#line 664 "pikchr.y"
2757
+{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2758
+#line 2783 "pikchr.c"
2759
+ break;
2760
+ case 99: /* expr ::= expr PLUS expr */
2761
+#line 666 "pikchr.y"
2762
+{yylhsminor.yy147=yymsp[-2].minor.yy147+yymsp[0].minor.yy147;}
2763
+#line 2788 "pikchr.c"
2764
+ yymsp[-2].minor.yy147 = yylhsminor.yy147;
2765
+ break;
2766
+ case 100: /* expr ::= expr MINUS expr */
2767
+#line 667 "pikchr.y"
2768
+{yylhsminor.yy147=yymsp[-2].minor.yy147-yymsp[0].minor.yy147;}
2769
+#line 2794 "pikchr.c"
2770
+ yymsp[-2].minor.yy147 = yylhsminor.yy147;
2771
+ break;
2772
+ case 101: /* expr ::= expr STAR expr */
2773
+#line 668 "pikchr.y"
2774
+{yylhsminor.yy147=yymsp[-2].minor.yy147*yymsp[0].minor.yy147;}
2775
+#line 2800 "pikchr.c"
2776
+ yymsp[-2].minor.yy147 = yylhsminor.yy147;
2777
+ break;
2778
+ case 102: /* expr ::= expr SLASH expr */
2779
+#line 669 "pikchr.y"
2780
+{
2781
+ if( yymsp[0].minor.yy147==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy147 = 0.0; }
2782
+ else{ yylhsminor.yy147 = yymsp[-2].minor.yy147/yymsp[0].minor.yy147; }
2783
+}
2784
+#line 2809 "pikchr.c"
2785
+ yymsp[-2].minor.yy147 = yylhsminor.yy147;
2786
+ break;
2787
+ case 103: /* expr ::= MINUS expr */
2788
+#line 673 "pikchr.y"
2789
+{yymsp[-1].minor.yy147=-yymsp[0].minor.yy147;}
2790
+#line 2815 "pikchr.c"
2791
+ break;
2792
+ case 104: /* expr ::= PLUS expr */
2793
+#line 674 "pikchr.y"
2794
+{yymsp[-1].minor.yy147=yymsp[0].minor.yy147;}
2795
+#line 2820 "pikchr.c"
2796
+ break;
2797
+ case 105: /* expr ::= LP expr RP */
27842798
#line 675 "pikchr.y"
2785
-{yylhsminor.yy241=pik_get_var(p,&yymsp[0].minor.yy0);}
2786
-#line 2811 "pikchr.c"
2787
- yymsp[0].minor.yy241 = yylhsminor.yy241;
2799
+{yymsp[-2].minor.yy147=yymsp[-1].minor.yy147;}
2800
+#line 2825 "pikchr.c"
27882801
break;
2789
- case 106: /* expr ::= FUNC1 LP expr RP */
2802
+ case 106: /* expr ::= NUMBER */
27902803
#line 676 "pikchr.y"
2791
-{yylhsminor.yy241 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy241,0.0);}
2792
-#line 2817 "pikchr.c"
2793
- yymsp[-3].minor.yy241 = yylhsminor.yy241;
2804
+{yylhsminor.yy147=pik_atof(p,&yymsp[0].minor.yy0);}
2805
+#line 2830 "pikchr.c"
2806
+ yymsp[0].minor.yy147 = yylhsminor.yy147;
27942807
break;
2795
- case 107: /* expr ::= FUNC2 LP expr COMMA expr RP */
2808
+ case 107: /* expr ::= ID */
27962809
#line 677 "pikchr.y"
2797
-{yylhsminor.yy241 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy241,yymsp[-1].minor.yy241);}
2798
-#line 2823 "pikchr.c"
2799
- yymsp[-5].minor.yy241 = yylhsminor.yy241;
2810
+{yylhsminor.yy147=pik_get_var(p,&yymsp[0].minor.yy0);}
2811
+#line 2836 "pikchr.c"
2812
+ yymsp[0].minor.yy147 = yylhsminor.yy147;
2813
+ break;
2814
+ case 108: /* expr ::= FUNC1 LP expr RP */
2815
+#line 678 "pikchr.y"
2816
+{yylhsminor.yy147 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy147,0.0);}
2817
+#line 2842 "pikchr.c"
2818
+ yymsp[-3].minor.yy147 = yylhsminor.yy147;
28002819
break;
2801
- case 108: /* expr ::= object DOT_L locproperty */
2802
- case 109: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==109);
2803
- case 110: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==110);
2804
- case 111: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==111);
2820
+ case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
28052821
#line 679 "pikchr.y"
2806
-{yylhsminor.yy241=pik_property_of(p,yymsp[-2].minor.yy2,&yymsp[0].minor.yy0);}
2807
-#line 2832 "pikchr.c"
2808
- yymsp[-2].minor.yy241 = yylhsminor.yy241;
2809
- break;
2810
- case 112: /* expr ::= object DOT_E edge DOT_L X */
2811
-#line 683 "pikchr.y"
2812
-{yylhsminor.yy241=pik_place_of_elem(p,yymsp[-4].minor.yy2,&yymsp[-2].minor.yy0).x;}
2813
-#line 2838 "pikchr.c"
2814
- yymsp[-4].minor.yy241 = yylhsminor.yy241;
2815
- break;
2816
- case 113: /* expr ::= object DOT_E edge DOT_L Y */
2817
-#line 684 "pikchr.y"
2818
-{yylhsminor.yy241=pik_place_of_elem(p,yymsp[-4].minor.yy2,&yymsp[-2].minor.yy0).y;}
2819
-#line 2844 "pikchr.c"
2820
- yymsp[-4].minor.yy241 = yylhsminor.yy241;
2821
- break;
2822
- case 114: /* expr ::= LP locproperty OF object RP */
2823
- case 115: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==115);
2824
- case 116: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==116);
2825
- case 117: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==117);
2822
+{yylhsminor.yy147 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy147,yymsp[-1].minor.yy147);}
2823
+#line 2848 "pikchr.c"
2824
+ yymsp[-5].minor.yy147 = yylhsminor.yy147;
2825
+ break;
2826
+ case 110: /* expr ::= object DOT_L locproperty */
2827
+ case 111: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==111);
2828
+ case 112: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==112);
2829
+ case 113: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==113);
2830
+#line 681 "pikchr.y"
2831
+{yylhsminor.yy147=pik_property_of(p,yymsp[-2].minor.yy174,&yymsp[0].minor.yy0);}
2832
+#line 2857 "pikchr.c"
2833
+ yymsp[-2].minor.yy147 = yylhsminor.yy147;
2834
+ break;
2835
+ case 114: /* expr ::= object DOT_E edge DOT_L X */
28262836
#line 685 "pikchr.y"
2827
-{yymsp[-4].minor.yy241=pik_property_of(p,yymsp[-1].minor.yy2,&yymsp[-3].minor.yy0);}
2828
-#line 2853 "pikchr.c"
2829
- break;
2830
- case 118: /* expr ::= NTH VERTEX OF object DOT_L X */
2831
-#line 691 "pikchr.y"
2832
-{yylhsminor.yy241 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy2).x;}
2833
-#line 2858 "pikchr.c"
2834
- yymsp[-5].minor.yy241 = yylhsminor.yy241;
2835
- break;
2836
- case 119: /* expr ::= NTH VERTEX OF object DOT_L Y */
2837
+{yylhsminor.yy147=pik_place_of_elem(p,yymsp[-4].minor.yy174,&yymsp[-2].minor.yy0).x;}
2838
+#line 2863 "pikchr.c"
2839
+ yymsp[-4].minor.yy147 = yylhsminor.yy147;
2840
+ break;
2841
+ case 115: /* expr ::= object DOT_E edge DOT_L Y */
2842
+#line 686 "pikchr.y"
2843
+{yylhsminor.yy147=pik_place_of_elem(p,yymsp[-4].minor.yy174,&yymsp[-2].minor.yy0).y;}
2844
+#line 2869 "pikchr.c"
2845
+ yymsp[-4].minor.yy147 = yylhsminor.yy147;
2846
+ break;
2847
+ case 116: /* expr ::= LP locproperty OF object RP */
2848
+ case 117: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==117);
2849
+ case 118: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==118);
2850
+ case 119: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==119);
2851
+#line 687 "pikchr.y"
2852
+{yymsp[-4].minor.yy147=pik_property_of(p,yymsp[-1].minor.yy174,&yymsp[-3].minor.yy0);}
2853
+#line 2878 "pikchr.c"
2854
+ break;
2855
+ case 120: /* expr ::= NTH VERTEX OF object DOT_L X */
28372856
#line 693 "pikchr.y"
2838
-{yylhsminor.yy241 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy2).y;}
2839
-#line 2864 "pikchr.c"
2840
- yymsp[-5].minor.yy241 = yylhsminor.yy241;
2857
+{yylhsminor.yy147 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy174).x;}
2858
+#line 2883 "pikchr.c"
2859
+ yymsp[-5].minor.yy147 = yylhsminor.yy147;
2860
+ break;
2861
+ case 121: /* expr ::= NTH VERTEX OF object DOT_L Y */
2862
+#line 695 "pikchr.y"
2863
+{yylhsminor.yy147 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy174).y;}
2864
+#line 2889 "pikchr.c"
2865
+ yymsp[-5].minor.yy147 = yylhsminor.yy147;
28412866
break;
28422867
default:
2843
- /* (120) lvalue ::= ID */ yytestcase(yyruleno==120);
2844
- /* (121) lvalue ::= FILL */ yytestcase(yyruleno==121);
2845
- /* (122) lvalue ::= COLOR */ yytestcase(yyruleno==122);
2846
- /* (123) lvalue ::= THICKNESS */ yytestcase(yyruleno==123);
2847
- /* (124) rvalue ::= expr */ yytestcase(yyruleno==124);
2848
- /* (125) print ::= PRINT */ yytestcase(yyruleno==125);
2849
- /* (126) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=126);
2850
- /* (127) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==127);
2851
- /* (128) direction ::= UP */ yytestcase(yyruleno==128);
2852
- /* (129) direction ::= DOWN */ yytestcase(yyruleno==129);
2853
- /* (130) direction ::= LEFT */ yytestcase(yyruleno==130);
2854
- /* (131) direction ::= RIGHT */ yytestcase(yyruleno==131);
2855
- /* (132) attribute_list ::= alist */ yytestcase(yyruleno==132);
2856
- /* (133) alist ::= */ yytestcase(yyruleno==133);
2857
- /* (134) alist ::= alist attribute */ yytestcase(yyruleno==134);
2858
- /* (135) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=135);
2859
- /* (136) attribute ::= WITH withclause */ yytestcase(yyruleno==136);
2860
- /* (137) go ::= GO */ yytestcase(yyruleno==137);
2861
- /* (138) go ::= */ yytestcase(yyruleno==138);
2862
- /* (139) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==139);
2863
- /* (140) even ::= EVEN WITH */ yytestcase(yyruleno==140);
2864
- /* (141) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=141);
2865
- /* (142) withclause ::= withclause AND with */ yytestcase(yyruleno==142);
2868
+ /* (122) lvalue ::= ID */ yytestcase(yyruleno==122);
2869
+ /* (123) lvalue ::= FILL */ yytestcase(yyruleno==123);
2870
+ /* (124) lvalue ::= COLOR */ yytestcase(yyruleno==124);
2871
+ /* (125) lvalue ::= THICKNESS */ yytestcase(yyruleno==125);
2872
+ /* (126) rvalue ::= expr */ yytestcase(yyruleno==126);
2873
+ /* (127) print ::= PRINT */ yytestcase(yyruleno==127);
2874
+ /* (128) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=128);
2875
+ /* (129) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==129);
2876
+ /* (130) direction ::= UP */ yytestcase(yyruleno==130);
2877
+ /* (131) direction ::= DOWN */ yytestcase(yyruleno==131);
2878
+ /* (132) direction ::= LEFT */ yytestcase(yyruleno==132);
2879
+ /* (133) direction ::= RIGHT */ yytestcase(yyruleno==133);
2880
+ /* (134) attribute_list ::= alist */ yytestcase(yyruleno==134);
2881
+ /* (135) alist ::= */ yytestcase(yyruleno==135);
2882
+ /* (136) alist ::= alist attribute */ yytestcase(yyruleno==136);
2883
+ /* (137) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=137);
2884
+ /* (138) attribute ::= WITH withclause */ yytestcase(yyruleno==138);
2885
+ /* (139) go ::= GO */ yytestcase(yyruleno==139);
2886
+ /* (140) go ::= */ yytestcase(yyruleno==140);
2887
+ /* (141) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==141);
2888
+ /* (142) even ::= EVEN WITH */ yytestcase(yyruleno==142);
28662889
/* (143) dashproperty ::= DOTTED */ yytestcase(yyruleno==143);
28672890
/* (144) dashproperty ::= DASHED */ yytestcase(yyruleno==144);
28682891
/* (145) colorproperty ::= FILL */ yytestcase(yyruleno==145);
28692892
/* (146) colorproperty ::= COLOR */ yytestcase(yyruleno==146);
28702893
/* (147) position ::= place */ yytestcase(yyruleno==147);
@@ -2935,18 +2958,18 @@
29352958
){
29362959
pik_parserARG_FETCH
29372960
pik_parserCTX_FETCH
29382961
#define TOKEN yyminor
29392962
/************ Begin %syntax_error code ****************************************/
2940
-#line 468 "pikchr.y"
2963
+#line 469 "pikchr.y"
29412964
29422965
if( TOKEN.z && TOKEN.z[0] ){
29432966
pik_error(p, &TOKEN, "syntax error");
29442967
}else{
29452968
pik_error(p, 0, "syntax error");
29462969
}
2947
-#line 2972 "pikchr.c"
2970
+#line 2995 "pikchr.c"
29482971
/************ End %syntax_error code ******************************************/
29492972
pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
29502973
pik_parserCTX_STORE
29512974
}
29522975
@@ -3175,11 +3198,11 @@
31753198
#else
31763199
(void)iToken;
31773200
return 0;
31783201
#endif
31793202
}
3180
-#line 703 "pikchr.y"
3203
+#line 705 "pikchr.y"
31813204
31823205
31833206
31843207
/* Chart of the 140 official HTML color names with their
31853208
** corresponding RGB value.
@@ -3593,11 +3616,11 @@
35933616
}
35943617
static PPoint circleChop(PElem *pElem, PPoint *pPt){
35953618
PPoint chop;
35963619
PNum dx = pPt->x - pElem->ptAt.x;
35973620
PNum dy = pPt->y - pElem->ptAt.y;
3598
- PNum dist = sqrt(dx*dx + dy*dy);
3621
+ PNum dist = hypot(dx,dy);
35993622
if( dist<pElem->rad ) return pElem->ptAt;
36003623
chop.x = pElem->ptAt.x + dx*pElem->rad/dist;
36013624
chop.y = pElem->ptAt.y + dy*pElem->rad/dist;
36023625
return chop;
36033626
}
@@ -3604,11 +3627,11 @@
36043627
static void circleFit(Pik *p, PElem *pElem, PNum w, PNum h){
36053628
PNum mx = 0.0;
36063629
if( w>0 ) mx = w;
36073630
if( h>mx ) mx = h;
36083631
if( (w*w + h*h) > mx*mx ){
3609
- mx = sqrt(w*w + h*h);
3632
+ mx = hypot(w,h);
36103633
}
36113634
if( mx>0.0 ){
36123635
pElem->rad = 0.5*mx;
36133636
pElem->w = pElem->h = mx;
36143637
}
@@ -3713,11 +3736,11 @@
37133736
PNum dy = pPt->y - pElem->ptAt.y;
37143737
if( pElem->w<=0.0 ) return pElem->ptAt;
37153738
if( pElem->h<=0.0 ) return pElem->ptAt;
37163739
s = pElem->h/pElem->w;
37173740
dq = dx*s;
3718
- dist = sqrt(dq*dq + dy*dy);
3741
+ dist = hypot(dq,dy);
37193742
if( dist<pElem->h ) return pElem->ptAt;
37203743
chop.x = pElem->ptAt.x + 0.5*dq*pElem->h/(dist*s);
37213744
chop.y = pElem->ptAt.y + 0.5*dy*pElem->h/dist;
37223745
return chop;
37233746
}
@@ -3895,11 +3918,11 @@
38953918
** return the midpoint.
38963919
*/
38973920
static PPoint radiusMidpoint(PPoint f, PPoint t, PNum r, int *pbMid){
38983921
PNum dx = t.x - f.x;
38993922
PNum dy = t.y - f.y;
3900
- PNum dist = sqrt(dx*dx+dy*dy);
3923
+ PNum dist = hypot(dx,dy);
39013924
PPoint m;
39023925
if( dist<=0.0 ) return t;
39033926
dx /= dist;
39043927
dy /= dist;
39053928
if( r > 0.5*dist ){
@@ -4144,11 +4167,11 @@
41444167
** modifying the location of *t.
41454168
*/
41464169
static void pik_chop(Pik *p, PPoint *f, PPoint *t, PNum amt){
41474170
PNum dx = t->x - f->x;
41484171
PNum dy = t->y - f->y;
4149
- PNum dist = sqrt(dx*dx + dy*dy);
4172
+ PNum dist = hypot(dx,dy);
41504173
PNum r;
41514174
if( dist<=amt ){
41524175
*t = *f;
41534176
return;
41544177
}
@@ -4163,11 +4186,11 @@
41634186
** the shaft of the arrow does not extend into the arrowhead.
41644187
*/
41654188
static void pik_draw_arrowhead(Pik *p, PPoint *f, PPoint *t, PElem *pElem){
41664189
PNum dx = t->x - f->x;
41674190
PNum dy = t->y - f->y;
4168
- PNum dist = sqrt(dx*dx + dy*dy);
4191
+ PNum dist = hypot(dx,dy);
41694192
PNum h = p->hArrow * pElem->sw;
41704193
PNum w = p->wArrow * pElem->sw;
41714194
PNum e1, ddx, ddy;
41724195
PNum bx, by;
41734196
if( pElem->color<0.0 ) return;
@@ -4225,13 +4248,14 @@
42254248
}
42264249
42274250
/*
42284251
** Append text to zOut with HTML characters escaped.
42294252
**
4230
-** * The space character is changed into "&nbsp;" if mFlags as the
4231
-** 0x01 bit set. This is needed when outputting text to preserve
4232
-** leading and trailing whitespace.
4253
+** * The space character is changed into non-breaking space (U+0080)
4254
+** if mFlags has the 0x01 bit set. This is needed when outputting
4255
+** text to preserve leading and trailing whitespace. Turns out we
4256
+** cannot use &nbsp; as that is an HTML-ism and is not valid in XML.
42334257
**
42344258
** * The "&" character is changed into "&amp;" if mFlags as the
42354259
** 0x02 bit set. This is needed when generating error message text.
42364260
**
42374261
** * Except for the above, only "<" and ">" are escaped.
@@ -4253,11 +4277,11 @@
42534277
if( i==n ) break;
42544278
switch( c ){
42554279
case '<': { pik_append(p, "&lt;", 4); break; }
42564280
case '>': { pik_append(p, "&gt;", 4); break; }
42574281
case '&': { pik_append(p, "&amp;", 5); break; }
4258
- case ' ': { pik_append(p, "&nbsp;", 6); break; }
4282
+ case ' ': { pik_append(p, "\302\240;", 2); break; }
42594283
}
42604284
i++;
42614285
n -= i;
42624286
zText += i;
42634287
i = 0;
@@ -5306,10 +5330,20 @@
53065330
return;
53075331
}
53085332
pElem->bClose = 1;
53095333
}
53105334
5335
+/* Lower the layer of the current element so that it is behind the
5336
+** given element.
5337
+*/
5338
+static void pik_behind(Pik *p, PElem *pOther){
5339
+ PElem *pElem = p->cur;
5340
+ if( pElem->iLayer>=pOther->iLayer ){
5341
+ pElem->iLayer = pOther->iLayer - 1;
5342
+ }
5343
+}
5344
+
53115345
53125346
/* Set the "at" of an element
53135347
*/
53145348
static void pik_set_at(Pik *p, PToken *pEdge, PPoint *pAt, PToken *pErrTok){
53155349
PElem *pElem;
@@ -5384,10 +5418,11 @@
53845418
static int pik_text_length(const PToken *pToken){
53855419
int n = pToken->n;
53865420
const char *z = pToken->z;
53875421
int cnt, j;
53885422
for(j=1, cnt=0; j<n-1; j++){
5423
+ if( (z[j] & 0xc0)==0xc0 ) continue;
53895424
cnt++;
53905425
if( z[j]=='\\' && z[j+1]!='&' ){
53915426
j++;
53925427
}else if( z[j]=='&' ){
53935428
int k;
@@ -6245,10 +6280,11 @@
62456280
{ "abs", 3, T_FUNC1, FN_ABS, 0 },
62466281
{ "aligned", 7, T_ALIGNED, 0, 0 },
62476282
{ "and", 3, T_AND, 0, 0 },
62486283
{ "as", 2, T_AS, 0, 0 },
62496284
{ "at", 2, T_AT, 0, 0 },
6285
+ { "behind", 6, T_BEHIND, 0, 0 },
62506286
{ "below", 5, T_BELOW, 0, 0 },
62516287
{ "between", 7, T_BETWEEN, 0, 0 },
62526288
{ "big", 3, T_BIG, 0, 0 },
62536289
{ "bold", 4, T_BOLD, 0, 0 },
62546290
{ "bot", 3, T_EDGEPT, 0, CP_S },
@@ -6451,10 +6487,11 @@
64516487
case ')': { pToken->eType = T_RP; return 1; }
64526488
case '[': { pToken->eType = T_LB; return 1; }
64536489
case ']': { pToken->eType = T_RB; return 1; }
64546490
case ',': { pToken->eType = T_COMMA; return 1; }
64556491
case ':': { pToken->eType = T_COLON; return 1; }
6492
+ case '>': { pToken->eType = T_GT; return 1; }
64566493
case '=': { pToken->eType = T_ASSIGN;
64576494
pToken->eCode = T_ASSIGN; return 1; }
64586495
case '-': {
64596496
if( z[1]=='>' ){
64606497
pToken->eType = T_RARROW;
@@ -6476,12 +6513,12 @@
64766513
}else{
64776514
pToken->eType = T_LARROW;
64786515
return 2;
64796516
}
64806517
}else{
6481
- pToken->eType = T_ERROR;
6482
- return 1;
6518
+ pToken->eType = T_LT;
6519
+ return 1;
64836520
}
64846521
}
64856522
default: {
64866523
c = z[0];
64876524
if( c=='.' ){
@@ -6798,6 +6835,6 @@
67986835
printf("</body></html>\n");
67996836
return 0;
68006837
}
68016838
#endif /* PIKCHR_SHELL */
68026839
6803
-#line 6828 "pikchr.c"
6840
+#line 6865 "pikchr.c"
68046841
--- src/pikchr.c
+++ src/pikchr.c
@@ -422,13 +422,14 @@
422 static PPoint pik_position_at_hdg(Pik *p, PNum dist, PToken *pD, PPoint pt);
423 static void pik_same(Pik *p, PElem*, PToken*);
424 static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
425 static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
426 static void pik_compute_layout_settings(Pik*);
 
427
428
429 #line 455 "pikchr.c"
430 /**************** End of %include directives **********************************/
431 /* These constants specify the various numeric values for terminal symbols.
432 ***************** Begin token definitions *************************************/
433 #ifndef T_ID
434 #define T_ID 1
@@ -467,13 +468,13 @@
467 #define T_AT 34
468 #define T_WITH 35
469 #define T_SAME 36
470 #define T_AS 37
471 #define T_FIT 38
472 #define T_UNTIL 39
473 #define T_EVEN 40
474 #define T_AND 41
475 #define T_DOT_E 42
476 #define T_HEIGHT 43
477 #define T_WIDTH 44
478 #define T_RADIUS 45
479 #define T_DIAMETER 46
@@ -497,28 +498,31 @@
497 #define T_ALIGNED 64
498 #define T_BIG 65
499 #define T_SMALL 66
500 #define T_LP 67
501 #define T_RP 68
502 #define T_WAY 69
503 #define T_BETWEEN 70
504 #define T_THE 71
505 #define T_DOT_L 72
506 #define T_START 73
507 #define T_END 74
508 #define T_NTH 75
509 #define T_VERTEX 76
510 #define T_IN 77
511 #define T_DOT_U 78
512 #define T_LAST 79
513 #define T_NUMBER 80
514 #define T_FUNC1 81
515 #define T_FUNC2 82
516 #define T_X 83
517 #define T_Y 84
518 #define T_TOP 85
519 #define T_BOTTOM 86
 
 
 
520 #endif
521 /**************** End token definitions ***************************************/
522
523 /* The next sections is a series of control #defines.
524 ** various aspects of the generated parser.
@@ -574,21 +578,21 @@
574 #ifndef INTERFACE
575 # define INTERFACE 1
576 #endif
577 /************* Begin control #defines *****************************************/
578 #define YYCODETYPE unsigned char
579 #define YYNOCODE 121
580 #define YYACTIONTYPE unsigned short int
581 #define pik_parserTOKENTYPE PToken
582 typedef union {
583 int yyinit;
584 pik_parserTOKENTYPE yy0;
585 PElem* yy2;
586 PEList* yy66;
587 int yy86;
588 PPoint yy187;
589 PNum yy241;
590 } YYMINORTYPE;
591 #ifndef YYSTACKDEPTH
592 #define YYSTACKDEPTH 100
593 #endif
594 #define pik_parserARG_SDECL
@@ -600,22 +604,22 @@
600 #define pik_parserCTX_PDECL ,Pik *p
601 #define pik_parserCTX_PARAM ,p
602 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
603 #define pik_parserCTX_STORE yypParser->p=p;
604 #define YYFALLBACK 1
605 #define YYNSTATE 166
606 #define YYNRULE 158
607 #define YYNRULE_WITH_ACTION 120
608 #define YYNTOKEN 87
609 #define YY_MAX_SHIFT 165
610 #define YY_MIN_SHIFTREDUCE 286
611 #define YY_MAX_SHIFTREDUCE 443
612 #define YY_ERROR_ACTION 444
613 #define YY_ACCEPT_ACTION 445
614 #define YY_NO_ACTION 446
615 #define YY_MIN_REDUCE 447
616 #define YY_MAX_REDUCE 604
617 /************* End control #defines *******************************************/
618 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
619
620 /* Define the yytestcase() macro to be a no-op if is not already defined
621 ** otherwise.
@@ -678,265 +682,270 @@
678 ** yy_reduce_ofst[] For each state, the offset into yy_action for
679 ** shifting non-terminals after a reduce.
680 ** yy_default[] Default action for each state.
681 **
682 *********** Begin parsing tables **********************************************/
683 #define YY_ACTTAB_COUNT (936)
684 static const YYACTIONTYPE yy_action[] = {
685 /* 0 */ 579, 495, 164, 122, 19, 123, 448, 455, 26, 447,
686 /* 10 */ 579, 68, 451, 125, 431, 432, 339, 47, 79, 25,
687 /* 20 */ 46, 28, 579, 165, 126, 445, 21, 319, 320, 10,
688 /* 30 */ 9, 32, 145, 31, 8, 57, 124, 155, 336, 589,
689 /* 40 */ 581, 75, 581, 339, 339, 339, 339, 429, 430, 340,
690 /* 50 */ 341, 342, 343, 344, 345, 346, 347, 391, 439, 556,
691 /* 60 */ 51, 52, 557, 558, 555, 453, 26, 71, 374, 142,
692 /* 70 */ 431, 432, 339, 406, 454, 114, 113, 164, 122, 44,
693 /* 80 */ 41, 442, 443, 12, 146, 68, 407, 408, 409, 411,
694 /* 90 */ 78, 535, 304, 77, 24, 414, 415, 416, 417, 339,
695 /* 100 */ 339, 339, 339, 429, 430, 391, 398, 399, 51, 52,
696 /* 110 */ 414, 415, 416, 417, 27, 108, 374, 302, 431, 432,
697 /* 120 */ 339, 535, 80, 1, 116, 164, 122, 535, 461, 144,
698 /* 130 */ 143, 102, 356, 76, 76, 120, 390, 157, 156, 438,
699 /* 140 */ 438, 440, 441, 56, 55, 54, 53, 339, 339, 339,
700 /* 150 */ 339, 429, 430, 391, 439, 125, 51, 52, 71, 22,
701 /* 160 */ 142, 374, 54, 53, 374, 499, 114, 113, 164, 122,
702 /* 170 */ 78, 5, 304, 77, 140, 164, 122, 442, 443, 107,
703 /* 180 */ 127, 127, 81, 120, 390, 157, 156, 438, 438, 391,
704 /* 190 */ 439, 58, 51, 52, 531, 164, 122, 70, 150, 142,
705 /* 200 */ 374, 152, 148, 154, 112, 114, 113, 164, 122, 404,
706 /* 210 */ 405, 84, 150, 442, 443, 152, 148, 154, 73, 1,
707 /* 220 */ 116, 164, 122, 25, 110, 144, 143, 102, 120, 376,
708 /* 230 */ 161, 120, 390, 157, 156, 306, 391, 440, 441, 51,
709 /* 240 */ 52, 137, 135, 56, 55, 54, 53, 109, 30, 297,
710 /* 250 */ 298, 299, 6, 301, 129, 1, 7, 74, 45, 426,
711 /* 260 */ 69, 144, 143, 102, 139, 138, 439, 120, 390, 157,
712 /* 270 */ 156, 38, 425, 440, 441, 11, 355, 349, 349, 349,
713 /* 280 */ 349, 349, 349, 349, 349, 349, 349, 33, 121, 442,
714 /* 290 */ 443, 56, 55, 54, 53, 315, 530, 164, 122, 18,
715 /* 300 */ 17, 391, 5, 436, 51, 52, 72, 389, 136, 435,
716 /* 310 */ 107, 133, 374, 434, 120, 390, 157, 156, 137, 135,
717 /* 320 */ 56, 55, 54, 53, 431, 432, 339, 56, 55, 54,
718 /* 330 */ 53, 56, 55, 54, 53, 45, 71, 134, 142, 130,
719 /* 340 */ 128, 139, 138, 498, 114, 113, 164, 122, 38, 440,
720 /* 350 */ 441, 119, 13, 339, 339, 339, 339, 429, 430, 391,
721 /* 360 */ 331, 115, 51, 52, 378, 160, 14, 5, 377, 162,
722 /* 370 */ 374, 529, 164, 122, 15, 107, 18, 17, 16, 120,
723 /* 380 */ 390, 157, 156, 366, 367, 136, 435, 59, 391, 327,
724 /* 390 */ 34, 51, 52, 438, 438, 354, 85, 150, 60, 374,
725 /* 400 */ 152, 148, 154, 2, 61, 116, 164, 122, 147, 164,
726 /* 410 */ 122, 149, 164, 122, 431, 432, 339, 97, 150, 36,
727 /* 420 */ 82, 152, 148, 154, 62, 5, 116, 164, 122, 116,
728 /* 430 */ 164, 122, 403, 107, 151, 164, 122, 120, 390, 157,
729 /* 440 */ 156, 439, 402, 339, 339, 339, 339, 429, 430, 391,
730 /* 450 */ 63, 401, 51, 52, 5, 153, 164, 122, 64, 65,
731 /* 460 */ 374, 400, 107, 66, 442, 443, 120, 390, 157, 156,
732 /* 470 */ 391, 49, 50, 51, 52, 56, 55, 54, 53, 310,
733 /* 480 */ 67, 109, 446, 438, 438, 71, 391, 142, 382, 51,
734 /* 490 */ 52, 375, 493, 114, 113, 164, 122, 374, 71, 29,
735 /* 500 */ 142, 56, 55, 54, 53, 483, 114, 113, 164, 122,
736 /* 510 */ 71, 380, 142, 381, 163, 5, 40, 482, 114, 113,
737 /* 520 */ 164, 122, 446, 107, 440, 441, 446, 120, 390, 157,
738 /* 530 */ 156, 391, 446, 446, 51, 52, 5, 449, 455, 26,
739 /* 540 */ 446, 446, 374, 451, 107, 158, 164, 122, 120, 390,
740 /* 550 */ 157, 156, 3, 446, 165, 446, 446, 21, 446, 446,
741 /* 560 */ 107, 71, 446, 142, 120, 390, 157, 156, 518, 114,
742 /* 570 */ 113, 164, 122, 71, 330, 142, 56, 55, 54, 53,
743 /* 580 */ 132, 114, 113, 164, 122, 71, 446, 142, 446, 108,
744 /* 590 */ 446, 446, 524, 114, 113, 164, 122, 4, 116, 164,
745 /* 600 */ 122, 446, 461, 446, 35, 107, 446, 446, 574, 120,
746 /* 610 */ 390, 157, 156, 71, 326, 142, 56, 55, 54, 53,
747 /* 620 */ 523, 114, 113, 164, 122, 446, 71, 446, 142, 56,
748 /* 630 */ 55, 54, 53, 522, 114, 113, 164, 122, 446, 446,
749 /* 640 */ 71, 446, 142, 446, 37, 446, 93, 521, 114, 113,
750 /* 650 */ 164, 122, 71, 446, 142, 116, 164, 122, 446, 520,
751 /* 660 */ 114, 113, 164, 122, 71, 446, 142, 464, 446, 23,
752 /* 670 */ 446, 519, 114, 113, 164, 122, 71, 446, 142, 56,
753 /* 680 */ 55, 54, 53, 131, 114, 113, 164, 122, 71, 446,
754 /* 690 */ 142, 446, 446, 353, 39, 479, 114, 113, 164, 122,
755 /* 700 */ 111, 448, 455, 26, 446, 91, 446, 451, 56, 55,
756 /* 710 */ 54, 53, 446, 446, 116, 164, 122, 446, 165, 446,
757 /* 720 */ 20, 21, 446, 42, 446, 108, 56, 55, 54, 53,
758 /* 730 */ 56, 55, 54, 53, 116, 164, 122, 446, 475, 108,
759 /* 740 */ 446, 43, 446, 389, 56, 55, 54, 53, 116, 164,
760 /* 750 */ 122, 446, 452, 56, 55, 54, 53, 309, 446, 48,
761 /* 760 */ 56, 55, 54, 53, 56, 55, 54, 53, 83, 446,
762 /* 770 */ 446, 98, 389, 446, 99, 446, 446, 116, 164, 122,
763 /* 780 */ 116, 164, 122, 116, 164, 122, 100, 446, 446, 101,
764 /* 790 */ 446, 446, 86, 446, 393, 116, 164, 122, 116, 164,
765 /* 800 */ 122, 116, 164, 122, 446, 446, 87, 446, 446, 446,
766 /* 810 */ 103, 534, 164, 122, 446, 116, 164, 122, 446, 116,
767 /* 820 */ 164, 122, 88, 446, 392, 89, 446, 446, 389, 446,
768 /* 830 */ 104, 116, 164, 122, 116, 164, 122, 90, 446, 116,
769 /* 840 */ 164, 122, 105, 446, 446, 106, 116, 164, 122, 92,
770 /* 850 */ 446, 116, 164, 122, 116, 164, 122, 94, 116, 164,
771 /* 860 */ 122, 446, 446, 95, 446, 446, 116, 164, 122, 96,
772 /* 870 */ 376, 161, 116, 164, 122, 549, 376, 161, 116, 164,
773 /* 880 */ 122, 548, 446, 446, 116, 164, 122, 547, 446, 446,
774 /* 890 */ 116, 164, 122, 546, 446, 446, 116, 164, 122, 446,
775 /* 900 */ 446, 446, 116, 164, 122, 446, 446, 117, 446, 446,
776 /* 910 */ 446, 118, 446, 446, 446, 446, 116, 164, 122, 446,
777 /* 920 */ 116, 164, 122, 446, 446, 446, 141, 446, 446, 121,
778 /* 930 */ 446, 446, 159, 446, 446, 121,
 
 
779 };
780 static const YYCODETYPE yy_lookahead[] = {
781 /* 0 */ 0, 100, 101, 102, 120, 87, 88, 89, 90, 0,
782 /* 10 */ 10, 3, 94, 93, 14, 15, 16, 92, 18, 10,
783 /* 20 */ 95, 96, 22, 105, 93, 107, 108, 27, 28, 29,
784 /* 30 */ 30, 31, 93, 33, 34, 35, 36, 93, 38, 119,
785 /* 40 */ 115, 116, 117, 43, 44, 45, 46, 47, 48, 49,
786 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 1, 2, 92,
787 /* 60 */ 4, 5, 95, 96, 97, 89, 90, 91, 12, 93,
788 /* 70 */ 14, 15, 16, 1, 98, 99, 100, 101, 102, 4,
789 /* 80 */ 5, 25, 26, 19, 12, 77, 14, 15, 16, 17,
790 /* 90 */ 18, 42, 20, 21, 111, 23, 24, 25, 26, 43,
791 /* 100 */ 44, 45, 46, 47, 48, 1, 83, 84, 4, 5,
792 /* 110 */ 23, 24, 25, 26, 94, 91, 12, 19, 14, 15,
793 /* 120 */ 16, 72, 103, 67, 100, 101, 102, 78, 104, 73,
794 /* 130 */ 74, 75, 68, 109, 110, 79, 80, 81, 82, 83,
795 /* 140 */ 84, 85, 86, 4, 5, 6, 7, 43, 44, 45,
796 /* 150 */ 46, 47, 48, 1, 2, 93, 4, 5, 91, 113,
797 /* 160 */ 93, 12, 6, 7, 12, 98, 99, 100, 101, 102,
798 /* 170 */ 18, 67, 20, 21, 100, 101, 102, 25, 26, 75,
799 /* 180 */ 118, 119, 103, 79, 80, 81, 82, 83, 84, 1,
800 /* 190 */ 2, 37, 4, 5, 100, 101, 102, 91, 92, 93,
801 /* 200 */ 12, 95, 96, 97, 98, 99, 100, 101, 102, 83,
802 /* 210 */ 84, 91, 92, 25, 26, 95, 96, 97, 42, 67,
803 /* 220 */ 100, 101, 102, 10, 75, 73, 74, 75, 79, 20,
804 /* 230 */ 21, 79, 80, 81, 82, 22, 1, 85, 86, 4,
805 /* 240 */ 5, 2, 3, 4, 5, 6, 7, 12, 72, 14,
806 /* 250 */ 15, 16, 34, 18, 40, 67, 34, 42, 19, 35,
807 /* 260 */ 41, 73, 74, 75, 25, 26, 2, 79, 80, 81,
808 /* 270 */ 82, 32, 35, 85, 86, 41, 68, 57, 58, 59,
809 /* 280 */ 60, 61, 62, 63, 64, 65, 66, 72, 79, 25,
810 /* 290 */ 26, 4, 5, 6, 7, 8, 100, 101, 102, 60,
811 /* 300 */ 61, 1, 67, 70, 4, 5, 42, 68, 69, 70,
812 /* 310 */ 75, 69, 12, 70, 79, 80, 81, 82, 2, 3,
813 /* 320 */ 4, 5, 6, 7, 14, 15, 16, 4, 5, 6,
814 /* 330 */ 7, 4, 5, 6, 7, 19, 91, 71, 93, 39,
815 /* 340 */ 40, 25, 26, 98, 99, 100, 101, 102, 32, 85,
816 /* 350 */ 86, 72, 29, 43, 44, 45, 46, 47, 48, 1,
817 /* 360 */ 2, 72, 4, 5, 20, 21, 3, 67, 20, 21,
818 /* 370 */ 12, 100, 101, 102, 3, 75, 60, 61, 3, 79,
819 /* 380 */ 80, 81, 82, 73, 74, 69, 70, 3, 1, 2,
820 /* 390 */ 32, 4, 5, 83, 84, 68, 91, 92, 3, 12,
821 /* 400 */ 95, 96, 97, 13, 3, 100, 101, 102, 100, 101,
822 /* 410 */ 102, 100, 101, 102, 14, 15, 16, 91, 92, 32,
823 /* 420 */ 91, 95, 96, 97, 3, 67, 100, 101, 102, 100,
824 /* 430 */ 101, 102, 68, 75, 100, 101, 102, 79, 80, 81,
825 /* 440 */ 82, 2, 68, 43, 44, 45, 46, 47, 48, 1,
826 /* 450 */ 3, 68, 4, 5, 67, 100, 101, 102, 3, 3,
827 /* 460 */ 12, 68, 75, 3, 25, 26, 79, 80, 81, 82,
828 /* 470 */ 1, 67, 67, 4, 5, 4, 5, 6, 7, 8,
829 /* 480 */ 3, 12, 121, 83, 84, 91, 1, 93, 22, 4,
830 /* 490 */ 5, 12, 98, 99, 100, 101, 102, 12, 91, 11,
831 /* 500 */ 93, 4, 5, 6, 7, 98, 99, 100, 101, 102,
832 /* 510 */ 91, 22, 93, 22, 78, 67, 19, 98, 99, 100,
833 /* 520 */ 101, 102, 121, 75, 85, 86, 121, 79, 80, 81,
834 /* 530 */ 82, 1, 121, 121, 4, 5, 67, 88, 89, 90,
835 /* 540 */ 121, 121, 12, 94, 75, 100, 101, 102, 79, 80,
836 /* 550 */ 81, 82, 67, 121, 105, 121, 121, 108, 121, 121,
837 /* 560 */ 75, 91, 121, 93, 79, 80, 81, 82, 98, 99,
838 /* 570 */ 100, 101, 102, 91, 2, 93, 4, 5, 6, 7,
839 /* 580 */ 98, 99, 100, 101, 102, 91, 121, 93, 121, 91,
840 /* 590 */ 121, 121, 98, 99, 100, 101, 102, 67, 100, 101,
841 /* 600 */ 102, 121, 104, 121, 32, 75, 121, 121, 110, 79,
842 /* 610 */ 80, 81, 82, 91, 2, 93, 4, 5, 6, 7,
843 /* 620 */ 98, 99, 100, 101, 102, 121, 91, 121, 93, 4,
844 /* 630 */ 5, 6, 7, 98, 99, 100, 101, 102, 121, 121,
845 /* 640 */ 91, 121, 93, 121, 32, 121, 91, 98, 99, 100,
846 /* 650 */ 101, 102, 91, 121, 93, 100, 101, 102, 121, 98,
847 /* 660 */ 99, 100, 101, 102, 91, 121, 93, 112, 121, 114,
848 /* 670 */ 121, 98, 99, 100, 101, 102, 91, 121, 93, 4,
849 /* 680 */ 5, 6, 7, 98, 99, 100, 101, 102, 91, 121,
850 /* 690 */ 93, 121, 121, 68, 19, 98, 99, 100, 101, 102,
851 /* 700 */ 87, 88, 89, 90, 121, 91, 121, 94, 4, 5,
852 /* 710 */ 6, 7, 121, 121, 100, 101, 102, 121, 105, 121,
853 /* 720 */ 106, 108, 121, 19, 121, 91, 4, 5, 6, 7,
854 /* 730 */ 4, 5, 6, 7, 100, 101, 102, 121, 104, 91,
855 /* 740 */ 121, 19, 121, 68, 4, 5, 6, 7, 100, 101,
856 /* 750 */ 102, 121, 104, 4, 5, 6, 7, 8, 121, 19,
857 /* 760 */ 4, 5, 6, 7, 4, 5, 6, 7, 91, 121,
858 /* 770 */ 121, 91, 68, 121, 91, 121, 121, 100, 101, 102,
859 /* 780 */ 100, 101, 102, 100, 101, 102, 91, 121, 121, 91,
860 /* 790 */ 121, 121, 91, 121, 68, 100, 101, 102, 100, 101,
861 /* 800 */ 102, 100, 101, 102, 121, 121, 91, 121, 121, 121,
862 /* 810 */ 91, 100, 101, 102, 121, 100, 101, 102, 121, 100,
863 /* 820 */ 101, 102, 91, 121, 68, 91, 121, 121, 68, 121,
864 /* 830 */ 91, 100, 101, 102, 100, 101, 102, 91, 121, 100,
865 /* 840 */ 101, 102, 91, 121, 121, 91, 100, 101, 102, 91,
866 /* 850 */ 121, 100, 101, 102, 100, 101, 102, 91, 100, 101,
867 /* 860 */ 102, 121, 121, 91, 121, 121, 100, 101, 102, 91,
868 /* 870 */ 20, 21, 100, 101, 102, 91, 20, 21, 100, 101,
869 /* 880 */ 102, 91, 121, 121, 100, 101, 102, 91, 121, 121,
870 /* 890 */ 100, 101, 102, 91, 121, 121, 100, 101, 102, 121,
871 /* 900 */ 121, 121, 100, 101, 102, 121, 121, 91, 121, 121,
872 /* 910 */ 121, 91, 121, 121, 121, 121, 100, 101, 102, 121,
873 /* 920 */ 100, 101, 102, 121, 121, 121, 76, 121, 121, 79,
874 /* 930 */ 121, 121, 76, 121, 121, 79, 121, 121, 121, 121,
875 /* 940 */ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
876 /* 950 */ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
877 /* 960 */ 121, 121, 121, 121, 87, 87, 87, 87, 87, 87,
878 /* 970 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
879 /* 980 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
880 /* 990 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
881 /* 1000 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
882 /* 1010 */ 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
883 /* 1020 */ 87, 87, 87,
 
 
884 };
885 #define YY_SHIFT_COUNT (165)
886 #define YY_SHIFT_MIN (0)
887 #define YY_SHIFT_MAX (856)
888 static const unsigned short int yy_shift_ofst[] = {
889 /* 0 */ 72, 56, 152, 104, 104, 104, 188, 188, 188, 188,
890 /* 10 */ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
891 /* 20 */ 188, 235, 72, 0, 235, 72, 448, 300, 469, 469,
892 /* 30 */ 310, 358, 387, 400, 448, 448, 448, 448, 448, 448,
893 /* 40 */ 448, 485, 448, 448, 530, 448, 448, 448, 448, 448,
894 /* 50 */ 448, 448, 448, 448, 448, 448, 448, 264, 149, 149,
895 /* 60 */ 149, 149, 149, 149, 149, 149, 149, 149, 149, 264,
896 /* 70 */ 239, 316, 439, 439, 439, 87, 98, 936, 936, 936,
897 /* 80 */ 220, 220, 572, 612, 675, 704, 323, 327, 497, 625,
898 /* 90 */ 722, 287, 471, 749, 726, 740, 756, 760, 139, 139,
899 /* 100 */ 139, 139, 850, 139, 139, 139, 139, 856, 139, 49,
900 /* 110 */ 209, 213, 64, 176, 75, 23, 215, 156, 156, 126,
901 /* 120 */ 344, 348, 8, 9, 154, 218, 222, 219, 224, 237,
902 /* 130 */ 214, 234, 208, 233, 242, 266, 243, 363, 371, 375,
903 /* 140 */ 279, 384, 395, 401, 421, 289, 390, 364, 447, 374,
904 /* 150 */ 455, 383, 456, 393, 460, 289, 404, 405, 279, 477,
905 /* 160 */ 466, 489, 491, 479, 436, 488,
906 };
907 #define YY_REDUCE_COUNT (79)
908 #define YY_REDUCE_MIN (-116)
909 #define YY_REDUCE_MAX (820)
910 static const short yy_reduce_ofst[] = {
911 /* 0 */ -82, 106, -24, 120, 305, 326, 67, 245, 394, 407,
912 /* 10 */ 419, 470, 482, 494, 522, 535, 549, 561, 573, 585,
913 /* 20 */ 597, 24, 613, -75, 498, 449, 555, 614, 634, 648,
914 /* 30 */ -33, 329, 677, -33, 680, 683, 695, 698, 701, 715,
915 /* 40 */ 719, 731, 734, 739, 746, 751, 754, 758, 766, 772,
916 /* 50 */ 778, 784, 790, 796, 802, 816, 820, 62, -99, 74,
917 /* 60 */ 94, 196, 271, 308, 311, 334, 355, 445, 711, -80,
918 /* 70 */ -116, -116, -69, -61, -56, 20, -17, 46, 19, 79,
 
919 };
920 static const YYACTIONTYPE yy_default[] = {
921 /* 0 */ 450, 444, 444, 444, 444, 444, 444, 444, 444, 444,
922 /* 10 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
923 /* 20 */ 444, 444, 450, 585, 444, 450, 580, 478, 444, 444,
924 /* 30 */ 444, 584, 484, 444, 444, 444, 444, 444, 444, 444,
925 /* 40 */ 444, 444, 444, 444, 444, 444, 474, 444, 444, 444,
926 /* 50 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
927 /* 60 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
928 /* 70 */ 444, 444, 444, 444, 444, 444, 456, 468, 509, 509,
929 /* 80 */ 466, 496, 444, 444, 444, 444, 444, 444, 444, 444,
930 /* 90 */ 444, 477, 472, 469, 444, 444, 444, 444, 490, 489,
931 /* 100 */ 486, 485, 444, 513, 512, 511, 473, 444, 571, 457,
932 /* 110 */ 444, 444, 444, 525, 594, 444, 444, 545, 544, 444,
933 /* 120 */ 540, 444, 533, 444, 494, 444, 444, 583, 444, 444,
934 /* 130 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
935 /* 140 */ 532, 444, 444, 444, 444, 526, 444, 444, 444, 444,
936 /* 150 */ 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
937 /* 160 */ 444, 444, 444, 444, 598, 444,
938 };
939 /********** End of lemon-generated parsing tables *****************************/
940
941 /* The next table maps tokens (terminal symbols) into fallback tokens.
942 ** If a construct like the following:
@@ -991,13 +1000,13 @@
991 0, /* AT => nothing */
992 0, /* WITH => nothing */
993 0, /* SAME => nothing */
994 0, /* AS => nothing */
995 0, /* FIT => nothing */
 
996 0, /* UNTIL => nothing */
997 0, /* EVEN => nothing */
998 0, /* AND => nothing */
999 0, /* DOT_E => nothing */
1000 0, /* HEIGHT => nothing */
1001 0, /* WIDTH => nothing */
1002 0, /* RADIUS => nothing */
1003 0, /* DIAMETER => nothing */
@@ -1021,10 +1030,13 @@
1021 0, /* ALIGNED => nothing */
1022 0, /* BIG => nothing */
1023 0, /* SMALL => nothing */
1024 0, /* LP => nothing */
1025 0, /* RP => nothing */
 
 
 
1026 0, /* WAY => nothing */
1027 0, /* BETWEEN => nothing */
1028 0, /* THE => nothing */
1029 0, /* DOT_L => nothing */
1030 0, /* START => nothing */
@@ -1166,13 +1178,13 @@
1166 /* 34 */ "AT",
1167 /* 35 */ "WITH",
1168 /* 36 */ "SAME",
1169 /* 37 */ "AS",
1170 /* 38 */ "FIT",
1171 /* 39 */ "UNTIL",
1172 /* 40 */ "EVEN",
1173 /* 41 */ "AND",
1174 /* 42 */ "DOT_E",
1175 /* 43 */ "HEIGHT",
1176 /* 44 */ "WIDTH",
1177 /* 45 */ "RADIUS",
1178 /* 46 */ "DIAMETER",
@@ -1196,62 +1208,64 @@
1196 /* 64 */ "ALIGNED",
1197 /* 65 */ "BIG",
1198 /* 66 */ "SMALL",
1199 /* 67 */ "LP",
1200 /* 68 */ "RP",
1201 /* 69 */ "WAY",
1202 /* 70 */ "BETWEEN",
1203 /* 71 */ "THE",
1204 /* 72 */ "DOT_L",
1205 /* 73 */ "START",
1206 /* 74 */ "END",
1207 /* 75 */ "NTH",
1208 /* 76 */ "VERTEX",
1209 /* 77 */ "IN",
1210 /* 78 */ "DOT_U",
1211 /* 79 */ "LAST",
1212 /* 80 */ "NUMBER",
1213 /* 81 */ "FUNC1",
1214 /* 82 */ "FUNC2",
1215 /* 83 */ "X",
1216 /* 84 */ "Y",
1217 /* 85 */ "TOP",
1218 /* 86 */ "BOTTOM",
1219 /* 87 */ "element_list",
1220 /* 88 */ "element",
1221 /* 89 */ "unnamed_element",
1222 /* 90 */ "basetype",
1223 /* 91 */ "expr",
1224 /* 92 */ "numproperty",
1225 /* 93 */ "edge",
1226 /* 94 */ "direction",
1227 /* 95 */ "dashproperty",
1228 /* 96 */ "colorproperty",
1229 /* 97 */ "locproperty",
1230 /* 98 */ "position",
1231 /* 99 */ "place",
1232 /* 100 */ "object",
1233 /* 101 */ "objectname",
1234 /* 102 */ "nth",
1235 /* 103 */ "textposition",
1236 /* 104 */ "rvalue",
1237 /* 105 */ "lvalue",
1238 /* 106 */ "even",
1239 /* 107 */ "document",
1240 /* 108 */ "print",
1241 /* 109 */ "prlist",
1242 /* 110 */ "pritem",
1243 /* 111 */ "prsep",
1244 /* 112 */ "attribute_list",
1245 /* 113 */ "savelist",
1246 /* 114 */ "alist",
1247 /* 115 */ "attribute",
1248 /* 116 */ "go",
1249 /* 117 */ "boolproperty",
1250 /* 118 */ "withclause",
1251 /* 119 */ "with",
1252 /* 120 */ "between",
 
 
1253 };
1254 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1255
1256 #ifndef NDEBUG
1257 /* For tracing reduce actions, the names of all rules are required.
@@ -1306,102 +1320,102 @@
1306 /* 46 */ "attribute ::= AT position",
1307 /* 47 */ "attribute ::= SAME",
1308 /* 48 */ "attribute ::= SAME AS object",
1309 /* 49 */ "attribute ::= STRING textposition",
1310 /* 50 */ "attribute ::= FIT",
1311 /* 51 */ "with ::= DOT_E edge AT position",
1312 /* 52 */ "with ::= edge AT position",
1313 /* 53 */ "numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS",
1314 /* 54 */ "boolproperty ::= CW",
1315 /* 55 */ "boolproperty ::= CCW",
1316 /* 56 */ "boolproperty ::= LARROW",
1317 /* 57 */ "boolproperty ::= RARROW",
1318 /* 58 */ "boolproperty ::= LRARROW",
1319 /* 59 */ "boolproperty ::= INVIS",
1320 /* 60 */ "boolproperty ::= THICK",
1321 /* 61 */ "boolproperty ::= THIN",
1322 /* 62 */ "textposition ::=",
1323 /* 63 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1324 /* 64 */ "position ::= expr COMMA expr",
1325 /* 65 */ "position ::= place PLUS expr COMMA expr",
1326 /* 66 */ "position ::= place MINUS expr COMMA expr",
1327 /* 67 */ "position ::= place PLUS LP expr COMMA expr RP",
1328 /* 68 */ "position ::= place MINUS LP expr COMMA expr RP",
1329 /* 69 */ "position ::= LP position COMMA position RP",
1330 /* 70 */ "position ::= LP position RP",
1331 /* 71 */ "position ::= expr between position AND position",
1332 /* 72 */ "position ::= expr ABOVE position",
1333 /* 73 */ "position ::= expr BELOW position",
1334 /* 74 */ "position ::= expr LEFT OF position",
1335 /* 75 */ "position ::= expr RIGHT OF position",
1336 /* 76 */ "position ::= expr EDGEPT OF position",
1337 /* 77 */ "position ::= expr HEADING expr FROM position",
1338 /* 78 */ "place ::= object",
1339 /* 79 */ "place ::= object DOT_E edge",
1340 /* 80 */ "place ::= object DOT_L START",
1341 /* 81 */ "place ::= object DOT_L END",
1342 /* 82 */ "place ::= START OF object",
1343 /* 83 */ "place ::= END OF object",
1344 /* 84 */ "place ::= edge OF object",
1345 /* 85 */ "place ::= NTH VERTEX OF object",
1346 /* 86 */ "object ::= nth",
1347 /* 87 */ "object ::= nth OF|IN object",
1348 /* 88 */ "objectname ::= PLACENAME",
1349 /* 89 */ "objectname ::= objectname DOT_U PLACENAME",
1350 /* 90 */ "nth ::= NTH CLASSNAME",
1351 /* 91 */ "nth ::= NTH LAST CLASSNAME",
1352 /* 92 */ "nth ::= LAST CLASSNAME",
1353 /* 93 */ "nth ::= LAST",
1354 /* 94 */ "nth ::= NTH LB RB",
1355 /* 95 */ "nth ::= NTH LAST LB RB",
1356 /* 96 */ "nth ::= LAST LB RB",
1357 /* 97 */ "expr ::= expr PLUS expr",
1358 /* 98 */ "expr ::= expr MINUS expr",
1359 /* 99 */ "expr ::= expr STAR expr",
1360 /* 100 */ "expr ::= expr SLASH expr",
1361 /* 101 */ "expr ::= MINUS expr",
1362 /* 102 */ "expr ::= PLUS expr",
1363 /* 103 */ "expr ::= LP expr RP",
1364 /* 104 */ "expr ::= NUMBER",
1365 /* 105 */ "expr ::= ID",
1366 /* 106 */ "expr ::= FUNC1 LP expr RP",
1367 /* 107 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1368 /* 108 */ "expr ::= object DOT_L locproperty",
1369 /* 109 */ "expr ::= object DOT_L numproperty",
1370 /* 110 */ "expr ::= object DOT_L dashproperty",
1371 /* 111 */ "expr ::= object DOT_L colorproperty",
1372 /* 112 */ "expr ::= object DOT_E edge DOT_L X",
1373 /* 113 */ "expr ::= object DOT_E edge DOT_L Y",
1374 /* 114 */ "expr ::= LP locproperty OF object RP",
1375 /* 115 */ "expr ::= LP dashproperty OF object RP",
1376 /* 116 */ "expr ::= LP numproperty OF object RP",
1377 /* 117 */ "expr ::= LP colorproperty OF object RP",
1378 /* 118 */ "expr ::= NTH VERTEX OF object DOT_L X",
1379 /* 119 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1380 /* 120 */ "lvalue ::= ID",
1381 /* 121 */ "lvalue ::= FILL",
1382 /* 122 */ "lvalue ::= COLOR",
1383 /* 123 */ "lvalue ::= THICKNESS",
1384 /* 124 */ "rvalue ::= expr",
1385 /* 125 */ "print ::= PRINT",
1386 /* 126 */ "prlist ::= pritem",
1387 /* 127 */ "prlist ::= prlist prsep pritem",
1388 /* 128 */ "direction ::= UP",
1389 /* 129 */ "direction ::= DOWN",
1390 /* 130 */ "direction ::= LEFT",
1391 /* 131 */ "direction ::= RIGHT",
1392 /* 132 */ "attribute_list ::= alist",
1393 /* 133 */ "alist ::=",
1394 /* 134 */ "alist ::= alist attribute",
1395 /* 135 */ "attribute ::= boolproperty",
1396 /* 136 */ "attribute ::= WITH withclause",
1397 /* 137 */ "go ::= GO",
1398 /* 138 */ "go ::=",
1399 /* 139 */ "even ::= UNTIL EVEN WITH",
1400 /* 140 */ "even ::= EVEN WITH",
1401 /* 141 */ "withclause ::= with",
1402 /* 142 */ "withclause ::= withclause AND with",
1403 /* 143 */ "dashproperty ::= DOTTED",
1404 /* 144 */ "dashproperty ::= DASHED",
1405 /* 145 */ "colorproperty ::= FILL",
1406 /* 146 */ "colorproperty ::= COLOR",
1407 /* 147 */ "position ::= place",
@@ -1538,24 +1552,24 @@
1538 ** Note: during a reduce, the only symbols destroyed are those
1539 ** which appear on the RHS of the rule, but which are *not* used
1540 ** inside the C code.
1541 */
1542 /********* Begin destructor definitions ***************************************/
1543 case 87: /* element_list */
1544 {
1545 #line 444 "pikchr.y"
1546 pik_elist_free(p,(yypminor->yy66));
1547 #line 1572 "pikchr.c"
1548 }
1549 break;
1550 case 88: /* element */
1551 case 89: /* unnamed_element */
1552 case 90: /* basetype */
1553 {
1554 #line 446 "pikchr.y"
1555 pik_elem_free(p,(yypminor->yy2));
1556 #line 1581 "pikchr.c"
1557 }
1558 break;
1559 /********* End destructor definitions *****************************************/
1560 default: break; /* If no destructor action specified: do nothing */
1561 }
@@ -1769,14 +1783,14 @@
1769 #endif
1770 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1771 /* Here code is inserted which will execute if the parser
1772 ** stack every overflows */
1773 /******** Begin %stack_overflow code ******************************************/
1774 #line 475 "pikchr.y"
1775
1776 pik_error(p, 0, "parser stack overflow");
1777 #line 1802 "pikchr.c"
1778 /******** End %stack_overflow code ********************************************/
1779 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1780 pik_parserCTX_STORE
1781 }
1782
@@ -1844,168 +1858,168 @@
1844 }
1845
1846 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1847 ** of that rule */
1848 static const YYCODETYPE yyRuleInfoLhs[] = {
1849 107, /* (0) document ::= element_list */
1850 87, /* (1) element_list ::= element */
1851 87, /* (2) element_list ::= element_list EOL element */
1852 88, /* (3) element ::= */
1853 88, /* (4) element ::= direction */
1854 88, /* (5) element ::= lvalue ASSIGN rvalue */
1855 88, /* (6) element ::= PLACENAME COLON unnamed_element */
1856 88, /* (7) element ::= PLACENAME COLON position */
1857 88, /* (8) element ::= unnamed_element */
1858 88, /* (9) element ::= print prlist */
1859 104, /* (10) rvalue ::= PLACENAME */
1860 110, /* (11) pritem ::= FILL */
1861 110, /* (12) pritem ::= COLOR */
1862 110, /* (13) pritem ::= THICKNESS */
1863 110, /* (14) pritem ::= rvalue */
1864 110, /* (15) pritem ::= STRING */
1865 111, /* (16) prsep ::= COMMA */
1866 89, /* (17) unnamed_element ::= basetype attribute_list */
1867 90, /* (18) basetype ::= CLASSNAME */
1868 90, /* (19) basetype ::= STRING textposition */
1869 90, /* (20) basetype ::= LB savelist element_list RB */
1870 113, /* (21) savelist ::= */
1871 112, /* (22) attribute_list ::= expr */
1872 112, /* (23) attribute_list ::= expr PERCENT */
1873 115, /* (24) attribute ::= numproperty expr PERCENT */
1874 115, /* (25) attribute ::= numproperty expr */
1875 115, /* (26) attribute ::= dashproperty expr */
1876 115, /* (27) attribute ::= dashproperty */
1877 115, /* (28) attribute ::= colorproperty rvalue */
1878 115, /* (29) attribute ::= go direction expr PERCENT */
1879 115, /* (30) attribute ::= go direction expr */
1880 115, /* (31) attribute ::= go direction */
1881 115, /* (32) attribute ::= go direction even position */
1882 115, /* (33) attribute ::= CLOSE */
1883 115, /* (34) attribute ::= CHOP */
1884 115, /* (35) attribute ::= FROM position */
1885 115, /* (36) attribute ::= TO position */
1886 115, /* (37) attribute ::= THEN */
1887 115, /* (38) attribute ::= THEN expr HEADING expr */
1888 115, /* (39) attribute ::= THEN HEADING expr */
1889 115, /* (40) attribute ::= THEN expr EDGEPT */
1890 115, /* (41) attribute ::= THEN EDGEPT */
1891 115, /* (42) attribute ::= GO expr HEADING expr */
1892 115, /* (43) attribute ::= GO HEADING expr */
1893 115, /* (44) attribute ::= GO expr EDGEPT */
1894 115, /* (45) attribute ::= GO EDGEPT */
1895 115, /* (46) attribute ::= AT position */
1896 115, /* (47) attribute ::= SAME */
1897 115, /* (48) attribute ::= SAME AS object */
1898 115, /* (49) attribute ::= STRING textposition */
1899 115, /* (50) attribute ::= FIT */
1900 119, /* (51) with ::= DOT_E edge AT position */
1901 119, /* (52) with ::= edge AT position */
1902 92, /* (53) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1903 117, /* (54) boolproperty ::= CW */
1904 117, /* (55) boolproperty ::= CCW */
1905 117, /* (56) boolproperty ::= LARROW */
1906 117, /* (57) boolproperty ::= RARROW */
1907 117, /* (58) boolproperty ::= LRARROW */
1908 117, /* (59) boolproperty ::= INVIS */
1909 117, /* (60) boolproperty ::= THICK */
1910 117, /* (61) boolproperty ::= THIN */
1911 103, /* (62) textposition ::= */
1912 103, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1913 98, /* (64) position ::= expr COMMA expr */
1914 98, /* (65) position ::= place PLUS expr COMMA expr */
1915 98, /* (66) position ::= place MINUS expr COMMA expr */
1916 98, /* (67) position ::= place PLUS LP expr COMMA expr RP */
1917 98, /* (68) position ::= place MINUS LP expr COMMA expr RP */
1918 98, /* (69) position ::= LP position COMMA position RP */
1919 98, /* (70) position ::= LP position RP */
1920 98, /* (71) position ::= expr between position AND position */
1921 98, /* (72) position ::= expr ABOVE position */
1922 98, /* (73) position ::= expr BELOW position */
1923 98, /* (74) position ::= expr LEFT OF position */
1924 98, /* (75) position ::= expr RIGHT OF position */
1925 98, /* (76) position ::= expr EDGEPT OF position */
1926 98, /* (77) position ::= expr HEADING expr FROM position */
1927 99, /* (78) place ::= object */
1928 99, /* (79) place ::= object DOT_E edge */
1929 99, /* (80) place ::= object DOT_L START */
1930 99, /* (81) place ::= object DOT_L END */
1931 99, /* (82) place ::= START OF object */
1932 99, /* (83) place ::= END OF object */
1933 99, /* (84) place ::= edge OF object */
1934 99, /* (85) place ::= NTH VERTEX OF object */
1935 100, /* (86) object ::= nth */
1936 100, /* (87) object ::= nth OF|IN object */
1937 101, /* (88) objectname ::= PLACENAME */
1938 101, /* (89) objectname ::= objectname DOT_U PLACENAME */
1939 102, /* (90) nth ::= NTH CLASSNAME */
1940 102, /* (91) nth ::= NTH LAST CLASSNAME */
1941 102, /* (92) nth ::= LAST CLASSNAME */
1942 102, /* (93) nth ::= LAST */
1943 102, /* (94) nth ::= NTH LB RB */
1944 102, /* (95) nth ::= NTH LAST LB RB */
1945 102, /* (96) nth ::= LAST LB RB */
1946 91, /* (97) expr ::= expr PLUS expr */
1947 91, /* (98) expr ::= expr MINUS expr */
1948 91, /* (99) expr ::= expr STAR expr */
1949 91, /* (100) expr ::= expr SLASH expr */
1950 91, /* (101) expr ::= MINUS expr */
1951 91, /* (102) expr ::= PLUS expr */
1952 91, /* (103) expr ::= LP expr RP */
1953 91, /* (104) expr ::= NUMBER */
1954 91, /* (105) expr ::= ID */
1955 91, /* (106) expr ::= FUNC1 LP expr RP */
1956 91, /* (107) expr ::= FUNC2 LP expr COMMA expr RP */
1957 91, /* (108) expr ::= object DOT_L locproperty */
1958 91, /* (109) expr ::= object DOT_L numproperty */
1959 91, /* (110) expr ::= object DOT_L dashproperty */
1960 91, /* (111) expr ::= object DOT_L colorproperty */
1961 91, /* (112) expr ::= object DOT_E edge DOT_L X */
1962 91, /* (113) expr ::= object DOT_E edge DOT_L Y */
1963 91, /* (114) expr ::= LP locproperty OF object RP */
1964 91, /* (115) expr ::= LP dashproperty OF object RP */
1965 91, /* (116) expr ::= LP numproperty OF object RP */
1966 91, /* (117) expr ::= LP colorproperty OF object RP */
1967 91, /* (118) expr ::= NTH VERTEX OF object DOT_L X */
1968 91, /* (119) expr ::= NTH VERTEX OF object DOT_L Y */
1969 105, /* (120) lvalue ::= ID */
1970 105, /* (121) lvalue ::= FILL */
1971 105, /* (122) lvalue ::= COLOR */
1972 105, /* (123) lvalue ::= THICKNESS */
1973 104, /* (124) rvalue ::= expr */
1974 108, /* (125) print ::= PRINT */
1975 109, /* (126) prlist ::= pritem */
1976 109, /* (127) prlist ::= prlist prsep pritem */
1977 94, /* (128) direction ::= UP */
1978 94, /* (129) direction ::= DOWN */
1979 94, /* (130) direction ::= LEFT */
1980 94, /* (131) direction ::= RIGHT */
1981 112, /* (132) attribute_list ::= alist */
1982 114, /* (133) alist ::= */
1983 114, /* (134) alist ::= alist attribute */
1984 115, /* (135) attribute ::= boolproperty */
1985 115, /* (136) attribute ::= WITH withclause */
1986 116, /* (137) go ::= GO */
1987 116, /* (138) go ::= */
1988 106, /* (139) even ::= UNTIL EVEN WITH */
1989 106, /* (140) even ::= EVEN WITH */
1990 118, /* (141) withclause ::= with */
1991 118, /* (142) withclause ::= withclause AND with */
1992 95, /* (143) dashproperty ::= DOTTED */
1993 95, /* (144) dashproperty ::= DASHED */
1994 96, /* (145) colorproperty ::= FILL */
1995 96, /* (146) colorproperty ::= COLOR */
1996 98, /* (147) position ::= place */
1997 120, /* (148) between ::= WAY BETWEEN */
1998 120, /* (149) between ::= BETWEEN */
1999 120, /* (150) between ::= OF THE WAY BETWEEN */
2000 100, /* (151) object ::= objectname */
2001 97, /* (152) locproperty ::= X|Y */
2002 93, /* (153) edge ::= EDGEPT */
2003 93, /* (154) edge ::= TOP */
2004 93, /* (155) edge ::= BOTTOM */
2005 93, /* (156) edge ::= LEFT */
2006 93, /* (157) edge ::= RIGHT */
2007 };
2008
2009 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2010 ** of symbols on the right-hand side of that rule. */
2011 static const signed char yyRuleInfoNRhs[] = {
@@ -2058,102 +2072,102 @@
2058 -2, /* (46) attribute ::= AT position */
2059 -1, /* (47) attribute ::= SAME */
2060 -3, /* (48) attribute ::= SAME AS object */
2061 -2, /* (49) attribute ::= STRING textposition */
2062 -1, /* (50) attribute ::= FIT */
2063 -4, /* (51) with ::= DOT_E edge AT position */
2064 -3, /* (52) with ::= edge AT position */
2065 -1, /* (53) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2066 -1, /* (54) boolproperty ::= CW */
2067 -1, /* (55) boolproperty ::= CCW */
2068 -1, /* (56) boolproperty ::= LARROW */
2069 -1, /* (57) boolproperty ::= RARROW */
2070 -1, /* (58) boolproperty ::= LRARROW */
2071 -1, /* (59) boolproperty ::= INVIS */
2072 -1, /* (60) boolproperty ::= THICK */
2073 -1, /* (61) boolproperty ::= THIN */
2074 0, /* (62) textposition ::= */
2075 -2, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2076 -3, /* (64) position ::= expr COMMA expr */
2077 -5, /* (65) position ::= place PLUS expr COMMA expr */
2078 -5, /* (66) position ::= place MINUS expr COMMA expr */
2079 -7, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2080 -7, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2081 -5, /* (69) position ::= LP position COMMA position RP */
2082 -3, /* (70) position ::= LP position RP */
2083 -5, /* (71) position ::= expr between position AND position */
2084 -3, /* (72) position ::= expr ABOVE position */
2085 -3, /* (73) position ::= expr BELOW position */
2086 -4, /* (74) position ::= expr LEFT OF position */
2087 -4, /* (75) position ::= expr RIGHT OF position */
2088 -4, /* (76) position ::= expr EDGEPT OF position */
2089 -5, /* (77) position ::= expr HEADING expr FROM position */
2090 -1, /* (78) place ::= object */
2091 -3, /* (79) place ::= object DOT_E edge */
2092 -3, /* (80) place ::= object DOT_L START */
2093 -3, /* (81) place ::= object DOT_L END */
2094 -3, /* (82) place ::= START OF object */
2095 -3, /* (83) place ::= END OF object */
2096 -3, /* (84) place ::= edge OF object */
2097 -4, /* (85) place ::= NTH VERTEX OF object */
2098 -1, /* (86) object ::= nth */
2099 -3, /* (87) object ::= nth OF|IN object */
2100 -1, /* (88) objectname ::= PLACENAME */
2101 -3, /* (89) objectname ::= objectname DOT_U PLACENAME */
2102 -2, /* (90) nth ::= NTH CLASSNAME */
2103 -3, /* (91) nth ::= NTH LAST CLASSNAME */
2104 -2, /* (92) nth ::= LAST CLASSNAME */
2105 -1, /* (93) nth ::= LAST */
2106 -3, /* (94) nth ::= NTH LB RB */
2107 -4, /* (95) nth ::= NTH LAST LB RB */
2108 -3, /* (96) nth ::= LAST LB RB */
2109 -3, /* (97) expr ::= expr PLUS expr */
2110 -3, /* (98) expr ::= expr MINUS expr */
2111 -3, /* (99) expr ::= expr STAR expr */
2112 -3, /* (100) expr ::= expr SLASH expr */
2113 -2, /* (101) expr ::= MINUS expr */
2114 -2, /* (102) expr ::= PLUS expr */
2115 -3, /* (103) expr ::= LP expr RP */
2116 -1, /* (104) expr ::= NUMBER */
2117 -1, /* (105) expr ::= ID */
2118 -4, /* (106) expr ::= FUNC1 LP expr RP */
2119 -6, /* (107) expr ::= FUNC2 LP expr COMMA expr RP */
2120 -3, /* (108) expr ::= object DOT_L locproperty */
2121 -3, /* (109) expr ::= object DOT_L numproperty */
2122 -3, /* (110) expr ::= object DOT_L dashproperty */
2123 -3, /* (111) expr ::= object DOT_L colorproperty */
2124 -5, /* (112) expr ::= object DOT_E edge DOT_L X */
2125 -5, /* (113) expr ::= object DOT_E edge DOT_L Y */
2126 -5, /* (114) expr ::= LP locproperty OF object RP */
2127 -5, /* (115) expr ::= LP dashproperty OF object RP */
2128 -5, /* (116) expr ::= LP numproperty OF object RP */
2129 -5, /* (117) expr ::= LP colorproperty OF object RP */
2130 -6, /* (118) expr ::= NTH VERTEX OF object DOT_L X */
2131 -6, /* (119) expr ::= NTH VERTEX OF object DOT_L Y */
2132 -1, /* (120) lvalue ::= ID */
2133 -1, /* (121) lvalue ::= FILL */
2134 -1, /* (122) lvalue ::= COLOR */
2135 -1, /* (123) lvalue ::= THICKNESS */
2136 -1, /* (124) rvalue ::= expr */
2137 -1, /* (125) print ::= PRINT */
2138 -1, /* (126) prlist ::= pritem */
2139 -3, /* (127) prlist ::= prlist prsep pritem */
2140 -1, /* (128) direction ::= UP */
2141 -1, /* (129) direction ::= DOWN */
2142 -1, /* (130) direction ::= LEFT */
2143 -1, /* (131) direction ::= RIGHT */
2144 -1, /* (132) attribute_list ::= alist */
2145 0, /* (133) alist ::= */
2146 -2, /* (134) alist ::= alist attribute */
2147 -1, /* (135) attribute ::= boolproperty */
2148 -2, /* (136) attribute ::= WITH withclause */
2149 -1, /* (137) go ::= GO */
2150 0, /* (138) go ::= */
2151 -3, /* (139) even ::= UNTIL EVEN WITH */
2152 -2, /* (140) even ::= EVEN WITH */
2153 -1, /* (141) withclause ::= with */
2154 -3, /* (142) withclause ::= withclause AND with */
2155 -1, /* (143) dashproperty ::= DOTTED */
2156 -1, /* (144) dashproperty ::= DASHED */
2157 -1, /* (145) colorproperty ::= FILL */
2158 -1, /* (146) colorproperty ::= COLOR */
2159 -1, /* (147) position ::= place */
@@ -2255,616 +2269,625 @@
2255 ** break;
2256 */
2257 /********** Begin reduce actions **********************************************/
2258 YYMINORTYPE yylhsminor;
2259 case 0: /* document ::= element_list */
2260 #line 479 "pikchr.y"
2261 {pik_render(p,yymsp[0].minor.yy66);}
2262 #line 2287 "pikchr.c"
2263 break;
2264 case 1: /* element_list ::= element */
2265 #line 482 "pikchr.y"
2266 { yylhsminor.yy66 = pik_elist_append(p,0,yymsp[0].minor.yy2); }
2267 #line 2292 "pikchr.c"
2268 yymsp[0].minor.yy66 = yylhsminor.yy66;
2269 break;
2270 case 2: /* element_list ::= element_list EOL element */
2271 #line 484 "pikchr.y"
2272 { yylhsminor.yy66 = pik_elist_append(p,yymsp[-2].minor.yy66,yymsp[0].minor.yy2); }
2273 #line 2298 "pikchr.c"
2274 yymsp[-2].minor.yy66 = yylhsminor.yy66;
2275 break;
2276 case 3: /* element ::= */
2277 #line 487 "pikchr.y"
2278 { yymsp[1].minor.yy2 = 0; }
2279 #line 2304 "pikchr.c"
2280 break;
2281 case 4: /* element ::= direction */
2282 #line 488 "pikchr.y"
2283 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy2=0; }
2284 #line 2309 "pikchr.c"
2285 yymsp[0].minor.yy2 = yylhsminor.yy2;
2286 break;
2287 case 5: /* element ::= lvalue ASSIGN rvalue */
2288 #line 489 "pikchr.y"
2289 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy241,&yymsp[-1].minor.yy0); yylhsminor.yy2=0;}
2290 #line 2315 "pikchr.c"
2291 yymsp[-2].minor.yy2 = yylhsminor.yy2;
2292 break;
2293 case 6: /* element ::= PLACENAME COLON unnamed_element */
2294 #line 491 "pikchr.y"
2295 { yylhsminor.yy2 = yymsp[0].minor.yy2; pik_elem_setname(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0); }
2296 #line 2321 "pikchr.c"
2297 yymsp[-2].minor.yy2 = yylhsminor.yy2;
2298 break;
2299 case 7: /* element ::= PLACENAME COLON position */
2300 #line 493 "pikchr.y"
2301 { yylhsminor.yy2 = pik_elem_new(p,0,0,0);
2302 if(yylhsminor.yy2){ yylhsminor.yy2->ptAt = yymsp[0].minor.yy187; pik_elem_setname(p,yylhsminor.yy2,&yymsp[-2].minor.yy0); }}
2303 #line 2328 "pikchr.c"
2304 yymsp[-2].minor.yy2 = yylhsminor.yy2;
2305 break;
2306 case 8: /* element ::= unnamed_element */
2307 #line 495 "pikchr.y"
2308 {yylhsminor.yy2 = yymsp[0].minor.yy2;}
2309 #line 2334 "pikchr.c"
2310 yymsp[0].minor.yy2 = yylhsminor.yy2;
2311 break;
2312 case 9: /* element ::= print prlist */
2313 #line 496 "pikchr.y"
2314 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy2=0;}
2315 #line 2340 "pikchr.c"
2316 break;
2317 case 10: /* rvalue ::= PLACENAME */
2318 #line 507 "pikchr.y"
2319 {yylhsminor.yy241 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2320 #line 2345 "pikchr.c"
2321 yymsp[0].minor.yy241 = yylhsminor.yy241;
2322 break;
2323 case 11: /* pritem ::= FILL */
2324 case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
2325 case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
2326 #line 512 "pikchr.y"
2327 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2328 #line 2353 "pikchr.c"
2329 break;
2330 case 14: /* pritem ::= rvalue */
2331 #line 515 "pikchr.y"
2332 {pik_append_num(p,"",yymsp[0].minor.yy241);}
2333 #line 2358 "pikchr.c"
2334 break;
2335 case 15: /* pritem ::= STRING */
2336 #line 516 "pikchr.y"
2337 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2338 #line 2363 "pikchr.c"
2339 break;
2340 case 16: /* prsep ::= COMMA */
2341 #line 517 "pikchr.y"
2342 {pik_append(p, " ", 1);}
2343 #line 2368 "pikchr.c"
2344 break;
2345 case 17: /* unnamed_element ::= basetype attribute_list */
2346 #line 520 "pikchr.y"
2347 {yylhsminor.yy2 = yymsp[-1].minor.yy2; pik_after_adding_attributes(p,yylhsminor.yy2);}
2348 #line 2373 "pikchr.c"
2349 yymsp[-1].minor.yy2 = yylhsminor.yy2;
2350 break;
2351 case 18: /* basetype ::= CLASSNAME */
2352 #line 522 "pikchr.y"
2353 {yylhsminor.yy2 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2354 #line 2379 "pikchr.c"
2355 yymsp[0].minor.yy2 = yylhsminor.yy2;
2356 break;
2357 case 19: /* basetype ::= STRING textposition */
2358 #line 524 "pikchr.y"
2359 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy86; yylhsminor.yy2 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2360 #line 2385 "pikchr.c"
2361 yymsp[-1].minor.yy2 = yylhsminor.yy2;
2362 break;
2363 case 20: /* basetype ::= LB savelist element_list RB */
2364 #line 526 "pikchr.y"
2365 { p->list = yymsp[-2].minor.yy66; yymsp[-3].minor.yy2 = pik_elem_new(p,0,0,yymsp[-1].minor.yy66); if(yymsp[-3].minor.yy2) yymsp[-3].minor.yy2->errTok = yymsp[0].minor.yy0; }
2366 #line 2391 "pikchr.c"
2367 break;
2368 case 21: /* savelist ::= */
2369 #line 531 "pikchr.y"
2370 {yymsp[1].minor.yy66 = p->list; p->list = 0;}
2371 #line 2396 "pikchr.c"
2372 break;
2373 case 22: /* attribute_list ::= expr */
2374 #line 538 "pikchr.y"
2375 { pik_add_direction(p,0,&yymsp[0].minor.yy241,0);}
2376 #line 2401 "pikchr.c"
2377 break;
2378 case 23: /* attribute_list ::= expr PERCENT */
2379 #line 539 "pikchr.y"
2380 { pik_add_direction(p,0,&yymsp[-1].minor.yy241,1);}
2381 #line 2406 "pikchr.c"
2382 break;
2383 case 24: /* attribute ::= numproperty expr PERCENT */
2384 #line 544 "pikchr.y"
2385 { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy241/100.0); }
2386 #line 2411 "pikchr.c"
2387 break;
2388 case 25: /* attribute ::= numproperty expr */
2389 case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
2390 #line 545 "pikchr.y"
2391 { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy241,0.0); }
2392 #line 2417 "pikchr.c"
2393 break;
2394 case 26: /* attribute ::= dashproperty expr */
2395 #line 546 "pikchr.y"
2396 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy241); }
2397 #line 2422 "pikchr.c"
2398 break;
2399 case 27: /* attribute ::= dashproperty */
2400 #line 547 "pikchr.y"
2401 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2402 #line 2427 "pikchr.c"
2403 break;
2404 case 29: /* attribute ::= go direction expr PERCENT */
2405 #line 550 "pikchr.y"
2406 { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy241,1);}
2407 #line 2432 "pikchr.c"
2408 break;
2409 case 30: /* attribute ::= go direction expr */
2410 #line 551 "pikchr.y"
2411 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy241,0);}
2412 #line 2437 "pikchr.c"
2413 break;
2414 case 31: /* attribute ::= go direction */
2415 #line 552 "pikchr.y"
2416 { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
2417 #line 2442 "pikchr.c"
2418 break;
2419 case 32: /* attribute ::= go direction even position */
2420 #line 553 "pikchr.y"
2421 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy187);}
2422 #line 2447 "pikchr.c"
2423 break;
2424 case 33: /* attribute ::= CLOSE */
2425 #line 554 "pikchr.y"
2426 { pik_close_path(p,&yymsp[0].minor.yy0); }
2427 #line 2452 "pikchr.c"
2428 break;
2429 case 34: /* attribute ::= CHOP */
2430 #line 555 "pikchr.y"
2431 { p->cur->bChop = 1; }
2432 #line 2457 "pikchr.c"
2433 break;
2434 case 35: /* attribute ::= FROM position */
2435 #line 556 "pikchr.y"
2436 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy187); }
2437 #line 2462 "pikchr.c"
2438 break;
2439 case 36: /* attribute ::= TO position */
2440 #line 557 "pikchr.y"
2441 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy187); }
2442 #line 2467 "pikchr.c"
2443 break;
2444 case 37: /* attribute ::= THEN */
2445 #line 558 "pikchr.y"
2446 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2447 #line 2472 "pikchr.c"
2448 break;
2449 case 38: /* attribute ::= THEN expr HEADING expr */
2450 case 42: /* attribute ::= GO expr HEADING expr */ yytestcase(yyruleno==42);
2451 #line 560 "pikchr.y"
2452 {pik_move_hdg(p,&yymsp[-2].minor.yy241,&yymsp[-1].minor.yy0,yymsp[0].minor.yy241,0,&yymsp[-3].minor.yy0);}
2453 #line 2478 "pikchr.c"
2454 break;
2455 case 39: /* attribute ::= THEN HEADING expr */
2456 case 43: /* attribute ::= GO HEADING expr */ yytestcase(yyruleno==43);
2457 #line 561 "pikchr.y"
2458 {pik_move_hdg(p,0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy241,0,&yymsp[-2].minor.yy0);}
2459 #line 2484 "pikchr.c"
2460 break;
2461 case 40: /* attribute ::= THEN expr EDGEPT */
2462 case 44: /* attribute ::= GO expr EDGEPT */ yytestcase(yyruleno==44);
2463 #line 562 "pikchr.y"
2464 {pik_move_hdg(p,&yymsp[-1].minor.yy241,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2465 #line 2490 "pikchr.c"
2466 break;
2467 case 41: /* attribute ::= THEN EDGEPT */
2468 case 45: /* attribute ::= GO EDGEPT */ yytestcase(yyruleno==45);
2469 #line 563 "pikchr.y"
2470 {pik_move_hdg(p,0,0,0,&yymsp[0].minor.yy0,&yymsp[-1].minor.yy0);}
2471 #line 2496 "pikchr.c"
2472 break;
2473 case 46: /* attribute ::= AT position */
2474 #line 569 "pikchr.y"
2475 { pik_set_at(p,0,&yymsp[0].minor.yy187,&yymsp[-1].minor.yy0); }
2476 #line 2501 "pikchr.c"
2477 break;
2478 case 47: /* attribute ::= SAME */
2479 #line 571 "pikchr.y"
2480 {pik_same(p,0,&yymsp[0].minor.yy0);}
2481 #line 2506 "pikchr.c"
2482 break;
2483 case 48: /* attribute ::= SAME AS object */
2484 #line 572 "pikchr.y"
2485 {pik_same(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0);}
2486 #line 2511 "pikchr.c"
2487 break;
2488 case 49: /* attribute ::= STRING textposition */
2489 #line 573 "pikchr.y"
2490 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy86);}
2491 #line 2516 "pikchr.c"
2492 break;
2493 case 50: /* attribute ::= FIT */
2494 #line 574 "pikchr.y"
2495 {pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2496 #line 2521 "pikchr.c"
 
 
 
 
 
2497 break;
2498 case 51: /* with ::= DOT_E edge AT position */
2499 case 52: /* with ::= edge AT position */ yytestcase(yyruleno==52);
2500 #line 584 "pikchr.y"
2501 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy187,&yymsp[-1].minor.yy0); }
2502 #line 2527 "pikchr.c"
2503 break;
2504 case 53: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2505 #line 588 "pikchr.y"
2506 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2507 #line 2532 "pikchr.c"
2508 yymsp[0].minor.yy0 = yylhsminor.yy0;
2509 break;
2510 case 54: /* boolproperty ::= CW */
2511 #line 599 "pikchr.y"
2512 {p->cur->cw = 1;}
2513 #line 2538 "pikchr.c"
2514 break;
2515 case 55: /* boolproperty ::= CCW */
2516 #line 600 "pikchr.y"
2517 {p->cur->cw = 0;}
2518 #line 2543 "pikchr.c"
2519 break;
2520 case 56: /* boolproperty ::= LARROW */
2521 #line 601 "pikchr.y"
2522 {p->cur->larrow=1; p->cur->rarrow=0; }
2523 #line 2548 "pikchr.c"
2524 break;
2525 case 57: /* boolproperty ::= RARROW */
2526 #line 602 "pikchr.y"
2527 {p->cur->larrow=0; p->cur->rarrow=1; }
2528 #line 2553 "pikchr.c"
2529 break;
2530 case 58: /* boolproperty ::= LRARROW */
2531 #line 603 "pikchr.y"
2532 {p->cur->larrow=1; p->cur->rarrow=1; }
2533 #line 2558 "pikchr.c"
2534 break;
2535 case 59: /* boolproperty ::= INVIS */
2536 #line 604 "pikchr.y"
2537 {p->cur->sw = 0.0;}
2538 #line 2563 "pikchr.c"
2539 break;
2540 case 60: /* boolproperty ::= THICK */
2541 #line 605 "pikchr.y"
2542 {p->cur->sw *= 1.5;}
2543 #line 2568 "pikchr.c"
2544 break;
2545 case 61: /* boolproperty ::= THIN */
2546 #line 606 "pikchr.y"
2547 {p->cur->sw *= 0.67;}
2548 #line 2573 "pikchr.c"
2549 break;
2550 case 62: /* textposition ::= */
2551 #line 608 "pikchr.y"
2552 {yymsp[1].minor.yy86 = 0;}
2553 #line 2578 "pikchr.c"
2554 break;
2555 case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2556 #line 611 "pikchr.y"
2557 {yylhsminor.yy86 = pik_text_position(p,yymsp[-1].minor.yy86,&yymsp[0].minor.yy0);}
2558 #line 2583 "pikchr.c"
2559 yymsp[-1].minor.yy86 = yylhsminor.yy86;
2560 break;
2561 case 64: /* position ::= expr COMMA expr */
2562 #line 614 "pikchr.y"
2563 {yylhsminor.yy187.x=yymsp[-2].minor.yy241; yylhsminor.yy187.y=yymsp[0].minor.yy241;}
2564 #line 2589 "pikchr.c"
2565 yymsp[-2].minor.yy187 = yylhsminor.yy187;
2566 break;
2567 case 65: /* position ::= place PLUS expr COMMA expr */
2568 #line 616 "pikchr.y"
2569 {yylhsminor.yy187.x=yymsp[-4].minor.yy187.x+yymsp[-2].minor.yy241; yylhsminor.yy187.y=yymsp[-4].minor.yy187.y+yymsp[0].minor.yy241;}
2570 #line 2595 "pikchr.c"
2571 yymsp[-4].minor.yy187 = yylhsminor.yy187;
2572 break;
2573 case 66: /* position ::= place MINUS expr COMMA expr */
2574 #line 617 "pikchr.y"
2575 {yylhsminor.yy187.x=yymsp[-4].minor.yy187.x-yymsp[-2].minor.yy241; yylhsminor.yy187.y=yymsp[-4].minor.yy187.y-yymsp[0].minor.yy241;}
2576 #line 2601 "pikchr.c"
2577 yymsp[-4].minor.yy187 = yylhsminor.yy187;
2578 break;
2579 case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2580 #line 619 "pikchr.y"
2581 {yylhsminor.yy187.x=yymsp[-6].minor.yy187.x+yymsp[-3].minor.yy241; yylhsminor.yy187.y=yymsp[-6].minor.yy187.y+yymsp[-1].minor.yy241;}
2582 #line 2607 "pikchr.c"
2583 yymsp[-6].minor.yy187 = yylhsminor.yy187;
2584 break;
2585 case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2586 #line 621 "pikchr.y"
2587 {yylhsminor.yy187.x=yymsp[-6].minor.yy187.x-yymsp[-3].minor.yy241; yylhsminor.yy187.y=yymsp[-6].minor.yy187.y-yymsp[-1].minor.yy241;}
2588 #line 2613 "pikchr.c"
2589 yymsp[-6].minor.yy187 = yylhsminor.yy187;
2590 break;
2591 case 69: /* position ::= LP position COMMA position RP */
2592 #line 622 "pikchr.y"
2593 {yymsp[-4].minor.yy187.x=yymsp[-3].minor.yy187.x; yymsp[-4].minor.yy187.y=yymsp[-1].minor.yy187.y;}
2594 #line 2619 "pikchr.c"
2595 break;
2596 case 70: /* position ::= LP position RP */
2597 #line 623 "pikchr.y"
2598 {yymsp[-2].minor.yy187=yymsp[-1].minor.yy187;}
2599 #line 2624 "pikchr.c"
2600 break;
2601 case 71: /* position ::= expr between position AND position */
2602 #line 625 "pikchr.y"
2603 {yylhsminor.yy187 = pik_position_between(p,yymsp[-4].minor.yy241,yymsp[-2].minor.yy187,yymsp[0].minor.yy187);}
2604 #line 2629 "pikchr.c"
2605 yymsp[-4].minor.yy187 = yylhsminor.yy187;
2606 break;
2607 case 72: /* position ::= expr ABOVE position */
2608 #line 626 "pikchr.y"
2609 {yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.y += yymsp[-2].minor.yy241;}
2610 #line 2635 "pikchr.c"
2611 yymsp[-2].minor.yy187 = yylhsminor.yy187;
2612 break;
2613 case 73: /* position ::= expr BELOW position */
2614 #line 627 "pikchr.y"
2615 {yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.y -= yymsp[-2].minor.yy241;}
2616 #line 2641 "pikchr.c"
2617 yymsp[-2].minor.yy187 = yylhsminor.yy187;
2618 break;
2619 case 74: /* position ::= expr LEFT OF position */
2620 #line 628 "pikchr.y"
2621 {yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.x -= yymsp[-3].minor.yy241;}
2622 #line 2647 "pikchr.c"
2623 yymsp[-3].minor.yy187 = yylhsminor.yy187;
2624 break;
2625 case 75: /* position ::= expr RIGHT OF position */
2626 #line 629 "pikchr.y"
2627 {yylhsminor.yy187=yymsp[0].minor.yy187; yylhsminor.yy187.x += yymsp[-3].minor.yy241;}
2628 #line 2653 "pikchr.c"
2629 yymsp[-3].minor.yy187 = yylhsminor.yy187;
 
 
 
 
 
 
2630 break;
2631 case 76: /* position ::= expr EDGEPT OF position */
2632 #line 631 "pikchr.y"
2633 {yylhsminor.yy187 = pik_position_at_hdg(p,yymsp[-3].minor.yy241,&yymsp[-2].minor.yy0,yymsp[0].minor.yy187);}
2634 #line 2659 "pikchr.c"
2635 yymsp[-3].minor.yy187 = yylhsminor.yy187;
2636 break;
2637 case 77: /* position ::= expr HEADING expr FROM position */
2638 #line 633 "pikchr.y"
2639 {yylhsminor.yy187 = pik_position_at_angle(p,yymsp[-4].minor.yy241,yymsp[-2].minor.yy241,yymsp[0].minor.yy187);}
2640 #line 2665 "pikchr.c"
2641 yymsp[-4].minor.yy187 = yylhsminor.yy187;
2642 break;
2643 case 78: /* place ::= object */
2644 #line 639 "pikchr.y"
2645 {yylhsminor.yy187 = pik_place_of_elem(p,yymsp[0].minor.yy2,0);}
2646 #line 2671 "pikchr.c"
2647 yymsp[0].minor.yy187 = yylhsminor.yy187;
2648 break;
2649 case 79: /* place ::= object DOT_E edge */
2650 case 80: /* place ::= object DOT_L START */ yytestcase(yyruleno==80);
2651 case 81: /* place ::= object DOT_L END */ yytestcase(yyruleno==81);
2652 #line 640 "pikchr.y"
2653 {yylhsminor.yy187 = pik_place_of_elem(p,yymsp[-2].minor.yy2,&yymsp[0].minor.yy0);}
2654 #line 2679 "pikchr.c"
2655 yymsp[-2].minor.yy187 = yylhsminor.yy187;
2656 break;
2657 case 82: /* place ::= START OF object */
2658 case 83: /* place ::= END OF object */ yytestcase(yyruleno==83);
2659 case 84: /* place ::= edge OF object */ yytestcase(yyruleno==84);
2660 #line 643 "pikchr.y"
2661 {yylhsminor.yy187 = pik_place_of_elem(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0);}
2662 #line 2687 "pikchr.c"
2663 yymsp[-2].minor.yy187 = yylhsminor.yy187;
2664 break;
2665 case 85: /* place ::= NTH VERTEX OF object */
2666 #line 646 "pikchr.y"
2667 {yylhsminor.yy187 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy2);}
2668 #line 2693 "pikchr.c"
2669 yymsp[-3].minor.yy187 = yylhsminor.yy187;
2670 break;
2671 case 86: /* object ::= nth */
2672 #line 649 "pikchr.y"
2673 {yylhsminor.yy2 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2674 #line 2699 "pikchr.c"
2675 yymsp[0].minor.yy2 = yylhsminor.yy2;
2676 break;
2677 case 87: /* object ::= nth OF|IN object */
2678 #line 650 "pikchr.y"
2679 {yylhsminor.yy2 = pik_find_nth(p,yymsp[0].minor.yy2,&yymsp[-2].minor.yy0);}
2680 #line 2705 "pikchr.c"
2681 yymsp[-2].minor.yy2 = yylhsminor.yy2;
2682 break;
2683 case 88: /* objectname ::= PLACENAME */
2684 #line 652 "pikchr.y"
2685 {yylhsminor.yy2 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2686 #line 2711 "pikchr.c"
2687 yymsp[0].minor.yy2 = yylhsminor.yy2;
2688 break;
2689 case 89: /* objectname ::= objectname DOT_U PLACENAME */
2690 #line 654 "pikchr.y"
2691 {yylhsminor.yy2 = pik_find_byname(p,yymsp[-2].minor.yy2,&yymsp[0].minor.yy0);}
2692 #line 2717 "pikchr.c"
2693 yymsp[-2].minor.yy2 = yylhsminor.yy2;
2694 break;
2695 case 90: /* nth ::= NTH CLASSNAME */
2696 #line 656 "pikchr.y"
 
 
 
 
 
 
2697 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2698 #line 2723 "pikchr.c"
2699 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2700 break;
2701 case 91: /* nth ::= NTH LAST CLASSNAME */
2702 #line 657 "pikchr.y"
2703 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2704 #line 2729 "pikchr.c"
2705 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2706 break;
2707 case 92: /* nth ::= LAST CLASSNAME */
2708 #line 658 "pikchr.y"
2709 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2710 #line 2735 "pikchr.c"
2711 break;
2712 case 93: /* nth ::= LAST */
2713 #line 659 "pikchr.y"
2714 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2715 #line 2740 "pikchr.c"
2716 yymsp[0].minor.yy0 = yylhsminor.yy0;
2717 break;
2718 case 94: /* nth ::= NTH LB RB */
2719 #line 660 "pikchr.y"
2720 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2721 #line 2746 "pikchr.c"
2722 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2723 break;
2724 case 95: /* nth ::= NTH LAST LB RB */
2725 #line 661 "pikchr.y"
2726 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2727 #line 2752 "pikchr.c"
2728 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2729 break;
2730 case 96: /* nth ::= LAST LB RB */
2731 #line 662 "pikchr.y"
2732 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2733 #line 2758 "pikchr.c"
2734 break;
2735 case 97: /* expr ::= expr PLUS expr */
2736 #line 664 "pikchr.y"
2737 {yylhsminor.yy241=yymsp[-2].minor.yy241+yymsp[0].minor.yy241;}
2738 #line 2763 "pikchr.c"
2739 yymsp[-2].minor.yy241 = yylhsminor.yy241;
2740 break;
2741 case 98: /* expr ::= expr MINUS expr */
2742 #line 665 "pikchr.y"
2743 {yylhsminor.yy241=yymsp[-2].minor.yy241-yymsp[0].minor.yy241;}
2744 #line 2769 "pikchr.c"
2745 yymsp[-2].minor.yy241 = yylhsminor.yy241;
2746 break;
2747 case 99: /* expr ::= expr STAR expr */
2748 #line 666 "pikchr.y"
2749 {yylhsminor.yy241=yymsp[-2].minor.yy241*yymsp[0].minor.yy241;}
2750 #line 2775 "pikchr.c"
2751 yymsp[-2].minor.yy241 = yylhsminor.yy241;
2752 break;
2753 case 100: /* expr ::= expr SLASH expr */
2754 #line 667 "pikchr.y"
2755 {
2756 if( yymsp[0].minor.yy241==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy241 = 0.0; }
2757 else{ yylhsminor.yy241 = yymsp[-2].minor.yy241/yymsp[0].minor.yy241; }
2758 }
2759 #line 2784 "pikchr.c"
2760 yymsp[-2].minor.yy241 = yylhsminor.yy241;
2761 break;
2762 case 101: /* expr ::= MINUS expr */
2763 #line 671 "pikchr.y"
2764 {yymsp[-1].minor.yy241=-yymsp[0].minor.yy241;}
2765 #line 2790 "pikchr.c"
2766 break;
2767 case 102: /* expr ::= PLUS expr */
2768 #line 672 "pikchr.y"
2769 {yymsp[-1].minor.yy241=yymsp[0].minor.yy241;}
2770 #line 2795 "pikchr.c"
2771 break;
2772 case 103: /* expr ::= LP expr RP */
2773 #line 673 "pikchr.y"
2774 {yymsp[-2].minor.yy241=yymsp[-1].minor.yy241;}
2775 #line 2800 "pikchr.c"
2776 break;
2777 case 104: /* expr ::= NUMBER */
2778 #line 674 "pikchr.y"
2779 {yylhsminor.yy241=pik_atof(p,&yymsp[0].minor.yy0);}
2780 #line 2805 "pikchr.c"
2781 yymsp[0].minor.yy241 = yylhsminor.yy241;
2782 break;
2783 case 105: /* expr ::= ID */
2784 #line 675 "pikchr.y"
2785 {yylhsminor.yy241=pik_get_var(p,&yymsp[0].minor.yy0);}
2786 #line 2811 "pikchr.c"
2787 yymsp[0].minor.yy241 = yylhsminor.yy241;
2788 break;
2789 case 106: /* expr ::= FUNC1 LP expr RP */
2790 #line 676 "pikchr.y"
2791 {yylhsminor.yy241 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy241,0.0);}
2792 #line 2817 "pikchr.c"
2793 yymsp[-3].minor.yy241 = yylhsminor.yy241;
2794 break;
2795 case 107: /* expr ::= FUNC2 LP expr COMMA expr RP */
2796 #line 677 "pikchr.y"
2797 {yylhsminor.yy241 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy241,yymsp[-1].minor.yy241);}
2798 #line 2823 "pikchr.c"
2799 yymsp[-5].minor.yy241 = yylhsminor.yy241;
 
 
 
 
 
 
2800 break;
2801 case 108: /* expr ::= object DOT_L locproperty */
2802 case 109: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==109);
2803 case 110: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==110);
2804 case 111: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==111);
2805 #line 679 "pikchr.y"
2806 {yylhsminor.yy241=pik_property_of(p,yymsp[-2].minor.yy2,&yymsp[0].minor.yy0);}
2807 #line 2832 "pikchr.c"
2808 yymsp[-2].minor.yy241 = yylhsminor.yy241;
2809 break;
2810 case 112: /* expr ::= object DOT_E edge DOT_L X */
2811 #line 683 "pikchr.y"
2812 {yylhsminor.yy241=pik_place_of_elem(p,yymsp[-4].minor.yy2,&yymsp[-2].minor.yy0).x;}
2813 #line 2838 "pikchr.c"
2814 yymsp[-4].minor.yy241 = yylhsminor.yy241;
2815 break;
2816 case 113: /* expr ::= object DOT_E edge DOT_L Y */
2817 #line 684 "pikchr.y"
2818 {yylhsminor.yy241=pik_place_of_elem(p,yymsp[-4].minor.yy2,&yymsp[-2].minor.yy0).y;}
2819 #line 2844 "pikchr.c"
2820 yymsp[-4].minor.yy241 = yylhsminor.yy241;
2821 break;
2822 case 114: /* expr ::= LP locproperty OF object RP */
2823 case 115: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==115);
2824 case 116: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==116);
2825 case 117: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==117);
2826 #line 685 "pikchr.y"
2827 {yymsp[-4].minor.yy241=pik_property_of(p,yymsp[-1].minor.yy2,&yymsp[-3].minor.yy0);}
2828 #line 2853 "pikchr.c"
2829 break;
2830 case 118: /* expr ::= NTH VERTEX OF object DOT_L X */
2831 #line 691 "pikchr.y"
2832 {yylhsminor.yy241 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy2).x;}
2833 #line 2858 "pikchr.c"
2834 yymsp[-5].minor.yy241 = yylhsminor.yy241;
2835 break;
2836 case 119: /* expr ::= NTH VERTEX OF object DOT_L Y */
 
 
 
 
 
 
 
 
 
2837 #line 693 "pikchr.y"
2838 {yylhsminor.yy241 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy2).y;}
2839 #line 2864 "pikchr.c"
2840 yymsp[-5].minor.yy241 = yylhsminor.yy241;
 
 
 
 
 
 
2841 break;
2842 default:
2843 /* (120) lvalue ::= ID */ yytestcase(yyruleno==120);
2844 /* (121) lvalue ::= FILL */ yytestcase(yyruleno==121);
2845 /* (122) lvalue ::= COLOR */ yytestcase(yyruleno==122);
2846 /* (123) lvalue ::= THICKNESS */ yytestcase(yyruleno==123);
2847 /* (124) rvalue ::= expr */ yytestcase(yyruleno==124);
2848 /* (125) print ::= PRINT */ yytestcase(yyruleno==125);
2849 /* (126) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=126);
2850 /* (127) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==127);
2851 /* (128) direction ::= UP */ yytestcase(yyruleno==128);
2852 /* (129) direction ::= DOWN */ yytestcase(yyruleno==129);
2853 /* (130) direction ::= LEFT */ yytestcase(yyruleno==130);
2854 /* (131) direction ::= RIGHT */ yytestcase(yyruleno==131);
2855 /* (132) attribute_list ::= alist */ yytestcase(yyruleno==132);
2856 /* (133) alist ::= */ yytestcase(yyruleno==133);
2857 /* (134) alist ::= alist attribute */ yytestcase(yyruleno==134);
2858 /* (135) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=135);
2859 /* (136) attribute ::= WITH withclause */ yytestcase(yyruleno==136);
2860 /* (137) go ::= GO */ yytestcase(yyruleno==137);
2861 /* (138) go ::= */ yytestcase(yyruleno==138);
2862 /* (139) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==139);
2863 /* (140) even ::= EVEN WITH */ yytestcase(yyruleno==140);
2864 /* (141) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=141);
2865 /* (142) withclause ::= withclause AND with */ yytestcase(yyruleno==142);
2866 /* (143) dashproperty ::= DOTTED */ yytestcase(yyruleno==143);
2867 /* (144) dashproperty ::= DASHED */ yytestcase(yyruleno==144);
2868 /* (145) colorproperty ::= FILL */ yytestcase(yyruleno==145);
2869 /* (146) colorproperty ::= COLOR */ yytestcase(yyruleno==146);
2870 /* (147) position ::= place */ yytestcase(yyruleno==147);
@@ -2935,18 +2958,18 @@
2935 ){
2936 pik_parserARG_FETCH
2937 pik_parserCTX_FETCH
2938 #define TOKEN yyminor
2939 /************ Begin %syntax_error code ****************************************/
2940 #line 468 "pikchr.y"
2941
2942 if( TOKEN.z && TOKEN.z[0] ){
2943 pik_error(p, &TOKEN, "syntax error");
2944 }else{
2945 pik_error(p, 0, "syntax error");
2946 }
2947 #line 2972 "pikchr.c"
2948 /************ End %syntax_error code ******************************************/
2949 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
2950 pik_parserCTX_STORE
2951 }
2952
@@ -3175,11 +3198,11 @@
3175 #else
3176 (void)iToken;
3177 return 0;
3178 #endif
3179 }
3180 #line 703 "pikchr.y"
3181
3182
3183
3184 /* Chart of the 140 official HTML color names with their
3185 ** corresponding RGB value.
@@ -3593,11 +3616,11 @@
3593 }
3594 static PPoint circleChop(PElem *pElem, PPoint *pPt){
3595 PPoint chop;
3596 PNum dx = pPt->x - pElem->ptAt.x;
3597 PNum dy = pPt->y - pElem->ptAt.y;
3598 PNum dist = sqrt(dx*dx + dy*dy);
3599 if( dist<pElem->rad ) return pElem->ptAt;
3600 chop.x = pElem->ptAt.x + dx*pElem->rad/dist;
3601 chop.y = pElem->ptAt.y + dy*pElem->rad/dist;
3602 return chop;
3603 }
@@ -3604,11 +3627,11 @@
3604 static void circleFit(Pik *p, PElem *pElem, PNum w, PNum h){
3605 PNum mx = 0.0;
3606 if( w>0 ) mx = w;
3607 if( h>mx ) mx = h;
3608 if( (w*w + h*h) > mx*mx ){
3609 mx = sqrt(w*w + h*h);
3610 }
3611 if( mx>0.0 ){
3612 pElem->rad = 0.5*mx;
3613 pElem->w = pElem->h = mx;
3614 }
@@ -3713,11 +3736,11 @@
3713 PNum dy = pPt->y - pElem->ptAt.y;
3714 if( pElem->w<=0.0 ) return pElem->ptAt;
3715 if( pElem->h<=0.0 ) return pElem->ptAt;
3716 s = pElem->h/pElem->w;
3717 dq = dx*s;
3718 dist = sqrt(dq*dq + dy*dy);
3719 if( dist<pElem->h ) return pElem->ptAt;
3720 chop.x = pElem->ptAt.x + 0.5*dq*pElem->h/(dist*s);
3721 chop.y = pElem->ptAt.y + 0.5*dy*pElem->h/dist;
3722 return chop;
3723 }
@@ -3895,11 +3918,11 @@
3895 ** return the midpoint.
3896 */
3897 static PPoint radiusMidpoint(PPoint f, PPoint t, PNum r, int *pbMid){
3898 PNum dx = t.x - f.x;
3899 PNum dy = t.y - f.y;
3900 PNum dist = sqrt(dx*dx+dy*dy);
3901 PPoint m;
3902 if( dist<=0.0 ) return t;
3903 dx /= dist;
3904 dy /= dist;
3905 if( r > 0.5*dist ){
@@ -4144,11 +4167,11 @@
4144 ** modifying the location of *t.
4145 */
4146 static void pik_chop(Pik *p, PPoint *f, PPoint *t, PNum amt){
4147 PNum dx = t->x - f->x;
4148 PNum dy = t->y - f->y;
4149 PNum dist = sqrt(dx*dx + dy*dy);
4150 PNum r;
4151 if( dist<=amt ){
4152 *t = *f;
4153 return;
4154 }
@@ -4163,11 +4186,11 @@
4163 ** the shaft of the arrow does not extend into the arrowhead.
4164 */
4165 static void pik_draw_arrowhead(Pik *p, PPoint *f, PPoint *t, PElem *pElem){
4166 PNum dx = t->x - f->x;
4167 PNum dy = t->y - f->y;
4168 PNum dist = sqrt(dx*dx + dy*dy);
4169 PNum h = p->hArrow * pElem->sw;
4170 PNum w = p->wArrow * pElem->sw;
4171 PNum e1, ddx, ddy;
4172 PNum bx, by;
4173 if( pElem->color<0.0 ) return;
@@ -4225,13 +4248,14 @@
4225 }
4226
4227 /*
4228 ** Append text to zOut with HTML characters escaped.
4229 **
4230 ** * The space character is changed into "&nbsp;" if mFlags as the
4231 ** 0x01 bit set. This is needed when outputting text to preserve
4232 ** leading and trailing whitespace.
 
4233 **
4234 ** * The "&" character is changed into "&amp;" if mFlags as the
4235 ** 0x02 bit set. This is needed when generating error message text.
4236 **
4237 ** * Except for the above, only "<" and ">" are escaped.
@@ -4253,11 +4277,11 @@
4253 if( i==n ) break;
4254 switch( c ){
4255 case '<': { pik_append(p, "&lt;", 4); break; }
4256 case '>': { pik_append(p, "&gt;", 4); break; }
4257 case '&': { pik_append(p, "&amp;", 5); break; }
4258 case ' ': { pik_append(p, "&nbsp;", 6); break; }
4259 }
4260 i++;
4261 n -= i;
4262 zText += i;
4263 i = 0;
@@ -5306,10 +5330,20 @@
5306 return;
5307 }
5308 pElem->bClose = 1;
5309 }
5310
 
 
 
 
 
 
 
 
 
 
5311
5312 /* Set the "at" of an element
5313 */
5314 static void pik_set_at(Pik *p, PToken *pEdge, PPoint *pAt, PToken *pErrTok){
5315 PElem *pElem;
@@ -5384,10 +5418,11 @@
5384 static int pik_text_length(const PToken *pToken){
5385 int n = pToken->n;
5386 const char *z = pToken->z;
5387 int cnt, j;
5388 for(j=1, cnt=0; j<n-1; j++){
 
5389 cnt++;
5390 if( z[j]=='\\' && z[j+1]!='&' ){
5391 j++;
5392 }else if( z[j]=='&' ){
5393 int k;
@@ -6245,10 +6280,11 @@
6245 { "abs", 3, T_FUNC1, FN_ABS, 0 },
6246 { "aligned", 7, T_ALIGNED, 0, 0 },
6247 { "and", 3, T_AND, 0, 0 },
6248 { "as", 2, T_AS, 0, 0 },
6249 { "at", 2, T_AT, 0, 0 },
 
6250 { "below", 5, T_BELOW, 0, 0 },
6251 { "between", 7, T_BETWEEN, 0, 0 },
6252 { "big", 3, T_BIG, 0, 0 },
6253 { "bold", 4, T_BOLD, 0, 0 },
6254 { "bot", 3, T_EDGEPT, 0, CP_S },
@@ -6451,10 +6487,11 @@
6451 case ')': { pToken->eType = T_RP; return 1; }
6452 case '[': { pToken->eType = T_LB; return 1; }
6453 case ']': { pToken->eType = T_RB; return 1; }
6454 case ',': { pToken->eType = T_COMMA; return 1; }
6455 case ':': { pToken->eType = T_COLON; return 1; }
 
6456 case '=': { pToken->eType = T_ASSIGN;
6457 pToken->eCode = T_ASSIGN; return 1; }
6458 case '-': {
6459 if( z[1]=='>' ){
6460 pToken->eType = T_RARROW;
@@ -6476,12 +6513,12 @@
6476 }else{
6477 pToken->eType = T_LARROW;
6478 return 2;
6479 }
6480 }else{
6481 pToken->eType = T_ERROR;
6482 return 1;
6483 }
6484 }
6485 default: {
6486 c = z[0];
6487 if( c=='.' ){
@@ -6798,6 +6835,6 @@
6798 printf("</body></html>\n");
6799 return 0;
6800 }
6801 #endif /* PIKCHR_SHELL */
6802
6803 #line 6828 "pikchr.c"
6804
--- src/pikchr.c
+++ src/pikchr.c
@@ -422,13 +422,14 @@
422 static PPoint pik_position_at_hdg(Pik *p, PNum dist, PToken *pD, PPoint pt);
423 static void pik_same(Pik *p, PElem*, PToken*);
424 static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
425 static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
426 static void pik_compute_layout_settings(Pik*);
427 static void pik_behind(Pik*,PElem*);
428
429
430 #line 456 "pikchr.c"
431 /**************** End of %include directives **********************************/
432 /* These constants specify the various numeric values for terminal symbols.
433 ***************** Begin token definitions *************************************/
434 #ifndef T_ID
435 #define T_ID 1
@@ -467,13 +468,13 @@
468 #define T_AT 34
469 #define T_WITH 35
470 #define T_SAME 36
471 #define T_AS 37
472 #define T_FIT 38
473 #define T_BEHIND 39
474 #define T_UNTIL 40
475 #define T_EVEN 41
476 #define T_DOT_E 42
477 #define T_HEIGHT 43
478 #define T_WIDTH 44
479 #define T_RADIUS 45
480 #define T_DIAMETER 46
@@ -497,28 +498,31 @@
498 #define T_ALIGNED 64
499 #define T_BIG 65
500 #define T_SMALL 66
501 #define T_LP 67
502 #define T_RP 68
503 #define T_AND 69
504 #define T_LT 70
505 #define T_GT 71
506 #define T_WAY 72
507 #define T_BETWEEN 73
508 #define T_THE 74
509 #define T_DOT_L 75
510 #define T_START 76
511 #define T_END 77
512 #define T_NTH 78
513 #define T_VERTEX 79
514 #define T_IN 80
515 #define T_DOT_U 81
516 #define T_LAST 82
517 #define T_NUMBER 83
518 #define T_FUNC1 84
519 #define T_FUNC2 85
520 #define T_X 86
521 #define T_Y 87
522 #define T_TOP 88
523 #define T_BOTTOM 89
524 #endif
525 /**************** End token definitions ***************************************/
526
527 /* The next sections is a series of control #defines.
528 ** various aspects of the generated parser.
@@ -574,21 +578,21 @@
578 #ifndef INTERFACE
579 # define INTERFACE 1
580 #endif
581 /************* Begin control #defines *****************************************/
582 #define YYCODETYPE unsigned char
583 #define YYNOCODE 123
584 #define YYACTIONTYPE unsigned short int
585 #define pik_parserTOKENTYPE PToken
586 typedef union {
587 int yyinit;
588 pik_parserTOKENTYPE yy0;
589 int yy34;
590 PEList* yy80;
591 PNum yy147;
592 PElem* yy174;
593 PPoint yy211;
594 } YYMINORTYPE;
595 #ifndef YYSTACKDEPTH
596 #define YYSTACKDEPTH 100
597 #endif
598 #define pik_parserARG_SDECL
@@ -600,22 +604,22 @@
604 #define pik_parserCTX_PDECL ,Pik *p
605 #define pik_parserCTX_PARAM ,p
606 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
607 #define pik_parserCTX_STORE yypParser->p=p;
608 #define YYFALLBACK 1
609 #define YYNSTATE 169
610 #define YYNRULE 158
611 #define YYNRULE_WITH_ACTION 122
612 #define YYNTOKEN 90
613 #define YY_MAX_SHIFT 168
614 #define YY_MIN_SHIFTREDUCE 290
615 #define YY_MAX_SHIFTREDUCE 447
616 #define YY_ERROR_ACTION 448
617 #define YY_ACCEPT_ACTION 449
618 #define YY_NO_ACTION 450
619 #define YY_MIN_REDUCE 451
620 #define YY_MAX_REDUCE 608
621 /************* End control #defines *******************************************/
622 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
623
624 /* Define the yytestcase() macro to be a no-op if is not already defined
625 ** otherwise.
@@ -678,265 +682,270 @@
682 ** yy_reduce_ofst[] For each state, the offset into yy_action for
683 ** shifting non-terminals after a reduce.
684 ** yy_default[] Default action for each state.
685 **
686 *********** Begin parsing tables **********************************************/
687 #define YY_ACTTAB_COUNT (957)
688 static const YYACTIONTYPE yy_action[] = {
689 /* 0 */ 585, 502, 167, 124, 21, 125, 452, 459, 28, 451,
690 /* 10 */ 585, 70, 455, 128, 435, 436, 344, 49, 81, 27,
691 /* 20 */ 48, 30, 585, 168, 146, 449, 23, 323, 324, 10,
692 /* 30 */ 9, 34, 158, 33, 8, 71, 126, 29, 340, 59,
693 /* 40 */ 587, 77, 587, 344, 344, 344, 344, 433, 434, 345,
694 /* 50 */ 346, 347, 348, 349, 350, 351, 352, 397, 443, 562,
695 /* 60 */ 53, 54, 563, 564, 561, 457, 28, 73, 380, 143,
696 /* 70 */ 435, 436, 344, 27, 458, 116, 115, 167, 124, 306,
697 /* 80 */ 93, 446, 447, 397, 26, 310, 53, 54, 70, 118,
698 /* 90 */ 167, 124, 127, 380, 380, 22, 435, 436, 344, 344,
699 /* 100 */ 344, 344, 344, 433, 434, 72, 153, 143, 24, 155,
700 /* 110 */ 151, 157, 114, 116, 115, 167, 124, 589, 58, 57,
701 /* 120 */ 56, 55, 82, 1, 83, 344, 344, 344, 344, 433,
702 /* 130 */ 434, 60, 145, 144, 104, 12, 6, 110, 122, 396,
703 /* 140 */ 160, 159, 442, 442, 444, 445, 118, 167, 124, 5,
704 /* 150 */ 465, 397, 443, 541, 53, 54, 580, 46, 43, 112,
705 /* 160 */ 109, 7, 380, 122, 122, 396, 160, 159, 442, 442,
706 /* 170 */ 397, 443, 432, 53, 54, 446, 447, 431, 499, 167,
707 /* 180 */ 124, 380, 359, 360, 361, 130, 541, 80, 11, 308,
708 /* 190 */ 79, 412, 541, 440, 446, 447, 134, 420, 421, 422,
709 /* 200 */ 423, 438, 149, 135, 413, 414, 415, 417, 80, 75,
710 /* 210 */ 308, 79, 14, 420, 421, 422, 423, 1, 382, 164,
711 /* 220 */ 138, 136, 58, 57, 56, 55, 145, 144, 104, 141,
712 /* 230 */ 167, 124, 122, 396, 160, 159, 1, 47, 444, 445,
713 /* 240 */ 404, 405, 32, 140, 139, 145, 144, 104, 76, 15,
714 /* 250 */ 40, 122, 396, 160, 159, 110, 397, 444, 445, 53,
715 /* 260 */ 54, 16, 56, 55, 118, 167, 124, 111, 479, 301,
716 /* 270 */ 302, 303, 121, 305, 61, 435, 436, 344, 18, 17,
717 /* 280 */ 123, 35, 113, 452, 459, 28, 395, 62, 20, 455,
718 /* 290 */ 137, 439, 63, 138, 136, 58, 57, 56, 55, 64,
719 /* 300 */ 168, 410, 411, 23, 344, 344, 344, 344, 433, 434,
720 /* 310 */ 47, 117, 435, 436, 344, 397, 140, 139, 53, 54,
721 /* 320 */ 363, 110, 5, 40, 397, 19, 380, 53, 54, 2,
722 /* 330 */ 118, 167, 124, 109, 456, 380, 409, 122, 396, 160,
723 /* 340 */ 159, 344, 344, 344, 344, 433, 434, 442, 442, 384,
724 /* 350 */ 163, 18, 17, 65, 131, 129, 397, 335, 408, 53,
725 /* 360 */ 54, 20, 66, 137, 439, 383, 165, 380, 95, 397,
726 /* 370 */ 331, 407, 53, 54, 372, 373, 67, 118, 167, 124,
727 /* 380 */ 380, 5, 68, 406, 442, 442, 51, 36, 52, 468,
728 /* 390 */ 5, 25, 109, 84, 443, 381, 122, 396, 160, 159,
729 /* 400 */ 38, 109, 118, 167, 124, 122, 396, 160, 159, 397,
730 /* 410 */ 382, 164, 53, 54, 85, 69, 388, 446, 447, 73,
731 /* 420 */ 111, 143, 5, 118, 167, 124, 504, 116, 115, 167,
732 /* 430 */ 124, 386, 387, 109, 73, 5, 143, 122, 396, 160,
733 /* 440 */ 159, 503, 116, 115, 167, 124, 109, 382, 164, 450,
734 /* 450 */ 122, 396, 160, 159, 397, 166, 31, 53, 54, 537,
735 /* 460 */ 167, 124, 453, 459, 28, 380, 450, 397, 455, 142,
736 /* 470 */ 53, 54, 123, 450, 100, 5, 450, 450, 380, 168,
737 /* 480 */ 444, 445, 23, 118, 167, 124, 109, 450, 450, 450,
738 /* 490 */ 122, 396, 160, 159, 450, 354, 354, 354, 354, 354,
739 /* 500 */ 354, 354, 354, 354, 354, 450, 162, 86, 153, 123,
740 /* 510 */ 450, 155, 151, 157, 450, 450, 118, 167, 124, 450,
741 /* 520 */ 3, 450, 58, 57, 56, 55, 450, 58, 57, 56,
742 /* 530 */ 55, 109, 450, 4, 450, 122, 396, 160, 159, 536,
743 /* 540 */ 167, 124, 42, 450, 109, 450, 450, 13, 122, 396,
744 /* 550 */ 160, 159, 87, 153, 450, 450, 155, 151, 157, 450,
745 /* 560 */ 450, 118, 167, 124, 450, 99, 153, 450, 450, 155,
746 /* 570 */ 151, 157, 450, 450, 118, 167, 124, 450, 535, 167,
747 /* 580 */ 124, 73, 450, 143, 150, 167, 124, 101, 497, 116,
748 /* 590 */ 115, 167, 124, 73, 450, 143, 118, 167, 124, 450,
749 /* 600 */ 487, 116, 115, 167, 124, 450, 73, 450, 143, 450,
750 /* 610 */ 450, 110, 450, 486, 116, 115, 167, 124, 450, 450,
751 /* 620 */ 118, 167, 124, 450, 465, 450, 73, 450, 143, 78,
752 /* 630 */ 78, 450, 450, 523, 116, 115, 167, 124, 450, 73,
753 /* 640 */ 334, 143, 58, 57, 56, 55, 133, 116, 115, 167,
754 /* 650 */ 124, 73, 330, 143, 58, 57, 56, 55, 530, 116,
755 /* 660 */ 115, 167, 124, 450, 73, 450, 143, 152, 167, 124,
756 /* 670 */ 37, 529, 116, 115, 167, 124, 73, 450, 143, 154,
757 /* 680 */ 167, 124, 39, 528, 116, 115, 167, 124, 73, 450,
758 /* 690 */ 143, 58, 57, 56, 55, 527, 116, 115, 167, 124,
759 /* 700 */ 450, 73, 450, 143, 450, 450, 45, 450, 526, 116,
760 /* 710 */ 115, 167, 124, 58, 57, 56, 55, 319, 156, 167,
761 /* 720 */ 124, 73, 450, 143, 161, 167, 124, 450, 525, 116,
762 /* 730 */ 115, 167, 124, 450, 73, 450, 143, 58, 57, 56,
763 /* 740 */ 55, 147, 116, 115, 167, 124, 73, 450, 143, 450,
764 /* 750 */ 450, 443, 41, 148, 116, 115, 167, 124, 450, 73,
765 /* 760 */ 450, 143, 58, 57, 56, 55, 132, 116, 115, 167,
766 /* 770 */ 124, 73, 450, 143, 446, 447, 450, 44, 483, 116,
767 /* 780 */ 115, 167, 124, 58, 57, 56, 55, 58, 57, 56,
768 /* 790 */ 55, 74, 58, 57, 56, 55, 58, 57, 56, 55,
769 /* 800 */ 314, 395, 58, 57, 56, 55, 313, 50, 58, 57,
770 /* 810 */ 56, 55, 58, 57, 56, 55, 450, 450, 102, 58,
771 /* 820 */ 57, 56, 55, 103, 450, 450, 395, 118, 167, 124,
772 /* 830 */ 450, 88, 118, 167, 124, 89, 450, 444, 445, 105,
773 /* 840 */ 118, 167, 124, 450, 118, 167, 124, 358, 118, 167,
774 /* 850 */ 124, 399, 450, 450, 90, 450, 450, 91, 450, 450,
775 /* 860 */ 106, 450, 450, 118, 167, 124, 118, 167, 124, 118,
776 /* 870 */ 167, 124, 398, 450, 92, 450, 395, 450, 107, 450,
777 /* 880 */ 450, 108, 450, 118, 167, 124, 450, 118, 167, 124,
778 /* 890 */ 118, 167, 124, 94, 450, 450, 96, 450, 450, 97,
779 /* 900 */ 450, 450, 118, 167, 124, 118, 167, 124, 118, 167,
780 /* 910 */ 124, 450, 450, 98, 540, 167, 124, 450, 555, 450,
781 /* 920 */ 450, 554, 118, 167, 124, 450, 553, 118, 167, 124,
782 /* 930 */ 118, 167, 124, 552, 450, 118, 167, 124, 450, 119,
783 /* 940 */ 450, 450, 118, 167, 124, 120, 450, 450, 118, 167,
784 /* 950 */ 124, 450, 450, 450, 118, 167, 124,
785 };
786 static const YYCODETYPE yy_lookahead[] = {
787 /* 0 */ 0, 103, 104, 105, 122, 90, 91, 92, 93, 0,
788 /* 10 */ 10, 3, 97, 96, 14, 15, 16, 95, 18, 10,
789 /* 20 */ 98, 99, 22, 108, 96, 110, 111, 27, 28, 29,
790 /* 30 */ 30, 31, 96, 33, 34, 35, 36, 97, 38, 39,
791 /* 40 */ 118, 119, 120, 43, 44, 45, 46, 47, 48, 49,
792 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 1, 2, 95,
793 /* 60 */ 4, 5, 98, 99, 100, 92, 93, 94, 12, 96,
794 /* 70 */ 14, 15, 16, 10, 101, 102, 103, 104, 105, 19,
795 /* 80 */ 94, 25, 26, 1, 114, 22, 4, 5, 80, 103,
796 /* 90 */ 104, 105, 96, 12, 12, 109, 14, 15, 16, 43,
797 /* 100 */ 44, 45, 46, 47, 48, 94, 95, 96, 116, 98,
798 /* 110 */ 99, 100, 101, 102, 103, 104, 105, 121, 4, 5,
799 /* 120 */ 6, 7, 106, 67, 106, 43, 44, 45, 46, 47,
800 /* 130 */ 48, 37, 76, 77, 78, 19, 34, 94, 82, 83,
801 /* 140 */ 84, 85, 86, 87, 88, 89, 103, 104, 105, 67,
802 /* 150 */ 107, 1, 2, 42, 4, 5, 113, 4, 5, 78,
803 /* 160 */ 78, 34, 12, 82, 82, 83, 84, 85, 86, 87,
804 /* 170 */ 1, 2, 35, 4, 5, 25, 26, 35, 103, 104,
805 /* 180 */ 105, 12, 68, 68, 68, 41, 75, 18, 69, 20,
806 /* 190 */ 21, 1, 81, 73, 25, 26, 72, 23, 24, 25,
807 /* 200 */ 26, 73, 12, 74, 14, 15, 16, 17, 18, 42,
808 /* 210 */ 20, 21, 3, 23, 24, 25, 26, 67, 20, 21,
809 /* 220 */ 2, 3, 4, 5, 6, 7, 76, 77, 78, 103,
810 /* 230 */ 104, 105, 82, 83, 84, 85, 67, 19, 88, 89,
811 /* 240 */ 86, 87, 75, 25, 26, 76, 77, 78, 42, 3,
812 /* 250 */ 32, 82, 83, 84, 85, 94, 1, 88, 89, 4,
813 /* 260 */ 5, 3, 6, 7, 103, 104, 105, 12, 107, 14,
814 /* 270 */ 15, 16, 75, 18, 3, 14, 15, 16, 60, 61,
815 /* 280 */ 82, 75, 90, 91, 92, 93, 68, 3, 70, 97,
816 /* 290 */ 72, 73, 3, 2, 3, 4, 5, 6, 7, 3,
817 /* 300 */ 108, 86, 87, 111, 43, 44, 45, 46, 47, 48,
818 /* 310 */ 19, 75, 14, 15, 16, 1, 25, 26, 4, 5,
819 /* 320 */ 71, 94, 67, 32, 1, 19, 12, 4, 5, 13,
820 /* 330 */ 103, 104, 105, 78, 107, 12, 68, 82, 83, 84,
821 /* 340 */ 85, 43, 44, 45, 46, 47, 48, 86, 87, 20,
822 /* 350 */ 21, 60, 61, 3, 40, 41, 1, 2, 68, 4,
823 /* 360 */ 5, 70, 3, 72, 73, 20, 21, 12, 94, 1,
824 /* 370 */ 2, 68, 4, 5, 76, 77, 3, 103, 104, 105,
825 /* 380 */ 12, 67, 3, 68, 86, 87, 67, 32, 67, 115,
826 /* 390 */ 67, 117, 78, 94, 2, 12, 82, 83, 84, 85,
827 /* 400 */ 32, 78, 103, 104, 105, 82, 83, 84, 85, 1,
828 /* 410 */ 20, 21, 4, 5, 94, 3, 22, 25, 26, 94,
829 /* 420 */ 12, 96, 67, 103, 104, 105, 101, 102, 103, 104,
830 /* 430 */ 105, 22, 22, 78, 94, 67, 96, 82, 83, 84,
831 /* 440 */ 85, 101, 102, 103, 104, 105, 78, 20, 21, 123,
832 /* 450 */ 82, 83, 84, 85, 1, 81, 11, 4, 5, 103,
833 /* 460 */ 104, 105, 91, 92, 93, 12, 123, 1, 97, 79,
834 /* 470 */ 4, 5, 82, 123, 94, 67, 123, 123, 12, 108,
835 /* 480 */ 88, 89, 111, 103, 104, 105, 78, 123, 123, 123,
836 /* 490 */ 82, 83, 84, 85, 123, 57, 58, 59, 60, 61,
837 /* 500 */ 62, 63, 64, 65, 66, 123, 79, 94, 95, 82,
838 /* 510 */ 123, 98, 99, 100, 123, 123, 103, 104, 105, 123,
839 /* 520 */ 67, 123, 4, 5, 6, 7, 123, 4, 5, 6,
840 /* 530 */ 7, 78, 123, 67, 123, 82, 83, 84, 85, 103,
841 /* 540 */ 104, 105, 19, 123, 78, 123, 123, 29, 82, 83,
842 /* 550 */ 84, 85, 94, 95, 123, 123, 98, 99, 100, 123,
843 /* 560 */ 123, 103, 104, 105, 123, 94, 95, 123, 123, 98,
844 /* 570 */ 99, 100, 123, 123, 103, 104, 105, 123, 103, 104,
845 /* 580 */ 105, 94, 123, 96, 103, 104, 105, 94, 101, 102,
846 /* 590 */ 103, 104, 105, 94, 123, 96, 103, 104, 105, 123,
847 /* 600 */ 101, 102, 103, 104, 105, 123, 94, 123, 96, 123,
848 /* 610 */ 123, 94, 123, 101, 102, 103, 104, 105, 123, 123,
849 /* 620 */ 103, 104, 105, 123, 107, 123, 94, 123, 96, 112,
850 /* 630 */ 113, 123, 123, 101, 102, 103, 104, 105, 123, 94,
851 /* 640 */ 2, 96, 4, 5, 6, 7, 101, 102, 103, 104,
852 /* 650 */ 105, 94, 2, 96, 4, 5, 6, 7, 101, 102,
853 /* 660 */ 103, 104, 105, 123, 94, 123, 96, 103, 104, 105,
854 /* 670 */ 32, 101, 102, 103, 104, 105, 94, 123, 96, 103,
855 /* 680 */ 104, 105, 32, 101, 102, 103, 104, 105, 94, 123,
856 /* 690 */ 96, 4, 5, 6, 7, 101, 102, 103, 104, 105,
857 /* 700 */ 123, 94, 123, 96, 123, 123, 19, 123, 101, 102,
858 /* 710 */ 103, 104, 105, 4, 5, 6, 7, 8, 103, 104,
859 /* 720 */ 105, 94, 123, 96, 103, 104, 105, 123, 101, 102,
860 /* 730 */ 103, 104, 105, 123, 94, 123, 96, 4, 5, 6,
861 /* 740 */ 7, 101, 102, 103, 104, 105, 94, 123, 96, 123,
862 /* 750 */ 123, 2, 19, 101, 102, 103, 104, 105, 123, 94,
863 /* 760 */ 123, 96, 4, 5, 6, 7, 101, 102, 103, 104,
864 /* 770 */ 105, 94, 123, 96, 25, 26, 123, 19, 101, 102,
865 /* 780 */ 103, 104, 105, 4, 5, 6, 7, 4, 5, 6,
866 /* 790 */ 7, 42, 4, 5, 6, 7, 4, 5, 6, 7,
867 /* 800 */ 8, 68, 4, 5, 6, 7, 8, 19, 4, 5,
868 /* 810 */ 6, 7, 4, 5, 6, 7, 123, 123, 94, 4,
869 /* 820 */ 5, 6, 7, 94, 123, 123, 68, 103, 104, 105,
870 /* 830 */ 123, 94, 103, 104, 105, 94, 123, 88, 89, 94,
871 /* 840 */ 103, 104, 105, 123, 103, 104, 105, 68, 103, 104,
872 /* 850 */ 105, 68, 123, 123, 94, 123, 123, 94, 123, 123,
873 /* 860 */ 94, 123, 123, 103, 104, 105, 103, 104, 105, 103,
874 /* 870 */ 104, 105, 68, 123, 94, 123, 68, 123, 94, 123,
875 /* 880 */ 123, 94, 123, 103, 104, 105, 123, 103, 104, 105,
876 /* 890 */ 103, 104, 105, 94, 123, 123, 94, 123, 123, 94,
877 /* 900 */ 123, 123, 103, 104, 105, 103, 104, 105, 103, 104,
878 /* 910 */ 105, 123, 123, 94, 103, 104, 105, 123, 94, 123,
879 /* 920 */ 123, 94, 103, 104, 105, 123, 94, 103, 104, 105,
880 /* 930 */ 103, 104, 105, 94, 123, 103, 104, 105, 123, 94,
881 /* 940 */ 123, 123, 103, 104, 105, 94, 123, 123, 103, 104,
882 /* 950 */ 105, 123, 123, 123, 103, 104, 105, 90, 90, 90,
883 /* 960 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
884 /* 970 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
885 /* 980 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
886 /* 990 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
887 /* 1000 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
888 /* 1010 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
889 /* 1020 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
890 /* 1030 */ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
891 /* 1040 */ 90, 90, 90, 90, 90, 90, 90,
892 };
893 #define YY_SHIFT_COUNT (168)
894 #define YY_SHIFT_MIN (0)
895 #define YY_SHIFT_MAX (815)
896 static const unsigned short int yy_shift_ofst[] = {
897 /* 0 */ 190, 56, 169, 82, 82, 82, 150, 150, 150, 150,
898 /* 10 */ 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
899 /* 20 */ 150, 150, 150, 255, 190, 0, 255, 190, 323, 314,
900 /* 30 */ 408, 408, 298, 355, 368, 261, 323, 323, 323, 323,
901 /* 40 */ 323, 323, 323, 453, 323, 323, 466, 323, 323, 323,
902 /* 50 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 81,
903 /* 60 */ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
904 /* 70 */ 81, 749, 218, 291, 392, 392, 392, 174, 60, 957,
905 /* 80 */ 957, 957, 438, 438, 638, 650, 733, 758, 518, 114,
906 /* 90 */ 523, 779, 687, 709, 792, 798, 783, 788, 804, 808,
907 /* 100 */ 815, 815, 815, 815, 390, 815, 815, 815, 815, 427,
908 /* 110 */ 815, 111, 198, 63, 116, 167, 153, 154, 206, 256,
909 /* 120 */ 256, 215, 329, 345, 8, 9, 94, 102, 127, 137,
910 /* 130 */ 142, 144, 119, 115, 120, 124, 129, 128, 209, 246,
911 /* 140 */ 258, 197, 271, 284, 289, 296, 236, 249, 306, 316,
912 /* 150 */ 268, 350, 290, 359, 303, 373, 315, 379, 236, 319,
913 /* 160 */ 321, 197, 412, 394, 409, 410, 383, 374, 445,
914 };
915 #define YY_REDUCE_COUNT (81)
916 #define YY_REDUCE_MIN (-118)
917 #define YY_REDUCE_MAX (851)
918 static const short yy_reduce_ofst[] = {
919 /* 0 */ -85, 11, -27, 413, 458, 471, 325, 340, 487, 499,
920 /* 10 */ 512, 532, 545, 557, 570, 582, 594, 607, 627, 640,
921 /* 20 */ 652, 665, 677, 517, 192, -78, 43, 371, 274, -14,
922 /* 30 */ 161, 227, -36, 299, 320, -36, 380, 493, 724, 729,
923 /* 40 */ 737, 741, 745, 760, 763, 766, 780, 784, 787, 799,
924 /* 50 */ 802, 805, 819, 824, 827, 832, 839, 845, 851, -102,
925 /* 60 */ 75, 126, 356, 436, 475, 481, 564, 576, 615, 621,
926 /* 70 */ 811, -4, -118, -118, -83, -72, -64, -60, -30, -8,
927 /* 80 */ 16, 18,
928 };
929 static const YYACTIONTYPE yy_default[] = {
930 /* 0 */ 454, 448, 448, 448, 448, 448, 448, 448, 448, 448,
931 /* 10 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
932 /* 20 */ 448, 448, 448, 448, 454, 591, 448, 454, 586, 482,
933 /* 30 */ 448, 448, 448, 590, 488, 448, 448, 448, 448, 448,
934 /* 40 */ 448, 448, 448, 448, 448, 448, 448, 448, 478, 448,
935 /* 50 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
936 /* 60 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
937 /* 70 */ 448, 448, 448, 448, 448, 448, 448, 448, 460, 472,
938 /* 80 */ 514, 514, 470, 500, 448, 448, 448, 448, 448, 448,
939 /* 90 */ 448, 448, 448, 481, 476, 473, 448, 448, 448, 448,
940 /* 100 */ 494, 493, 490, 489, 448, 518, 517, 516, 477, 448,
941 /* 110 */ 577, 461, 448, 448, 448, 531, 598, 448, 448, 551,
942 /* 120 */ 550, 448, 546, 448, 539, 448, 498, 448, 448, 448,
943 /* 130 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
944 /* 140 */ 448, 538, 448, 448, 448, 448, 532, 448, 448, 448,
945 /* 150 */ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
946 /* 160 */ 448, 448, 448, 448, 448, 448, 448, 602, 448,
947 };
948 /********** End of lemon-generated parsing tables *****************************/
949
950 /* The next table maps tokens (terminal symbols) into fallback tokens.
951 ** If a construct like the following:
@@ -991,13 +1000,13 @@
1000 0, /* AT => nothing */
1001 0, /* WITH => nothing */
1002 0, /* SAME => nothing */
1003 0, /* AS => nothing */
1004 0, /* FIT => nothing */
1005 0, /* BEHIND => nothing */
1006 0, /* UNTIL => nothing */
1007 0, /* EVEN => nothing */
 
1008 0, /* DOT_E => nothing */
1009 0, /* HEIGHT => nothing */
1010 0, /* WIDTH => nothing */
1011 0, /* RADIUS => nothing */
1012 0, /* DIAMETER => nothing */
@@ -1021,10 +1030,13 @@
1030 0, /* ALIGNED => nothing */
1031 0, /* BIG => nothing */
1032 0, /* SMALL => nothing */
1033 0, /* LP => nothing */
1034 0, /* RP => nothing */
1035 0, /* AND => nothing */
1036 0, /* LT => nothing */
1037 0, /* GT => nothing */
1038 0, /* WAY => nothing */
1039 0, /* BETWEEN => nothing */
1040 0, /* THE => nothing */
1041 0, /* DOT_L => nothing */
1042 0, /* START => nothing */
@@ -1166,13 +1178,13 @@
1178 /* 34 */ "AT",
1179 /* 35 */ "WITH",
1180 /* 36 */ "SAME",
1181 /* 37 */ "AS",
1182 /* 38 */ "FIT",
1183 /* 39 */ "BEHIND",
1184 /* 40 */ "UNTIL",
1185 /* 41 */ "EVEN",
1186 /* 42 */ "DOT_E",
1187 /* 43 */ "HEIGHT",
1188 /* 44 */ "WIDTH",
1189 /* 45 */ "RADIUS",
1190 /* 46 */ "DIAMETER",
@@ -1196,62 +1208,64 @@
1208 /* 64 */ "ALIGNED",
1209 /* 65 */ "BIG",
1210 /* 66 */ "SMALL",
1211 /* 67 */ "LP",
1212 /* 68 */ "RP",
1213 /* 69 */ "AND",
1214 /* 70 */ "LT",
1215 /* 71 */ "GT",
1216 /* 72 */ "WAY",
1217 /* 73 */ "BETWEEN",
1218 /* 74 */ "THE",
1219 /* 75 */ "DOT_L",
1220 /* 76 */ "START",
1221 /* 77 */ "END",
1222 /* 78 */ "NTH",
1223 /* 79 */ "VERTEX",
1224 /* 80 */ "IN",
1225 /* 81 */ "DOT_U",
1226 /* 82 */ "LAST",
1227 /* 83 */ "NUMBER",
1228 /* 84 */ "FUNC1",
1229 /* 85 */ "FUNC2",
1230 /* 86 */ "X",
1231 /* 87 */ "Y",
1232 /* 88 */ "TOP",
1233 /* 89 */ "BOTTOM",
1234 /* 90 */ "element_list",
1235 /* 91 */ "element",
1236 /* 92 */ "unnamed_element",
1237 /* 93 */ "basetype",
1238 /* 94 */ "expr",
1239 /* 95 */ "numproperty",
1240 /* 96 */ "edge",
1241 /* 97 */ "direction",
1242 /* 98 */ "dashproperty",
1243 /* 99 */ "colorproperty",
1244 /* 100 */ "locproperty",
1245 /* 101 */ "position",
1246 /* 102 */ "place",
1247 /* 103 */ "object",
1248 /* 104 */ "objectname",
1249 /* 105 */ "nth",
1250 /* 106 */ "textposition",
1251 /* 107 */ "rvalue",
1252 /* 108 */ "lvalue",
1253 /* 109 */ "even",
1254 /* 110 */ "document",
1255 /* 111 */ "print",
1256 /* 112 */ "prlist",
1257 /* 113 */ "pritem",
1258 /* 114 */ "prsep",
1259 /* 115 */ "attribute_list",
1260 /* 116 */ "savelist",
1261 /* 117 */ "alist",
1262 /* 118 */ "attribute",
1263 /* 119 */ "go",
1264 /* 120 */ "boolproperty",
1265 /* 121 */ "withclause",
1266 /* 122 */ "between",
1267 };
1268 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1269
1270 #ifndef NDEBUG
1271 /* For tracing reduce actions, the names of all rules are required.
@@ -1306,102 +1320,102 @@
1320 /* 46 */ "attribute ::= AT position",
1321 /* 47 */ "attribute ::= SAME",
1322 /* 48 */ "attribute ::= SAME AS object",
1323 /* 49 */ "attribute ::= STRING textposition",
1324 /* 50 */ "attribute ::= FIT",
1325 /* 51 */ "attribute ::= BEHIND object",
1326 /* 52 */ "withclause ::= DOT_E edge AT position",
1327 /* 53 */ "withclause ::= edge AT position",
1328 /* 54 */ "numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS",
1329 /* 55 */ "boolproperty ::= CW",
1330 /* 56 */ "boolproperty ::= CCW",
1331 /* 57 */ "boolproperty ::= LARROW",
1332 /* 58 */ "boolproperty ::= RARROW",
1333 /* 59 */ "boolproperty ::= LRARROW",
1334 /* 60 */ "boolproperty ::= INVIS",
1335 /* 61 */ "boolproperty ::= THICK",
1336 /* 62 */ "boolproperty ::= THIN",
1337 /* 63 */ "textposition ::=",
1338 /* 64 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1339 /* 65 */ "position ::= expr COMMA expr",
1340 /* 66 */ "position ::= place PLUS expr COMMA expr",
1341 /* 67 */ "position ::= place MINUS expr COMMA expr",
1342 /* 68 */ "position ::= place PLUS LP expr COMMA expr RP",
1343 /* 69 */ "position ::= place MINUS LP expr COMMA expr RP",
1344 /* 70 */ "position ::= LP position COMMA position RP",
1345 /* 71 */ "position ::= LP position RP",
1346 /* 72 */ "position ::= expr between position AND position",
1347 /* 73 */ "position ::= expr LT position COMMA position GT",
1348 /* 74 */ "position ::= expr ABOVE position",
1349 /* 75 */ "position ::= expr BELOW position",
1350 /* 76 */ "position ::= expr LEFT OF position",
1351 /* 77 */ "position ::= expr RIGHT OF position",
1352 /* 78 */ "position ::= expr EDGEPT OF position",
1353 /* 79 */ "position ::= expr HEADING expr FROM position",
1354 /* 80 */ "place ::= object",
1355 /* 81 */ "place ::= object DOT_E edge",
1356 /* 82 */ "place ::= object DOT_L START",
1357 /* 83 */ "place ::= object DOT_L END",
1358 /* 84 */ "place ::= START OF object",
1359 /* 85 */ "place ::= END OF object",
1360 /* 86 */ "place ::= edge OF object",
1361 /* 87 */ "place ::= NTH VERTEX OF object",
1362 /* 88 */ "object ::= nth",
1363 /* 89 */ "object ::= nth OF|IN object",
1364 /* 90 */ "objectname ::= PLACENAME",
1365 /* 91 */ "objectname ::= objectname DOT_U PLACENAME",
1366 /* 92 */ "nth ::= NTH CLASSNAME",
1367 /* 93 */ "nth ::= NTH LAST CLASSNAME",
1368 /* 94 */ "nth ::= LAST CLASSNAME",
1369 /* 95 */ "nth ::= LAST",
1370 /* 96 */ "nth ::= NTH LB RB",
1371 /* 97 */ "nth ::= NTH LAST LB RB",
1372 /* 98 */ "nth ::= LAST LB RB",
1373 /* 99 */ "expr ::= expr PLUS expr",
1374 /* 100 */ "expr ::= expr MINUS expr",
1375 /* 101 */ "expr ::= expr STAR expr",
1376 /* 102 */ "expr ::= expr SLASH expr",
1377 /* 103 */ "expr ::= MINUS expr",
1378 /* 104 */ "expr ::= PLUS expr",
1379 /* 105 */ "expr ::= LP expr RP",
1380 /* 106 */ "expr ::= NUMBER",
1381 /* 107 */ "expr ::= ID",
1382 /* 108 */ "expr ::= FUNC1 LP expr RP",
1383 /* 109 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1384 /* 110 */ "expr ::= object DOT_L locproperty",
1385 /* 111 */ "expr ::= object DOT_L numproperty",
1386 /* 112 */ "expr ::= object DOT_L dashproperty",
1387 /* 113 */ "expr ::= object DOT_L colorproperty",
1388 /* 114 */ "expr ::= object DOT_E edge DOT_L X",
1389 /* 115 */ "expr ::= object DOT_E edge DOT_L Y",
1390 /* 116 */ "expr ::= LP locproperty OF object RP",
1391 /* 117 */ "expr ::= LP dashproperty OF object RP",
1392 /* 118 */ "expr ::= LP numproperty OF object RP",
1393 /* 119 */ "expr ::= LP colorproperty OF object RP",
1394 /* 120 */ "expr ::= NTH VERTEX OF object DOT_L X",
1395 /* 121 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1396 /* 122 */ "lvalue ::= ID",
1397 /* 123 */ "lvalue ::= FILL",
1398 /* 124 */ "lvalue ::= COLOR",
1399 /* 125 */ "lvalue ::= THICKNESS",
1400 /* 126 */ "rvalue ::= expr",
1401 /* 127 */ "print ::= PRINT",
1402 /* 128 */ "prlist ::= pritem",
1403 /* 129 */ "prlist ::= prlist prsep pritem",
1404 /* 130 */ "direction ::= UP",
1405 /* 131 */ "direction ::= DOWN",
1406 /* 132 */ "direction ::= LEFT",
1407 /* 133 */ "direction ::= RIGHT",
1408 /* 134 */ "attribute_list ::= alist",
1409 /* 135 */ "alist ::=",
1410 /* 136 */ "alist ::= alist attribute",
1411 /* 137 */ "attribute ::= boolproperty",
1412 /* 138 */ "attribute ::= WITH withclause",
1413 /* 139 */ "go ::= GO",
1414 /* 140 */ "go ::=",
1415 /* 141 */ "even ::= UNTIL EVEN WITH",
1416 /* 142 */ "even ::= EVEN WITH",
1417 /* 143 */ "dashproperty ::= DOTTED",
1418 /* 144 */ "dashproperty ::= DASHED",
1419 /* 145 */ "colorproperty ::= FILL",
1420 /* 146 */ "colorproperty ::= COLOR",
1421 /* 147 */ "position ::= place",
@@ -1538,24 +1552,24 @@
1552 ** Note: during a reduce, the only symbols destroyed are those
1553 ** which appear on the RHS of the rule, but which are *not* used
1554 ** inside the C code.
1555 */
1556 /********* Begin destructor definitions ***************************************/
1557 case 90: /* element_list */
1558 {
1559 #line 445 "pikchr.y"
1560 pik_elist_free(p,(yypminor->yy80));
1561 #line 1586 "pikchr.c"
1562 }
1563 break;
1564 case 91: /* element */
1565 case 92: /* unnamed_element */
1566 case 93: /* basetype */
1567 {
1568 #line 447 "pikchr.y"
1569 pik_elem_free(p,(yypminor->yy174));
1570 #line 1595 "pikchr.c"
1571 }
1572 break;
1573 /********* End destructor definitions *****************************************/
1574 default: break; /* If no destructor action specified: do nothing */
1575 }
@@ -1769,14 +1783,14 @@
1783 #endif
1784 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1785 /* Here code is inserted which will execute if the parser
1786 ** stack every overflows */
1787 /******** Begin %stack_overflow code ******************************************/
1788 #line 476 "pikchr.y"
1789
1790 pik_error(p, 0, "parser stack overflow");
1791 #line 1816 "pikchr.c"
1792 /******** End %stack_overflow code ********************************************/
1793 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1794 pik_parserCTX_STORE
1795 }
1796
@@ -1844,168 +1858,168 @@
1858 }
1859
1860 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1861 ** of that rule */
1862 static const YYCODETYPE yyRuleInfoLhs[] = {
1863 110, /* (0) document ::= element_list */
1864 90, /* (1) element_list ::= element */
1865 90, /* (2) element_list ::= element_list EOL element */
1866 91, /* (3) element ::= */
1867 91, /* (4) element ::= direction */
1868 91, /* (5) element ::= lvalue ASSIGN rvalue */
1869 91, /* (6) element ::= PLACENAME COLON unnamed_element */
1870 91, /* (7) element ::= PLACENAME COLON position */
1871 91, /* (8) element ::= unnamed_element */
1872 91, /* (9) element ::= print prlist */
1873 107, /* (10) rvalue ::= PLACENAME */
1874 113, /* (11) pritem ::= FILL */
1875 113, /* (12) pritem ::= COLOR */
1876 113, /* (13) pritem ::= THICKNESS */
1877 113, /* (14) pritem ::= rvalue */
1878 113, /* (15) pritem ::= STRING */
1879 114, /* (16) prsep ::= COMMA */
1880 92, /* (17) unnamed_element ::= basetype attribute_list */
1881 93, /* (18) basetype ::= CLASSNAME */
1882 93, /* (19) basetype ::= STRING textposition */
1883 93, /* (20) basetype ::= LB savelist element_list RB */
1884 116, /* (21) savelist ::= */
1885 115, /* (22) attribute_list ::= expr */
1886 115, /* (23) attribute_list ::= expr PERCENT */
1887 118, /* (24) attribute ::= numproperty expr PERCENT */
1888 118, /* (25) attribute ::= numproperty expr */
1889 118, /* (26) attribute ::= dashproperty expr */
1890 118, /* (27) attribute ::= dashproperty */
1891 118, /* (28) attribute ::= colorproperty rvalue */
1892 118, /* (29) attribute ::= go direction expr PERCENT */
1893 118, /* (30) attribute ::= go direction expr */
1894 118, /* (31) attribute ::= go direction */
1895 118, /* (32) attribute ::= go direction even position */
1896 118, /* (33) attribute ::= CLOSE */
1897 118, /* (34) attribute ::= CHOP */
1898 118, /* (35) attribute ::= FROM position */
1899 118, /* (36) attribute ::= TO position */
1900 118, /* (37) attribute ::= THEN */
1901 118, /* (38) attribute ::= THEN expr HEADING expr */
1902 118, /* (39) attribute ::= THEN HEADING expr */
1903 118, /* (40) attribute ::= THEN expr EDGEPT */
1904 118, /* (41) attribute ::= THEN EDGEPT */
1905 118, /* (42) attribute ::= GO expr HEADING expr */
1906 118, /* (43) attribute ::= GO HEADING expr */
1907 118, /* (44) attribute ::= GO expr EDGEPT */
1908 118, /* (45) attribute ::= GO EDGEPT */
1909 118, /* (46) attribute ::= AT position */
1910 118, /* (47) attribute ::= SAME */
1911 118, /* (48) attribute ::= SAME AS object */
1912 118, /* (49) attribute ::= STRING textposition */
1913 118, /* (50) attribute ::= FIT */
1914 118, /* (51) attribute ::= BEHIND object */
1915 121, /* (52) withclause ::= DOT_E edge AT position */
1916 121, /* (53) withclause ::= edge AT position */
1917 95, /* (54) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1918 120, /* (55) boolproperty ::= CW */
1919 120, /* (56) boolproperty ::= CCW */
1920 120, /* (57) boolproperty ::= LARROW */
1921 120, /* (58) boolproperty ::= RARROW */
1922 120, /* (59) boolproperty ::= LRARROW */
1923 120, /* (60) boolproperty ::= INVIS */
1924 120, /* (61) boolproperty ::= THICK */
1925 120, /* (62) boolproperty ::= THIN */
1926 106, /* (63) textposition ::= */
1927 106, /* (64) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1928 101, /* (65) position ::= expr COMMA expr */
1929 101, /* (66) position ::= place PLUS expr COMMA expr */
1930 101, /* (67) position ::= place MINUS expr COMMA expr */
1931 101, /* (68) position ::= place PLUS LP expr COMMA expr RP */
1932 101, /* (69) position ::= place MINUS LP expr COMMA expr RP */
1933 101, /* (70) position ::= LP position COMMA position RP */
1934 101, /* (71) position ::= LP position RP */
1935 101, /* (72) position ::= expr between position AND position */
1936 101, /* (73) position ::= expr LT position COMMA position GT */
1937 101, /* (74) position ::= expr ABOVE position */
1938 101, /* (75) position ::= expr BELOW position */
1939 101, /* (76) position ::= expr LEFT OF position */
1940 101, /* (77) position ::= expr RIGHT OF position */
1941 101, /* (78) position ::= expr EDGEPT OF position */
1942 101, /* (79) position ::= expr HEADING expr FROM position */
1943 102, /* (80) place ::= object */
1944 102, /* (81) place ::= object DOT_E edge */
1945 102, /* (82) place ::= object DOT_L START */
1946 102, /* (83) place ::= object DOT_L END */
1947 102, /* (84) place ::= START OF object */
1948 102, /* (85) place ::= END OF object */
1949 102, /* (86) place ::= edge OF object */
1950 102, /* (87) place ::= NTH VERTEX OF object */
1951 103, /* (88) object ::= nth */
1952 103, /* (89) object ::= nth OF|IN object */
1953 104, /* (90) objectname ::= PLACENAME */
1954 104, /* (91) objectname ::= objectname DOT_U PLACENAME */
1955 105, /* (92) nth ::= NTH CLASSNAME */
1956 105, /* (93) nth ::= NTH LAST CLASSNAME */
1957 105, /* (94) nth ::= LAST CLASSNAME */
1958 105, /* (95) nth ::= LAST */
1959 105, /* (96) nth ::= NTH LB RB */
1960 105, /* (97) nth ::= NTH LAST LB RB */
1961 105, /* (98) nth ::= LAST LB RB */
1962 94, /* (99) expr ::= expr PLUS expr */
1963 94, /* (100) expr ::= expr MINUS expr */
1964 94, /* (101) expr ::= expr STAR expr */
1965 94, /* (102) expr ::= expr SLASH expr */
1966 94, /* (103) expr ::= MINUS expr */
1967 94, /* (104) expr ::= PLUS expr */
1968 94, /* (105) expr ::= LP expr RP */
1969 94, /* (106) expr ::= NUMBER */
1970 94, /* (107) expr ::= ID */
1971 94, /* (108) expr ::= FUNC1 LP expr RP */
1972 94, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
1973 94, /* (110) expr ::= object DOT_L locproperty */
1974 94, /* (111) expr ::= object DOT_L numproperty */
1975 94, /* (112) expr ::= object DOT_L dashproperty */
1976 94, /* (113) expr ::= object DOT_L colorproperty */
1977 94, /* (114) expr ::= object DOT_E edge DOT_L X */
1978 94, /* (115) expr ::= object DOT_E edge DOT_L Y */
1979 94, /* (116) expr ::= LP locproperty OF object RP */
1980 94, /* (117) expr ::= LP dashproperty OF object RP */
1981 94, /* (118) expr ::= LP numproperty OF object RP */
1982 94, /* (119) expr ::= LP colorproperty OF object RP */
1983 94, /* (120) expr ::= NTH VERTEX OF object DOT_L X */
1984 94, /* (121) expr ::= NTH VERTEX OF object DOT_L Y */
1985 108, /* (122) lvalue ::= ID */
1986 108, /* (123) lvalue ::= FILL */
1987 108, /* (124) lvalue ::= COLOR */
1988 108, /* (125) lvalue ::= THICKNESS */
1989 107, /* (126) rvalue ::= expr */
1990 111, /* (127) print ::= PRINT */
1991 112, /* (128) prlist ::= pritem */
1992 112, /* (129) prlist ::= prlist prsep pritem */
1993 97, /* (130) direction ::= UP */
1994 97, /* (131) direction ::= DOWN */
1995 97, /* (132) direction ::= LEFT */
1996 97, /* (133) direction ::= RIGHT */
1997 115, /* (134) attribute_list ::= alist */
1998 117, /* (135) alist ::= */
1999 117, /* (136) alist ::= alist attribute */
2000 118, /* (137) attribute ::= boolproperty */
2001 118, /* (138) attribute ::= WITH withclause */
2002 119, /* (139) go ::= GO */
2003 119, /* (140) go ::= */
2004 109, /* (141) even ::= UNTIL EVEN WITH */
2005 109, /* (142) even ::= EVEN WITH */
2006 98, /* (143) dashproperty ::= DOTTED */
2007 98, /* (144) dashproperty ::= DASHED */
2008 99, /* (145) colorproperty ::= FILL */
2009 99, /* (146) colorproperty ::= COLOR */
2010 101, /* (147) position ::= place */
2011 122, /* (148) between ::= WAY BETWEEN */
2012 122, /* (149) between ::= BETWEEN */
2013 122, /* (150) between ::= OF THE WAY BETWEEN */
2014 103, /* (151) object ::= objectname */
2015 100, /* (152) locproperty ::= X|Y */
2016 96, /* (153) edge ::= EDGEPT */
2017 96, /* (154) edge ::= TOP */
2018 96, /* (155) edge ::= BOTTOM */
2019 96, /* (156) edge ::= LEFT */
2020 96, /* (157) edge ::= RIGHT */
2021 };
2022
2023 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2024 ** of symbols on the right-hand side of that rule. */
2025 static const signed char yyRuleInfoNRhs[] = {
@@ -2058,102 +2072,102 @@
2072 -2, /* (46) attribute ::= AT position */
2073 -1, /* (47) attribute ::= SAME */
2074 -3, /* (48) attribute ::= SAME AS object */
2075 -2, /* (49) attribute ::= STRING textposition */
2076 -1, /* (50) attribute ::= FIT */
2077 -2, /* (51) attribute ::= BEHIND object */
2078 -4, /* (52) withclause ::= DOT_E edge AT position */
2079 -3, /* (53) withclause ::= edge AT position */
2080 -1, /* (54) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2081 -1, /* (55) boolproperty ::= CW */
2082 -1, /* (56) boolproperty ::= CCW */
2083 -1, /* (57) boolproperty ::= LARROW */
2084 -1, /* (58) boolproperty ::= RARROW */
2085 -1, /* (59) boolproperty ::= LRARROW */
2086 -1, /* (60) boolproperty ::= INVIS */
2087 -1, /* (61) boolproperty ::= THICK */
2088 -1, /* (62) boolproperty ::= THIN */
2089 0, /* (63) textposition ::= */
2090 -2, /* (64) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2091 -3, /* (65) position ::= expr COMMA expr */
2092 -5, /* (66) position ::= place PLUS expr COMMA expr */
2093 -5, /* (67) position ::= place MINUS expr COMMA expr */
2094 -7, /* (68) position ::= place PLUS LP expr COMMA expr RP */
2095 -7, /* (69) position ::= place MINUS LP expr COMMA expr RP */
2096 -5, /* (70) position ::= LP position COMMA position RP */
2097 -3, /* (71) position ::= LP position RP */
2098 -5, /* (72) position ::= expr between position AND position */
2099 -6, /* (73) position ::= expr LT position COMMA position GT */
2100 -3, /* (74) position ::= expr ABOVE position */
2101 -3, /* (75) position ::= expr BELOW position */
2102 -4, /* (76) position ::= expr LEFT OF position */
2103 -4, /* (77) position ::= expr RIGHT OF position */
2104 -4, /* (78) position ::= expr EDGEPT OF position */
2105 -5, /* (79) position ::= expr HEADING expr FROM position */
2106 -1, /* (80) place ::= object */
2107 -3, /* (81) place ::= object DOT_E edge */
2108 -3, /* (82) place ::= object DOT_L START */
2109 -3, /* (83) place ::= object DOT_L END */
2110 -3, /* (84) place ::= START OF object */
2111 -3, /* (85) place ::= END OF object */
2112 -3, /* (86) place ::= edge OF object */
2113 -4, /* (87) place ::= NTH VERTEX OF object */
2114 -1, /* (88) object ::= nth */
2115 -3, /* (89) object ::= nth OF|IN object */
2116 -1, /* (90) objectname ::= PLACENAME */
2117 -3, /* (91) objectname ::= objectname DOT_U PLACENAME */
2118 -2, /* (92) nth ::= NTH CLASSNAME */
2119 -3, /* (93) nth ::= NTH LAST CLASSNAME */
2120 -2, /* (94) nth ::= LAST CLASSNAME */
2121 -1, /* (95) nth ::= LAST */
2122 -3, /* (96) nth ::= NTH LB RB */
2123 -4, /* (97) nth ::= NTH LAST LB RB */
2124 -3, /* (98) nth ::= LAST LB RB */
2125 -3, /* (99) expr ::= expr PLUS expr */
2126 -3, /* (100) expr ::= expr MINUS expr */
2127 -3, /* (101) expr ::= expr STAR expr */
2128 -3, /* (102) expr ::= expr SLASH expr */
2129 -2, /* (103) expr ::= MINUS expr */
2130 -2, /* (104) expr ::= PLUS expr */
2131 -3, /* (105) expr ::= LP expr RP */
2132 -1, /* (106) expr ::= NUMBER */
2133 -1, /* (107) expr ::= ID */
2134 -4, /* (108) expr ::= FUNC1 LP expr RP */
2135 -6, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2136 -3, /* (110) expr ::= object DOT_L locproperty */
2137 -3, /* (111) expr ::= object DOT_L numproperty */
2138 -3, /* (112) expr ::= object DOT_L dashproperty */
2139 -3, /* (113) expr ::= object DOT_L colorproperty */
2140 -5, /* (114) expr ::= object DOT_E edge DOT_L X */
2141 -5, /* (115) expr ::= object DOT_E edge DOT_L Y */
2142 -5, /* (116) expr ::= LP locproperty OF object RP */
2143 -5, /* (117) expr ::= LP dashproperty OF object RP */
2144 -5, /* (118) expr ::= LP numproperty OF object RP */
2145 -5, /* (119) expr ::= LP colorproperty OF object RP */
2146 -6, /* (120) expr ::= NTH VERTEX OF object DOT_L X */
2147 -6, /* (121) expr ::= NTH VERTEX OF object DOT_L Y */
2148 -1, /* (122) lvalue ::= ID */
2149 -1, /* (123) lvalue ::= FILL */
2150 -1, /* (124) lvalue ::= COLOR */
2151 -1, /* (125) lvalue ::= THICKNESS */
2152 -1, /* (126) rvalue ::= expr */
2153 -1, /* (127) print ::= PRINT */
2154 -1, /* (128) prlist ::= pritem */
2155 -3, /* (129) prlist ::= prlist prsep pritem */
2156 -1, /* (130) direction ::= UP */
2157 -1, /* (131) direction ::= DOWN */
2158 -1, /* (132) direction ::= LEFT */
2159 -1, /* (133) direction ::= RIGHT */
2160 -1, /* (134) attribute_list ::= alist */
2161 0, /* (135) alist ::= */
2162 -2, /* (136) alist ::= alist attribute */
2163 -1, /* (137) attribute ::= boolproperty */
2164 -2, /* (138) attribute ::= WITH withclause */
2165 -1, /* (139) go ::= GO */
2166 0, /* (140) go ::= */
2167 -3, /* (141) even ::= UNTIL EVEN WITH */
2168 -2, /* (142) even ::= EVEN WITH */
2169 -1, /* (143) dashproperty ::= DOTTED */
2170 -1, /* (144) dashproperty ::= DASHED */
2171 -1, /* (145) colorproperty ::= FILL */
2172 -1, /* (146) colorproperty ::= COLOR */
2173 -1, /* (147) position ::= place */
@@ -2255,616 +2269,625 @@
2269 ** break;
2270 */
2271 /********** Begin reduce actions **********************************************/
2272 YYMINORTYPE yylhsminor;
2273 case 0: /* document ::= element_list */
2274 #line 480 "pikchr.y"
2275 {pik_render(p,yymsp[0].minor.yy80);}
2276 #line 2301 "pikchr.c"
2277 break;
2278 case 1: /* element_list ::= element */
2279 #line 483 "pikchr.y"
2280 { yylhsminor.yy80 = pik_elist_append(p,0,yymsp[0].minor.yy174); }
2281 #line 2306 "pikchr.c"
2282 yymsp[0].minor.yy80 = yylhsminor.yy80;
2283 break;
2284 case 2: /* element_list ::= element_list EOL element */
2285 #line 485 "pikchr.y"
2286 { yylhsminor.yy80 = pik_elist_append(p,yymsp[-2].minor.yy80,yymsp[0].minor.yy174); }
2287 #line 2312 "pikchr.c"
2288 yymsp[-2].minor.yy80 = yylhsminor.yy80;
2289 break;
2290 case 3: /* element ::= */
2291 #line 488 "pikchr.y"
2292 { yymsp[1].minor.yy174 = 0; }
2293 #line 2318 "pikchr.c"
2294 break;
2295 case 4: /* element ::= direction */
2296 #line 489 "pikchr.y"
2297 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy174=0; }
2298 #line 2323 "pikchr.c"
2299 yymsp[0].minor.yy174 = yylhsminor.yy174;
2300 break;
2301 case 5: /* element ::= lvalue ASSIGN rvalue */
2302 #line 490 "pikchr.y"
2303 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy147,&yymsp[-1].minor.yy0); yylhsminor.yy174=0;}
2304 #line 2329 "pikchr.c"
2305 yymsp[-2].minor.yy174 = yylhsminor.yy174;
2306 break;
2307 case 6: /* element ::= PLACENAME COLON unnamed_element */
2308 #line 492 "pikchr.y"
2309 { yylhsminor.yy174 = yymsp[0].minor.yy174; pik_elem_setname(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0); }
2310 #line 2335 "pikchr.c"
2311 yymsp[-2].minor.yy174 = yylhsminor.yy174;
2312 break;
2313 case 7: /* element ::= PLACENAME COLON position */
2314 #line 494 "pikchr.y"
2315 { yylhsminor.yy174 = pik_elem_new(p,0,0,0);
2316 if(yylhsminor.yy174){ yylhsminor.yy174->ptAt = yymsp[0].minor.yy211; pik_elem_setname(p,yylhsminor.yy174,&yymsp[-2].minor.yy0); }}
2317 #line 2342 "pikchr.c"
2318 yymsp[-2].minor.yy174 = yylhsminor.yy174;
2319 break;
2320 case 8: /* element ::= unnamed_element */
2321 #line 496 "pikchr.y"
2322 {yylhsminor.yy174 = yymsp[0].minor.yy174;}
2323 #line 2348 "pikchr.c"
2324 yymsp[0].minor.yy174 = yylhsminor.yy174;
2325 break;
2326 case 9: /* element ::= print prlist */
2327 #line 497 "pikchr.y"
2328 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy174=0;}
2329 #line 2354 "pikchr.c"
2330 break;
2331 case 10: /* rvalue ::= PLACENAME */
2332 #line 508 "pikchr.y"
2333 {yylhsminor.yy147 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2334 #line 2359 "pikchr.c"
2335 yymsp[0].minor.yy147 = yylhsminor.yy147;
2336 break;
2337 case 11: /* pritem ::= FILL */
2338 case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
2339 case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
2340 #line 513 "pikchr.y"
2341 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2342 #line 2367 "pikchr.c"
2343 break;
2344 case 14: /* pritem ::= rvalue */
2345 #line 516 "pikchr.y"
2346 {pik_append_num(p,"",yymsp[0].minor.yy147);}
2347 #line 2372 "pikchr.c"
2348 break;
2349 case 15: /* pritem ::= STRING */
2350 #line 517 "pikchr.y"
2351 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2352 #line 2377 "pikchr.c"
2353 break;
2354 case 16: /* prsep ::= COMMA */
2355 #line 518 "pikchr.y"
2356 {pik_append(p, " ", 1);}
2357 #line 2382 "pikchr.c"
2358 break;
2359 case 17: /* unnamed_element ::= basetype attribute_list */
2360 #line 521 "pikchr.y"
2361 {yylhsminor.yy174 = yymsp[-1].minor.yy174; pik_after_adding_attributes(p,yylhsminor.yy174);}
2362 #line 2387 "pikchr.c"
2363 yymsp[-1].minor.yy174 = yylhsminor.yy174;
2364 break;
2365 case 18: /* basetype ::= CLASSNAME */
2366 #line 523 "pikchr.y"
2367 {yylhsminor.yy174 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2368 #line 2393 "pikchr.c"
2369 yymsp[0].minor.yy174 = yylhsminor.yy174;
2370 break;
2371 case 19: /* basetype ::= STRING textposition */
2372 #line 525 "pikchr.y"
2373 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy34; yylhsminor.yy174 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2374 #line 2399 "pikchr.c"
2375 yymsp[-1].minor.yy174 = yylhsminor.yy174;
2376 break;
2377 case 20: /* basetype ::= LB savelist element_list RB */
2378 #line 527 "pikchr.y"
2379 { p->list = yymsp[-2].minor.yy80; yymsp[-3].minor.yy174 = pik_elem_new(p,0,0,yymsp[-1].minor.yy80); if(yymsp[-3].minor.yy174) yymsp[-3].minor.yy174->errTok = yymsp[0].minor.yy0; }
2380 #line 2405 "pikchr.c"
2381 break;
2382 case 21: /* savelist ::= */
2383 #line 532 "pikchr.y"
2384 {yymsp[1].minor.yy80 = p->list; p->list = 0;}
2385 #line 2410 "pikchr.c"
2386 break;
2387 case 22: /* attribute_list ::= expr */
2388 #line 539 "pikchr.y"
2389 { pik_add_direction(p,0,&yymsp[0].minor.yy147,0);}
2390 #line 2415 "pikchr.c"
2391 break;
2392 case 23: /* attribute_list ::= expr PERCENT */
2393 #line 540 "pikchr.y"
2394 { pik_add_direction(p,0,&yymsp[-1].minor.yy147,1);}
2395 #line 2420 "pikchr.c"
2396 break;
2397 case 24: /* attribute ::= numproperty expr PERCENT */
2398 #line 545 "pikchr.y"
2399 { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy147/100.0); }
2400 #line 2425 "pikchr.c"
2401 break;
2402 case 25: /* attribute ::= numproperty expr */
2403 case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
2404 #line 546 "pikchr.y"
2405 { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy147,0.0); }
2406 #line 2431 "pikchr.c"
2407 break;
2408 case 26: /* attribute ::= dashproperty expr */
2409 #line 547 "pikchr.y"
2410 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy147); }
2411 #line 2436 "pikchr.c"
2412 break;
2413 case 27: /* attribute ::= dashproperty */
2414 #line 548 "pikchr.y"
2415 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2416 #line 2441 "pikchr.c"
2417 break;
2418 case 29: /* attribute ::= go direction expr PERCENT */
2419 #line 551 "pikchr.y"
2420 { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy147,1);}
2421 #line 2446 "pikchr.c"
2422 break;
2423 case 30: /* attribute ::= go direction expr */
2424 #line 552 "pikchr.y"
2425 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy147,0);}
2426 #line 2451 "pikchr.c"
2427 break;
2428 case 31: /* attribute ::= go direction */
2429 #line 553 "pikchr.y"
2430 { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
2431 #line 2456 "pikchr.c"
2432 break;
2433 case 32: /* attribute ::= go direction even position */
2434 #line 554 "pikchr.y"
2435 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy211);}
2436 #line 2461 "pikchr.c"
2437 break;
2438 case 33: /* attribute ::= CLOSE */
2439 #line 555 "pikchr.y"
2440 { pik_close_path(p,&yymsp[0].minor.yy0); }
2441 #line 2466 "pikchr.c"
2442 break;
2443 case 34: /* attribute ::= CHOP */
2444 #line 556 "pikchr.y"
2445 { p->cur->bChop = 1; }
2446 #line 2471 "pikchr.c"
2447 break;
2448 case 35: /* attribute ::= FROM position */
2449 #line 557 "pikchr.y"
2450 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy211); }
2451 #line 2476 "pikchr.c"
2452 break;
2453 case 36: /* attribute ::= TO position */
2454 #line 558 "pikchr.y"
2455 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy211); }
2456 #line 2481 "pikchr.c"
2457 break;
2458 case 37: /* attribute ::= THEN */
2459 #line 559 "pikchr.y"
2460 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2461 #line 2486 "pikchr.c"
2462 break;
2463 case 38: /* attribute ::= THEN expr HEADING expr */
2464 case 42: /* attribute ::= GO expr HEADING expr */ yytestcase(yyruleno==42);
2465 #line 561 "pikchr.y"
2466 {pik_move_hdg(p,&yymsp[-2].minor.yy147,&yymsp[-1].minor.yy0,yymsp[0].minor.yy147,0,&yymsp[-3].minor.yy0);}
2467 #line 2492 "pikchr.c"
2468 break;
2469 case 39: /* attribute ::= THEN HEADING expr */
2470 case 43: /* attribute ::= GO HEADING expr */ yytestcase(yyruleno==43);
2471 #line 562 "pikchr.y"
2472 {pik_move_hdg(p,0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy147,0,&yymsp[-2].minor.yy0);}
2473 #line 2498 "pikchr.c"
2474 break;
2475 case 40: /* attribute ::= THEN expr EDGEPT */
2476 case 44: /* attribute ::= GO expr EDGEPT */ yytestcase(yyruleno==44);
2477 #line 563 "pikchr.y"
2478 {pik_move_hdg(p,&yymsp[-1].minor.yy147,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2479 #line 2504 "pikchr.c"
2480 break;
2481 case 41: /* attribute ::= THEN EDGEPT */
2482 case 45: /* attribute ::= GO EDGEPT */ yytestcase(yyruleno==45);
2483 #line 564 "pikchr.y"
2484 {pik_move_hdg(p,0,0,0,&yymsp[0].minor.yy0,&yymsp[-1].minor.yy0);}
2485 #line 2510 "pikchr.c"
2486 break;
2487 case 46: /* attribute ::= AT position */
2488 #line 570 "pikchr.y"
2489 { pik_set_at(p,0,&yymsp[0].minor.yy211,&yymsp[-1].minor.yy0); }
2490 #line 2515 "pikchr.c"
2491 break;
2492 case 47: /* attribute ::= SAME */
2493 #line 572 "pikchr.y"
2494 {pik_same(p,0,&yymsp[0].minor.yy0);}
2495 #line 2520 "pikchr.c"
2496 break;
2497 case 48: /* attribute ::= SAME AS object */
2498 #line 573 "pikchr.y"
2499 {pik_same(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0);}
2500 #line 2525 "pikchr.c"
2501 break;
2502 case 49: /* attribute ::= STRING textposition */
2503 #line 574 "pikchr.y"
2504 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy34);}
2505 #line 2530 "pikchr.c"
2506 break;
2507 case 50: /* attribute ::= FIT */
2508 #line 575 "pikchr.y"
2509 {pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2510 #line 2535 "pikchr.c"
2511 break;
2512 case 51: /* attribute ::= BEHIND object */
2513 #line 576 "pikchr.y"
2514 {pik_behind(p,yymsp[0].minor.yy174);}
2515 #line 2540 "pikchr.c"
2516 break;
2517 case 52: /* withclause ::= DOT_E edge AT position */
2518 case 53: /* withclause ::= edge AT position */ yytestcase(yyruleno==53);
2519 #line 584 "pikchr.y"
2520 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy211,&yymsp[-1].minor.yy0); }
2521 #line 2546 "pikchr.c"
2522 break;
2523 case 54: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2524 #line 588 "pikchr.y"
2525 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2526 #line 2551 "pikchr.c"
2527 yymsp[0].minor.yy0 = yylhsminor.yy0;
2528 break;
2529 case 55: /* boolproperty ::= CW */
2530 #line 599 "pikchr.y"
2531 {p->cur->cw = 1;}
2532 #line 2557 "pikchr.c"
2533 break;
2534 case 56: /* boolproperty ::= CCW */
2535 #line 600 "pikchr.y"
2536 {p->cur->cw = 0;}
2537 #line 2562 "pikchr.c"
2538 break;
2539 case 57: /* boolproperty ::= LARROW */
2540 #line 601 "pikchr.y"
2541 {p->cur->larrow=1; p->cur->rarrow=0; }
2542 #line 2567 "pikchr.c"
2543 break;
2544 case 58: /* boolproperty ::= RARROW */
2545 #line 602 "pikchr.y"
2546 {p->cur->larrow=0; p->cur->rarrow=1; }
2547 #line 2572 "pikchr.c"
2548 break;
2549 case 59: /* boolproperty ::= LRARROW */
2550 #line 603 "pikchr.y"
2551 {p->cur->larrow=1; p->cur->rarrow=1; }
2552 #line 2577 "pikchr.c"
2553 break;
2554 case 60: /* boolproperty ::= INVIS */
2555 #line 604 "pikchr.y"
2556 {p->cur->sw = 0.0;}
2557 #line 2582 "pikchr.c"
2558 break;
2559 case 61: /* boolproperty ::= THICK */
2560 #line 605 "pikchr.y"
2561 {p->cur->sw *= 1.5;}
2562 #line 2587 "pikchr.c"
2563 break;
2564 case 62: /* boolproperty ::= THIN */
2565 #line 606 "pikchr.y"
2566 {p->cur->sw *= 0.67;}
2567 #line 2592 "pikchr.c"
2568 break;
2569 case 63: /* textposition ::= */
2570 #line 608 "pikchr.y"
2571 {yymsp[1].minor.yy34 = 0;}
2572 #line 2597 "pikchr.c"
2573 break;
2574 case 64: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2575 #line 611 "pikchr.y"
2576 {yylhsminor.yy34 = pik_text_position(p,yymsp[-1].minor.yy34,&yymsp[0].minor.yy0);}
2577 #line 2602 "pikchr.c"
2578 yymsp[-1].minor.yy34 = yylhsminor.yy34;
2579 break;
2580 case 65: /* position ::= expr COMMA expr */
2581 #line 614 "pikchr.y"
2582 {yylhsminor.yy211.x=yymsp[-2].minor.yy147; yylhsminor.yy211.y=yymsp[0].minor.yy147;}
2583 #line 2608 "pikchr.c"
2584 yymsp[-2].minor.yy211 = yylhsminor.yy211;
2585 break;
2586 case 66: /* position ::= place PLUS expr COMMA expr */
2587 #line 616 "pikchr.y"
2588 {yylhsminor.yy211.x=yymsp[-4].minor.yy211.x+yymsp[-2].minor.yy147; yylhsminor.yy211.y=yymsp[-4].minor.yy211.y+yymsp[0].minor.yy147;}
2589 #line 2614 "pikchr.c"
2590 yymsp[-4].minor.yy211 = yylhsminor.yy211;
2591 break;
2592 case 67: /* position ::= place MINUS expr COMMA expr */
2593 #line 617 "pikchr.y"
2594 {yylhsminor.yy211.x=yymsp[-4].minor.yy211.x-yymsp[-2].minor.yy147; yylhsminor.yy211.y=yymsp[-4].minor.yy211.y-yymsp[0].minor.yy147;}
2595 #line 2620 "pikchr.c"
2596 yymsp[-4].minor.yy211 = yylhsminor.yy211;
2597 break;
2598 case 68: /* position ::= place PLUS LP expr COMMA expr RP */
2599 #line 619 "pikchr.y"
2600 {yylhsminor.yy211.x=yymsp[-6].minor.yy211.x+yymsp[-3].minor.yy147; yylhsminor.yy211.y=yymsp[-6].minor.yy211.y+yymsp[-1].minor.yy147;}
2601 #line 2626 "pikchr.c"
2602 yymsp[-6].minor.yy211 = yylhsminor.yy211;
2603 break;
2604 case 69: /* position ::= place MINUS LP expr COMMA expr RP */
2605 #line 621 "pikchr.y"
2606 {yylhsminor.yy211.x=yymsp[-6].minor.yy211.x-yymsp[-3].minor.yy147; yylhsminor.yy211.y=yymsp[-6].minor.yy211.y-yymsp[-1].minor.yy147;}
2607 #line 2632 "pikchr.c"
2608 yymsp[-6].minor.yy211 = yylhsminor.yy211;
2609 break;
2610 case 70: /* position ::= LP position COMMA position RP */
2611 #line 622 "pikchr.y"
2612 {yymsp[-4].minor.yy211.x=yymsp[-3].minor.yy211.x; yymsp[-4].minor.yy211.y=yymsp[-1].minor.yy211.y;}
2613 #line 2638 "pikchr.c"
2614 break;
2615 case 71: /* position ::= LP position RP */
2616 #line 623 "pikchr.y"
2617 {yymsp[-2].minor.yy211=yymsp[-1].minor.yy211;}
2618 #line 2643 "pikchr.c"
2619 break;
2620 case 72: /* position ::= expr between position AND position */
2621 #line 625 "pikchr.y"
2622 {yylhsminor.yy211 = pik_position_between(p,yymsp[-4].minor.yy147,yymsp[-2].minor.yy211,yymsp[0].minor.yy211);}
2623 #line 2648 "pikchr.c"
2624 yymsp[-4].minor.yy211 = yylhsminor.yy211;
2625 break;
2626 case 73: /* position ::= expr LT position COMMA position GT */
 
 
 
 
 
 
2627 #line 627 "pikchr.y"
2628 {yylhsminor.yy211 = pik_position_between(p,yymsp[-5].minor.yy147,yymsp[-3].minor.yy211,yymsp[-1].minor.yy211);}
2629 #line 2654 "pikchr.c"
2630 yymsp[-5].minor.yy211 = yylhsminor.yy211;
2631 break;
2632 case 74: /* position ::= expr ABOVE position */
2633 #line 628 "pikchr.y"
2634 {yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.y += yymsp[-2].minor.yy147;}
2635 #line 2660 "pikchr.c"
2636 yymsp[-2].minor.yy211 = yylhsminor.yy211;
2637 break;
2638 case 75: /* position ::= expr BELOW position */
2639 #line 629 "pikchr.y"
2640 {yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.y -= yymsp[-2].minor.yy147;}
2641 #line 2666 "pikchr.c"
2642 yymsp[-2].minor.yy211 = yylhsminor.yy211;
2643 break;
2644 case 76: /* position ::= expr LEFT OF position */
2645 #line 630 "pikchr.y"
2646 {yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.x -= yymsp[-3].minor.yy147;}
2647 #line 2672 "pikchr.c"
2648 yymsp[-3].minor.yy211 = yylhsminor.yy211;
2649 break;
2650 case 77: /* position ::= expr RIGHT OF position */
2651 #line 631 "pikchr.y"
2652 {yylhsminor.yy211=yymsp[0].minor.yy211; yylhsminor.yy211.x += yymsp[-3].minor.yy147;}
2653 #line 2678 "pikchr.c"
2654 yymsp[-3].minor.yy211 = yylhsminor.yy211;
2655 break;
2656 case 78: /* position ::= expr EDGEPT OF position */
2657 #line 633 "pikchr.y"
2658 {yylhsminor.yy211 = pik_position_at_hdg(p,yymsp[-3].minor.yy147,&yymsp[-2].minor.yy0,yymsp[0].minor.yy211);}
2659 #line 2684 "pikchr.c"
2660 yymsp[-3].minor.yy211 = yylhsminor.yy211;
2661 break;
2662 case 79: /* position ::= expr HEADING expr FROM position */
2663 #line 635 "pikchr.y"
2664 {yylhsminor.yy211 = pik_position_at_angle(p,yymsp[-4].minor.yy147,yymsp[-2].minor.yy147,yymsp[0].minor.yy211);}
2665 #line 2690 "pikchr.c"
2666 yymsp[-4].minor.yy211 = yylhsminor.yy211;
2667 break;
2668 case 80: /* place ::= object */
2669 #line 641 "pikchr.y"
2670 {yylhsminor.yy211 = pik_place_of_elem(p,yymsp[0].minor.yy174,0);}
2671 #line 2696 "pikchr.c"
2672 yymsp[0].minor.yy211 = yylhsminor.yy211;
2673 break;
2674 case 81: /* place ::= object DOT_E edge */
2675 case 82: /* place ::= object DOT_L START */ yytestcase(yyruleno==82);
2676 case 83: /* place ::= object DOT_L END */ yytestcase(yyruleno==83);
2677 #line 642 "pikchr.y"
2678 {yylhsminor.yy211 = pik_place_of_elem(p,yymsp[-2].minor.yy174,&yymsp[0].minor.yy0);}
2679 #line 2704 "pikchr.c"
2680 yymsp[-2].minor.yy211 = yylhsminor.yy211;
2681 break;
2682 case 84: /* place ::= START OF object */
2683 case 85: /* place ::= END OF object */ yytestcase(yyruleno==85);
2684 case 86: /* place ::= edge OF object */ yytestcase(yyruleno==86);
2685 #line 645 "pikchr.y"
2686 {yylhsminor.yy211 = pik_place_of_elem(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0);}
2687 #line 2712 "pikchr.c"
2688 yymsp[-2].minor.yy211 = yylhsminor.yy211;
2689 break;
2690 case 87: /* place ::= NTH VERTEX OF object */
2691 #line 648 "pikchr.y"
2692 {yylhsminor.yy211 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy174);}
2693 #line 2718 "pikchr.c"
2694 yymsp[-3].minor.yy211 = yylhsminor.yy211;
2695 break;
2696 case 88: /* object ::= nth */
2697 #line 651 "pikchr.y"
2698 {yylhsminor.yy174 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2699 #line 2724 "pikchr.c"
2700 yymsp[0].minor.yy174 = yylhsminor.yy174;
2701 break;
2702 case 89: /* object ::= nth OF|IN object */
2703 #line 652 "pikchr.y"
2704 {yylhsminor.yy174 = pik_find_nth(p,yymsp[0].minor.yy174,&yymsp[-2].minor.yy0);}
2705 #line 2730 "pikchr.c"
2706 yymsp[-2].minor.yy174 = yylhsminor.yy174;
2707 break;
2708 case 90: /* objectname ::= PLACENAME */
2709 #line 654 "pikchr.y"
2710 {yylhsminor.yy174 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2711 #line 2736 "pikchr.c"
2712 yymsp[0].minor.yy174 = yylhsminor.yy174;
2713 break;
2714 case 91: /* objectname ::= objectname DOT_U PLACENAME */
2715 #line 656 "pikchr.y"
2716 {yylhsminor.yy174 = pik_find_byname(p,yymsp[-2].minor.yy174,&yymsp[0].minor.yy0);}
2717 #line 2742 "pikchr.c"
2718 yymsp[-2].minor.yy174 = yylhsminor.yy174;
2719 break;
2720 case 92: /* nth ::= NTH CLASSNAME */
2721 #line 658 "pikchr.y"
2722 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2723 #line 2748 "pikchr.c"
2724 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2725 break;
2726 case 93: /* nth ::= NTH LAST CLASSNAME */
2727 #line 659 "pikchr.y"
2728 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2729 #line 2754 "pikchr.c"
2730 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2731 break;
2732 case 94: /* nth ::= LAST CLASSNAME */
2733 #line 660 "pikchr.y"
2734 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2735 #line 2760 "pikchr.c"
2736 break;
2737 case 95: /* nth ::= LAST */
2738 #line 661 "pikchr.y"
2739 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2740 #line 2765 "pikchr.c"
2741 yymsp[0].minor.yy0 = yylhsminor.yy0;
2742 break;
2743 case 96: /* nth ::= NTH LB RB */
2744 #line 662 "pikchr.y"
2745 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2746 #line 2771 "pikchr.c"
2747 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2748 break;
2749 case 97: /* nth ::= NTH LAST LB RB */
2750 #line 663 "pikchr.y"
2751 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2752 #line 2777 "pikchr.c"
2753 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2754 break;
2755 case 98: /* nth ::= LAST LB RB */
2756 #line 664 "pikchr.y"
2757 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2758 #line 2783 "pikchr.c"
2759 break;
2760 case 99: /* expr ::= expr PLUS expr */
2761 #line 666 "pikchr.y"
2762 {yylhsminor.yy147=yymsp[-2].minor.yy147+yymsp[0].minor.yy147;}
2763 #line 2788 "pikchr.c"
2764 yymsp[-2].minor.yy147 = yylhsminor.yy147;
2765 break;
2766 case 100: /* expr ::= expr MINUS expr */
2767 #line 667 "pikchr.y"
2768 {yylhsminor.yy147=yymsp[-2].minor.yy147-yymsp[0].minor.yy147;}
2769 #line 2794 "pikchr.c"
2770 yymsp[-2].minor.yy147 = yylhsminor.yy147;
2771 break;
2772 case 101: /* expr ::= expr STAR expr */
2773 #line 668 "pikchr.y"
2774 {yylhsminor.yy147=yymsp[-2].minor.yy147*yymsp[0].minor.yy147;}
2775 #line 2800 "pikchr.c"
2776 yymsp[-2].minor.yy147 = yylhsminor.yy147;
2777 break;
2778 case 102: /* expr ::= expr SLASH expr */
2779 #line 669 "pikchr.y"
2780 {
2781 if( yymsp[0].minor.yy147==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy147 = 0.0; }
2782 else{ yylhsminor.yy147 = yymsp[-2].minor.yy147/yymsp[0].minor.yy147; }
2783 }
2784 #line 2809 "pikchr.c"
2785 yymsp[-2].minor.yy147 = yylhsminor.yy147;
2786 break;
2787 case 103: /* expr ::= MINUS expr */
2788 #line 673 "pikchr.y"
2789 {yymsp[-1].minor.yy147=-yymsp[0].minor.yy147;}
2790 #line 2815 "pikchr.c"
2791 break;
2792 case 104: /* expr ::= PLUS expr */
2793 #line 674 "pikchr.y"
2794 {yymsp[-1].minor.yy147=yymsp[0].minor.yy147;}
2795 #line 2820 "pikchr.c"
2796 break;
2797 case 105: /* expr ::= LP expr RP */
 
 
 
 
 
 
 
 
 
 
 
2798 #line 675 "pikchr.y"
2799 {yymsp[-2].minor.yy147=yymsp[-1].minor.yy147;}
2800 #line 2825 "pikchr.c"
 
2801 break;
2802 case 106: /* expr ::= NUMBER */
2803 #line 676 "pikchr.y"
2804 {yylhsminor.yy147=pik_atof(p,&yymsp[0].minor.yy0);}
2805 #line 2830 "pikchr.c"
2806 yymsp[0].minor.yy147 = yylhsminor.yy147;
2807 break;
2808 case 107: /* expr ::= ID */
2809 #line 677 "pikchr.y"
2810 {yylhsminor.yy147=pik_get_var(p,&yymsp[0].minor.yy0);}
2811 #line 2836 "pikchr.c"
2812 yymsp[0].minor.yy147 = yylhsminor.yy147;
2813 break;
2814 case 108: /* expr ::= FUNC1 LP expr RP */
2815 #line 678 "pikchr.y"
2816 {yylhsminor.yy147 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy147,0.0);}
2817 #line 2842 "pikchr.c"
2818 yymsp[-3].minor.yy147 = yylhsminor.yy147;
2819 break;
2820 case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
 
 
 
2821 #line 679 "pikchr.y"
2822 {yylhsminor.yy147 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy147,yymsp[-1].minor.yy147);}
2823 #line 2848 "pikchr.c"
2824 yymsp[-5].minor.yy147 = yylhsminor.yy147;
2825 break;
2826 case 110: /* expr ::= object DOT_L locproperty */
2827 case 111: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==111);
2828 case 112: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==112);
2829 case 113: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==113);
2830 #line 681 "pikchr.y"
2831 {yylhsminor.yy147=pik_property_of(p,yymsp[-2].minor.yy174,&yymsp[0].minor.yy0);}
2832 #line 2857 "pikchr.c"
2833 yymsp[-2].minor.yy147 = yylhsminor.yy147;
2834 break;
2835 case 114: /* expr ::= object DOT_E edge DOT_L X */
 
 
 
 
 
 
2836 #line 685 "pikchr.y"
2837 {yylhsminor.yy147=pik_place_of_elem(p,yymsp[-4].minor.yy174,&yymsp[-2].minor.yy0).x;}
2838 #line 2863 "pikchr.c"
2839 yymsp[-4].minor.yy147 = yylhsminor.yy147;
2840 break;
2841 case 115: /* expr ::= object DOT_E edge DOT_L Y */
2842 #line 686 "pikchr.y"
2843 {yylhsminor.yy147=pik_place_of_elem(p,yymsp[-4].minor.yy174,&yymsp[-2].minor.yy0).y;}
2844 #line 2869 "pikchr.c"
2845 yymsp[-4].minor.yy147 = yylhsminor.yy147;
2846 break;
2847 case 116: /* expr ::= LP locproperty OF object RP */
2848 case 117: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==117);
2849 case 118: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==118);
2850 case 119: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==119);
2851 #line 687 "pikchr.y"
2852 {yymsp[-4].minor.yy147=pik_property_of(p,yymsp[-1].minor.yy174,&yymsp[-3].minor.yy0);}
2853 #line 2878 "pikchr.c"
2854 break;
2855 case 120: /* expr ::= NTH VERTEX OF object DOT_L X */
2856 #line 693 "pikchr.y"
2857 {yylhsminor.yy147 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy174).x;}
2858 #line 2883 "pikchr.c"
2859 yymsp[-5].minor.yy147 = yylhsminor.yy147;
2860 break;
2861 case 121: /* expr ::= NTH VERTEX OF object DOT_L Y */
2862 #line 695 "pikchr.y"
2863 {yylhsminor.yy147 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy174).y;}
2864 #line 2889 "pikchr.c"
2865 yymsp[-5].minor.yy147 = yylhsminor.yy147;
2866 break;
2867 default:
2868 /* (122) lvalue ::= ID */ yytestcase(yyruleno==122);
2869 /* (123) lvalue ::= FILL */ yytestcase(yyruleno==123);
2870 /* (124) lvalue ::= COLOR */ yytestcase(yyruleno==124);
2871 /* (125) lvalue ::= THICKNESS */ yytestcase(yyruleno==125);
2872 /* (126) rvalue ::= expr */ yytestcase(yyruleno==126);
2873 /* (127) print ::= PRINT */ yytestcase(yyruleno==127);
2874 /* (128) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=128);
2875 /* (129) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==129);
2876 /* (130) direction ::= UP */ yytestcase(yyruleno==130);
2877 /* (131) direction ::= DOWN */ yytestcase(yyruleno==131);
2878 /* (132) direction ::= LEFT */ yytestcase(yyruleno==132);
2879 /* (133) direction ::= RIGHT */ yytestcase(yyruleno==133);
2880 /* (134) attribute_list ::= alist */ yytestcase(yyruleno==134);
2881 /* (135) alist ::= */ yytestcase(yyruleno==135);
2882 /* (136) alist ::= alist attribute */ yytestcase(yyruleno==136);
2883 /* (137) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=137);
2884 /* (138) attribute ::= WITH withclause */ yytestcase(yyruleno==138);
2885 /* (139) go ::= GO */ yytestcase(yyruleno==139);
2886 /* (140) go ::= */ yytestcase(yyruleno==140);
2887 /* (141) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==141);
2888 /* (142) even ::= EVEN WITH */ yytestcase(yyruleno==142);
 
 
2889 /* (143) dashproperty ::= DOTTED */ yytestcase(yyruleno==143);
2890 /* (144) dashproperty ::= DASHED */ yytestcase(yyruleno==144);
2891 /* (145) colorproperty ::= FILL */ yytestcase(yyruleno==145);
2892 /* (146) colorproperty ::= COLOR */ yytestcase(yyruleno==146);
2893 /* (147) position ::= place */ yytestcase(yyruleno==147);
@@ -2935,18 +2958,18 @@
2958 ){
2959 pik_parserARG_FETCH
2960 pik_parserCTX_FETCH
2961 #define TOKEN yyminor
2962 /************ Begin %syntax_error code ****************************************/
2963 #line 469 "pikchr.y"
2964
2965 if( TOKEN.z && TOKEN.z[0] ){
2966 pik_error(p, &TOKEN, "syntax error");
2967 }else{
2968 pik_error(p, 0, "syntax error");
2969 }
2970 #line 2995 "pikchr.c"
2971 /************ End %syntax_error code ******************************************/
2972 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
2973 pik_parserCTX_STORE
2974 }
2975
@@ -3175,11 +3198,11 @@
3198 #else
3199 (void)iToken;
3200 return 0;
3201 #endif
3202 }
3203 #line 705 "pikchr.y"
3204
3205
3206
3207 /* Chart of the 140 official HTML color names with their
3208 ** corresponding RGB value.
@@ -3593,11 +3616,11 @@
3616 }
3617 static PPoint circleChop(PElem *pElem, PPoint *pPt){
3618 PPoint chop;
3619 PNum dx = pPt->x - pElem->ptAt.x;
3620 PNum dy = pPt->y - pElem->ptAt.y;
3621 PNum dist = hypot(dx,dy);
3622 if( dist<pElem->rad ) return pElem->ptAt;
3623 chop.x = pElem->ptAt.x + dx*pElem->rad/dist;
3624 chop.y = pElem->ptAt.y + dy*pElem->rad/dist;
3625 return chop;
3626 }
@@ -3604,11 +3627,11 @@
3627 static void circleFit(Pik *p, PElem *pElem, PNum w, PNum h){
3628 PNum mx = 0.0;
3629 if( w>0 ) mx = w;
3630 if( h>mx ) mx = h;
3631 if( (w*w + h*h) > mx*mx ){
3632 mx = hypot(w,h);
3633 }
3634 if( mx>0.0 ){
3635 pElem->rad = 0.5*mx;
3636 pElem->w = pElem->h = mx;
3637 }
@@ -3713,11 +3736,11 @@
3736 PNum dy = pPt->y - pElem->ptAt.y;
3737 if( pElem->w<=0.0 ) return pElem->ptAt;
3738 if( pElem->h<=0.0 ) return pElem->ptAt;
3739 s = pElem->h/pElem->w;
3740 dq = dx*s;
3741 dist = hypot(dq,dy);
3742 if( dist<pElem->h ) return pElem->ptAt;
3743 chop.x = pElem->ptAt.x + 0.5*dq*pElem->h/(dist*s);
3744 chop.y = pElem->ptAt.y + 0.5*dy*pElem->h/dist;
3745 return chop;
3746 }
@@ -3895,11 +3918,11 @@
3918 ** return the midpoint.
3919 */
3920 static PPoint radiusMidpoint(PPoint f, PPoint t, PNum r, int *pbMid){
3921 PNum dx = t.x - f.x;
3922 PNum dy = t.y - f.y;
3923 PNum dist = hypot(dx,dy);
3924 PPoint m;
3925 if( dist<=0.0 ) return t;
3926 dx /= dist;
3927 dy /= dist;
3928 if( r > 0.5*dist ){
@@ -4144,11 +4167,11 @@
4167 ** modifying the location of *t.
4168 */
4169 static void pik_chop(Pik *p, PPoint *f, PPoint *t, PNum amt){
4170 PNum dx = t->x - f->x;
4171 PNum dy = t->y - f->y;
4172 PNum dist = hypot(dx,dy);
4173 PNum r;
4174 if( dist<=amt ){
4175 *t = *f;
4176 return;
4177 }
@@ -4163,11 +4186,11 @@
4186 ** the shaft of the arrow does not extend into the arrowhead.
4187 */
4188 static void pik_draw_arrowhead(Pik *p, PPoint *f, PPoint *t, PElem *pElem){
4189 PNum dx = t->x - f->x;
4190 PNum dy = t->y - f->y;
4191 PNum dist = hypot(dx,dy);
4192 PNum h = p->hArrow * pElem->sw;
4193 PNum w = p->wArrow * pElem->sw;
4194 PNum e1, ddx, ddy;
4195 PNum bx, by;
4196 if( pElem->color<0.0 ) return;
@@ -4225,13 +4248,14 @@
4248 }
4249
4250 /*
4251 ** Append text to zOut with HTML characters escaped.
4252 **
4253 ** * The space character is changed into non-breaking space (U+0080)
4254 ** if mFlags has the 0x01 bit set. This is needed when outputting
4255 ** text to preserve leading and trailing whitespace. Turns out we
4256 ** cannot use &nbsp; as that is an HTML-ism and is not valid in XML.
4257 **
4258 ** * The "&" character is changed into "&amp;" if mFlags as the
4259 ** 0x02 bit set. This is needed when generating error message text.
4260 **
4261 ** * Except for the above, only "<" and ">" are escaped.
@@ -4253,11 +4277,11 @@
4277 if( i==n ) break;
4278 switch( c ){
4279 case '<': { pik_append(p, "&lt;", 4); break; }
4280 case '>': { pik_append(p, "&gt;", 4); break; }
4281 case '&': { pik_append(p, "&amp;", 5); break; }
4282 case ' ': { pik_append(p, "\302\240;", 2); break; }
4283 }
4284 i++;
4285 n -= i;
4286 zText += i;
4287 i = 0;
@@ -5306,10 +5330,20 @@
5330 return;
5331 }
5332 pElem->bClose = 1;
5333 }
5334
5335 /* Lower the layer of the current element so that it is behind the
5336 ** given element.
5337 */
5338 static void pik_behind(Pik *p, PElem *pOther){
5339 PElem *pElem = p->cur;
5340 if( pElem->iLayer>=pOther->iLayer ){
5341 pElem->iLayer = pOther->iLayer - 1;
5342 }
5343 }
5344
5345
5346 /* Set the "at" of an element
5347 */
5348 static void pik_set_at(Pik *p, PToken *pEdge, PPoint *pAt, PToken *pErrTok){
5349 PElem *pElem;
@@ -5384,10 +5418,11 @@
5418 static int pik_text_length(const PToken *pToken){
5419 int n = pToken->n;
5420 const char *z = pToken->z;
5421 int cnt, j;
5422 for(j=1, cnt=0; j<n-1; j++){
5423 if( (z[j] & 0xc0)==0xc0 ) continue;
5424 cnt++;
5425 if( z[j]=='\\' && z[j+1]!='&' ){
5426 j++;
5427 }else if( z[j]=='&' ){
5428 int k;
@@ -6245,10 +6280,11 @@
6280 { "abs", 3, T_FUNC1, FN_ABS, 0 },
6281 { "aligned", 7, T_ALIGNED, 0, 0 },
6282 { "and", 3, T_AND, 0, 0 },
6283 { "as", 2, T_AS, 0, 0 },
6284 { "at", 2, T_AT, 0, 0 },
6285 { "behind", 6, T_BEHIND, 0, 0 },
6286 { "below", 5, T_BELOW, 0, 0 },
6287 { "between", 7, T_BETWEEN, 0, 0 },
6288 { "big", 3, T_BIG, 0, 0 },
6289 { "bold", 4, T_BOLD, 0, 0 },
6290 { "bot", 3, T_EDGEPT, 0, CP_S },
@@ -6451,10 +6487,11 @@
6487 case ')': { pToken->eType = T_RP; return 1; }
6488 case '[': { pToken->eType = T_LB; return 1; }
6489 case ']': { pToken->eType = T_RB; return 1; }
6490 case ',': { pToken->eType = T_COMMA; return 1; }
6491 case ':': { pToken->eType = T_COLON; return 1; }
6492 case '>': { pToken->eType = T_GT; return 1; }
6493 case '=': { pToken->eType = T_ASSIGN;
6494 pToken->eCode = T_ASSIGN; return 1; }
6495 case '-': {
6496 if( z[1]=='>' ){
6497 pToken->eType = T_RARROW;
@@ -6476,12 +6513,12 @@
6513 }else{
6514 pToken->eType = T_LARROW;
6515 return 2;
6516 }
6517 }else{
6518 pToken->eType = T_LT;
6519 return 1;
6520 }
6521 }
6522 default: {
6523 c = z[0];
6524 if( c=='.' ){
@@ -6798,6 +6835,6 @@
6835 printf("</body></html>\n");
6836 return 0;
6837 }
6838 #endif /* PIKCHR_SHELL */
6839
6840 #line 6865 "pikchr.c"
6841

Keyboard Shortcuts

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