Fossil SCM

New version of pikchr.c that support "thick" and "thin" attributes (which is just a convenience for "thickness 125%" and "thickness 66%" and new text attributes "big" and "small" (which is a new capability). All can be uttered twice for enhanced effect.

drh 2020-09-11 19:45 trunk
Commit 75d4517515e7538bec05366813107ad1353a10bcc51ffe181224be76ae25867b
1 file changed +1162 -1119
+1162 -1119
--- src/pikchr.c
+++ src/pikchr.c
@@ -179,10 +179,14 @@
179179
#define TP_ABOVE 0x0008 /* Position text above PElem.ptAt */
180180
#define TP_CENTER 0x0010 /* On the line */
181181
#define TP_BELOW 0x0020 /* Position text below PElem.ptAt */
182182
#define TP_BELOW2 0x0040 /* Position text way below PElem.ptAt */
183183
#define TP_VMASK 0x007c /* Mask for text positioning flags */
184
+#define TP_BIG 0x0100 /* Larger font */
185
+#define TP_SMALL 0x0200 /* Smaller font */
186
+#define TP_XTRA 0x0400 /* Amplify TP_BIG or TP_SMALL */
187
+#define TP_SZMASK 0x0700 /* Font size mask */
184188
#define TP_ITALIC 0x1000 /* Italic font */
185189
#define TP_BOLD 0x2000 /* Bold font */
186190
#define TP_FMASK 0x3000 /* Mask for font style */
187191
#define TP_ALIGN 0x4000 /* Rotate to align with the line */
188192
@@ -418,11 +422,11 @@
418422
static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
419423
static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
420424
static void pik_compute_layout_settings(Pik*);
421425
422426
423
-#line 449 "pikchr.c"
427
+#line 453 "pikchr.c"
424428
/**************** End of %include directives **********************************/
425429
/* These constants specify the various numeric values for terminal symbols.
426430
***************** Begin token definitions *************************************/
427431
#ifndef T_ID
428432
#define T_ID 1
@@ -475,39 +479,43 @@
475479
#define T_CCW 48
476480
#define T_LARROW 49
477481
#define T_RARROW 50
478482
#define T_LRARROW 51
479483
#define T_INVIS 52
480
-#define T_CENTER 53
481
-#define T_LJUST 54
482
-#define T_RJUST 55
483
-#define T_ABOVE 56
484
-#define T_BELOW 57
485
-#define T_ITALIC 58
486
-#define T_BOLD 59
487
-#define T_ALIGNED 60
488
-#define T_LP 61
489
-#define T_RP 62
490
-#define T_HEADING 63
491
-#define T_WAY 64
492
-#define T_BETWEEN 65
493
-#define T_THE 66
494
-#define T_DOT_L 67
495
-#define T_START 68
496
-#define T_END 69
497
-#define T_NTH 70
498
-#define T_VERTEX 71
499
-#define T_IN 72
500
-#define T_DOT_U 73
501
-#define T_LAST 74
502
-#define T_NUMBER 75
503
-#define T_FUNC1 76
504
-#define T_FUNC2 77
505
-#define T_X 78
506
-#define T_Y 79
507
-#define T_TOP 80
508
-#define T_BOTTOM 81
484
+#define T_THICK 53
485
+#define T_THIN 54
486
+#define T_CENTER 55
487
+#define T_LJUST 56
488
+#define T_RJUST 57
489
+#define T_ABOVE 58
490
+#define T_BELOW 59
491
+#define T_ITALIC 60
492
+#define T_BOLD 61
493
+#define T_ALIGNED 62
494
+#define T_BIG 63
495
+#define T_SMALL 64
496
+#define T_LP 65
497
+#define T_RP 66
498
+#define T_HEADING 67
499
+#define T_WAY 68
500
+#define T_BETWEEN 69
501
+#define T_THE 70
502
+#define T_DOT_L 71
503
+#define T_START 72
504
+#define T_END 73
505
+#define T_NTH 74
506
+#define T_VERTEX 75
507
+#define T_IN 76
508
+#define T_DOT_U 77
509
+#define T_LAST 78
510
+#define T_NUMBER 79
511
+#define T_FUNC1 80
512
+#define T_FUNC2 81
513
+#define T_X 82
514
+#define T_Y 83
515
+#define T_TOP 84
516
+#define T_BOTTOM 85
509517
#endif
510518
/**************** End token definitions ***************************************/
511519
512520
/* The next sections is a series of control #defines.
513521
** various aspects of the generated parser.
@@ -563,21 +571,21 @@
563571
#ifndef INTERFACE
564572
# define INTERFACE 1
565573
#endif
566574
/************* Begin control #defines *****************************************/
567575
#define YYCODETYPE unsigned char
568
-#define YYNOCODE 115
576
+#define YYNOCODE 119
569577
#define YYACTIONTYPE unsigned short int
570578
#define pik_parserTOKENTYPE PToken
571579
typedef union {
572580
int yyinit;
573581
pik_parserTOKENTYPE yy0;
574
- PElem* yy24;
575
- PEList* yy42;
576
- PPoint yy49;
577
- int yy52;
578
- PNum yy83;
582
+ PElem* yy26;
583
+ int yy60;
584
+ PEList* yy120;
585
+ PPoint yy131;
586
+ PNum yy191;
579587
} YYMINORTYPE;
580588
#ifndef YYSTACKDEPTH
581589
#define YYSTACKDEPTH 100
582590
#endif
583591
#define pik_parserARG_SDECL
@@ -590,21 +598,21 @@
590598
#define pik_parserCTX_PARAM ,p
591599
#define pik_parserCTX_FETCH Pik *p=yypParser->p;
592600
#define pik_parserCTX_STORE yypParser->p=p;
593601
#define YYFALLBACK 1
594602
#define YYNSTATE 153
595
-#define YYNRULE 146
596
-#define YYNRULE_WITH_ACTION 110
597
-#define YYNTOKEN 82
603
+#define YYNRULE 148
604
+#define YYNRULE_WITH_ACTION 112
605
+#define YYNTOKEN 86
598606
#define YY_MAX_SHIFT 152
599
-#define YY_MIN_SHIFTREDUCE 268
600
-#define YY_MAX_SHIFTREDUCE 413
601
-#define YY_ERROR_ACTION 414
602
-#define YY_ACCEPT_ACTION 415
603
-#define YY_NO_ACTION 416
604
-#define YY_MIN_REDUCE 417
605
-#define YY_MAX_REDUCE 562
607
+#define YY_MIN_SHIFTREDUCE 270
608
+#define YY_MAX_SHIFTREDUCE 417
609
+#define YY_ERROR_ACTION 418
610
+#define YY_ACCEPT_ACTION 419
611
+#define YY_NO_ACTION 420
612
+#define YY_MIN_REDUCE 421
613
+#define YY_MAX_REDUCE 568
606614
/************* End control #defines *******************************************/
607615
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
608616
609617
/* Define the yytestcase() macro to be a no-op if is not already defined
610618
** otherwise.
@@ -667,248 +675,247 @@
667675
** yy_reduce_ofst[] For each state, the offset into yy_action for
668676
** shifting non-terminals after a reduce.
669677
** yy_default[] Default action for each state.
670678
**
671679
*********** Begin parsing tables **********************************************/
672
-#define YY_ACTTAB_COUNT (866)
680
+#define YY_ACTTAB_COUNT (859)
673681
static const YYACTIONTYPE yy_action[] = {
674682
/* 0 */ 64, 137, 129, 19, 139, 135, 141, 99, 101, 100,
675
- /* 10 */ 151, 109, 38, 35, 401, 402, 313, 516, 72, 113,
676
- /* 20 */ 517, 518, 515, 386, 387, 388, 389, 301, 302, 10,
677
- /* 30 */ 9, 305, 8, 51, 111, 41, 310, 27, 40, 28,
678
- /* 40 */ 132, 313, 313, 313, 313, 399, 400, 314, 315, 316,
679
- /* 50 */ 317, 318, 319, 363, 409, 142, 45, 46, 541, 541,
680
- /* 60 */ 284, 423, 26, 65, 346, 129, 401, 402, 313, 12,
681
- /* 70 */ 424, 101, 100, 151, 109, 48, 47, 412, 413, 401,
682
- /* 80 */ 402, 313, 321, 321, 321, 321, 321, 321, 321, 321,
683
- /* 90 */ 112, 112, 24, 313, 313, 313, 313, 399, 400, 22,
684
- /* 100 */ 124, 122, 50, 49, 48, 47, 313, 313, 313, 313,
685
- /* 110 */ 399, 400, 328, 1, 114, 114, 547, 39, 73, 67,
686
- /* 120 */ 131, 130, 89, 126, 125, 74, 107, 362, 144, 143,
687
- /* 130 */ 408, 408, 410, 411, 363, 370, 371, 45, 46, 52,
688
- /* 140 */ 346, 82, 6, 408, 408, 346, 30, 401, 402, 313,
689
- /* 150 */ 103, 151, 109, 7, 18, 17, 20, 457, 151, 109,
690
- /* 160 */ 361, 32, 123, 405, 63, 124, 122, 50, 49, 48,
691
- /* 170 */ 47, 396, 409, 395, 313, 313, 313, 313, 399, 400,
692
- /* 180 */ 363, 409, 39, 45, 46, 127, 151, 109, 126, 125,
693
- /* 190 */ 116, 346, 376, 377, 5, 412, 413, 71, 97, 286,
694
- /* 200 */ 70, 11, 107, 94, 412, 413, 25, 107, 362, 144,
695
- /* 210 */ 143, 408, 408, 363, 409, 327, 45, 46, 288, 18,
696
- /* 220 */ 17, 350, 147, 406, 346, 495, 32, 123, 405, 50,
697
- /* 230 */ 49, 48, 47, 297, 65, 121, 129, 412, 413, 120,
698
- /* 240 */ 1, 461, 101, 100, 151, 109, 62, 131, 130, 89,
699
- /* 250 */ 410, 411, 495, 107, 362, 144, 143, 95, 495, 410,
700
- /* 260 */ 411, 363, 348, 148, 45, 46, 103, 151, 109, 417,
701
- /* 270 */ 445, 404, 96, 1, 279, 280, 281, 68, 283, 25,
702
- /* 280 */ 131, 130, 89, 378, 349, 149, 107, 362, 144, 143,
703
- /* 290 */ 14, 15, 410, 411, 133, 16, 379, 380, 381, 383,
704
- /* 300 */ 71, 106, 286, 70, 31, 386, 387, 388, 389, 53,
705
- /* 310 */ 54, 401, 402, 313, 363, 62, 108, 45, 46, 55,
706
- /* 320 */ 56, 5, 491, 151, 109, 346, 50, 49, 48, 47,
707
- /* 330 */ 94, 2, 102, 375, 107, 362, 144, 143, 313, 313,
708
- /* 340 */ 313, 313, 399, 400, 363, 374, 373, 45, 46, 58,
709
- /* 350 */ 117, 115, 490, 151, 109, 346, 50, 49, 48, 47,
710
- /* 360 */ 292, 110, 418, 425, 26, 338, 339, 363, 421, 43,
711
- /* 370 */ 45, 46, 57, 372, 5, 408, 408, 60, 96, 152,
712
- /* 380 */ 59, 415, 21, 94, 326, 44, 61, 107, 362, 144,
713
- /* 390 */ 143, 363, 354, 352, 45, 46, 50, 49, 48, 47,
714
- /* 400 */ 291, 353, 346, 347, 5, 75, 137, 150, 29, 139,
715
- /* 410 */ 135, 141, 416, 94, 103, 151, 109, 107, 362, 144,
716
- /* 420 */ 143, 363, 416, 416, 45, 46, 416, 5, 77, 416,
717
- /* 430 */ 416, 416, 346, 416, 416, 78, 94, 103, 151, 109,
718
- /* 440 */ 107, 362, 144, 143, 103, 151, 109, 416, 76, 137,
719
- /* 450 */ 416, 3, 139, 135, 141, 416, 416, 103, 151, 109,
720
- /* 460 */ 94, 416, 416, 416, 107, 362, 144, 143, 88, 137,
721
- /* 470 */ 416, 416, 139, 135, 141, 95, 416, 103, 151, 109,
722
- /* 480 */ 416, 4, 416, 416, 103, 151, 109, 416, 422, 416,
723
- /* 490 */ 94, 65, 416, 129, 107, 362, 144, 143, 460, 101,
724
- /* 500 */ 100, 151, 109, 65, 416, 129, 50, 49, 48, 47,
725
- /* 510 */ 455, 101, 100, 151, 109, 409, 489, 151, 109, 65,
726
- /* 520 */ 416, 129, 416, 90, 416, 416, 453, 101, 100, 151,
727
- /* 530 */ 109, 13, 103, 151, 109, 65, 416, 129, 412, 413,
728
- /* 540 */ 416, 84, 452, 101, 100, 151, 109, 65, 416, 129,
729
- /* 550 */ 103, 151, 109, 66, 478, 101, 100, 151, 109, 65,
730
- /* 560 */ 416, 129, 434, 416, 23, 416, 119, 101, 100, 151,
731
- /* 570 */ 109, 416, 50, 49, 48, 47, 416, 65, 416, 129,
732
- /* 580 */ 50, 49, 48, 47, 484, 101, 100, 151, 109, 65,
733
- /* 590 */ 416, 129, 416, 410, 411, 37, 483, 101, 100, 151,
734
- /* 600 */ 109, 65, 416, 129, 134, 151, 109, 416, 482, 101,
735
- /* 610 */ 100, 151, 109, 65, 416, 129, 348, 148, 348, 148,
736
- /* 620 */ 481, 101, 100, 151, 109, 50, 49, 48, 47, 65,
737
- /* 630 */ 325, 129, 50, 49, 48, 47, 480, 101, 100, 151,
738
- /* 640 */ 109, 65, 416, 129, 50, 49, 48, 47, 479, 101,
739
- /* 650 */ 100, 151, 109, 65, 416, 129, 416, 416, 416, 33,
740
- /* 660 */ 118, 101, 100, 151, 109, 416, 65, 128, 129, 146,
741
- /* 670 */ 108, 95, 108, 449, 101, 100, 151, 109, 416, 416,
742
- /* 680 */ 103, 151, 109, 365, 431, 416, 95, 416, 416, 69,
743
- /* 690 */ 69, 98, 418, 425, 26, 103, 151, 109, 421, 431,
744
- /* 700 */ 416, 416, 361, 416, 416, 534, 136, 151, 109, 152,
745
- /* 710 */ 416, 416, 21, 419, 425, 26, 416, 416, 416, 421,
746
- /* 720 */ 50, 49, 48, 47, 50, 49, 48, 47, 416, 416,
747
- /* 730 */ 152, 416, 416, 21, 416, 36, 138, 151, 109, 34,
748
- /* 740 */ 50, 49, 48, 47, 50, 49, 48, 47, 50, 49,
749
- /* 750 */ 48, 47, 416, 79, 416, 42, 416, 416, 80, 416,
750
- /* 760 */ 416, 91, 103, 151, 109, 416, 416, 103, 151, 109,
751
- /* 770 */ 103, 151, 109, 81, 416, 416, 92, 416, 361, 93,
752
- /* 780 */ 416, 416, 103, 151, 109, 103, 151, 109, 103, 151,
753
- /* 790 */ 109, 140, 151, 109, 145, 151, 109, 416, 416, 83,
754
- /* 800 */ 416, 416, 364, 494, 151, 109, 361, 85, 103, 151,
755
- /* 810 */ 109, 86, 416, 416, 87, 416, 103, 151, 109, 416,
756
- /* 820 */ 103, 151, 109, 103, 151, 109, 416, 509, 416, 416,
757
- /* 830 */ 416, 508, 416, 416, 507, 416, 103, 151, 109, 416,
758
- /* 840 */ 103, 151, 109, 103, 151, 109, 416, 416, 506, 416,
759
- /* 850 */ 416, 104, 416, 416, 105, 416, 416, 103, 151, 109,
760
- /* 860 */ 103, 151, 109, 103, 151, 109,
683
+ /* 10 */ 151, 109, 38, 35, 405, 406, 315, 522, 72, 113,
684
+ /* 20 */ 523, 524, 521, 390, 391, 392, 393, 303, 304, 10,
685
+ /* 30 */ 9, 307, 8, 51, 111, 132, 312, 50, 49, 48,
686
+ /* 40 */ 47, 315, 315, 315, 315, 403, 404, 316, 317, 318,
687
+ /* 50 */ 319, 320, 321, 322, 323, 367, 413, 142, 45, 46,
688
+ /* 60 */ 352, 148, 405, 406, 315, 25, 350, 62, 405, 406,
689
+ /* 70 */ 315, 286, 427, 26, 65, 12, 129, 290, 112, 416,
690
+ /* 80 */ 417, 428, 101, 100, 151, 109, 413, 24, 112, 315,
691
+ /* 90 */ 315, 315, 315, 403, 404, 315, 315, 315, 315, 403,
692
+ /* 100 */ 404, 367, 114, 114, 45, 46, 461, 151, 109, 416,
693
+ /* 110 */ 417, 22, 350, 553, 405, 406, 315, 73, 108, 1,
694
+ /* 120 */ 342, 343, 332, 74, 66, 67, 131, 130, 89, 52,
695
+ /* 130 */ 412, 412, 107, 366, 144, 143, 412, 412, 414, 415,
696
+ /* 140 */ 62, 315, 315, 315, 315, 403, 404, 367, 413, 6,
697
+ /* 150 */ 45, 46, 50, 49, 48, 47, 30, 7, 350, 50,
698
+ /* 160 */ 49, 48, 47, 68, 71, 5, 288, 70, 414, 415,
699
+ /* 170 */ 63, 416, 417, 400, 94, 374, 375, 13, 107, 366,
700
+ /* 180 */ 144, 143, 412, 412, 367, 413, 421, 45, 46, 41,
701
+ /* 190 */ 399, 27, 40, 28, 31, 350, 25, 325, 325, 325,
702
+ /* 200 */ 325, 325, 325, 325, 325, 325, 325, 116, 416, 417,
703
+ /* 210 */ 11, 1, 547, 547, 50, 49, 48, 47, 131, 130,
704
+ /* 220 */ 89, 330, 48, 47, 107, 366, 144, 143, 77, 33,
705
+ /* 230 */ 414, 415, 367, 354, 147, 45, 46, 103, 151, 109,
706
+ /* 240 */ 331, 95, 410, 96, 120, 281, 282, 283, 1, 285,
707
+ /* 250 */ 103, 151, 109, 408, 435, 131, 130, 89, 121, 69,
708
+ /* 260 */ 69, 107, 366, 144, 143, 14, 382, 414, 415, 15,
709
+ /* 270 */ 124, 122, 50, 49, 48, 47, 365, 133, 16, 383,
710
+ /* 280 */ 384, 385, 387, 71, 53, 288, 70, 39, 390, 391,
711
+ /* 290 */ 392, 393, 106, 126, 125, 54, 5, 124, 122, 50,
712
+ /* 300 */ 49, 48, 47, 350, 367, 94, 102, 45, 46, 107,
713
+ /* 310 */ 366, 144, 143, 2, 39, 350, 50, 49, 48, 47,
714
+ /* 320 */ 126, 125, 380, 381, 353, 149, 18, 17, 55, 405,
715
+ /* 330 */ 406, 315, 56, 379, 365, 32, 123, 409, 95, 367,
716
+ /* 340 */ 117, 115, 45, 46, 378, 377, 57, 103, 151, 109,
717
+ /* 350 */ 350, 449, 58, 18, 17, 59, 315, 315, 315, 315,
718
+ /* 360 */ 403, 404, 32, 123, 409, 97, 60, 376, 5, 107,
719
+ /* 370 */ 43, 501, 110, 422, 429, 26, 44, 94, 329, 425,
720
+ /* 380 */ 61, 107, 366, 144, 143, 367, 358, 356, 45, 46,
721
+ /* 390 */ 152, 357, 419, 21, 150, 351, 96, 412, 412, 29,
722
+ /* 400 */ 75, 137, 501, 5, 139, 135, 141, 420, 501, 103,
723
+ /* 410 */ 151, 109, 94, 352, 148, 420, 107, 366, 144, 143,
724
+ /* 420 */ 367, 420, 420, 45, 46, 420, 420, 98, 422, 429,
725
+ /* 430 */ 26, 350, 76, 137, 425, 420, 139, 135, 141, 420,
726
+ /* 440 */ 420, 103, 151, 109, 420, 152, 420, 420, 21, 5,
727
+ /* 450 */ 88, 137, 420, 420, 139, 135, 141, 420, 94, 103,
728
+ /* 460 */ 151, 109, 107, 366, 144, 143, 367, 420, 128, 45,
729
+ /* 470 */ 46, 108, 65, 420, 129, 420, 95, 350, 420, 465,
730
+ /* 480 */ 101, 100, 151, 109, 3, 103, 151, 109, 420, 435,
731
+ /* 490 */ 127, 151, 109, 94, 65, 540, 129, 107, 366, 144,
732
+ /* 500 */ 143, 464, 101, 100, 151, 109, 420, 65, 420, 129,
733
+ /* 510 */ 82, 497, 151, 109, 459, 101, 100, 151, 109, 103,
734
+ /* 520 */ 151, 109, 420, 420, 65, 20, 129, 78, 420, 420,
735
+ /* 530 */ 4, 457, 101, 100, 151, 109, 103, 151, 109, 94,
736
+ /* 540 */ 65, 420, 129, 107, 366, 144, 143, 456, 101, 100,
737
+ /* 550 */ 151, 109, 65, 420, 129, 496, 151, 109, 420, 484,
738
+ /* 560 */ 101, 100, 151, 109, 420, 65, 420, 129, 420, 420,
739
+ /* 570 */ 95, 420, 119, 101, 100, 151, 109, 420, 84, 103,
740
+ /* 580 */ 151, 109, 420, 426, 65, 420, 129, 103, 151, 109,
741
+ /* 590 */ 420, 490, 101, 100, 151, 109, 65, 420, 129, 438,
742
+ /* 600 */ 420, 23, 420, 489, 101, 100, 151, 109, 65, 420,
743
+ /* 610 */ 129, 50, 49, 48, 47, 488, 101, 100, 151, 109,
744
+ /* 620 */ 420, 65, 420, 129, 420, 420, 36, 420, 487, 101,
745
+ /* 630 */ 100, 151, 109, 65, 420, 129, 420, 420, 413, 420,
746
+ /* 640 */ 486, 101, 100, 151, 109, 65, 420, 129, 50, 49,
747
+ /* 650 */ 48, 47, 485, 101, 100, 151, 109, 420, 65, 420,
748
+ /* 660 */ 129, 416, 417, 34, 420, 118, 101, 100, 151, 109,
749
+ /* 670 */ 495, 151, 109, 365, 420, 65, 420, 129, 50, 49,
750
+ /* 680 */ 48, 47, 453, 101, 100, 151, 109, 50, 49, 48,
751
+ /* 690 */ 47, 423, 429, 26, 134, 151, 109, 425, 50, 49,
752
+ /* 700 */ 48, 47, 37, 50, 49, 48, 47, 420, 152, 420,
753
+ /* 710 */ 420, 21, 420, 50, 49, 48, 47, 299, 420, 420,
754
+ /* 720 */ 414, 415, 50, 49, 48, 47, 294, 50, 49, 48,
755
+ /* 730 */ 47, 293, 50, 49, 48, 47, 420, 352, 148, 90,
756
+ /* 740 */ 369, 420, 79, 420, 420, 80, 420, 42, 103, 151,
757
+ /* 750 */ 109, 103, 151, 109, 103, 151, 109, 91, 420, 420,
758
+ /* 760 */ 368, 136, 151, 109, 420, 365, 103, 151, 109, 81,
759
+ /* 770 */ 420, 420, 92, 420, 420, 93, 420, 420, 103, 151,
760
+ /* 780 */ 109, 103, 151, 109, 103, 151, 109, 420, 83, 420,
761
+ /* 790 */ 420, 85, 146, 420, 86, 108, 420, 103, 151, 109,
762
+ /* 800 */ 103, 151, 109, 103, 151, 109, 87, 420, 420, 420,
763
+ /* 810 */ 420, 515, 420, 420, 514, 103, 151, 109, 420, 513,
764
+ /* 820 */ 103, 151, 109, 103, 151, 109, 512, 420, 103, 151,
765
+ /* 830 */ 109, 104, 138, 151, 109, 103, 151, 109, 105, 420,
766
+ /* 840 */ 103, 151, 109, 420, 420, 420, 420, 103, 151, 109,
767
+ /* 850 */ 140, 151, 109, 145, 151, 109, 500, 151, 109,
761768
};
762769
static const YYCODETYPE yy_lookahead[] = {
763
- /* 0 */ 86, 87, 88, 114, 90, 91, 92, 93, 94, 95,
764
- /* 10 */ 96, 97, 4, 5, 14, 15, 16, 87, 18, 88,
765
- /* 20 */ 90, 91, 92, 23, 24, 25, 26, 27, 28, 29,
766
- /* 30 */ 30, 31, 32, 33, 34, 87, 36, 89, 90, 91,
767
- /* 40 */ 88, 41, 42, 43, 44, 45, 46, 47, 48, 49,
768
- /* 50 */ 50, 51, 52, 1, 2, 88, 4, 5, 110, 111,
769
- /* 60 */ 19, 84, 85, 86, 12, 88, 14, 15, 16, 19,
770
- /* 70 */ 93, 94, 95, 96, 97, 6, 7, 25, 26, 14,
771
- /* 80 */ 15, 16, 53, 54, 55, 56, 57, 58, 59, 60,
772
- /* 90 */ 88, 88, 106, 41, 42, 43, 44, 45, 46, 108,
773
- /* 100 */ 2, 3, 4, 5, 6, 7, 41, 42, 43, 44,
774
- /* 110 */ 45, 46, 62, 61, 112, 113, 113, 19, 98, 40,
775
- /* 120 */ 68, 69, 70, 25, 26, 98, 74, 75, 76, 77,
776
- /* 130 */ 78, 79, 80, 81, 1, 78, 79, 4, 5, 35,
777
- /* 140 */ 12, 86, 32, 78, 79, 12, 67, 14, 15, 16,
778
- /* 150 */ 95, 96, 97, 32, 56, 57, 101, 95, 96, 97,
779
- /* 160 */ 62, 63, 64, 65, 39, 2, 3, 4, 5, 6,
780
- /* 170 */ 7, 33, 2, 33, 41, 42, 43, 44, 45, 46,
781
- /* 180 */ 1, 2, 19, 4, 5, 95, 96, 97, 25, 26,
782
- /* 190 */ 38, 12, 78, 79, 61, 25, 26, 18, 70, 20,
783
- /* 200 */ 21, 39, 74, 70, 25, 26, 10, 74, 75, 76,
784
- /* 210 */ 77, 78, 79, 1, 2, 62, 4, 5, 22, 56,
785
- /* 220 */ 57, 20, 21, 65, 12, 40, 63, 64, 65, 4,
786
- /* 230 */ 5, 6, 7, 8, 86, 66, 88, 25, 26, 64,
787
- /* 240 */ 61, 93, 94, 95, 96, 97, 3, 68, 69, 70,
788
- /* 250 */ 80, 81, 67, 74, 75, 76, 77, 86, 73, 80,
789
- /* 260 */ 81, 1, 20, 21, 4, 5, 95, 96, 97, 0,
790
- /* 270 */ 99, 65, 12, 61, 14, 15, 16, 40, 18, 10,
791
- /* 280 */ 68, 69, 70, 1, 20, 21, 74, 75, 76, 77,
792
- /* 290 */ 3, 3, 80, 81, 12, 3, 14, 15, 16, 17,
793
- /* 300 */ 18, 67, 20, 21, 67, 23, 24, 25, 26, 3,
794
- /* 310 */ 3, 14, 15, 16, 1, 72, 74, 4, 5, 3,
795
- /* 320 */ 3, 61, 95, 96, 97, 12, 4, 5, 6, 7,
796
- /* 330 */ 70, 13, 67, 62, 74, 75, 76, 77, 41, 42,
797
- /* 340 */ 43, 44, 45, 46, 1, 62, 62, 4, 5, 3,
798
- /* 350 */ 37, 38, 95, 96, 97, 12, 4, 5, 6, 7,
799
- /* 360 */ 8, 82, 83, 84, 85, 68, 69, 1, 89, 61,
800
- /* 370 */ 4, 5, 3, 62, 61, 78, 79, 3, 12, 100,
801
- /* 380 */ 3, 102, 103, 70, 62, 61, 3, 74, 75, 76,
802
- /* 390 */ 77, 1, 22, 22, 4, 5, 4, 5, 6, 7,
803
- /* 400 */ 8, 22, 12, 12, 61, 86, 87, 73, 11, 90,
804
- /* 410 */ 91, 92, 115, 70, 95, 96, 97, 74, 75, 76,
805
- /* 420 */ 77, 1, 115, 115, 4, 5, 115, 61, 86, 115,
806
- /* 430 */ 115, 115, 12, 115, 115, 86, 70, 95, 96, 97,
807
- /* 440 */ 74, 75, 76, 77, 95, 96, 97, 115, 86, 87,
808
- /* 450 */ 115, 61, 90, 91, 92, 115, 115, 95, 96, 97,
809
- /* 460 */ 70, 115, 115, 115, 74, 75, 76, 77, 86, 87,
810
- /* 470 */ 115, 115, 90, 91, 92, 86, 115, 95, 96, 97,
811
- /* 480 */ 115, 61, 115, 115, 95, 96, 97, 115, 99, 115,
812
- /* 490 */ 70, 86, 115, 88, 74, 75, 76, 77, 93, 94,
813
- /* 500 */ 95, 96, 97, 86, 115, 88, 4, 5, 6, 7,
814
- /* 510 */ 93, 94, 95, 96, 97, 2, 95, 96, 97, 86,
815
- /* 520 */ 115, 88, 115, 86, 115, 115, 93, 94, 95, 96,
816
- /* 530 */ 97, 29, 95, 96, 97, 86, 115, 88, 25, 26,
817
- /* 540 */ 115, 86, 93, 94, 95, 96, 97, 86, 115, 88,
818
- /* 550 */ 95, 96, 97, 40, 93, 94, 95, 96, 97, 86,
819
- /* 560 */ 115, 88, 107, 115, 109, 115, 93, 94, 95, 96,
820
- /* 570 */ 97, 115, 4, 5, 6, 7, 115, 86, 115, 88,
821
- /* 580 */ 4, 5, 6, 7, 93, 94, 95, 96, 97, 86,
822
- /* 590 */ 115, 88, 115, 80, 81, 19, 93, 94, 95, 96,
823
- /* 600 */ 97, 86, 115, 88, 95, 96, 97, 115, 93, 94,
824
- /* 610 */ 95, 96, 97, 86, 115, 88, 20, 21, 20, 21,
825
- /* 620 */ 93, 94, 95, 96, 97, 4, 5, 6, 7, 86,
826
- /* 630 */ 62, 88, 4, 5, 6, 7, 93, 94, 95, 96,
827
- /* 640 */ 97, 86, 115, 88, 4, 5, 6, 7, 93, 94,
828
- /* 650 */ 95, 96, 97, 86, 115, 88, 115, 115, 115, 19,
829
- /* 660 */ 93, 94, 95, 96, 97, 115, 86, 71, 88, 71,
830
- /* 670 */ 74, 86, 74, 93, 94, 95, 96, 97, 115, 115,
831
- /* 680 */ 95, 96, 97, 62, 99, 115, 86, 115, 115, 104,
832
- /* 690 */ 105, 82, 83, 84, 85, 95, 96, 97, 89, 99,
833
- /* 700 */ 115, 115, 62, 115, 115, 105, 95, 96, 97, 100,
834
- /* 710 */ 115, 115, 103, 83, 84, 85, 115, 115, 115, 89,
835
- /* 720 */ 4, 5, 6, 7, 4, 5, 6, 7, 115, 115,
836
- /* 730 */ 100, 115, 115, 103, 115, 19, 95, 96, 97, 19,
837
- /* 740 */ 4, 5, 6, 7, 4, 5, 6, 7, 4, 5,
838
- /* 750 */ 6, 7, 115, 86, 115, 19, 115, 115, 86, 115,
839
- /* 760 */ 115, 86, 95, 96, 97, 115, 115, 95, 96, 97,
840
- /* 770 */ 95, 96, 97, 86, 115, 115, 86, 115, 62, 86,
841
- /* 780 */ 115, 115, 95, 96, 97, 95, 96, 97, 95, 96,
842
- /* 790 */ 97, 95, 96, 97, 95, 96, 97, 115, 115, 86,
843
- /* 800 */ 115, 115, 62, 95, 96, 97, 62, 86, 95, 96,
844
- /* 810 */ 97, 86, 115, 115, 86, 115, 95, 96, 97, 115,
845
- /* 820 */ 95, 96, 97, 95, 96, 97, 115, 86, 115, 115,
846
- /* 830 */ 115, 86, 115, 115, 86, 115, 95, 96, 97, 115,
847
- /* 840 */ 95, 96, 97, 95, 96, 97, 115, 115, 86, 115,
848
- /* 850 */ 115, 86, 115, 115, 86, 115, 115, 95, 96, 97,
849
- /* 860 */ 95, 96, 97, 95, 96, 97, 82, 82, 82, 82,
850
- /* 870 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
851
- /* 880 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
852
- /* 890 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
853
- /* 900 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
854
- /* 910 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
855
- /* 920 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
856
- /* 930 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
857
- /* 940 */ 82, 82, 82, 82, 82, 82, 82, 82,
770
+ /* 0 */ 90, 91, 92, 118, 94, 95, 96, 97, 98, 99,
771
+ /* 10 */ 100, 101, 4, 5, 14, 15, 16, 91, 18, 92,
772
+ /* 20 */ 94, 95, 96, 23, 24, 25, 26, 27, 28, 29,
773
+ /* 30 */ 30, 31, 32, 33, 34, 92, 36, 4, 5, 6,
774
+ /* 40 */ 7, 41, 42, 43, 44, 45, 46, 47, 48, 49,
775
+ /* 50 */ 50, 51, 52, 53, 54, 1, 2, 92, 4, 5,
776
+ /* 60 */ 20, 21, 14, 15, 16, 10, 12, 3, 14, 15,
777
+ /* 70 */ 16, 19, 88, 89, 90, 19, 92, 22, 92, 25,
778
+ /* 80 */ 26, 97, 98, 99, 100, 101, 2, 110, 92, 41,
779
+ /* 90 */ 42, 43, 44, 45, 46, 41, 42, 43, 44, 45,
780
+ /* 100 */ 46, 1, 116, 117, 4, 5, 99, 100, 101, 25,
781
+ /* 110 */ 26, 112, 12, 117, 14, 15, 16, 102, 78, 65,
782
+ /* 120 */ 72, 73, 66, 102, 40, 40, 72, 73, 74, 35,
783
+ /* 130 */ 82, 83, 78, 79, 80, 81, 82, 83, 84, 85,
784
+ /* 140 */ 76, 41, 42, 43, 44, 45, 46, 1, 2, 32,
785
+ /* 150 */ 4, 5, 4, 5, 6, 7, 71, 32, 12, 4,
786
+ /* 160 */ 5, 6, 7, 40, 18, 65, 20, 21, 84, 85,
787
+ /* 170 */ 39, 25, 26, 33, 74, 82, 83, 29, 78, 79,
788
+ /* 180 */ 80, 81, 82, 83, 1, 2, 0, 4, 5, 91,
789
+ /* 190 */ 33, 93, 94, 95, 71, 12, 10, 55, 56, 57,
790
+ /* 200 */ 58, 59, 60, 61, 62, 63, 64, 38, 25, 26,
791
+ /* 210 */ 39, 65, 114, 115, 4, 5, 6, 7, 72, 73,
792
+ /* 220 */ 74, 66, 6, 7, 78, 79, 80, 81, 90, 19,
793
+ /* 230 */ 84, 85, 1, 20, 21, 4, 5, 99, 100, 101,
794
+ /* 240 */ 66, 90, 69, 12, 68, 14, 15, 16, 65, 18,
795
+ /* 250 */ 99, 100, 101, 69, 103, 72, 73, 74, 70, 108,
796
+ /* 260 */ 109, 78, 79, 80, 81, 3, 1, 84, 85, 3,
797
+ /* 270 */ 2, 3, 4, 5, 6, 7, 66, 12, 3, 14,
798
+ /* 280 */ 15, 16, 17, 18, 3, 20, 21, 19, 23, 24,
799
+ /* 290 */ 25, 26, 71, 25, 26, 3, 65, 2, 3, 4,
800
+ /* 300 */ 5, 6, 7, 12, 1, 74, 71, 4, 5, 78,
801
+ /* 310 */ 79, 80, 81, 13, 19, 12, 4, 5, 6, 7,
802
+ /* 320 */ 25, 26, 82, 83, 20, 21, 58, 59, 3, 14,
803
+ /* 330 */ 15, 16, 3, 66, 66, 67, 68, 69, 90, 1,
804
+ /* 340 */ 37, 38, 4, 5, 66, 66, 3, 99, 100, 101,
805
+ /* 350 */ 12, 103, 3, 58, 59, 3, 41, 42, 43, 44,
806
+ /* 360 */ 45, 46, 67, 68, 69, 74, 3, 66, 65, 78,
807
+ /* 370 */ 65, 40, 86, 87, 88, 89, 65, 74, 66, 93,
808
+ /* 380 */ 3, 78, 79, 80, 81, 1, 22, 22, 4, 5,
809
+ /* 390 */ 104, 22, 106, 107, 77, 12, 12, 82, 83, 11,
810
+ /* 400 */ 90, 91, 71, 65, 94, 95, 96, 119, 77, 99,
811
+ /* 410 */ 100, 101, 74, 20, 21, 119, 78, 79, 80, 81,
812
+ /* 420 */ 1, 119, 119, 4, 5, 119, 119, 86, 87, 88,
813
+ /* 430 */ 89, 12, 90, 91, 93, 119, 94, 95, 96, 119,
814
+ /* 440 */ 119, 99, 100, 101, 119, 104, 119, 119, 107, 65,
815
+ /* 450 */ 90, 91, 119, 119, 94, 95, 96, 119, 74, 99,
816
+ /* 460 */ 100, 101, 78, 79, 80, 81, 1, 119, 75, 4,
817
+ /* 470 */ 5, 78, 90, 119, 92, 119, 90, 12, 119, 97,
818
+ /* 480 */ 98, 99, 100, 101, 65, 99, 100, 101, 119, 103,
819
+ /* 490 */ 99, 100, 101, 74, 90, 109, 92, 78, 79, 80,
820
+ /* 500 */ 81, 97, 98, 99, 100, 101, 119, 90, 119, 92,
821
+ /* 510 */ 90, 99, 100, 101, 97, 98, 99, 100, 101, 99,
822
+ /* 520 */ 100, 101, 119, 119, 90, 105, 92, 90, 119, 119,
823
+ /* 530 */ 65, 97, 98, 99, 100, 101, 99, 100, 101, 74,
824
+ /* 540 */ 90, 119, 92, 78, 79, 80, 81, 97, 98, 99,
825
+ /* 550 */ 100, 101, 90, 119, 92, 99, 100, 101, 119, 97,
826
+ /* 560 */ 98, 99, 100, 101, 119, 90, 119, 92, 119, 119,
827
+ /* 570 */ 90, 119, 97, 98, 99, 100, 101, 119, 90, 99,
828
+ /* 580 */ 100, 101, 119, 103, 90, 119, 92, 99, 100, 101,
829
+ /* 590 */ 119, 97, 98, 99, 100, 101, 90, 119, 92, 111,
830
+ /* 600 */ 119, 113, 119, 97, 98, 99, 100, 101, 90, 119,
831
+ /* 610 */ 92, 4, 5, 6, 7, 97, 98, 99, 100, 101,
832
+ /* 620 */ 119, 90, 119, 92, 119, 119, 19, 119, 97, 98,
833
+ /* 630 */ 99, 100, 101, 90, 119, 92, 119, 119, 2, 119,
834
+ /* 640 */ 97, 98, 99, 100, 101, 90, 119, 92, 4, 5,
835
+ /* 650 */ 6, 7, 97, 98, 99, 100, 101, 119, 90, 119,
836
+ /* 660 */ 92, 25, 26, 19, 119, 97, 98, 99, 100, 101,
837
+ /* 670 */ 99, 100, 101, 66, 119, 90, 119, 92, 4, 5,
838
+ /* 680 */ 6, 7, 97, 98, 99, 100, 101, 4, 5, 6,
839
+ /* 690 */ 7, 87, 88, 89, 99, 100, 101, 93, 4, 5,
840
+ /* 700 */ 6, 7, 19, 4, 5, 6, 7, 119, 104, 119,
841
+ /* 710 */ 119, 107, 119, 4, 5, 6, 7, 8, 119, 119,
842
+ /* 720 */ 84, 85, 4, 5, 6, 7, 8, 4, 5, 6,
843
+ /* 730 */ 7, 8, 4, 5, 6, 7, 119, 20, 21, 90,
844
+ /* 740 */ 66, 119, 90, 119, 119, 90, 119, 19, 99, 100,
845
+ /* 750 */ 101, 99, 100, 101, 99, 100, 101, 90, 119, 119,
846
+ /* 760 */ 66, 99, 100, 101, 119, 66, 99, 100, 101, 90,
847
+ /* 770 */ 119, 119, 90, 119, 119, 90, 119, 119, 99, 100,
848
+ /* 780 */ 101, 99, 100, 101, 99, 100, 101, 119, 90, 119,
849
+ /* 790 */ 119, 90, 75, 119, 90, 78, 119, 99, 100, 101,
850
+ /* 800 */ 99, 100, 101, 99, 100, 101, 90, 119, 119, 119,
851
+ /* 810 */ 119, 90, 119, 119, 90, 99, 100, 101, 119, 90,
852
+ /* 820 */ 99, 100, 101, 99, 100, 101, 90, 119, 99, 100,
853
+ /* 830 */ 101, 90, 99, 100, 101, 99, 100, 101, 90, 119,
854
+ /* 840 */ 99, 100, 101, 119, 119, 119, 119, 99, 100, 101,
855
+ /* 850 */ 99, 100, 101, 99, 100, 101, 99, 100, 101, 86,
856
+ /* 860 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
857
+ /* 870 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
858
+ /* 880 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
859
+ /* 890 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
860
+ /* 900 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
861
+ /* 910 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
862
+ /* 920 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
863
+ /* 930 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
864
+ /* 940 */ 86, 86, 86, 86, 86,
858865
};
859866
#define YY_SHIFT_COUNT (152)
860867
#define YY_SHIFT_MIN (0)
861
-#define YY_SHIFT_MAX (744)
868
+#define YY_SHIFT_MAX (728)
862869
static const unsigned short int yy_shift_ofst[] = {
863
- /* 0 */ 282, 52, 179, 133, 133, 133, 212, 212, 212, 212,
864
- /* 10 */ 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
865
- /* 20 */ 212, 260, 282, 0, 260, 282, 343, 313, 366, 366,
866
- /* 30 */ 297, 65, 343, 343, 343, 390, 343, 343, 420, 343,
867
- /* 40 */ 343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
868
- /* 50 */ 343, 513, 128, 128, 128, 128, 128, 128, 128, 128,
869
- /* 60 */ 128, 128, 128, 513, 98, 163, 170, 170, 170, 41,
870
- /* 70 */ 866, 866, 866, 29, 29, 640, 716, 502, 322, 720,
871
- /* 80 */ 568, 576, 225, 352, 392, 621, 736, 740, 744, 596,
872
- /* 90 */ 628, 628, 628, 628, 598, 628, 185, 242, 196, 50,
873
- /* 100 */ 79, 8, 57, 237, 69, 69, 114, 201, 264, 243,
874
- /* 110 */ 269, 104, 110, 121, 125, 138, 140, 152, 162, 153,
875
- /* 120 */ 158, 175, 169, 206, 287, 288, 292, 234, 306, 307,
876
- /* 130 */ 316, 317, 265, 318, 271, 369, 283, 346, 284, 377,
877
- /* 140 */ 311, 374, 265, 308, 324, 234, 383, 370, 371, 379,
878
- /* 150 */ 391, 334, 397,
870
+ /* 0 */ 265, 54, 146, 100, 100, 100, 183, 183, 183, 183,
871
+ /* 10 */ 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
872
+ /* 20 */ 183, 231, 265, 0, 231, 265, 338, 303, 384, 384,
873
+ /* 30 */ 48, 315, 338, 338, 338, 419, 338, 338, 465, 338,
874
+ /* 40 */ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
875
+ /* 50 */ 338, 84, 291, 291, 291, 291, 291, 291, 291, 291,
876
+ /* 60 */ 291, 291, 291, 84, 268, 295, 636, 636, 636, 52,
877
+ /* 70 */ 859, 859, 859, 142, 142, 210, 607, 148, 155, 644,
878
+ /* 80 */ 312, 683, 709, 718, 723, 674, 728, 694, 699, 393,
879
+ /* 90 */ 33, 33, 33, 33, 717, 33, 331, 40, 55, 56,
880
+ /* 100 */ 85, 8, 93, 123, 216, 216, 240, 213, 304, 64,
881
+ /* 110 */ 186, 94, 117, 125, 131, 140, 157, 169, 171, 174,
882
+ /* 120 */ 173, 176, 188, 184, 262, 266, 275, 221, 281, 292,
883
+ /* 130 */ 325, 329, 235, 300, 267, 343, 278, 349, 279, 352,
884
+ /* 140 */ 301, 363, 235, 305, 311, 221, 377, 364, 365, 369,
885
+ /* 150 */ 383, 317, 388,
879886
};
880887
#define YY_REDUCE_COUNT (72)
881
-#define YY_REDUCE_MIN (-111)
882
-#define YY_REDUCE_MAX (768)
888
+#define YY_REDUCE_MIN (-115)
889
+#define YY_REDUCE_MAX (757)
883890
static const short yy_reduce_ofst[] = {
884
- /* 0 */ 279, -86, -23, 319, 362, 382, 148, 405, 417, 433,
885
- /* 10 */ 449, 461, 473, 491, 503, 515, 527, 543, 555, 567,
886
- /* 20 */ 580, 585, 609, -52, 600, 630, 455, 55, 171, 389,
887
- /* 30 */ -70, -70, 342, 349, 437, 667, 672, 675, 687, 690,
888
- /* 40 */ 693, 713, 721, 725, 728, 741, 745, 748, 762, 765,
889
- /* 50 */ 768, 2, 62, 90, 227, 257, 421, 509, 611, 641,
890
- /* 60 */ 696, 699, 708, 3, -111, -111, -69, -48, -33, -14,
891
- /* 70 */ -9, 20, 27,
891
+ /* 0 */ 286, -90, -16, 310, 342, 360, 382, 404, 417, 434,
892
+ /* 10 */ 450, 462, 475, 494, 506, 518, 531, 543, 555, 568,
893
+ /* 20 */ 585, 151, 341, 98, 386, 604, 488, 420, 248, 480,
894
+ /* 30 */ -74, -74, 138, 437, 649, 652, 655, 667, 679, 682,
895
+ /* 40 */ 685, 698, 701, 704, 716, 721, 724, 729, 736, 741,
896
+ /* 50 */ 748, -14, 7, 391, 412, 456, 571, 595, 662, 733,
897
+ /* 60 */ 751, 754, 757, -4, -115, -115, -73, -57, -35, -23,
898
+ /* 70 */ -1, 15, 21,
892899
};
893900
static const YYACTIONTYPE yy_default[] = {
894
- /* 0 */ 420, 414, 414, 414, 414, 414, 414, 414, 414, 414,
895
- /* 10 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
896
- /* 20 */ 414, 414, 420, 539, 414, 420, 540, 448, 414, 414,
897
- /* 30 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
898
- /* 40 */ 444, 414, 414, 414, 414, 414, 414, 414, 414, 414,
899
- /* 50 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
900
- /* 60 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 426,
901
- /* 70 */ 438, 469, 469, 436, 458, 414, 414, 414, 414, 414,
902
- /* 80 */ 414, 414, 447, 442, 439, 414, 414, 414, 414, 414,
903
- /* 90 */ 473, 472, 471, 443, 414, 531, 427, 414, 414, 414,
904
- /* 100 */ 485, 552, 414, 414, 505, 504, 414, 500, 414, 493,
905
- /* 110 */ 414, 456, 414, 414, 543, 414, 414, 414, 414, 414,
906
- /* 120 */ 414, 414, 414, 414, 414, 414, 414, 492, 414, 414,
907
- /* 130 */ 414, 414, 486, 414, 414, 414, 414, 414, 414, 414,
908
- /* 140 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
909
- /* 150 */ 414, 556, 414,
901
+ /* 0 */ 424, 418, 418, 418, 418, 418, 418, 418, 418, 418,
902
+ /* 10 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
903
+ /* 20 */ 418, 418, 424, 545, 418, 424, 546, 452, 418, 418,
904
+ /* 30 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
905
+ /* 40 */ 448, 418, 418, 418, 418, 418, 418, 418, 418, 418,
906
+ /* 50 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
907
+ /* 60 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 430,
908
+ /* 70 */ 442, 475, 475, 440, 462, 418, 418, 418, 418, 418,
909
+ /* 80 */ 418, 418, 451, 446, 443, 418, 418, 418, 418, 418,
910
+ /* 90 */ 479, 478, 477, 447, 418, 537, 431, 418, 418, 418,
911
+ /* 100 */ 491, 558, 418, 418, 511, 510, 418, 506, 418, 499,
912
+ /* 110 */ 418, 460, 418, 418, 549, 418, 418, 418, 418, 418,
913
+ /* 120 */ 418, 418, 418, 418, 418, 418, 418, 498, 418, 418,
914
+ /* 130 */ 418, 418, 492, 418, 418, 418, 418, 418, 418, 418,
915
+ /* 140 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
916
+ /* 150 */ 418, 562, 418,
910917
};
911918
/********** End of lemon-generated parsing tables *****************************/
912919
913920
/* The next table maps tokens (terminal symbols) into fallback tokens.
914921
** If a construct like the following:
@@ -977,18 +984,22 @@
977984
0, /* CCW => nothing */
978985
0, /* LARROW => nothing */
979986
0, /* RARROW => nothing */
980987
0, /* LRARROW => nothing */
981988
0, /* INVIS => nothing */
989
+ 0, /* THICK => nothing */
990
+ 0, /* THIN => nothing */
982991
0, /* CENTER => nothing */
983992
0, /* LJUST => nothing */
984993
0, /* RJUST => nothing */
985994
0, /* ABOVE => nothing */
986995
0, /* BELOW => nothing */
987996
0, /* ITALIC => nothing */
988997
0, /* BOLD => nothing */
989998
0, /* ALIGNED => nothing */
999
+ 0, /* BIG => nothing */
1000
+ 0, /* SMALL => nothing */
9901001
0, /* LP => nothing */
9911002
0, /* RP => nothing */
9921003
0, /* HEADING => nothing */
9931004
0, /* WAY => nothing */
9941005
0, /* BETWEEN => nothing */
@@ -1147,72 +1158,76 @@
11471158
/* 48 */ "CCW",
11481159
/* 49 */ "LARROW",
11491160
/* 50 */ "RARROW",
11501161
/* 51 */ "LRARROW",
11511162
/* 52 */ "INVIS",
1152
- /* 53 */ "CENTER",
1153
- /* 54 */ "LJUST",
1154
- /* 55 */ "RJUST",
1155
- /* 56 */ "ABOVE",
1156
- /* 57 */ "BELOW",
1157
- /* 58 */ "ITALIC",
1158
- /* 59 */ "BOLD",
1159
- /* 60 */ "ALIGNED",
1160
- /* 61 */ "LP",
1161
- /* 62 */ "RP",
1162
- /* 63 */ "HEADING",
1163
- /* 64 */ "WAY",
1164
- /* 65 */ "BETWEEN",
1165
- /* 66 */ "THE",
1166
- /* 67 */ "DOT_L",
1167
- /* 68 */ "START",
1168
- /* 69 */ "END",
1169
- /* 70 */ "NTH",
1170
- /* 71 */ "VERTEX",
1171
- /* 72 */ "IN",
1172
- /* 73 */ "DOT_U",
1173
- /* 74 */ "LAST",
1174
- /* 75 */ "NUMBER",
1175
- /* 76 */ "FUNC1",
1176
- /* 77 */ "FUNC2",
1177
- /* 78 */ "X",
1178
- /* 79 */ "Y",
1179
- /* 80 */ "TOP",
1180
- /* 81 */ "BOTTOM",
1181
- /* 82 */ "element_list",
1182
- /* 83 */ "element",
1183
- /* 84 */ "unnamed_element",
1184
- /* 85 */ "basetype",
1185
- /* 86 */ "expr",
1186
- /* 87 */ "numproperty",
1187
- /* 88 */ "edge",
1188
- /* 89 */ "direction",
1189
- /* 90 */ "dashproperty",
1190
- /* 91 */ "colorproperty",
1191
- /* 92 */ "locproperty",
1192
- /* 93 */ "position",
1193
- /* 94 */ "place",
1194
- /* 95 */ "object",
1195
- /* 96 */ "objectname",
1196
- /* 97 */ "nth",
1197
- /* 98 */ "textposition",
1198
- /* 99 */ "rvalue",
1199
- /* 100 */ "lvalue",
1200
- /* 101 */ "even",
1201
- /* 102 */ "document",
1202
- /* 103 */ "print",
1203
- /* 104 */ "prlist",
1204
- /* 105 */ "pritem",
1205
- /* 106 */ "prsep",
1206
- /* 107 */ "attribute_list",
1207
- /* 108 */ "savelist",
1208
- /* 109 */ "alist",
1209
- /* 110 */ "attribute",
1210
- /* 111 */ "boolproperty",
1211
- /* 112 */ "withclause",
1212
- /* 113 */ "with",
1213
- /* 114 */ "between",
1163
+ /* 53 */ "THICK",
1164
+ /* 54 */ "THIN",
1165
+ /* 55 */ "CENTER",
1166
+ /* 56 */ "LJUST",
1167
+ /* 57 */ "RJUST",
1168
+ /* 58 */ "ABOVE",
1169
+ /* 59 */ "BELOW",
1170
+ /* 60 */ "ITALIC",
1171
+ /* 61 */ "BOLD",
1172
+ /* 62 */ "ALIGNED",
1173
+ /* 63 */ "BIG",
1174
+ /* 64 */ "SMALL",
1175
+ /* 65 */ "LP",
1176
+ /* 66 */ "RP",
1177
+ /* 67 */ "HEADING",
1178
+ /* 68 */ "WAY",
1179
+ /* 69 */ "BETWEEN",
1180
+ /* 70 */ "THE",
1181
+ /* 71 */ "DOT_L",
1182
+ /* 72 */ "START",
1183
+ /* 73 */ "END",
1184
+ /* 74 */ "NTH",
1185
+ /* 75 */ "VERTEX",
1186
+ /* 76 */ "IN",
1187
+ /* 77 */ "DOT_U",
1188
+ /* 78 */ "LAST",
1189
+ /* 79 */ "NUMBER",
1190
+ /* 80 */ "FUNC1",
1191
+ /* 81 */ "FUNC2",
1192
+ /* 82 */ "X",
1193
+ /* 83 */ "Y",
1194
+ /* 84 */ "TOP",
1195
+ /* 85 */ "BOTTOM",
1196
+ /* 86 */ "element_list",
1197
+ /* 87 */ "element",
1198
+ /* 88 */ "unnamed_element",
1199
+ /* 89 */ "basetype",
1200
+ /* 90 */ "expr",
1201
+ /* 91 */ "numproperty",
1202
+ /* 92 */ "edge",
1203
+ /* 93 */ "direction",
1204
+ /* 94 */ "dashproperty",
1205
+ /* 95 */ "colorproperty",
1206
+ /* 96 */ "locproperty",
1207
+ /* 97 */ "position",
1208
+ /* 98 */ "place",
1209
+ /* 99 */ "object",
1210
+ /* 100 */ "objectname",
1211
+ /* 101 */ "nth",
1212
+ /* 102 */ "textposition",
1213
+ /* 103 */ "rvalue",
1214
+ /* 104 */ "lvalue",
1215
+ /* 105 */ "even",
1216
+ /* 106 */ "document",
1217
+ /* 107 */ "print",
1218
+ /* 108 */ "prlist",
1219
+ /* 109 */ "pritem",
1220
+ /* 110 */ "prsep",
1221
+ /* 111 */ "attribute_list",
1222
+ /* 112 */ "savelist",
1223
+ /* 113 */ "alist",
1224
+ /* 114 */ "attribute",
1225
+ /* 115 */ "boolproperty",
1226
+ /* 116 */ "withclause",
1227
+ /* 117 */ "with",
1228
+ /* 118 */ "between",
12141229
};
12151230
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
12161231
12171232
#ifndef NDEBUG
12181233
/* For tracing reduce actions, the names of all rules are required.
@@ -1268,104 +1283,106 @@
12681283
/* 47 */ "boolproperty ::= CCW",
12691284
/* 48 */ "boolproperty ::= LARROW",
12701285
/* 49 */ "boolproperty ::= RARROW",
12711286
/* 50 */ "boolproperty ::= LRARROW",
12721287
/* 51 */ "boolproperty ::= INVIS",
1273
- /* 52 */ "textposition ::=",
1274
- /* 53 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED",
1275
- /* 54 */ "position ::= expr COMMA expr",
1276
- /* 55 */ "position ::= place PLUS expr COMMA expr",
1277
- /* 56 */ "position ::= place MINUS expr COMMA expr",
1278
- /* 57 */ "position ::= place PLUS LP expr COMMA expr RP",
1279
- /* 58 */ "position ::= place MINUS LP expr COMMA expr RP",
1280
- /* 59 */ "position ::= LP position COMMA position RP",
1281
- /* 60 */ "position ::= LP position RP",
1282
- /* 61 */ "position ::= expr between position AND position",
1283
- /* 62 */ "position ::= expr ABOVE position",
1284
- /* 63 */ "position ::= expr BELOW position",
1285
- /* 64 */ "position ::= expr LEFT OF position",
1286
- /* 65 */ "position ::= expr RIGHT OF position",
1287
- /* 66 */ "position ::= expr EDGEPT OF position",
1288
- /* 67 */ "position ::= expr HEADING expr FROM position",
1289
- /* 68 */ "place ::= object",
1290
- /* 69 */ "place ::= object DOT_E edge",
1291
- /* 70 */ "place ::= object DOT_L START",
1292
- /* 71 */ "place ::= object DOT_L END",
1293
- /* 72 */ "place ::= START OF object",
1294
- /* 73 */ "place ::= END OF object",
1295
- /* 74 */ "place ::= edge OF object",
1296
- /* 75 */ "place ::= NTH VERTEX OF object",
1297
- /* 76 */ "object ::= nth",
1298
- /* 77 */ "object ::= nth OF|IN object",
1299
- /* 78 */ "objectname ::= PLACENAME",
1300
- /* 79 */ "objectname ::= objectname DOT_U PLACENAME",
1301
- /* 80 */ "nth ::= NTH CLASSNAME",
1302
- /* 81 */ "nth ::= NTH LAST CLASSNAME",
1303
- /* 82 */ "nth ::= LAST CLASSNAME",
1304
- /* 83 */ "nth ::= LAST",
1305
- /* 84 */ "nth ::= NTH LB RB",
1306
- /* 85 */ "nth ::= NTH LAST LB RB",
1307
- /* 86 */ "nth ::= LAST LB RB",
1308
- /* 87 */ "expr ::= expr PLUS expr",
1309
- /* 88 */ "expr ::= expr MINUS expr",
1310
- /* 89 */ "expr ::= expr STAR expr",
1311
- /* 90 */ "expr ::= expr SLASH expr",
1312
- /* 91 */ "expr ::= MINUS expr",
1313
- /* 92 */ "expr ::= PLUS expr",
1314
- /* 93 */ "expr ::= LP expr RP",
1315
- /* 94 */ "expr ::= NUMBER",
1316
- /* 95 */ "expr ::= ID",
1317
- /* 96 */ "expr ::= FUNC1 LP expr RP",
1318
- /* 97 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1319
- /* 98 */ "expr ::= object DOT_L locproperty",
1320
- /* 99 */ "expr ::= object DOT_L numproperty",
1321
- /* 100 */ "expr ::= object DOT_L dashproperty",
1322
- /* 101 */ "expr ::= object DOT_L colorproperty",
1323
- /* 102 */ "expr ::= object DOT_E edge DOT_L X",
1324
- /* 103 */ "expr ::= object DOT_E edge DOT_L Y",
1325
- /* 104 */ "expr ::= LP locproperty OF object RP",
1326
- /* 105 */ "expr ::= LP dashproperty OF object RP",
1327
- /* 106 */ "expr ::= LP numproperty OF object RP",
1328
- /* 107 */ "expr ::= LP colorproperty OF object RP",
1329
- /* 108 */ "expr ::= NTH VERTEX OF object DOT_L X",
1330
- /* 109 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1331
- /* 110 */ "lvalue ::= ID",
1332
- /* 111 */ "lvalue ::= FILL",
1333
- /* 112 */ "lvalue ::= COLOR",
1334
- /* 113 */ "lvalue ::= THICKNESS",
1335
- /* 114 */ "rvalue ::= expr",
1336
- /* 115 */ "print ::= PRINT",
1337
- /* 116 */ "prlist ::= pritem",
1338
- /* 117 */ "prlist ::= prlist prsep pritem",
1339
- /* 118 */ "direction ::= UP",
1340
- /* 119 */ "direction ::= DOWN",
1341
- /* 120 */ "direction ::= LEFT",
1342
- /* 121 */ "direction ::= RIGHT",
1343
- /* 122 */ "attribute_list ::= alist",
1344
- /* 123 */ "alist ::=",
1345
- /* 124 */ "alist ::= alist attribute",
1346
- /* 125 */ "attribute ::= boolproperty",
1347
- /* 126 */ "attribute ::= WITH withclause",
1348
- /* 127 */ "even ::= UNTIL EVEN WITH",
1349
- /* 128 */ "even ::= EVEN WITH",
1350
- /* 129 */ "withclause ::= with",
1351
- /* 130 */ "withclause ::= withclause AND with",
1352
- /* 131 */ "dashproperty ::= DOTTED",
1353
- /* 132 */ "dashproperty ::= DASHED",
1354
- /* 133 */ "colorproperty ::= FILL",
1355
- /* 134 */ "colorproperty ::= COLOR",
1356
- /* 135 */ "position ::= place",
1357
- /* 136 */ "between ::= WAY BETWEEN",
1358
- /* 137 */ "between ::= BETWEEN",
1359
- /* 138 */ "between ::= OF THE WAY BETWEEN",
1360
- /* 139 */ "object ::= objectname",
1361
- /* 140 */ "locproperty ::= X|Y",
1362
- /* 141 */ "edge ::= EDGEPT",
1363
- /* 142 */ "edge ::= TOP",
1364
- /* 143 */ "edge ::= BOTTOM",
1365
- /* 144 */ "edge ::= LEFT",
1366
- /* 145 */ "edge ::= RIGHT",
1288
+ /* 52 */ "boolproperty ::= THICK",
1289
+ /* 53 */ "boolproperty ::= THIN",
1290
+ /* 54 */ "textposition ::=",
1291
+ /* 55 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1292
+ /* 56 */ "position ::= expr COMMA expr",
1293
+ /* 57 */ "position ::= place PLUS expr COMMA expr",
1294
+ /* 58 */ "position ::= place MINUS expr COMMA expr",
1295
+ /* 59 */ "position ::= place PLUS LP expr COMMA expr RP",
1296
+ /* 60 */ "position ::= place MINUS LP expr COMMA expr RP",
1297
+ /* 61 */ "position ::= LP position COMMA position RP",
1298
+ /* 62 */ "position ::= LP position RP",
1299
+ /* 63 */ "position ::= expr between position AND position",
1300
+ /* 64 */ "position ::= expr ABOVE position",
1301
+ /* 65 */ "position ::= expr BELOW position",
1302
+ /* 66 */ "position ::= expr LEFT OF position",
1303
+ /* 67 */ "position ::= expr RIGHT OF position",
1304
+ /* 68 */ "position ::= expr EDGEPT OF position",
1305
+ /* 69 */ "position ::= expr HEADING expr FROM position",
1306
+ /* 70 */ "place ::= object",
1307
+ /* 71 */ "place ::= object DOT_E edge",
1308
+ /* 72 */ "place ::= object DOT_L START",
1309
+ /* 73 */ "place ::= object DOT_L END",
1310
+ /* 74 */ "place ::= START OF object",
1311
+ /* 75 */ "place ::= END OF object",
1312
+ /* 76 */ "place ::= edge OF object",
1313
+ /* 77 */ "place ::= NTH VERTEX OF object",
1314
+ /* 78 */ "object ::= nth",
1315
+ /* 79 */ "object ::= nth OF|IN object",
1316
+ /* 80 */ "objectname ::= PLACENAME",
1317
+ /* 81 */ "objectname ::= objectname DOT_U PLACENAME",
1318
+ /* 82 */ "nth ::= NTH CLASSNAME",
1319
+ /* 83 */ "nth ::= NTH LAST CLASSNAME",
1320
+ /* 84 */ "nth ::= LAST CLASSNAME",
1321
+ /* 85 */ "nth ::= LAST",
1322
+ /* 86 */ "nth ::= NTH LB RB",
1323
+ /* 87 */ "nth ::= NTH LAST LB RB",
1324
+ /* 88 */ "nth ::= LAST LB RB",
1325
+ /* 89 */ "expr ::= expr PLUS expr",
1326
+ /* 90 */ "expr ::= expr MINUS expr",
1327
+ /* 91 */ "expr ::= expr STAR expr",
1328
+ /* 92 */ "expr ::= expr SLASH expr",
1329
+ /* 93 */ "expr ::= MINUS expr",
1330
+ /* 94 */ "expr ::= PLUS expr",
1331
+ /* 95 */ "expr ::= LP expr RP",
1332
+ /* 96 */ "expr ::= NUMBER",
1333
+ /* 97 */ "expr ::= ID",
1334
+ /* 98 */ "expr ::= FUNC1 LP expr RP",
1335
+ /* 99 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1336
+ /* 100 */ "expr ::= object DOT_L locproperty",
1337
+ /* 101 */ "expr ::= object DOT_L numproperty",
1338
+ /* 102 */ "expr ::= object DOT_L dashproperty",
1339
+ /* 103 */ "expr ::= object DOT_L colorproperty",
1340
+ /* 104 */ "expr ::= object DOT_E edge DOT_L X",
1341
+ /* 105 */ "expr ::= object DOT_E edge DOT_L Y",
1342
+ /* 106 */ "expr ::= LP locproperty OF object RP",
1343
+ /* 107 */ "expr ::= LP dashproperty OF object RP",
1344
+ /* 108 */ "expr ::= LP numproperty OF object RP",
1345
+ /* 109 */ "expr ::= LP colorproperty OF object RP",
1346
+ /* 110 */ "expr ::= NTH VERTEX OF object DOT_L X",
1347
+ /* 111 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1348
+ /* 112 */ "lvalue ::= ID",
1349
+ /* 113 */ "lvalue ::= FILL",
1350
+ /* 114 */ "lvalue ::= COLOR",
1351
+ /* 115 */ "lvalue ::= THICKNESS",
1352
+ /* 116 */ "rvalue ::= expr",
1353
+ /* 117 */ "print ::= PRINT",
1354
+ /* 118 */ "prlist ::= pritem",
1355
+ /* 119 */ "prlist ::= prlist prsep pritem",
1356
+ /* 120 */ "direction ::= UP",
1357
+ /* 121 */ "direction ::= DOWN",
1358
+ /* 122 */ "direction ::= LEFT",
1359
+ /* 123 */ "direction ::= RIGHT",
1360
+ /* 124 */ "attribute_list ::= alist",
1361
+ /* 125 */ "alist ::=",
1362
+ /* 126 */ "alist ::= alist attribute",
1363
+ /* 127 */ "attribute ::= boolproperty",
1364
+ /* 128 */ "attribute ::= WITH withclause",
1365
+ /* 129 */ "even ::= UNTIL EVEN WITH",
1366
+ /* 130 */ "even ::= EVEN WITH",
1367
+ /* 131 */ "withclause ::= with",
1368
+ /* 132 */ "withclause ::= withclause AND with",
1369
+ /* 133 */ "dashproperty ::= DOTTED",
1370
+ /* 134 */ "dashproperty ::= DASHED",
1371
+ /* 135 */ "colorproperty ::= FILL",
1372
+ /* 136 */ "colorproperty ::= COLOR",
1373
+ /* 137 */ "position ::= place",
1374
+ /* 138 */ "between ::= WAY BETWEEN",
1375
+ /* 139 */ "between ::= BETWEEN",
1376
+ /* 140 */ "between ::= OF THE WAY BETWEEN",
1377
+ /* 141 */ "object ::= objectname",
1378
+ /* 142 */ "locproperty ::= X|Y",
1379
+ /* 143 */ "edge ::= EDGEPT",
1380
+ /* 144 */ "edge ::= TOP",
1381
+ /* 145 */ "edge ::= BOTTOM",
1382
+ /* 146 */ "edge ::= LEFT",
1383
+ /* 147 */ "edge ::= RIGHT",
13671384
};
13681385
#endif /* NDEBUG */
13691386
13701387
13711388
#if YYSTACKDEPTH<=0
@@ -1487,24 +1504,24 @@
14871504
** Note: during a reduce, the only symbols destroyed are those
14881505
** which appear on the RHS of the rule, but which are *not* used
14891506
** inside the C code.
14901507
*/
14911508
/********* Begin destructor definitions ***************************************/
1492
- case 82: /* element_list */
1493
-{
1494
-#line 438 "pikchr.y"
1495
-pik_elist_free(p,(yypminor->yy42));
1496
-#line 1521 "pikchr.c"
1497
-}
1498
- break;
1499
- case 83: /* element */
1500
- case 84: /* unnamed_element */
1501
- case 85: /* basetype */
1502
-{
1503
-#line 440 "pikchr.y"
1504
-pik_elem_free(p,(yypminor->yy24));
1505
-#line 1530 "pikchr.c"
1509
+ case 86: /* element_list */
1510
+{
1511
+#line 442 "pikchr.y"
1512
+pik_elist_free(p,(yypminor->yy120));
1513
+#line 1538 "pikchr.c"
1514
+}
1515
+ break;
1516
+ case 87: /* element */
1517
+ case 88: /* unnamed_element */
1518
+ case 89: /* basetype */
1519
+{
1520
+#line 444 "pikchr.y"
1521
+pik_elem_free(p,(yypminor->yy26));
1522
+#line 1547 "pikchr.c"
15061523
}
15071524
break;
15081525
/********* End destructor definitions *****************************************/
15091526
default: break; /* If no destructor action specified: do nothing */
15101527
}
@@ -1718,14 +1735,14 @@
17181735
#endif
17191736
while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
17201737
/* Here code is inserted which will execute if the parser
17211738
** stack every overflows */
17221739
/******** Begin %stack_overflow code ******************************************/
1723
-#line 469 "pikchr.y"
1740
+#line 473 "pikchr.y"
17241741
17251742
pik_error(p, 0, "parser stack overflow");
1726
-#line 1751 "pikchr.c"
1743
+#line 1768 "pikchr.c"
17271744
/******** End %stack_overflow code ********************************************/
17281745
pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
17291746
pik_parserCTX_STORE
17301747
}
17311748
@@ -1793,156 +1810,158 @@
17931810
}
17941811
17951812
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
17961813
** of that rule */
17971814
static const YYCODETYPE yyRuleInfoLhs[] = {
1798
- 102, /* (0) document ::= element_list */
1799
- 82, /* (1) element_list ::= element */
1800
- 82, /* (2) element_list ::= element_list EOL element */
1801
- 83, /* (3) element ::= */
1802
- 83, /* (4) element ::= direction */
1803
- 83, /* (5) element ::= lvalue ASSIGN rvalue */
1804
- 83, /* (6) element ::= PLACENAME COLON unnamed_element */
1805
- 83, /* (7) element ::= PLACENAME COLON position */
1806
- 83, /* (8) element ::= unnamed_element */
1807
- 83, /* (9) element ::= print prlist */
1808
- 99, /* (10) rvalue ::= PLACENAME */
1809
- 105, /* (11) pritem ::= FILL */
1810
- 105, /* (12) pritem ::= COLOR */
1811
- 105, /* (13) pritem ::= THICKNESS */
1812
- 105, /* (14) pritem ::= rvalue */
1813
- 105, /* (15) pritem ::= STRING */
1814
- 106, /* (16) prsep ::= COMMA */
1815
- 84, /* (17) unnamed_element ::= basetype attribute_list */
1816
- 85, /* (18) basetype ::= CLASSNAME */
1817
- 85, /* (19) basetype ::= STRING textposition */
1818
- 85, /* (20) basetype ::= LB savelist element_list RB */
1819
- 108, /* (21) savelist ::= */
1820
- 107, /* (22) attribute_list ::= expr */
1821
- 107, /* (23) attribute_list ::= expr PERCENT */
1822
- 110, /* (24) attribute ::= numproperty expr PERCENT */
1823
- 110, /* (25) attribute ::= numproperty expr */
1824
- 110, /* (26) attribute ::= dashproperty expr */
1825
- 110, /* (27) attribute ::= dashproperty */
1826
- 110, /* (28) attribute ::= colorproperty rvalue */
1827
- 110, /* (29) attribute ::= direction expr PERCENT */
1828
- 110, /* (30) attribute ::= direction expr */
1829
- 110, /* (31) attribute ::= direction */
1830
- 110, /* (32) attribute ::= direction even position */
1831
- 110, /* (33) attribute ::= CLOSE */
1832
- 110, /* (34) attribute ::= CHOP */
1833
- 110, /* (35) attribute ::= FROM position */
1834
- 110, /* (36) attribute ::= TO position */
1835
- 110, /* (37) attribute ::= THEN */
1836
- 110, /* (38) attribute ::= AT position */
1837
- 110, /* (39) attribute ::= SAME */
1838
- 110, /* (40) attribute ::= SAME AS object */
1839
- 110, /* (41) attribute ::= STRING textposition */
1840
- 110, /* (42) attribute ::= FIT */
1841
- 113, /* (43) with ::= DOT_E edge AT position */
1842
- 113, /* (44) with ::= edge AT position */
1843
- 87, /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1844
- 111, /* (46) boolproperty ::= CW */
1845
- 111, /* (47) boolproperty ::= CCW */
1846
- 111, /* (48) boolproperty ::= LARROW */
1847
- 111, /* (49) boolproperty ::= RARROW */
1848
- 111, /* (50) boolproperty ::= LRARROW */
1849
- 111, /* (51) boolproperty ::= INVIS */
1850
- 98, /* (52) textposition ::= */
1851
- 98, /* (53) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
1852
- 93, /* (54) position ::= expr COMMA expr */
1853
- 93, /* (55) position ::= place PLUS expr COMMA expr */
1854
- 93, /* (56) position ::= place MINUS expr COMMA expr */
1855
- 93, /* (57) position ::= place PLUS LP expr COMMA expr RP */
1856
- 93, /* (58) position ::= place MINUS LP expr COMMA expr RP */
1857
- 93, /* (59) position ::= LP position COMMA position RP */
1858
- 93, /* (60) position ::= LP position RP */
1859
- 93, /* (61) position ::= expr between position AND position */
1860
- 93, /* (62) position ::= expr ABOVE position */
1861
- 93, /* (63) position ::= expr BELOW position */
1862
- 93, /* (64) position ::= expr LEFT OF position */
1863
- 93, /* (65) position ::= expr RIGHT OF position */
1864
- 93, /* (66) position ::= expr EDGEPT OF position */
1865
- 93, /* (67) position ::= expr HEADING expr FROM position */
1866
- 94, /* (68) place ::= object */
1867
- 94, /* (69) place ::= object DOT_E edge */
1868
- 94, /* (70) place ::= object DOT_L START */
1869
- 94, /* (71) place ::= object DOT_L END */
1870
- 94, /* (72) place ::= START OF object */
1871
- 94, /* (73) place ::= END OF object */
1872
- 94, /* (74) place ::= edge OF object */
1873
- 94, /* (75) place ::= NTH VERTEX OF object */
1874
- 95, /* (76) object ::= nth */
1875
- 95, /* (77) object ::= nth OF|IN object */
1876
- 96, /* (78) objectname ::= PLACENAME */
1877
- 96, /* (79) objectname ::= objectname DOT_U PLACENAME */
1878
- 97, /* (80) nth ::= NTH CLASSNAME */
1879
- 97, /* (81) nth ::= NTH LAST CLASSNAME */
1880
- 97, /* (82) nth ::= LAST CLASSNAME */
1881
- 97, /* (83) nth ::= LAST */
1882
- 97, /* (84) nth ::= NTH LB RB */
1883
- 97, /* (85) nth ::= NTH LAST LB RB */
1884
- 97, /* (86) nth ::= LAST LB RB */
1885
- 86, /* (87) expr ::= expr PLUS expr */
1886
- 86, /* (88) expr ::= expr MINUS expr */
1887
- 86, /* (89) expr ::= expr STAR expr */
1888
- 86, /* (90) expr ::= expr SLASH expr */
1889
- 86, /* (91) expr ::= MINUS expr */
1890
- 86, /* (92) expr ::= PLUS expr */
1891
- 86, /* (93) expr ::= LP expr RP */
1892
- 86, /* (94) expr ::= NUMBER */
1893
- 86, /* (95) expr ::= ID */
1894
- 86, /* (96) expr ::= FUNC1 LP expr RP */
1895
- 86, /* (97) expr ::= FUNC2 LP expr COMMA expr RP */
1896
- 86, /* (98) expr ::= object DOT_L locproperty */
1897
- 86, /* (99) expr ::= object DOT_L numproperty */
1898
- 86, /* (100) expr ::= object DOT_L dashproperty */
1899
- 86, /* (101) expr ::= object DOT_L colorproperty */
1900
- 86, /* (102) expr ::= object DOT_E edge DOT_L X */
1901
- 86, /* (103) expr ::= object DOT_E edge DOT_L Y */
1902
- 86, /* (104) expr ::= LP locproperty OF object RP */
1903
- 86, /* (105) expr ::= LP dashproperty OF object RP */
1904
- 86, /* (106) expr ::= LP numproperty OF object RP */
1905
- 86, /* (107) expr ::= LP colorproperty OF object RP */
1906
- 86, /* (108) expr ::= NTH VERTEX OF object DOT_L X */
1907
- 86, /* (109) expr ::= NTH VERTEX OF object DOT_L Y */
1908
- 100, /* (110) lvalue ::= ID */
1909
- 100, /* (111) lvalue ::= FILL */
1910
- 100, /* (112) lvalue ::= COLOR */
1911
- 100, /* (113) lvalue ::= THICKNESS */
1912
- 99, /* (114) rvalue ::= expr */
1913
- 103, /* (115) print ::= PRINT */
1914
- 104, /* (116) prlist ::= pritem */
1915
- 104, /* (117) prlist ::= prlist prsep pritem */
1916
- 89, /* (118) direction ::= UP */
1917
- 89, /* (119) direction ::= DOWN */
1918
- 89, /* (120) direction ::= LEFT */
1919
- 89, /* (121) direction ::= RIGHT */
1920
- 107, /* (122) attribute_list ::= alist */
1921
- 109, /* (123) alist ::= */
1922
- 109, /* (124) alist ::= alist attribute */
1923
- 110, /* (125) attribute ::= boolproperty */
1924
- 110, /* (126) attribute ::= WITH withclause */
1925
- 101, /* (127) even ::= UNTIL EVEN WITH */
1926
- 101, /* (128) even ::= EVEN WITH */
1927
- 112, /* (129) withclause ::= with */
1928
- 112, /* (130) withclause ::= withclause AND with */
1929
- 90, /* (131) dashproperty ::= DOTTED */
1930
- 90, /* (132) dashproperty ::= DASHED */
1931
- 91, /* (133) colorproperty ::= FILL */
1932
- 91, /* (134) colorproperty ::= COLOR */
1933
- 93, /* (135) position ::= place */
1934
- 114, /* (136) between ::= WAY BETWEEN */
1935
- 114, /* (137) between ::= BETWEEN */
1936
- 114, /* (138) between ::= OF THE WAY BETWEEN */
1937
- 95, /* (139) object ::= objectname */
1938
- 92, /* (140) locproperty ::= X|Y */
1939
- 88, /* (141) edge ::= EDGEPT */
1940
- 88, /* (142) edge ::= TOP */
1941
- 88, /* (143) edge ::= BOTTOM */
1942
- 88, /* (144) edge ::= LEFT */
1943
- 88, /* (145) edge ::= RIGHT */
1815
+ 106, /* (0) document ::= element_list */
1816
+ 86, /* (1) element_list ::= element */
1817
+ 86, /* (2) element_list ::= element_list EOL element */
1818
+ 87, /* (3) element ::= */
1819
+ 87, /* (4) element ::= direction */
1820
+ 87, /* (5) element ::= lvalue ASSIGN rvalue */
1821
+ 87, /* (6) element ::= PLACENAME COLON unnamed_element */
1822
+ 87, /* (7) element ::= PLACENAME COLON position */
1823
+ 87, /* (8) element ::= unnamed_element */
1824
+ 87, /* (9) element ::= print prlist */
1825
+ 103, /* (10) rvalue ::= PLACENAME */
1826
+ 109, /* (11) pritem ::= FILL */
1827
+ 109, /* (12) pritem ::= COLOR */
1828
+ 109, /* (13) pritem ::= THICKNESS */
1829
+ 109, /* (14) pritem ::= rvalue */
1830
+ 109, /* (15) pritem ::= STRING */
1831
+ 110, /* (16) prsep ::= COMMA */
1832
+ 88, /* (17) unnamed_element ::= basetype attribute_list */
1833
+ 89, /* (18) basetype ::= CLASSNAME */
1834
+ 89, /* (19) basetype ::= STRING textposition */
1835
+ 89, /* (20) basetype ::= LB savelist element_list RB */
1836
+ 112, /* (21) savelist ::= */
1837
+ 111, /* (22) attribute_list ::= expr */
1838
+ 111, /* (23) attribute_list ::= expr PERCENT */
1839
+ 114, /* (24) attribute ::= numproperty expr PERCENT */
1840
+ 114, /* (25) attribute ::= numproperty expr */
1841
+ 114, /* (26) attribute ::= dashproperty expr */
1842
+ 114, /* (27) attribute ::= dashproperty */
1843
+ 114, /* (28) attribute ::= colorproperty rvalue */
1844
+ 114, /* (29) attribute ::= direction expr PERCENT */
1845
+ 114, /* (30) attribute ::= direction expr */
1846
+ 114, /* (31) attribute ::= direction */
1847
+ 114, /* (32) attribute ::= direction even position */
1848
+ 114, /* (33) attribute ::= CLOSE */
1849
+ 114, /* (34) attribute ::= CHOP */
1850
+ 114, /* (35) attribute ::= FROM position */
1851
+ 114, /* (36) attribute ::= TO position */
1852
+ 114, /* (37) attribute ::= THEN */
1853
+ 114, /* (38) attribute ::= AT position */
1854
+ 114, /* (39) attribute ::= SAME */
1855
+ 114, /* (40) attribute ::= SAME AS object */
1856
+ 114, /* (41) attribute ::= STRING textposition */
1857
+ 114, /* (42) attribute ::= FIT */
1858
+ 117, /* (43) with ::= DOT_E edge AT position */
1859
+ 117, /* (44) with ::= edge AT position */
1860
+ 91, /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1861
+ 115, /* (46) boolproperty ::= CW */
1862
+ 115, /* (47) boolproperty ::= CCW */
1863
+ 115, /* (48) boolproperty ::= LARROW */
1864
+ 115, /* (49) boolproperty ::= RARROW */
1865
+ 115, /* (50) boolproperty ::= LRARROW */
1866
+ 115, /* (51) boolproperty ::= INVIS */
1867
+ 115, /* (52) boolproperty ::= THICK */
1868
+ 115, /* (53) boolproperty ::= THIN */
1869
+ 102, /* (54) textposition ::= */
1870
+ 102, /* (55) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1871
+ 97, /* (56) position ::= expr COMMA expr */
1872
+ 97, /* (57) position ::= place PLUS expr COMMA expr */
1873
+ 97, /* (58) position ::= place MINUS expr COMMA expr */
1874
+ 97, /* (59) position ::= place PLUS LP expr COMMA expr RP */
1875
+ 97, /* (60) position ::= place MINUS LP expr COMMA expr RP */
1876
+ 97, /* (61) position ::= LP position COMMA position RP */
1877
+ 97, /* (62) position ::= LP position RP */
1878
+ 97, /* (63) position ::= expr between position AND position */
1879
+ 97, /* (64) position ::= expr ABOVE position */
1880
+ 97, /* (65) position ::= expr BELOW position */
1881
+ 97, /* (66) position ::= expr LEFT OF position */
1882
+ 97, /* (67) position ::= expr RIGHT OF position */
1883
+ 97, /* (68) position ::= expr EDGEPT OF position */
1884
+ 97, /* (69) position ::= expr HEADING expr FROM position */
1885
+ 98, /* (70) place ::= object */
1886
+ 98, /* (71) place ::= object DOT_E edge */
1887
+ 98, /* (72) place ::= object DOT_L START */
1888
+ 98, /* (73) place ::= object DOT_L END */
1889
+ 98, /* (74) place ::= START OF object */
1890
+ 98, /* (75) place ::= END OF object */
1891
+ 98, /* (76) place ::= edge OF object */
1892
+ 98, /* (77) place ::= NTH VERTEX OF object */
1893
+ 99, /* (78) object ::= nth */
1894
+ 99, /* (79) object ::= nth OF|IN object */
1895
+ 100, /* (80) objectname ::= PLACENAME */
1896
+ 100, /* (81) objectname ::= objectname DOT_U PLACENAME */
1897
+ 101, /* (82) nth ::= NTH CLASSNAME */
1898
+ 101, /* (83) nth ::= NTH LAST CLASSNAME */
1899
+ 101, /* (84) nth ::= LAST CLASSNAME */
1900
+ 101, /* (85) nth ::= LAST */
1901
+ 101, /* (86) nth ::= NTH LB RB */
1902
+ 101, /* (87) nth ::= NTH LAST LB RB */
1903
+ 101, /* (88) nth ::= LAST LB RB */
1904
+ 90, /* (89) expr ::= expr PLUS expr */
1905
+ 90, /* (90) expr ::= expr MINUS expr */
1906
+ 90, /* (91) expr ::= expr STAR expr */
1907
+ 90, /* (92) expr ::= expr SLASH expr */
1908
+ 90, /* (93) expr ::= MINUS expr */
1909
+ 90, /* (94) expr ::= PLUS expr */
1910
+ 90, /* (95) expr ::= LP expr RP */
1911
+ 90, /* (96) expr ::= NUMBER */
1912
+ 90, /* (97) expr ::= ID */
1913
+ 90, /* (98) expr ::= FUNC1 LP expr RP */
1914
+ 90, /* (99) expr ::= FUNC2 LP expr COMMA expr RP */
1915
+ 90, /* (100) expr ::= object DOT_L locproperty */
1916
+ 90, /* (101) expr ::= object DOT_L numproperty */
1917
+ 90, /* (102) expr ::= object DOT_L dashproperty */
1918
+ 90, /* (103) expr ::= object DOT_L colorproperty */
1919
+ 90, /* (104) expr ::= object DOT_E edge DOT_L X */
1920
+ 90, /* (105) expr ::= object DOT_E edge DOT_L Y */
1921
+ 90, /* (106) expr ::= LP locproperty OF object RP */
1922
+ 90, /* (107) expr ::= LP dashproperty OF object RP */
1923
+ 90, /* (108) expr ::= LP numproperty OF object RP */
1924
+ 90, /* (109) expr ::= LP colorproperty OF object RP */
1925
+ 90, /* (110) expr ::= NTH VERTEX OF object DOT_L X */
1926
+ 90, /* (111) expr ::= NTH VERTEX OF object DOT_L Y */
1927
+ 104, /* (112) lvalue ::= ID */
1928
+ 104, /* (113) lvalue ::= FILL */
1929
+ 104, /* (114) lvalue ::= COLOR */
1930
+ 104, /* (115) lvalue ::= THICKNESS */
1931
+ 103, /* (116) rvalue ::= expr */
1932
+ 107, /* (117) print ::= PRINT */
1933
+ 108, /* (118) prlist ::= pritem */
1934
+ 108, /* (119) prlist ::= prlist prsep pritem */
1935
+ 93, /* (120) direction ::= UP */
1936
+ 93, /* (121) direction ::= DOWN */
1937
+ 93, /* (122) direction ::= LEFT */
1938
+ 93, /* (123) direction ::= RIGHT */
1939
+ 111, /* (124) attribute_list ::= alist */
1940
+ 113, /* (125) alist ::= */
1941
+ 113, /* (126) alist ::= alist attribute */
1942
+ 114, /* (127) attribute ::= boolproperty */
1943
+ 114, /* (128) attribute ::= WITH withclause */
1944
+ 105, /* (129) even ::= UNTIL EVEN WITH */
1945
+ 105, /* (130) even ::= EVEN WITH */
1946
+ 116, /* (131) withclause ::= with */
1947
+ 116, /* (132) withclause ::= withclause AND with */
1948
+ 94, /* (133) dashproperty ::= DOTTED */
1949
+ 94, /* (134) dashproperty ::= DASHED */
1950
+ 95, /* (135) colorproperty ::= FILL */
1951
+ 95, /* (136) colorproperty ::= COLOR */
1952
+ 97, /* (137) position ::= place */
1953
+ 118, /* (138) between ::= WAY BETWEEN */
1954
+ 118, /* (139) between ::= BETWEEN */
1955
+ 118, /* (140) between ::= OF THE WAY BETWEEN */
1956
+ 99, /* (141) object ::= objectname */
1957
+ 96, /* (142) locproperty ::= X|Y */
1958
+ 92, /* (143) edge ::= EDGEPT */
1959
+ 92, /* (144) edge ::= TOP */
1960
+ 92, /* (145) edge ::= BOTTOM */
1961
+ 92, /* (146) edge ::= LEFT */
1962
+ 92, /* (147) edge ::= RIGHT */
19441963
};
19451964
19461965
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
19471966
** of symbols on the right-hand side of that rule. */
19481967
static const signed char yyRuleInfoNRhs[] = {
@@ -1996,104 +2015,106 @@
19962015
-1, /* (47) boolproperty ::= CCW */
19972016
-1, /* (48) boolproperty ::= LARROW */
19982017
-1, /* (49) boolproperty ::= RARROW */
19992018
-1, /* (50) boolproperty ::= LRARROW */
20002019
-1, /* (51) boolproperty ::= INVIS */
2001
- 0, /* (52) textposition ::= */
2002
- -2, /* (53) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
2003
- -3, /* (54) position ::= expr COMMA expr */
2004
- -5, /* (55) position ::= place PLUS expr COMMA expr */
2005
- -5, /* (56) position ::= place MINUS expr COMMA expr */
2006
- -7, /* (57) position ::= place PLUS LP expr COMMA expr RP */
2007
- -7, /* (58) position ::= place MINUS LP expr COMMA expr RP */
2008
- -5, /* (59) position ::= LP position COMMA position RP */
2009
- -3, /* (60) position ::= LP position RP */
2010
- -5, /* (61) position ::= expr between position AND position */
2011
- -3, /* (62) position ::= expr ABOVE position */
2012
- -3, /* (63) position ::= expr BELOW position */
2013
- -4, /* (64) position ::= expr LEFT OF position */
2014
- -4, /* (65) position ::= expr RIGHT OF position */
2015
- -4, /* (66) position ::= expr EDGEPT OF position */
2016
- -5, /* (67) position ::= expr HEADING expr FROM position */
2017
- -1, /* (68) place ::= object */
2018
- -3, /* (69) place ::= object DOT_E edge */
2019
- -3, /* (70) place ::= object DOT_L START */
2020
- -3, /* (71) place ::= object DOT_L END */
2021
- -3, /* (72) place ::= START OF object */
2022
- -3, /* (73) place ::= END OF object */
2023
- -3, /* (74) place ::= edge OF object */
2024
- -4, /* (75) place ::= NTH VERTEX OF object */
2025
- -1, /* (76) object ::= nth */
2026
- -3, /* (77) object ::= nth OF|IN object */
2027
- -1, /* (78) objectname ::= PLACENAME */
2028
- -3, /* (79) objectname ::= objectname DOT_U PLACENAME */
2029
- -2, /* (80) nth ::= NTH CLASSNAME */
2030
- -3, /* (81) nth ::= NTH LAST CLASSNAME */
2031
- -2, /* (82) nth ::= LAST CLASSNAME */
2032
- -1, /* (83) nth ::= LAST */
2033
- -3, /* (84) nth ::= NTH LB RB */
2034
- -4, /* (85) nth ::= NTH LAST LB RB */
2035
- -3, /* (86) nth ::= LAST LB RB */
2036
- -3, /* (87) expr ::= expr PLUS expr */
2037
- -3, /* (88) expr ::= expr MINUS expr */
2038
- -3, /* (89) expr ::= expr STAR expr */
2039
- -3, /* (90) expr ::= expr SLASH expr */
2040
- -2, /* (91) expr ::= MINUS expr */
2041
- -2, /* (92) expr ::= PLUS expr */
2042
- -3, /* (93) expr ::= LP expr RP */
2043
- -1, /* (94) expr ::= NUMBER */
2044
- -1, /* (95) expr ::= ID */
2045
- -4, /* (96) expr ::= FUNC1 LP expr RP */
2046
- -6, /* (97) expr ::= FUNC2 LP expr COMMA expr RP */
2047
- -3, /* (98) expr ::= object DOT_L locproperty */
2048
- -3, /* (99) expr ::= object DOT_L numproperty */
2049
- -3, /* (100) expr ::= object DOT_L dashproperty */
2050
- -3, /* (101) expr ::= object DOT_L colorproperty */
2051
- -5, /* (102) expr ::= object DOT_E edge DOT_L X */
2052
- -5, /* (103) expr ::= object DOT_E edge DOT_L Y */
2053
- -5, /* (104) expr ::= LP locproperty OF object RP */
2054
- -5, /* (105) expr ::= LP dashproperty OF object RP */
2055
- -5, /* (106) expr ::= LP numproperty OF object RP */
2056
- -5, /* (107) expr ::= LP colorproperty OF object RP */
2057
- -6, /* (108) expr ::= NTH VERTEX OF object DOT_L X */
2058
- -6, /* (109) expr ::= NTH VERTEX OF object DOT_L Y */
2059
- -1, /* (110) lvalue ::= ID */
2060
- -1, /* (111) lvalue ::= FILL */
2061
- -1, /* (112) lvalue ::= COLOR */
2062
- -1, /* (113) lvalue ::= THICKNESS */
2063
- -1, /* (114) rvalue ::= expr */
2064
- -1, /* (115) print ::= PRINT */
2065
- -1, /* (116) prlist ::= pritem */
2066
- -3, /* (117) prlist ::= prlist prsep pritem */
2067
- -1, /* (118) direction ::= UP */
2068
- -1, /* (119) direction ::= DOWN */
2069
- -1, /* (120) direction ::= LEFT */
2070
- -1, /* (121) direction ::= RIGHT */
2071
- -1, /* (122) attribute_list ::= alist */
2072
- 0, /* (123) alist ::= */
2073
- -2, /* (124) alist ::= alist attribute */
2074
- -1, /* (125) attribute ::= boolproperty */
2075
- -2, /* (126) attribute ::= WITH withclause */
2076
- -3, /* (127) even ::= UNTIL EVEN WITH */
2077
- -2, /* (128) even ::= EVEN WITH */
2078
- -1, /* (129) withclause ::= with */
2079
- -3, /* (130) withclause ::= withclause AND with */
2080
- -1, /* (131) dashproperty ::= DOTTED */
2081
- -1, /* (132) dashproperty ::= DASHED */
2082
- -1, /* (133) colorproperty ::= FILL */
2083
- -1, /* (134) colorproperty ::= COLOR */
2084
- -1, /* (135) position ::= place */
2085
- -2, /* (136) between ::= WAY BETWEEN */
2086
- -1, /* (137) between ::= BETWEEN */
2087
- -4, /* (138) between ::= OF THE WAY BETWEEN */
2088
- -1, /* (139) object ::= objectname */
2089
- -1, /* (140) locproperty ::= X|Y */
2090
- -1, /* (141) edge ::= EDGEPT */
2091
- -1, /* (142) edge ::= TOP */
2092
- -1, /* (143) edge ::= BOTTOM */
2093
- -1, /* (144) edge ::= LEFT */
2094
- -1, /* (145) edge ::= RIGHT */
2020
+ -1, /* (52) boolproperty ::= THICK */
2021
+ -1, /* (53) boolproperty ::= THIN */
2022
+ 0, /* (54) textposition ::= */
2023
+ -2, /* (55) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2024
+ -3, /* (56) position ::= expr COMMA expr */
2025
+ -5, /* (57) position ::= place PLUS expr COMMA expr */
2026
+ -5, /* (58) position ::= place MINUS expr COMMA expr */
2027
+ -7, /* (59) position ::= place PLUS LP expr COMMA expr RP */
2028
+ -7, /* (60) position ::= place MINUS LP expr COMMA expr RP */
2029
+ -5, /* (61) position ::= LP position COMMA position RP */
2030
+ -3, /* (62) position ::= LP position RP */
2031
+ -5, /* (63) position ::= expr between position AND position */
2032
+ -3, /* (64) position ::= expr ABOVE position */
2033
+ -3, /* (65) position ::= expr BELOW position */
2034
+ -4, /* (66) position ::= expr LEFT OF position */
2035
+ -4, /* (67) position ::= expr RIGHT OF position */
2036
+ -4, /* (68) position ::= expr EDGEPT OF position */
2037
+ -5, /* (69) position ::= expr HEADING expr FROM position */
2038
+ -1, /* (70) place ::= object */
2039
+ -3, /* (71) place ::= object DOT_E edge */
2040
+ -3, /* (72) place ::= object DOT_L START */
2041
+ -3, /* (73) place ::= object DOT_L END */
2042
+ -3, /* (74) place ::= START OF object */
2043
+ -3, /* (75) place ::= END OF object */
2044
+ -3, /* (76) place ::= edge OF object */
2045
+ -4, /* (77) place ::= NTH VERTEX OF object */
2046
+ -1, /* (78) object ::= nth */
2047
+ -3, /* (79) object ::= nth OF|IN object */
2048
+ -1, /* (80) objectname ::= PLACENAME */
2049
+ -3, /* (81) objectname ::= objectname DOT_U PLACENAME */
2050
+ -2, /* (82) nth ::= NTH CLASSNAME */
2051
+ -3, /* (83) nth ::= NTH LAST CLASSNAME */
2052
+ -2, /* (84) nth ::= LAST CLASSNAME */
2053
+ -1, /* (85) nth ::= LAST */
2054
+ -3, /* (86) nth ::= NTH LB RB */
2055
+ -4, /* (87) nth ::= NTH LAST LB RB */
2056
+ -3, /* (88) nth ::= LAST LB RB */
2057
+ -3, /* (89) expr ::= expr PLUS expr */
2058
+ -3, /* (90) expr ::= expr MINUS expr */
2059
+ -3, /* (91) expr ::= expr STAR expr */
2060
+ -3, /* (92) expr ::= expr SLASH expr */
2061
+ -2, /* (93) expr ::= MINUS expr */
2062
+ -2, /* (94) expr ::= PLUS expr */
2063
+ -3, /* (95) expr ::= LP expr RP */
2064
+ -1, /* (96) expr ::= NUMBER */
2065
+ -1, /* (97) expr ::= ID */
2066
+ -4, /* (98) expr ::= FUNC1 LP expr RP */
2067
+ -6, /* (99) expr ::= FUNC2 LP expr COMMA expr RP */
2068
+ -3, /* (100) expr ::= object DOT_L locproperty */
2069
+ -3, /* (101) expr ::= object DOT_L numproperty */
2070
+ -3, /* (102) expr ::= object DOT_L dashproperty */
2071
+ -3, /* (103) expr ::= object DOT_L colorproperty */
2072
+ -5, /* (104) expr ::= object DOT_E edge DOT_L X */
2073
+ -5, /* (105) expr ::= object DOT_E edge DOT_L Y */
2074
+ -5, /* (106) expr ::= LP locproperty OF object RP */
2075
+ -5, /* (107) expr ::= LP dashproperty OF object RP */
2076
+ -5, /* (108) expr ::= LP numproperty OF object RP */
2077
+ -5, /* (109) expr ::= LP colorproperty OF object RP */
2078
+ -6, /* (110) expr ::= NTH VERTEX OF object DOT_L X */
2079
+ -6, /* (111) expr ::= NTH VERTEX OF object DOT_L Y */
2080
+ -1, /* (112) lvalue ::= ID */
2081
+ -1, /* (113) lvalue ::= FILL */
2082
+ -1, /* (114) lvalue ::= COLOR */
2083
+ -1, /* (115) lvalue ::= THICKNESS */
2084
+ -1, /* (116) rvalue ::= expr */
2085
+ -1, /* (117) print ::= PRINT */
2086
+ -1, /* (118) prlist ::= pritem */
2087
+ -3, /* (119) prlist ::= prlist prsep pritem */
2088
+ -1, /* (120) direction ::= UP */
2089
+ -1, /* (121) direction ::= DOWN */
2090
+ -1, /* (122) direction ::= LEFT */
2091
+ -1, /* (123) direction ::= RIGHT */
2092
+ -1, /* (124) attribute_list ::= alist */
2093
+ 0, /* (125) alist ::= */
2094
+ -2, /* (126) alist ::= alist attribute */
2095
+ -1, /* (127) attribute ::= boolproperty */
2096
+ -2, /* (128) attribute ::= WITH withclause */
2097
+ -3, /* (129) even ::= UNTIL EVEN WITH */
2098
+ -2, /* (130) even ::= EVEN WITH */
2099
+ -1, /* (131) withclause ::= with */
2100
+ -3, /* (132) withclause ::= withclause AND with */
2101
+ -1, /* (133) dashproperty ::= DOTTED */
2102
+ -1, /* (134) dashproperty ::= DASHED */
2103
+ -1, /* (135) colorproperty ::= FILL */
2104
+ -1, /* (136) colorproperty ::= COLOR */
2105
+ -1, /* (137) position ::= place */
2106
+ -2, /* (138) between ::= WAY BETWEEN */
2107
+ -1, /* (139) between ::= BETWEEN */
2108
+ -4, /* (140) between ::= OF THE WAY BETWEEN */
2109
+ -1, /* (141) object ::= objectname */
2110
+ -1, /* (142) locproperty ::= X|Y */
2111
+ -1, /* (143) edge ::= EDGEPT */
2112
+ -1, /* (144) edge ::= TOP */
2113
+ -1, /* (145) edge ::= BOTTOM */
2114
+ -1, /* (146) edge ::= LEFT */
2115
+ -1, /* (147) edge ::= RIGHT */
20952116
};
20962117
20972118
static void yy_accept(yyParser*); /* Forward Declaration */
20982119
20992120
/*
@@ -2180,595 +2201,605 @@
21802201
** break;
21812202
*/
21822203
/********** Begin reduce actions **********************************************/
21832204
YYMINORTYPE yylhsminor;
21842205
case 0: /* document ::= element_list */
2185
-#line 473 "pikchr.y"
2186
-{pik_render(p,yymsp[0].minor.yy42);}
2187
-#line 2212 "pikchr.c"
2206
+#line 477 "pikchr.y"
2207
+{pik_render(p,yymsp[0].minor.yy120);}
2208
+#line 2233 "pikchr.c"
21882209
break;
21892210
case 1: /* element_list ::= element */
2190
-#line 476 "pikchr.y"
2191
-{ yylhsminor.yy42 = pik_elist_append(p,0,yymsp[0].minor.yy24); }
2192
-#line 2217 "pikchr.c"
2193
- yymsp[0].minor.yy42 = yylhsminor.yy42;
2211
+#line 480 "pikchr.y"
2212
+{ yylhsminor.yy120 = pik_elist_append(p,0,yymsp[0].minor.yy26); }
2213
+#line 2238 "pikchr.c"
2214
+ yymsp[0].minor.yy120 = yylhsminor.yy120;
21942215
break;
21952216
case 2: /* element_list ::= element_list EOL element */
2196
-#line 478 "pikchr.y"
2197
-{ yylhsminor.yy42 = pik_elist_append(p,yymsp[-2].minor.yy42,yymsp[0].minor.yy24); }
2198
-#line 2223 "pikchr.c"
2199
- yymsp[-2].minor.yy42 = yylhsminor.yy42;
2217
+#line 482 "pikchr.y"
2218
+{ yylhsminor.yy120 = pik_elist_append(p,yymsp[-2].minor.yy120,yymsp[0].minor.yy26); }
2219
+#line 2244 "pikchr.c"
2220
+ yymsp[-2].minor.yy120 = yylhsminor.yy120;
22002221
break;
22012222
case 3: /* element ::= */
2202
-#line 481 "pikchr.y"
2203
-{ yymsp[1].minor.yy24 = 0; }
2204
-#line 2229 "pikchr.c"
2223
+#line 485 "pikchr.y"
2224
+{ yymsp[1].minor.yy26 = 0; }
2225
+#line 2250 "pikchr.c"
22052226
break;
22062227
case 4: /* element ::= direction */
2207
-#line 482 "pikchr.y"
2208
-{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy24=0; }
2209
-#line 2234 "pikchr.c"
2210
- yymsp[0].minor.yy24 = yylhsminor.yy24;
2228
+#line 486 "pikchr.y"
2229
+{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy26=0; }
2230
+#line 2255 "pikchr.c"
2231
+ yymsp[0].minor.yy26 = yylhsminor.yy26;
22112232
break;
22122233
case 5: /* element ::= lvalue ASSIGN rvalue */
2213
-#line 483 "pikchr.y"
2214
-{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy83,&yymsp[-1].minor.yy0); yylhsminor.yy24=0;}
2215
-#line 2240 "pikchr.c"
2216
- yymsp[-2].minor.yy24 = yylhsminor.yy24;
2234
+#line 487 "pikchr.y"
2235
+{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy191,&yymsp[-1].minor.yy0); yylhsminor.yy26=0;}
2236
+#line 2261 "pikchr.c"
2237
+ yymsp[-2].minor.yy26 = yylhsminor.yy26;
22172238
break;
22182239
case 6: /* element ::= PLACENAME COLON unnamed_element */
2219
-#line 485 "pikchr.y"
2220
-{ yylhsminor.yy24 = yymsp[0].minor.yy24; pik_elem_setname(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0); }
2221
-#line 2246 "pikchr.c"
2222
- yymsp[-2].minor.yy24 = yylhsminor.yy24;
2240
+#line 489 "pikchr.y"
2241
+{ yylhsminor.yy26 = yymsp[0].minor.yy26; pik_elem_setname(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0); }
2242
+#line 2267 "pikchr.c"
2243
+ yymsp[-2].minor.yy26 = yylhsminor.yy26;
22232244
break;
22242245
case 7: /* element ::= PLACENAME COLON position */
2225
-#line 487 "pikchr.y"
2226
-{ yylhsminor.yy24 = pik_elem_new(p,0,0,0);
2227
- if(yylhsminor.yy24){ yylhsminor.yy24->ptAt = yymsp[0].minor.yy49; pik_elem_setname(p,yylhsminor.yy24,&yymsp[-2].minor.yy0); }}
2228
-#line 2253 "pikchr.c"
2229
- yymsp[-2].minor.yy24 = yylhsminor.yy24;
2246
+#line 491 "pikchr.y"
2247
+{ yylhsminor.yy26 = pik_elem_new(p,0,0,0);
2248
+ if(yylhsminor.yy26){ yylhsminor.yy26->ptAt = yymsp[0].minor.yy131; pik_elem_setname(p,yylhsminor.yy26,&yymsp[-2].minor.yy0); }}
2249
+#line 2274 "pikchr.c"
2250
+ yymsp[-2].minor.yy26 = yylhsminor.yy26;
22302251
break;
22312252
case 8: /* element ::= unnamed_element */
2232
-#line 489 "pikchr.y"
2233
-{yylhsminor.yy24 = yymsp[0].minor.yy24;}
2234
-#line 2259 "pikchr.c"
2235
- yymsp[0].minor.yy24 = yylhsminor.yy24;
2253
+#line 493 "pikchr.y"
2254
+{yylhsminor.yy26 = yymsp[0].minor.yy26;}
2255
+#line 2280 "pikchr.c"
2256
+ yymsp[0].minor.yy26 = yylhsminor.yy26;
22362257
break;
22372258
case 9: /* element ::= print prlist */
2238
-#line 490 "pikchr.y"
2239
-{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy24=0;}
2240
-#line 2265 "pikchr.c"
2259
+#line 494 "pikchr.y"
2260
+{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy26=0;}
2261
+#line 2286 "pikchr.c"
22412262
break;
22422263
case 10: /* rvalue ::= PLACENAME */
2243
-#line 501 "pikchr.y"
2244
-{yylhsminor.yy83 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2245
-#line 2270 "pikchr.c"
2246
- yymsp[0].minor.yy83 = yylhsminor.yy83;
2264
+#line 505 "pikchr.y"
2265
+{yylhsminor.yy191 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2266
+#line 2291 "pikchr.c"
2267
+ yymsp[0].minor.yy191 = yylhsminor.yy191;
22472268
break;
22482269
case 11: /* pritem ::= FILL */
22492270
case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
22502271
case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
2251
-#line 506 "pikchr.y"
2272
+#line 510 "pikchr.y"
22522273
{pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2253
-#line 2278 "pikchr.c"
2274
+#line 2299 "pikchr.c"
22542275
break;
22552276
case 14: /* pritem ::= rvalue */
2256
-#line 509 "pikchr.y"
2257
-{pik_append_num(p,"",yymsp[0].minor.yy83);}
2258
-#line 2283 "pikchr.c"
2277
+#line 513 "pikchr.y"
2278
+{pik_append_num(p,"",yymsp[0].minor.yy191);}
2279
+#line 2304 "pikchr.c"
22592280
break;
22602281
case 15: /* pritem ::= STRING */
2261
-#line 510 "pikchr.y"
2282
+#line 514 "pikchr.y"
22622283
{pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2263
-#line 2288 "pikchr.c"
2284
+#line 2309 "pikchr.c"
22642285
break;
22652286
case 16: /* prsep ::= COMMA */
2266
-#line 511 "pikchr.y"
2287
+#line 515 "pikchr.y"
22672288
{pik_append(p, " ", 1);}
2268
-#line 2293 "pikchr.c"
2289
+#line 2314 "pikchr.c"
22692290
break;
22702291
case 17: /* unnamed_element ::= basetype attribute_list */
2271
-#line 514 "pikchr.y"
2272
-{yylhsminor.yy24 = yymsp[-1].minor.yy24; pik_after_adding_attributes(p,yylhsminor.yy24);}
2273
-#line 2298 "pikchr.c"
2274
- yymsp[-1].minor.yy24 = yylhsminor.yy24;
2292
+#line 518 "pikchr.y"
2293
+{yylhsminor.yy26 = yymsp[-1].minor.yy26; pik_after_adding_attributes(p,yylhsminor.yy26);}
2294
+#line 2319 "pikchr.c"
2295
+ yymsp[-1].minor.yy26 = yylhsminor.yy26;
22752296
break;
22762297
case 18: /* basetype ::= CLASSNAME */
2277
-#line 516 "pikchr.y"
2278
-{yylhsminor.yy24 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2279
-#line 2304 "pikchr.c"
2280
- yymsp[0].minor.yy24 = yylhsminor.yy24;
2298
+#line 520 "pikchr.y"
2299
+{yylhsminor.yy26 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2300
+#line 2325 "pikchr.c"
2301
+ yymsp[0].minor.yy26 = yylhsminor.yy26;
22812302
break;
22822303
case 19: /* basetype ::= STRING textposition */
2283
-#line 518 "pikchr.y"
2284
-{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy52; yylhsminor.yy24 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2285
-#line 2310 "pikchr.c"
2286
- yymsp[-1].minor.yy24 = yylhsminor.yy24;
2304
+#line 522 "pikchr.y"
2305
+{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy60; yylhsminor.yy26 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2306
+#line 2331 "pikchr.c"
2307
+ yymsp[-1].minor.yy26 = yylhsminor.yy26;
22872308
break;
22882309
case 20: /* basetype ::= LB savelist element_list RB */
2289
-#line 520 "pikchr.y"
2290
-{ p->list = yymsp[-2].minor.yy42; yymsp[-3].minor.yy24 = pik_elem_new(p,0,0,yymsp[-1].minor.yy42); if(yymsp[-3].minor.yy24) yymsp[-3].minor.yy24->errTok = yymsp[0].minor.yy0; }
2291
-#line 2316 "pikchr.c"
2310
+#line 524 "pikchr.y"
2311
+{ p->list = yymsp[-2].minor.yy120; yymsp[-3].minor.yy26 = pik_elem_new(p,0,0,yymsp[-1].minor.yy120); if(yymsp[-3].minor.yy26) yymsp[-3].minor.yy26->errTok = yymsp[0].minor.yy0; }
2312
+#line 2337 "pikchr.c"
22922313
break;
22932314
case 21: /* savelist ::= */
2294
-#line 525 "pikchr.y"
2295
-{yymsp[1].minor.yy42 = p->list; p->list = 0;}
2296
-#line 2321 "pikchr.c"
2315
+#line 529 "pikchr.y"
2316
+{yymsp[1].minor.yy120 = p->list; p->list = 0;}
2317
+#line 2342 "pikchr.c"
22972318
break;
22982319
case 22: /* attribute_list ::= expr */
2299
-#line 532 "pikchr.y"
2300
-{ pik_add_direction(p,0,&yymsp[0].minor.yy83,0);}
2301
-#line 2326 "pikchr.c"
2320
+#line 536 "pikchr.y"
2321
+{ pik_add_direction(p,0,&yymsp[0].minor.yy191,0);}
2322
+#line 2347 "pikchr.c"
23022323
break;
23032324
case 23: /* attribute_list ::= expr PERCENT */
2304
-#line 533 "pikchr.y"
2305
-{ pik_add_direction(p,0,&yymsp[-1].minor.yy83,1);}
2306
-#line 2331 "pikchr.c"
2325
+#line 537 "pikchr.y"
2326
+{ pik_add_direction(p,0,&yymsp[-1].minor.yy191,1);}
2327
+#line 2352 "pikchr.c"
23072328
break;
23082329
case 24: /* attribute ::= numproperty expr PERCENT */
2309
-#line 538 "pikchr.y"
2310
-{ pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy83/100.0); }
2311
-#line 2336 "pikchr.c"
2330
+#line 542 "pikchr.y"
2331
+{ pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy191/100.0); }
2332
+#line 2357 "pikchr.c"
23122333
break;
23132334
case 25: /* attribute ::= numproperty expr */
23142335
case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
2315
-#line 539 "pikchr.y"
2316
-{ pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy83,0.0); }
2317
-#line 2342 "pikchr.c"
2336
+#line 543 "pikchr.y"
2337
+{ pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy191,0.0); }
2338
+#line 2363 "pikchr.c"
23182339
break;
23192340
case 26: /* attribute ::= dashproperty expr */
2320
-#line 540 "pikchr.y"
2321
-{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83); }
2322
-#line 2347 "pikchr.c"
2341
+#line 544 "pikchr.y"
2342
+{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy191); }
2343
+#line 2368 "pikchr.c"
23232344
break;
23242345
case 27: /* attribute ::= dashproperty */
2325
-#line 541 "pikchr.y"
2346
+#line 545 "pikchr.y"
23262347
{ pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2327
-#line 2352 "pikchr.c"
2348
+#line 2373 "pikchr.c"
23282349
break;
23292350
case 29: /* attribute ::= direction expr PERCENT */
2330
-#line 544 "pikchr.y"
2331
-{ pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy83,1);}
2332
-#line 2357 "pikchr.c"
2351
+#line 548 "pikchr.y"
2352
+{ pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy191,1);}
2353
+#line 2378 "pikchr.c"
23332354
break;
23342355
case 30: /* attribute ::= direction expr */
2335
-#line 545 "pikchr.y"
2336
-{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83,0);}
2337
-#line 2362 "pikchr.c"
2356
+#line 549 "pikchr.y"
2357
+{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy191,0);}
2358
+#line 2383 "pikchr.c"
23382359
break;
23392360
case 31: /* attribute ::= direction */
2340
-#line 546 "pikchr.y"
2361
+#line 550 "pikchr.y"
23412362
{ pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
2342
-#line 2367 "pikchr.c"
2363
+#line 2388 "pikchr.c"
23432364
break;
23442365
case 32: /* attribute ::= direction even position */
2345
-#line 547 "pikchr.y"
2346
-{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49);}
2347
-#line 2372 "pikchr.c"
2366
+#line 551 "pikchr.y"
2367
+{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy131);}
2368
+#line 2393 "pikchr.c"
23482369
break;
23492370
case 33: /* attribute ::= CLOSE */
2350
-#line 548 "pikchr.y"
2371
+#line 552 "pikchr.y"
23512372
{ pik_close_path(p,&yymsp[0].minor.yy0); }
2352
-#line 2377 "pikchr.c"
2373
+#line 2398 "pikchr.c"
23532374
break;
23542375
case 34: /* attribute ::= CHOP */
2355
-#line 549 "pikchr.y"
2376
+#line 553 "pikchr.y"
23562377
{ p->cur->bChop = 1; }
2357
-#line 2382 "pikchr.c"
2378
+#line 2403 "pikchr.c"
23582379
break;
23592380
case 35: /* attribute ::= FROM position */
2360
-#line 550 "pikchr.y"
2361
-{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); }
2362
-#line 2387 "pikchr.c"
2381
+#line 554 "pikchr.y"
2382
+{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy131); }
2383
+#line 2408 "pikchr.c"
23632384
break;
23642385
case 36: /* attribute ::= TO position */
2365
-#line 551 "pikchr.y"
2366
-{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); }
2367
-#line 2392 "pikchr.c"
2386
+#line 555 "pikchr.y"
2387
+{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy131); }
2388
+#line 2413 "pikchr.c"
23682389
break;
23692390
case 37: /* attribute ::= THEN */
2370
-#line 552 "pikchr.y"
2391
+#line 556 "pikchr.y"
23712392
{ pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2372
-#line 2397 "pikchr.c"
2393
+#line 2418 "pikchr.c"
23732394
break;
23742395
case 38: /* attribute ::= AT position */
2375
-#line 554 "pikchr.y"
2376
-{ pik_set_at(p,0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); }
2377
-#line 2402 "pikchr.c"
2396
+#line 558 "pikchr.y"
2397
+{ pik_set_at(p,0,&yymsp[0].minor.yy131,&yymsp[-1].minor.yy0); }
2398
+#line 2423 "pikchr.c"
23782399
break;
23792400
case 39: /* attribute ::= SAME */
2380
-#line 556 "pikchr.y"
2401
+#line 560 "pikchr.y"
23812402
{pik_same(p,0,&yymsp[0].minor.yy0);}
2382
-#line 2407 "pikchr.c"
2403
+#line 2428 "pikchr.c"
23832404
break;
23842405
case 40: /* attribute ::= SAME AS object */
2385
-#line 557 "pikchr.y"
2386
-{pik_same(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
2387
-#line 2412 "pikchr.c"
2406
+#line 561 "pikchr.y"
2407
+{pik_same(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
2408
+#line 2433 "pikchr.c"
23882409
break;
23892410
case 41: /* attribute ::= STRING textposition */
2390
-#line 558 "pikchr.y"
2391
-{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy52);}
2392
-#line 2417 "pikchr.c"
2411
+#line 562 "pikchr.y"
2412
+{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy60);}
2413
+#line 2438 "pikchr.c"
23932414
break;
23942415
case 42: /* attribute ::= FIT */
2395
-#line 559 "pikchr.y"
2416
+#line 563 "pikchr.y"
23962417
{pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2397
-#line 2422 "pikchr.c"
2418
+#line 2443 "pikchr.c"
23982419
break;
23992420
case 43: /* with ::= DOT_E edge AT position */
24002421
case 44: /* with ::= edge AT position */ yytestcase(yyruleno==44);
2401
-#line 566 "pikchr.y"
2402
-{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); }
2403
-#line 2428 "pikchr.c"
2422
+#line 570 "pikchr.y"
2423
+{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy131,&yymsp[-1].minor.yy0); }
2424
+#line 2449 "pikchr.c"
24042425
break;
24052426
case 45: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2406
-#line 570 "pikchr.y"
2427
+#line 574 "pikchr.y"
24072428
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
2408
-#line 2433 "pikchr.c"
2429
+#line 2454 "pikchr.c"
24092430
yymsp[0].minor.yy0 = yylhsminor.yy0;
24102431
break;
24112432
case 46: /* boolproperty ::= CW */
2412
-#line 581 "pikchr.y"
2433
+#line 585 "pikchr.y"
24132434
{p->cur->cw = 1;}
2414
-#line 2439 "pikchr.c"
2435
+#line 2460 "pikchr.c"
24152436
break;
24162437
case 47: /* boolproperty ::= CCW */
2417
-#line 582 "pikchr.y"
2438
+#line 586 "pikchr.y"
24182439
{p->cur->cw = 0;}
2419
-#line 2444 "pikchr.c"
2440
+#line 2465 "pikchr.c"
24202441
break;
24212442
case 48: /* boolproperty ::= LARROW */
2422
-#line 583 "pikchr.y"
2443
+#line 587 "pikchr.y"
24232444
{p->cur->larrow=1; p->cur->rarrow=0; }
2424
-#line 2449 "pikchr.c"
2445
+#line 2470 "pikchr.c"
24252446
break;
24262447
case 49: /* boolproperty ::= RARROW */
2427
-#line 584 "pikchr.y"
2448
+#line 588 "pikchr.y"
24282449
{p->cur->larrow=0; p->cur->rarrow=1; }
2429
-#line 2454 "pikchr.c"
2450
+#line 2475 "pikchr.c"
24302451
break;
24312452
case 50: /* boolproperty ::= LRARROW */
2432
-#line 585 "pikchr.y"
2453
+#line 589 "pikchr.y"
24332454
{p->cur->larrow=1; p->cur->rarrow=1; }
2434
-#line 2459 "pikchr.c"
2455
+#line 2480 "pikchr.c"
24352456
break;
24362457
case 51: /* boolproperty ::= INVIS */
2437
-#line 586 "pikchr.y"
2458
+#line 590 "pikchr.y"
24382459
{p->cur->sw = 0.0;}
2439
-#line 2464 "pikchr.c"
2440
- break;
2441
- case 52: /* textposition ::= */
2442
-#line 588 "pikchr.y"
2443
-{yymsp[1].minor.yy52 = 0;}
2444
-#line 2469 "pikchr.c"
2445
- break;
2446
- case 53: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
2460
+#line 2485 "pikchr.c"
2461
+ break;
2462
+ case 52: /* boolproperty ::= THICK */
24472463
#line 591 "pikchr.y"
2448
-{yylhsminor.yy52 = pik_text_position(p,yymsp[-1].minor.yy52,&yymsp[0].minor.yy0);}
2449
-#line 2474 "pikchr.c"
2450
- yymsp[-1].minor.yy52 = yylhsminor.yy52;
2464
+{p->cur->sw *= 1.5;}
2465
+#line 2490 "pikchr.c"
2466
+ break;
2467
+ case 53: /* boolproperty ::= THIN */
2468
+#line 592 "pikchr.y"
2469
+{p->cur->sw *= 0.67;}
2470
+#line 2495 "pikchr.c"
24512471
break;
2452
- case 54: /* position ::= expr COMMA expr */
2472
+ case 54: /* textposition ::= */
24532473
#line 594 "pikchr.y"
2454
-{yylhsminor.yy49.x=yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[0].minor.yy83;}
2455
-#line 2480 "pikchr.c"
2456
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
2457
- break;
2458
- case 55: /* position ::= place PLUS expr COMMA expr */
2459
-#line 596 "pikchr.y"
2460
-{yylhsminor.yy49.x=yymsp[-4].minor.yy49.x+yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y+yymsp[0].minor.yy83;}
2461
-#line 2486 "pikchr.c"
2462
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
2463
- break;
2464
- case 56: /* position ::= place MINUS expr COMMA expr */
2474
+{yymsp[1].minor.yy60 = 0;}
2475
+#line 2500 "pikchr.c"
2476
+ break;
2477
+ case 55: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
24652478
#line 597 "pikchr.y"
2466
-{yylhsminor.yy49.x=yymsp[-4].minor.yy49.x-yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y-yymsp[0].minor.yy83;}
2467
-#line 2492 "pikchr.c"
2468
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
2469
- break;
2470
- case 57: /* position ::= place PLUS LP expr COMMA expr RP */
2471
-#line 599 "pikchr.y"
2472
-{yylhsminor.yy49.x=yymsp[-6].minor.yy49.x+yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y+yymsp[-1].minor.yy83;}
2473
-#line 2498 "pikchr.c"
2474
- yymsp[-6].minor.yy49 = yylhsminor.yy49;
2475
- break;
2476
- case 58: /* position ::= place MINUS LP expr COMMA expr RP */
2477
-#line 601 "pikchr.y"
2478
-{yylhsminor.yy49.x=yymsp[-6].minor.yy49.x-yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y-yymsp[-1].minor.yy83;}
2479
-#line 2504 "pikchr.c"
2480
- yymsp[-6].minor.yy49 = yylhsminor.yy49;
2481
- break;
2482
- case 59: /* position ::= LP position COMMA position RP */
2479
+{yylhsminor.yy60 = pik_text_position(p,yymsp[-1].minor.yy60,&yymsp[0].minor.yy0);}
2480
+#line 2505 "pikchr.c"
2481
+ yymsp[-1].minor.yy60 = yylhsminor.yy60;
2482
+ break;
2483
+ case 56: /* position ::= expr COMMA expr */
2484
+#line 600 "pikchr.y"
2485
+{yylhsminor.yy131.x=yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[0].minor.yy191;}
2486
+#line 2511 "pikchr.c"
2487
+ yymsp[-2].minor.yy131 = yylhsminor.yy131;
2488
+ break;
2489
+ case 57: /* position ::= place PLUS expr COMMA expr */
24832490
#line 602 "pikchr.y"
2484
-{yymsp[-4].minor.yy49.x=yymsp[-3].minor.yy49.x; yymsp[-4].minor.yy49.y=yymsp[-1].minor.yy49.y;}
2485
-#line 2510 "pikchr.c"
2491
+{yylhsminor.yy131.x=yymsp[-4].minor.yy131.x+yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[-4].minor.yy131.y+yymsp[0].minor.yy191;}
2492
+#line 2517 "pikchr.c"
2493
+ yymsp[-4].minor.yy131 = yylhsminor.yy131;
24862494
break;
2487
- case 60: /* position ::= LP position RP */
2495
+ case 58: /* position ::= place MINUS expr COMMA expr */
24882496
#line 603 "pikchr.y"
2489
-{yymsp[-2].minor.yy49=yymsp[-1].minor.yy49;}
2490
-#line 2515 "pikchr.c"
2497
+{yylhsminor.yy131.x=yymsp[-4].minor.yy131.x-yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[-4].minor.yy131.y-yymsp[0].minor.yy191;}
2498
+#line 2523 "pikchr.c"
2499
+ yymsp[-4].minor.yy131 = yylhsminor.yy131;
24912500
break;
2492
- case 61: /* position ::= expr between position AND position */
2501
+ case 59: /* position ::= place PLUS LP expr COMMA expr RP */
24932502
#line 605 "pikchr.y"
2494
-{yylhsminor.yy49 = pik_position_between(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy49,yymsp[0].minor.yy49);}
2495
-#line 2520 "pikchr.c"
2496
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
2497
- break;
2498
- case 62: /* position ::= expr ABOVE position */
2499
-#line 606 "pikchr.y"
2500
-{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y += yymsp[-2].minor.yy83;}
2501
-#line 2526 "pikchr.c"
2502
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
2503
- break;
2504
- case 63: /* position ::= expr BELOW position */
2503
+{yylhsminor.yy131.x=yymsp[-6].minor.yy131.x+yymsp[-3].minor.yy191; yylhsminor.yy131.y=yymsp[-6].minor.yy131.y+yymsp[-1].minor.yy191;}
2504
+#line 2529 "pikchr.c"
2505
+ yymsp[-6].minor.yy131 = yylhsminor.yy131;
2506
+ break;
2507
+ case 60: /* position ::= place MINUS LP expr COMMA expr RP */
25052508
#line 607 "pikchr.y"
2506
-{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y -= yymsp[-2].minor.yy83;}
2507
-#line 2532 "pikchr.c"
2508
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
2509
+{yylhsminor.yy131.x=yymsp[-6].minor.yy131.x-yymsp[-3].minor.yy191; yylhsminor.yy131.y=yymsp[-6].minor.yy131.y-yymsp[-1].minor.yy191;}
2510
+#line 2535 "pikchr.c"
2511
+ yymsp[-6].minor.yy131 = yylhsminor.yy131;
25092512
break;
2510
- case 64: /* position ::= expr LEFT OF position */
2513
+ case 61: /* position ::= LP position COMMA position RP */
25112514
#line 608 "pikchr.y"
2512
-{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x -= yymsp[-3].minor.yy83;}
2513
-#line 2538 "pikchr.c"
2514
- yymsp[-3].minor.yy49 = yylhsminor.yy49;
2515
+{yymsp[-4].minor.yy131.x=yymsp[-3].minor.yy131.x; yymsp[-4].minor.yy131.y=yymsp[-1].minor.yy131.y;}
2516
+#line 2541 "pikchr.c"
25152517
break;
2516
- case 65: /* position ::= expr RIGHT OF position */
2518
+ case 62: /* position ::= LP position RP */
25172519
#line 609 "pikchr.y"
2518
-{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x += yymsp[-3].minor.yy83;}
2519
-#line 2544 "pikchr.c"
2520
- yymsp[-3].minor.yy49 = yylhsminor.yy49;
2520
+{yymsp[-2].minor.yy131=yymsp[-1].minor.yy131;}
2521
+#line 2546 "pikchr.c"
25212522
break;
2522
- case 66: /* position ::= expr EDGEPT OF position */
2523
+ case 63: /* position ::= expr between position AND position */
25232524
#line 611 "pikchr.y"
2524
-{yylhsminor.yy49 = pik_position_at_hdg(p,yymsp[-3].minor.yy83,&yymsp[-2].minor.yy0,yymsp[0].minor.yy49);}
2525
-#line 2550 "pikchr.c"
2526
- yymsp[-3].minor.yy49 = yylhsminor.yy49;
2525
+{yylhsminor.yy131 = pik_position_between(p,yymsp[-4].minor.yy191,yymsp[-2].minor.yy131,yymsp[0].minor.yy131);}
2526
+#line 2551 "pikchr.c"
2527
+ yymsp[-4].minor.yy131 = yylhsminor.yy131;
2528
+ break;
2529
+ case 64: /* position ::= expr ABOVE position */
2530
+#line 612 "pikchr.y"
2531
+{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.y += yymsp[-2].minor.yy191;}
2532
+#line 2557 "pikchr.c"
2533
+ yymsp[-2].minor.yy131 = yylhsminor.yy131;
25272534
break;
2528
- case 67: /* position ::= expr HEADING expr FROM position */
2535
+ case 65: /* position ::= expr BELOW position */
25292536
#line 613 "pikchr.y"
2530
-{yylhsminor.yy49 = pik_position_at_angle(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy83,yymsp[0].minor.yy49);}
2531
-#line 2556 "pikchr.c"
2532
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
2537
+{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.y -= yymsp[-2].minor.yy191;}
2538
+#line 2563 "pikchr.c"
2539
+ yymsp[-2].minor.yy131 = yylhsminor.yy131;
2540
+ break;
2541
+ case 66: /* position ::= expr LEFT OF position */
2542
+#line 614 "pikchr.y"
2543
+{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.x -= yymsp[-3].minor.yy191;}
2544
+#line 2569 "pikchr.c"
2545
+ yymsp[-3].minor.yy131 = yylhsminor.yy131;
2546
+ break;
2547
+ case 67: /* position ::= expr RIGHT OF position */
2548
+#line 615 "pikchr.y"
2549
+{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.x += yymsp[-3].minor.yy191;}
2550
+#line 2575 "pikchr.c"
2551
+ yymsp[-3].minor.yy131 = yylhsminor.yy131;
2552
+ break;
2553
+ case 68: /* position ::= expr EDGEPT OF position */
2554
+#line 617 "pikchr.y"
2555
+{yylhsminor.yy131 = pik_position_at_hdg(p,yymsp[-3].minor.yy191,&yymsp[-2].minor.yy0,yymsp[0].minor.yy131);}
2556
+#line 2581 "pikchr.c"
2557
+ yymsp[-3].minor.yy131 = yylhsminor.yy131;
25332558
break;
2534
- case 68: /* place ::= object */
2559
+ case 69: /* position ::= expr HEADING expr FROM position */
25352560
#line 619 "pikchr.y"
2536
-{yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,0);}
2537
-#line 2562 "pikchr.c"
2538
- yymsp[0].minor.yy49 = yylhsminor.yy49;
2539
- break;
2540
- case 69: /* place ::= object DOT_E edge */
2541
- case 70: /* place ::= object DOT_L START */ yytestcase(yyruleno==70);
2542
- case 71: /* place ::= object DOT_L END */ yytestcase(yyruleno==71);
2543
-#line 620 "pikchr.y"
2544
-{yylhsminor.yy49 = pik_place_of_elem(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
2545
-#line 2570 "pikchr.c"
2546
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
2547
- break;
2548
- case 72: /* place ::= START OF object */
2549
- case 73: /* place ::= END OF object */ yytestcase(yyruleno==73);
2550
- case 74: /* place ::= edge OF object */ yytestcase(yyruleno==74);
2551
-#line 623 "pikchr.y"
2552
-{yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
2553
-#line 2578 "pikchr.c"
2554
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
2555
- break;
2556
- case 75: /* place ::= NTH VERTEX OF object */
2561
+{yylhsminor.yy131 = pik_position_at_angle(p,yymsp[-4].minor.yy191,yymsp[-2].minor.yy191,yymsp[0].minor.yy131);}
2562
+#line 2587 "pikchr.c"
2563
+ yymsp[-4].minor.yy131 = yylhsminor.yy131;
2564
+ break;
2565
+ case 70: /* place ::= object */
2566
+#line 625 "pikchr.y"
2567
+{yylhsminor.yy131 = pik_place_of_elem(p,yymsp[0].minor.yy26,0);}
2568
+#line 2593 "pikchr.c"
2569
+ yymsp[0].minor.yy131 = yylhsminor.yy131;
2570
+ break;
2571
+ case 71: /* place ::= object DOT_E edge */
2572
+ case 72: /* place ::= object DOT_L START */ yytestcase(yyruleno==72);
2573
+ case 73: /* place ::= object DOT_L END */ yytestcase(yyruleno==73);
25572574
#line 626 "pikchr.y"
2558
-{yylhsminor.yy49 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy24);}
2559
-#line 2584 "pikchr.c"
2560
- yymsp[-3].minor.yy49 = yylhsminor.yy49;
2575
+{yylhsminor.yy131 = pik_place_of_elem(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
2576
+#line 2601 "pikchr.c"
2577
+ yymsp[-2].minor.yy131 = yylhsminor.yy131;
25612578
break;
2562
- case 76: /* object ::= nth */
2579
+ case 74: /* place ::= START OF object */
2580
+ case 75: /* place ::= END OF object */ yytestcase(yyruleno==75);
2581
+ case 76: /* place ::= edge OF object */ yytestcase(yyruleno==76);
25632582
#line 629 "pikchr.y"
2564
-{yylhsminor.yy24 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2565
-#line 2590 "pikchr.c"
2566
- yymsp[0].minor.yy24 = yylhsminor.yy24;
2567
- break;
2568
- case 77: /* object ::= nth OF|IN object */
2569
-#line 630 "pikchr.y"
2570
-{yylhsminor.yy24 = pik_find_nth(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
2571
-#line 2596 "pikchr.c"
2572
- yymsp[-2].minor.yy24 = yylhsminor.yy24;
2573
- break;
2574
- case 78: /* objectname ::= PLACENAME */
2583
+{yylhsminor.yy131 = pik_place_of_elem(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
2584
+#line 2609 "pikchr.c"
2585
+ yymsp[-2].minor.yy131 = yylhsminor.yy131;
2586
+ break;
2587
+ case 77: /* place ::= NTH VERTEX OF object */
25752588
#line 632 "pikchr.y"
2576
-{yylhsminor.yy24 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2577
-#line 2602 "pikchr.c"
2578
- yymsp[0].minor.yy24 = yylhsminor.yy24;
2579
- break;
2580
- case 79: /* objectname ::= objectname DOT_U PLACENAME */
2581
-#line 634 "pikchr.y"
2582
-{yylhsminor.yy24 = pik_find_byname(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
2583
-#line 2608 "pikchr.c"
2584
- yymsp[-2].minor.yy24 = yylhsminor.yy24;
2585
- break;
2586
- case 80: /* nth ::= NTH CLASSNAME */
2589
+{yylhsminor.yy131 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy26);}
2590
+#line 2615 "pikchr.c"
2591
+ yymsp[-3].minor.yy131 = yylhsminor.yy131;
2592
+ break;
2593
+ case 78: /* object ::= nth */
2594
+#line 635 "pikchr.y"
2595
+{yylhsminor.yy26 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2596
+#line 2621 "pikchr.c"
2597
+ yymsp[0].minor.yy26 = yylhsminor.yy26;
2598
+ break;
2599
+ case 79: /* object ::= nth OF|IN object */
25872600
#line 636 "pikchr.y"
2601
+{yylhsminor.yy26 = pik_find_nth(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
2602
+#line 2627 "pikchr.c"
2603
+ yymsp[-2].minor.yy26 = yylhsminor.yy26;
2604
+ break;
2605
+ case 80: /* objectname ::= PLACENAME */
2606
+#line 638 "pikchr.y"
2607
+{yylhsminor.yy26 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2608
+#line 2633 "pikchr.c"
2609
+ yymsp[0].minor.yy26 = yylhsminor.yy26;
2610
+ break;
2611
+ case 81: /* objectname ::= objectname DOT_U PLACENAME */
2612
+#line 640 "pikchr.y"
2613
+{yylhsminor.yy26 = pik_find_byname(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
2614
+#line 2639 "pikchr.c"
2615
+ yymsp[-2].minor.yy26 = yylhsminor.yy26;
2616
+ break;
2617
+ case 82: /* nth ::= NTH CLASSNAME */
2618
+#line 642 "pikchr.y"
25882619
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2589
-#line 2614 "pikchr.c"
2620
+#line 2645 "pikchr.c"
25902621
yymsp[-1].minor.yy0 = yylhsminor.yy0;
25912622
break;
2592
- case 81: /* nth ::= NTH LAST CLASSNAME */
2593
-#line 637 "pikchr.y"
2623
+ case 83: /* nth ::= NTH LAST CLASSNAME */
2624
+#line 643 "pikchr.y"
25942625
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2595
-#line 2620 "pikchr.c"
2626
+#line 2651 "pikchr.c"
25962627
yymsp[-2].minor.yy0 = yylhsminor.yy0;
25972628
break;
2598
- case 82: /* nth ::= LAST CLASSNAME */
2599
-#line 638 "pikchr.y"
2629
+ case 84: /* nth ::= LAST CLASSNAME */
2630
+#line 644 "pikchr.y"
26002631
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2601
-#line 2626 "pikchr.c"
2632
+#line 2657 "pikchr.c"
26022633
break;
2603
- case 83: /* nth ::= LAST */
2604
-#line 639 "pikchr.y"
2634
+ case 85: /* nth ::= LAST */
2635
+#line 645 "pikchr.y"
26052636
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2606
-#line 2631 "pikchr.c"
2637
+#line 2662 "pikchr.c"
26072638
yymsp[0].minor.yy0 = yylhsminor.yy0;
26082639
break;
2609
- case 84: /* nth ::= NTH LB RB */
2610
-#line 640 "pikchr.y"
2640
+ case 86: /* nth ::= NTH LB RB */
2641
+#line 646 "pikchr.y"
26112642
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2612
-#line 2637 "pikchr.c"
2643
+#line 2668 "pikchr.c"
26132644
yymsp[-2].minor.yy0 = yylhsminor.yy0;
26142645
break;
2615
- case 85: /* nth ::= NTH LAST LB RB */
2616
-#line 641 "pikchr.y"
2646
+ case 87: /* nth ::= NTH LAST LB RB */
2647
+#line 647 "pikchr.y"
26172648
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2618
-#line 2643 "pikchr.c"
2649
+#line 2674 "pikchr.c"
26192650
yymsp[-3].minor.yy0 = yylhsminor.yy0;
26202651
break;
2621
- case 86: /* nth ::= LAST LB RB */
2622
-#line 642 "pikchr.y"
2623
-{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2624
-#line 2649 "pikchr.c"
2625
- break;
2626
- case 87: /* expr ::= expr PLUS expr */
2627
-#line 644 "pikchr.y"
2628
-{yylhsminor.yy83=yymsp[-2].minor.yy83+yymsp[0].minor.yy83;}
2629
-#line 2654 "pikchr.c"
2630
- yymsp[-2].minor.yy83 = yylhsminor.yy83;
2631
- break;
2632
- case 88: /* expr ::= expr MINUS expr */
2633
-#line 645 "pikchr.y"
2634
-{yylhsminor.yy83=yymsp[-2].minor.yy83-yymsp[0].minor.yy83;}
2635
-#line 2660 "pikchr.c"
2636
- yymsp[-2].minor.yy83 = yylhsminor.yy83;
2637
- break;
2638
- case 89: /* expr ::= expr STAR expr */
2639
-#line 646 "pikchr.y"
2640
-{yylhsminor.yy83=yymsp[-2].minor.yy83*yymsp[0].minor.yy83;}
2641
-#line 2666 "pikchr.c"
2642
- yymsp[-2].minor.yy83 = yylhsminor.yy83;
2643
- break;
2644
- case 90: /* expr ::= expr SLASH expr */
2645
-#line 647 "pikchr.y"
2646
-{
2647
- if( yymsp[0].minor.yy83==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy83 = 0.0; }
2648
- else{ yylhsminor.yy83 = yymsp[-2].minor.yy83/yymsp[0].minor.yy83; }
2649
-}
2650
-#line 2675 "pikchr.c"
2651
- yymsp[-2].minor.yy83 = yylhsminor.yy83;
2652
- break;
2653
- case 91: /* expr ::= MINUS expr */
2654
-#line 651 "pikchr.y"
2655
-{yymsp[-1].minor.yy83=-yymsp[0].minor.yy83;}
2656
-#line 2681 "pikchr.c"
2657
- break;
2658
- case 92: /* expr ::= PLUS expr */
2659
-#line 652 "pikchr.y"
2660
-{yymsp[-1].minor.yy83=yymsp[0].minor.yy83;}
2661
-#line 2686 "pikchr.c"
2662
- break;
2663
- case 93: /* expr ::= LP expr RP */
2664
-#line 653 "pikchr.y"
2665
-{yymsp[-2].minor.yy83=yymsp[-1].minor.yy83;}
2666
-#line 2691 "pikchr.c"
2667
- break;
2668
- case 94: /* expr ::= NUMBER */
2669
-#line 654 "pikchr.y"
2670
-{yylhsminor.yy83=pik_atof(p,&yymsp[0].minor.yy0);}
2671
-#line 2696 "pikchr.c"
2672
- yymsp[0].minor.yy83 = yylhsminor.yy83;
2673
- break;
2674
- case 95: /* expr ::= ID */
2675
-#line 655 "pikchr.y"
2676
-{yylhsminor.yy83=pik_get_var(p,&yymsp[0].minor.yy0);}
2677
-#line 2702 "pikchr.c"
2678
- yymsp[0].minor.yy83 = yylhsminor.yy83;
2679
- break;
2680
- case 96: /* expr ::= FUNC1 LP expr RP */
2681
-#line 656 "pikchr.y"
2682
-{yylhsminor.yy83 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy83,0.0);}
2683
-#line 2708 "pikchr.c"
2684
- yymsp[-3].minor.yy83 = yylhsminor.yy83;
2685
- break;
2686
- case 97: /* expr ::= FUNC2 LP expr COMMA expr RP */
2687
-#line 657 "pikchr.y"
2688
-{yylhsminor.yy83 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy83,yymsp[-1].minor.yy83);}
2689
-#line 2714 "pikchr.c"
2690
- yymsp[-5].minor.yy83 = yylhsminor.yy83;
2691
- break;
2692
- case 98: /* expr ::= object DOT_L locproperty */
2693
- case 99: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==99);
2694
- case 100: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==100);
2695
- case 101: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==101);
2696
-#line 659 "pikchr.y"
2697
-{yylhsminor.yy83=pik_property_of(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
2698
-#line 2723 "pikchr.c"
2699
- yymsp[-2].minor.yy83 = yylhsminor.yy83;
2700
- break;
2701
- case 102: /* expr ::= object DOT_E edge DOT_L X */
2702
-#line 663 "pikchr.y"
2703
-{yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).x;}
2704
-#line 2729 "pikchr.c"
2705
- yymsp[-4].minor.yy83 = yylhsminor.yy83;
2706
- break;
2707
- case 103: /* expr ::= object DOT_E edge DOT_L Y */
2708
-#line 664 "pikchr.y"
2709
-{yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).y;}
2710
-#line 2735 "pikchr.c"
2711
- yymsp[-4].minor.yy83 = yylhsminor.yy83;
2712
- break;
2713
- case 104: /* expr ::= LP locproperty OF object RP */
2714
- case 105: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==105);
2715
- case 106: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==106);
2716
- case 107: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==107);
2717
-#line 665 "pikchr.y"
2718
-{yymsp[-4].minor.yy83=pik_property_of(p,yymsp[-1].minor.yy24,&yymsp[-3].minor.yy0);}
2719
-#line 2744 "pikchr.c"
2720
- break;
2721
- case 108: /* expr ::= NTH VERTEX OF object DOT_L X */
2722
-#line 671 "pikchr.y"
2723
-{yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).x;}
2724
-#line 2749 "pikchr.c"
2725
- yymsp[-5].minor.yy83 = yylhsminor.yy83;
2726
- break;
2727
- case 109: /* expr ::= NTH VERTEX OF object DOT_L Y */
2728
-#line 673 "pikchr.y"
2729
-{yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).y;}
2730
-#line 2755 "pikchr.c"
2731
- yymsp[-5].minor.yy83 = yylhsminor.yy83;
2652
+ case 88: /* nth ::= LAST LB RB */
2653
+#line 648 "pikchr.y"
2654
+{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2655
+#line 2680 "pikchr.c"
2656
+ break;
2657
+ case 89: /* expr ::= expr PLUS expr */
2658
+#line 650 "pikchr.y"
2659
+{yylhsminor.yy191=yymsp[-2].minor.yy191+yymsp[0].minor.yy191;}
2660
+#line 2685 "pikchr.c"
2661
+ yymsp[-2].minor.yy191 = yylhsminor.yy191;
2662
+ break;
2663
+ case 90: /* expr ::= expr MINUS expr */
2664
+#line 651 "pikchr.y"
2665
+{yylhsminor.yy191=yymsp[-2].minor.yy191-yymsp[0].minor.yy191;}
2666
+#line 2691 "pikchr.c"
2667
+ yymsp[-2].minor.yy191 = yylhsminor.yy191;
2668
+ break;
2669
+ case 91: /* expr ::= expr STAR expr */
2670
+#line 652 "pikchr.y"
2671
+{yylhsminor.yy191=yymsp[-2].minor.yy191*yymsp[0].minor.yy191;}
2672
+#line 2697 "pikchr.c"
2673
+ yymsp[-2].minor.yy191 = yylhsminor.yy191;
2674
+ break;
2675
+ case 92: /* expr ::= expr SLASH expr */
2676
+#line 653 "pikchr.y"
2677
+{
2678
+ if( yymsp[0].minor.yy191==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy191 = 0.0; }
2679
+ else{ yylhsminor.yy191 = yymsp[-2].minor.yy191/yymsp[0].minor.yy191; }
2680
+}
2681
+#line 2706 "pikchr.c"
2682
+ yymsp[-2].minor.yy191 = yylhsminor.yy191;
2683
+ break;
2684
+ case 93: /* expr ::= MINUS expr */
2685
+#line 657 "pikchr.y"
2686
+{yymsp[-1].minor.yy191=-yymsp[0].minor.yy191;}
2687
+#line 2712 "pikchr.c"
2688
+ break;
2689
+ case 94: /* expr ::= PLUS expr */
2690
+#line 658 "pikchr.y"
2691
+{yymsp[-1].minor.yy191=yymsp[0].minor.yy191;}
2692
+#line 2717 "pikchr.c"
2693
+ break;
2694
+ case 95: /* expr ::= LP expr RP */
2695
+#line 659 "pikchr.y"
2696
+{yymsp[-2].minor.yy191=yymsp[-1].minor.yy191;}
2697
+#line 2722 "pikchr.c"
2698
+ break;
2699
+ case 96: /* expr ::= NUMBER */
2700
+#line 660 "pikchr.y"
2701
+{yylhsminor.yy191=pik_atof(p,&yymsp[0].minor.yy0);}
2702
+#line 2727 "pikchr.c"
2703
+ yymsp[0].minor.yy191 = yylhsminor.yy191;
2704
+ break;
2705
+ case 97: /* expr ::= ID */
2706
+#line 661 "pikchr.y"
2707
+{yylhsminor.yy191=pik_get_var(p,&yymsp[0].minor.yy0);}
2708
+#line 2733 "pikchr.c"
2709
+ yymsp[0].minor.yy191 = yylhsminor.yy191;
2710
+ break;
2711
+ case 98: /* expr ::= FUNC1 LP expr RP */
2712
+#line 662 "pikchr.y"
2713
+{yylhsminor.yy191 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy191,0.0);}
2714
+#line 2739 "pikchr.c"
2715
+ yymsp[-3].minor.yy191 = yylhsminor.yy191;
2716
+ break;
2717
+ case 99: /* expr ::= FUNC2 LP expr COMMA expr RP */
2718
+#line 663 "pikchr.y"
2719
+{yylhsminor.yy191 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy191,yymsp[-1].minor.yy191);}
2720
+#line 2745 "pikchr.c"
2721
+ yymsp[-5].minor.yy191 = yylhsminor.yy191;
2722
+ break;
2723
+ case 100: /* expr ::= object DOT_L locproperty */
2724
+ case 101: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==101);
2725
+ case 102: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==102);
2726
+ case 103: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==103);
2727
+#line 665 "pikchr.y"
2728
+{yylhsminor.yy191=pik_property_of(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
2729
+#line 2754 "pikchr.c"
2730
+ yymsp[-2].minor.yy191 = yylhsminor.yy191;
2731
+ break;
2732
+ case 104: /* expr ::= object DOT_E edge DOT_L X */
2733
+#line 669 "pikchr.y"
2734
+{yylhsminor.yy191=pik_place_of_elem(p,yymsp[-4].minor.yy26,&yymsp[-2].minor.yy0).x;}
2735
+#line 2760 "pikchr.c"
2736
+ yymsp[-4].minor.yy191 = yylhsminor.yy191;
2737
+ break;
2738
+ case 105: /* expr ::= object DOT_E edge DOT_L Y */
2739
+#line 670 "pikchr.y"
2740
+{yylhsminor.yy191=pik_place_of_elem(p,yymsp[-4].minor.yy26,&yymsp[-2].minor.yy0).y;}
2741
+#line 2766 "pikchr.c"
2742
+ yymsp[-4].minor.yy191 = yylhsminor.yy191;
2743
+ break;
2744
+ case 106: /* expr ::= LP locproperty OF object RP */
2745
+ case 107: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==107);
2746
+ case 108: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==108);
2747
+ case 109: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==109);
2748
+#line 671 "pikchr.y"
2749
+{yymsp[-4].minor.yy191=pik_property_of(p,yymsp[-1].minor.yy26,&yymsp[-3].minor.yy0);}
2750
+#line 2775 "pikchr.c"
2751
+ break;
2752
+ case 110: /* expr ::= NTH VERTEX OF object DOT_L X */
2753
+#line 677 "pikchr.y"
2754
+{yylhsminor.yy191 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy26).x;}
2755
+#line 2780 "pikchr.c"
2756
+ yymsp[-5].minor.yy191 = yylhsminor.yy191;
2757
+ break;
2758
+ case 111: /* expr ::= NTH VERTEX OF object DOT_L Y */
2759
+#line 679 "pikchr.y"
2760
+{yylhsminor.yy191 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy26).y;}
2761
+#line 2786 "pikchr.c"
2762
+ yymsp[-5].minor.yy191 = yylhsminor.yy191;
27322763
break;
27332764
default:
2734
- /* (110) lvalue ::= ID */ yytestcase(yyruleno==110);
2735
- /* (111) lvalue ::= FILL */ yytestcase(yyruleno==111);
2736
- /* (112) lvalue ::= COLOR */ yytestcase(yyruleno==112);
2737
- /* (113) lvalue ::= THICKNESS */ yytestcase(yyruleno==113);
2738
- /* (114) rvalue ::= expr */ yytestcase(yyruleno==114);
2739
- /* (115) print ::= PRINT */ yytestcase(yyruleno==115);
2740
- /* (116) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=116);
2741
- /* (117) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==117);
2742
- /* (118) direction ::= UP */ yytestcase(yyruleno==118);
2743
- /* (119) direction ::= DOWN */ yytestcase(yyruleno==119);
2744
- /* (120) direction ::= LEFT */ yytestcase(yyruleno==120);
2745
- /* (121) direction ::= RIGHT */ yytestcase(yyruleno==121);
2746
- /* (122) attribute_list ::= alist */ yytestcase(yyruleno==122);
2747
- /* (123) alist ::= */ yytestcase(yyruleno==123);
2748
- /* (124) alist ::= alist attribute */ yytestcase(yyruleno==124);
2749
- /* (125) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=125);
2750
- /* (126) attribute ::= WITH withclause */ yytestcase(yyruleno==126);
2751
- /* (127) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==127);
2752
- /* (128) even ::= EVEN WITH */ yytestcase(yyruleno==128);
2753
- /* (129) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=129);
2754
- /* (130) withclause ::= withclause AND with */ yytestcase(yyruleno==130);
2755
- /* (131) dashproperty ::= DOTTED */ yytestcase(yyruleno==131);
2756
- /* (132) dashproperty ::= DASHED */ yytestcase(yyruleno==132);
2757
- /* (133) colorproperty ::= FILL */ yytestcase(yyruleno==133);
2758
- /* (134) colorproperty ::= COLOR */ yytestcase(yyruleno==134);
2759
- /* (135) position ::= place */ yytestcase(yyruleno==135);
2760
- /* (136) between ::= WAY BETWEEN */ yytestcase(yyruleno==136);
2761
- /* (137) between ::= BETWEEN */ yytestcase(yyruleno==137);
2762
- /* (138) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==138);
2763
- /* (139) object ::= objectname */ yytestcase(yyruleno==139);
2764
- /* (140) locproperty ::= X|Y */ yytestcase(yyruleno==140);
2765
- /* (141) edge ::= EDGEPT */ yytestcase(yyruleno==141);
2766
- /* (142) edge ::= TOP */ yytestcase(yyruleno==142);
2767
- /* (143) edge ::= BOTTOM */ yytestcase(yyruleno==143);
2768
- /* (144) edge ::= LEFT */ yytestcase(yyruleno==144);
2769
- /* (145) edge ::= RIGHT */ yytestcase(yyruleno==145);
2765
+ /* (112) lvalue ::= ID */ yytestcase(yyruleno==112);
2766
+ /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113);
2767
+ /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114);
2768
+ /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115);
2769
+ /* (116) rvalue ::= expr */ yytestcase(yyruleno==116);
2770
+ /* (117) print ::= PRINT */ yytestcase(yyruleno==117);
2771
+ /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118);
2772
+ /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119);
2773
+ /* (120) direction ::= UP */ yytestcase(yyruleno==120);
2774
+ /* (121) direction ::= DOWN */ yytestcase(yyruleno==121);
2775
+ /* (122) direction ::= LEFT */ yytestcase(yyruleno==122);
2776
+ /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123);
2777
+ /* (124) attribute_list ::= alist */ yytestcase(yyruleno==124);
2778
+ /* (125) alist ::= */ yytestcase(yyruleno==125);
2779
+ /* (126) alist ::= alist attribute */ yytestcase(yyruleno==126);
2780
+ /* (127) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=127);
2781
+ /* (128) attribute ::= WITH withclause */ yytestcase(yyruleno==128);
2782
+ /* (129) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==129);
2783
+ /* (130) even ::= EVEN WITH */ yytestcase(yyruleno==130);
2784
+ /* (131) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=131);
2785
+ /* (132) withclause ::= withclause AND with */ yytestcase(yyruleno==132);
2786
+ /* (133) dashproperty ::= DOTTED */ yytestcase(yyruleno==133);
2787
+ /* (134) dashproperty ::= DASHED */ yytestcase(yyruleno==134);
2788
+ /* (135) colorproperty ::= FILL */ yytestcase(yyruleno==135);
2789
+ /* (136) colorproperty ::= COLOR */ yytestcase(yyruleno==136);
2790
+ /* (137) position ::= place */ yytestcase(yyruleno==137);
2791
+ /* (138) between ::= WAY BETWEEN */ yytestcase(yyruleno==138);
2792
+ /* (139) between ::= BETWEEN */ yytestcase(yyruleno==139);
2793
+ /* (140) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==140);
2794
+ /* (141) object ::= objectname */ yytestcase(yyruleno==141);
2795
+ /* (142) locproperty ::= X|Y */ yytestcase(yyruleno==142);
2796
+ /* (143) edge ::= EDGEPT */ yytestcase(yyruleno==143);
2797
+ /* (144) edge ::= TOP */ yytestcase(yyruleno==144);
2798
+ /* (145) edge ::= BOTTOM */ yytestcase(yyruleno==145);
2799
+ /* (146) edge ::= LEFT */ yytestcase(yyruleno==146);
2800
+ /* (147) edge ::= RIGHT */ yytestcase(yyruleno==147);
27702801
break;
27712802
/********** End reduce actions ************************************************/
27722803
};
27732804
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
27742805
yygoto = yyRuleInfoLhs[yyruleno];
@@ -2824,18 +2855,18 @@
28242855
){
28252856
pik_parserARG_FETCH
28262857
pik_parserCTX_FETCH
28272858
#define TOKEN yyminor
28282859
/************ Begin %syntax_error code ****************************************/
2829
-#line 462 "pikchr.y"
2860
+#line 466 "pikchr.y"
28302861
28312862
if( TOKEN.z && TOKEN.z[0] ){
28322863
pik_error(p, &TOKEN, "syntax error");
28332864
}else{
28342865
pik_error(p, 0, "syntax error");
28352866
}
2836
-#line 2861 "pikchr.c"
2867
+#line 2892 "pikchr.c"
28372868
/************ End %syntax_error code ******************************************/
28382869
pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
28392870
pik_parserCTX_STORE
28402871
}
28412872
@@ -3064,11 +3095,11 @@
30643095
#else
30653096
(void)iToken;
30663097
return 0;
30673098
#endif
30683099
}
3069
-#line 683 "pikchr.y"
3100
+#line 689 "pikchr.y"
30703101
30713102
30723103
30733104
/* Chart of the 140 official HTML color names with their
30743105
** corresponding RGB value.
@@ -4110,11 +4141,11 @@
41104141
buf[sizeof(buf)-1] = 0;
41114142
pik_append(p, buf, -1);
41124143
}
41134144
static void pik_append_dis(Pik *p, const char *z1, PNum v, const char *z2){
41144145
char buf[200];
4115
- snprintf(buf, sizeof(buf)-1, "%s%d%s", z1, (int)(p->rScale*v), z2);
4146
+ snprintf(buf, sizeof(buf)-1, "%s%g%s", z1, p->rScale*v, z2);
41164147
buf[sizeof(buf)-1] = 0;
41174148
pik_append(p, buf, -1);
41184149
}
41194150
static void pik_append_clr(Pik *p, const char *z1, PNum v, const char *z2){
41204151
char buf[200];
@@ -4152,11 +4183,10 @@
41524183
}else{
41534184
pik_append(p,"fill:none;",-1);
41544185
}
41554186
if( pElem->sw>0.0 && pElem->color>=0.0 ){
41564187
PNum sw = pElem->sw;
4157
- if( sw*p->rScale<1.0 ) sw = 1.1/p->rScale;
41584188
pik_append_dis(p, "stroke-width:", sw, ";");
41594189
pik_append_clr(p, "stroke:",pElem->color,";");
41604190
if( pElem->dotted>0.0 ){
41614191
PNum v = pElem->dotted;
41624192
if( sw<2.1/p->rScale ) sw = 2.1/p->rScale;
@@ -4263,21 +4293,25 @@
42634293
}else{
42644294
dy2 = 0.0;
42654295
}
42664296
for(i=0; i<n; i++){
42674297
PToken *t = &aTxt[i];
4298
+ PNum xtraFontScale = 1.0;
42684299
orig_y = y = pElem->ptAt.y;
42694300
if( t->eCode & TP_ABOVE2 ) y += dy2 + 3*dy;
42704301
if( t->eCode & TP_ABOVE ) y += dy2 + dy;
42714302
if( t->eCode & TP_BELOW ) y -= dy2 + dy;
42724303
if( t->eCode & TP_BELOW2 ) y -= dy2 + 3*dy;
4304
+ if( t->eCode & TP_BIG ) xtraFontScale *= 1.25;
4305
+ if( t->eCode & TP_SMALL ) xtraFontScale *= 0.8;
4306
+ if( t->eCode & TP_XTRA ) xtraFontScale *= xtraFontScale;
42734307
42744308
if( pBox!=0 ){
42754309
/* If pBox is not NULL, do not draw any <text>. Instead, just expand
42764310
** pBox to include the text */
4277
- PNum cw = pik_text_length(t)*p->charWidth;
4278
- PNum ch = p->charHeight*0.5;
4311
+ PNum cw = pik_text_length(t)*p->charWidth*xtraFontScale;
4312
+ PNum ch = p->charHeight*0.5*xtraFontScale;
42794313
if( t->eCode & TP_RJUST ){
42804314
pik_bbox_add_xy(pBox, x, y-ch);
42814315
pik_bbox_add_xy(pBox, x-cw, y+ch);
42824316
}else if( t->eCode & TP_LJUST ){
42834317
pik_bbox_add_xy(pBox, x, y-ch);
@@ -4305,12 +4339,13 @@
43054339
pik_append(p, " font-weight=\"bold\"", -1);
43064340
}
43074341
if( pElem->color>=0.0 ){
43084342
pik_append_clr(p, " fill=\"", pElem->color, "\"");
43094343
}
4310
- if( p->fontScale<=0.99 || p->fontScale>=1.01 ){
4311
- pik_append_num(p, " font-size=\"", p->fontScale*100.0);
4344
+ xtraFontScale *= p->fontScale;
4345
+ if( xtraFontScale<=0.99 || xtraFontScale>=1.01 ){
4346
+ pik_append_num(p, " font-size=\"", xtraFontScale*100.0);
43124347
pik_append(p, "%\"", 2);
43134348
}
43144349
if( (t->eCode & TP_ALIGN)!=0 && pElem->nPath>=2 ){
43154350
int n = pElem->nPath;
43164351
PNum dx = pElem->aPath[n-1].x - pElem->aPath[0].x;
@@ -5065,11 +5100,15 @@
50655100
case T_RJUST: iRes = (iRes&~TP_JMASK) | TP_RJUST; break;
50665101
case T_ABOVE: iRes = (iRes&~TP_VMASK) | TP_ABOVE; break;
50675102
case T_BELOW: iRes = (iRes&~TP_VMASK) | TP_BELOW; break;
50685103
case T_ITALIC: iRes |= TP_ITALIC; break;
50695104
case T_BOLD: iRes |= TP_BOLD; break;
5070
- case T_ALIGNED: iRes |= TP_ALIGN; break;
5105
+ case T_ALIGNED: iRes |= TP_ALIGN; break;
5106
+ case T_BIG: if( iRes & TP_BIG ) iRes |= TP_XTRA;
5107
+ else iRes = (iRes &~TP_SZMASK)|TP_BIG; break;
5108
+ case T_SMALL: if( iRes & TP_SMALL ) iRes |= TP_XTRA;
5109
+ else iRes = (iRes &~TP_SZMASK)|TP_SMALL; break;
50715110
}
50725111
return iRes;
50735112
}
50745113
50755114
/* Return an estimate of the actually number of displayed characters
@@ -5940,10 +5979,11 @@
59405979
{ "and", 3, T_AND, 0, 0 },
59415980
{ "as", 2, T_AS, 0, 0 },
59425981
{ "at", 2, T_AT, 0, 0 },
59435982
{ "below", 5, T_BELOW, 0, 0 },
59445983
{ "between", 7, T_BETWEEN, 0, 0 },
5984
+ { "big", 3, T_BIG, 0, 0 },
59455985
{ "bold", 4, T_BOLD, 0, 0 },
59465986
{ "bot", 3, T_EDGEPT, 0, CP_S },
59475987
{ "bottom", 6, T_BOTTOM, 0, CP_S },
59485988
{ "c", 1, T_EDGEPT, 0, CP_C },
59495989
{ "ccw", 3, T_CCW, 0, 0 },
@@ -5990,18 +6030,21 @@
59906030
{ "rjust", 5, T_RJUST, 0, 0 },
59916031
{ "s", 1, T_EDGEPT, 0, CP_S },
59926032
{ "same", 4, T_SAME, 0, 0 },
59936033
{ "se", 2, T_EDGEPT, 0, CP_SE },
59946034
{ "sin", 3, T_FUNC1, FN_SIN, 0 },
6035
+ { "small", 5, T_SMALL, 0, 0 },
59956036
{ "south", 5, T_EDGEPT, 0, CP_S },
59966037
{ "sqrt", 4, T_FUNC1, FN_SQRT, 0 },
59976038
{ "start", 5, T_START, 0, 0 },
59986039
{ "sw", 2, T_EDGEPT, 0, CP_SW },
59996040
{ "t", 1, T_TOP, 0, CP_N },
60006041
{ "the", 3, T_THE, 0, 0 },
60016042
{ "then", 4, T_THEN, 0, 0 },
6043
+ { "thick", 5, T_THICK, 0, 0 },
60026044
{ "thickness", 9, T_THICKNESS, 0, 0 },
6045
+ { "thin", 4, T_THIN, 0, 0 },
60036046
{ "to", 2, T_TO, 0, 0 },
60046047
{ "top", 3, T_TOP, 0, CP_N },
60056048
{ "until", 5, T_UNTIL, 0, 0 },
60066049
{ "up", 2, T_UP, DIR_UP, 0 },
60076050
{ "vertex", 6, T_VERTEX, 0, 0 },
@@ -6485,6 +6528,6 @@
64856528
printf("</body></html>\n");
64866529
return 0;
64876530
}
64886531
#endif /* PIKCHR_SHELL */
64896532
6490
-#line 6515 "pikchr.c"
6533
+#line 6558 "pikchr.c"
64916534
--- src/pikchr.c
+++ src/pikchr.c
@@ -179,10 +179,14 @@
179 #define TP_ABOVE 0x0008 /* Position text above PElem.ptAt */
180 #define TP_CENTER 0x0010 /* On the line */
181 #define TP_BELOW 0x0020 /* Position text below PElem.ptAt */
182 #define TP_BELOW2 0x0040 /* Position text way below PElem.ptAt */
183 #define TP_VMASK 0x007c /* Mask for text positioning flags */
 
 
 
 
184 #define TP_ITALIC 0x1000 /* Italic font */
185 #define TP_BOLD 0x2000 /* Bold font */
186 #define TP_FMASK 0x3000 /* Mask for font style */
187 #define TP_ALIGN 0x4000 /* Rotate to align with the line */
188
@@ -418,11 +422,11 @@
418 static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
419 static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
420 static void pik_compute_layout_settings(Pik*);
421
422
423 #line 449 "pikchr.c"
424 /**************** End of %include directives **********************************/
425 /* These constants specify the various numeric values for terminal symbols.
426 ***************** Begin token definitions *************************************/
427 #ifndef T_ID
428 #define T_ID 1
@@ -475,39 +479,43 @@
475 #define T_CCW 48
476 #define T_LARROW 49
477 #define T_RARROW 50
478 #define T_LRARROW 51
479 #define T_INVIS 52
480 #define T_CENTER 53
481 #define T_LJUST 54
482 #define T_RJUST 55
483 #define T_ABOVE 56
484 #define T_BELOW 57
485 #define T_ITALIC 58
486 #define T_BOLD 59
487 #define T_ALIGNED 60
488 #define T_LP 61
489 #define T_RP 62
490 #define T_HEADING 63
491 #define T_WAY 64
492 #define T_BETWEEN 65
493 #define T_THE 66
494 #define T_DOT_L 67
495 #define T_START 68
496 #define T_END 69
497 #define T_NTH 70
498 #define T_VERTEX 71
499 #define T_IN 72
500 #define T_DOT_U 73
501 #define T_LAST 74
502 #define T_NUMBER 75
503 #define T_FUNC1 76
504 #define T_FUNC2 77
505 #define T_X 78
506 #define T_Y 79
507 #define T_TOP 80
508 #define T_BOTTOM 81
 
 
 
 
509 #endif
510 /**************** End token definitions ***************************************/
511
512 /* The next sections is a series of control #defines.
513 ** various aspects of the generated parser.
@@ -563,21 +571,21 @@
563 #ifndef INTERFACE
564 # define INTERFACE 1
565 #endif
566 /************* Begin control #defines *****************************************/
567 #define YYCODETYPE unsigned char
568 #define YYNOCODE 115
569 #define YYACTIONTYPE unsigned short int
570 #define pik_parserTOKENTYPE PToken
571 typedef union {
572 int yyinit;
573 pik_parserTOKENTYPE yy0;
574 PElem* yy24;
575 PEList* yy42;
576 PPoint yy49;
577 int yy52;
578 PNum yy83;
579 } YYMINORTYPE;
580 #ifndef YYSTACKDEPTH
581 #define YYSTACKDEPTH 100
582 #endif
583 #define pik_parserARG_SDECL
@@ -590,21 +598,21 @@
590 #define pik_parserCTX_PARAM ,p
591 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
592 #define pik_parserCTX_STORE yypParser->p=p;
593 #define YYFALLBACK 1
594 #define YYNSTATE 153
595 #define YYNRULE 146
596 #define YYNRULE_WITH_ACTION 110
597 #define YYNTOKEN 82
598 #define YY_MAX_SHIFT 152
599 #define YY_MIN_SHIFTREDUCE 268
600 #define YY_MAX_SHIFTREDUCE 413
601 #define YY_ERROR_ACTION 414
602 #define YY_ACCEPT_ACTION 415
603 #define YY_NO_ACTION 416
604 #define YY_MIN_REDUCE 417
605 #define YY_MAX_REDUCE 562
606 /************* End control #defines *******************************************/
607 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
608
609 /* Define the yytestcase() macro to be a no-op if is not already defined
610 ** otherwise.
@@ -667,248 +675,247 @@
667 ** yy_reduce_ofst[] For each state, the offset into yy_action for
668 ** shifting non-terminals after a reduce.
669 ** yy_default[] Default action for each state.
670 **
671 *********** Begin parsing tables **********************************************/
672 #define YY_ACTTAB_COUNT (866)
673 static const YYACTIONTYPE yy_action[] = {
674 /* 0 */ 64, 137, 129, 19, 139, 135, 141, 99, 101, 100,
675 /* 10 */ 151, 109, 38, 35, 401, 402, 313, 516, 72, 113,
676 /* 20 */ 517, 518, 515, 386, 387, 388, 389, 301, 302, 10,
677 /* 30 */ 9, 305, 8, 51, 111, 41, 310, 27, 40, 28,
678 /* 40 */ 132, 313, 313, 313, 313, 399, 400, 314, 315, 316,
679 /* 50 */ 317, 318, 319, 363, 409, 142, 45, 46, 541, 541,
680 /* 60 */ 284, 423, 26, 65, 346, 129, 401, 402, 313, 12,
681 /* 70 */ 424, 101, 100, 151, 109, 48, 47, 412, 413, 401,
682 /* 80 */ 402, 313, 321, 321, 321, 321, 321, 321, 321, 321,
683 /* 90 */ 112, 112, 24, 313, 313, 313, 313, 399, 400, 22,
684 /* 100 */ 124, 122, 50, 49, 48, 47, 313, 313, 313, 313,
685 /* 110 */ 399, 400, 328, 1, 114, 114, 547, 39, 73, 67,
686 /* 120 */ 131, 130, 89, 126, 125, 74, 107, 362, 144, 143,
687 /* 130 */ 408, 408, 410, 411, 363, 370, 371, 45, 46, 52,
688 /* 140 */ 346, 82, 6, 408, 408, 346, 30, 401, 402, 313,
689 /* 150 */ 103, 151, 109, 7, 18, 17, 20, 457, 151, 109,
690 /* 160 */ 361, 32, 123, 405, 63, 124, 122, 50, 49, 48,
691 /* 170 */ 47, 396, 409, 395, 313, 313, 313, 313, 399, 400,
692 /* 180 */ 363, 409, 39, 45, 46, 127, 151, 109, 126, 125,
693 /* 190 */ 116, 346, 376, 377, 5, 412, 413, 71, 97, 286,
694 /* 200 */ 70, 11, 107, 94, 412, 413, 25, 107, 362, 144,
695 /* 210 */ 143, 408, 408, 363, 409, 327, 45, 46, 288, 18,
696 /* 220 */ 17, 350, 147, 406, 346, 495, 32, 123, 405, 50,
697 /* 230 */ 49, 48, 47, 297, 65, 121, 129, 412, 413, 120,
698 /* 240 */ 1, 461, 101, 100, 151, 109, 62, 131, 130, 89,
699 /* 250 */ 410, 411, 495, 107, 362, 144, 143, 95, 495, 410,
700 /* 260 */ 411, 363, 348, 148, 45, 46, 103, 151, 109, 417,
701 /* 270 */ 445, 404, 96, 1, 279, 280, 281, 68, 283, 25,
702 /* 280 */ 131, 130, 89, 378, 349, 149, 107, 362, 144, 143,
703 /* 290 */ 14, 15, 410, 411, 133, 16, 379, 380, 381, 383,
704 /* 300 */ 71, 106, 286, 70, 31, 386, 387, 388, 389, 53,
705 /* 310 */ 54, 401, 402, 313, 363, 62, 108, 45, 46, 55,
706 /* 320 */ 56, 5, 491, 151, 109, 346, 50, 49, 48, 47,
707 /* 330 */ 94, 2, 102, 375, 107, 362, 144, 143, 313, 313,
708 /* 340 */ 313, 313, 399, 400, 363, 374, 373, 45, 46, 58,
709 /* 350 */ 117, 115, 490, 151, 109, 346, 50, 49, 48, 47,
710 /* 360 */ 292, 110, 418, 425, 26, 338, 339, 363, 421, 43,
711 /* 370 */ 45, 46, 57, 372, 5, 408, 408, 60, 96, 152,
712 /* 380 */ 59, 415, 21, 94, 326, 44, 61, 107, 362, 144,
713 /* 390 */ 143, 363, 354, 352, 45, 46, 50, 49, 48, 47,
714 /* 400 */ 291, 353, 346, 347, 5, 75, 137, 150, 29, 139,
715 /* 410 */ 135, 141, 416, 94, 103, 151, 109, 107, 362, 144,
716 /* 420 */ 143, 363, 416, 416, 45, 46, 416, 5, 77, 416,
717 /* 430 */ 416, 416, 346, 416, 416, 78, 94, 103, 151, 109,
718 /* 440 */ 107, 362, 144, 143, 103, 151, 109, 416, 76, 137,
719 /* 450 */ 416, 3, 139, 135, 141, 416, 416, 103, 151, 109,
720 /* 460 */ 94, 416, 416, 416, 107, 362, 144, 143, 88, 137,
721 /* 470 */ 416, 416, 139, 135, 141, 95, 416, 103, 151, 109,
722 /* 480 */ 416, 4, 416, 416, 103, 151, 109, 416, 422, 416,
723 /* 490 */ 94, 65, 416, 129, 107, 362, 144, 143, 460, 101,
724 /* 500 */ 100, 151, 109, 65, 416, 129, 50, 49, 48, 47,
725 /* 510 */ 455, 101, 100, 151, 109, 409, 489, 151, 109, 65,
726 /* 520 */ 416, 129, 416, 90, 416, 416, 453, 101, 100, 151,
727 /* 530 */ 109, 13, 103, 151, 109, 65, 416, 129, 412, 413,
728 /* 540 */ 416, 84, 452, 101, 100, 151, 109, 65, 416, 129,
729 /* 550 */ 103, 151, 109, 66, 478, 101, 100, 151, 109, 65,
730 /* 560 */ 416, 129, 434, 416, 23, 416, 119, 101, 100, 151,
731 /* 570 */ 109, 416, 50, 49, 48, 47, 416, 65, 416, 129,
732 /* 580 */ 50, 49, 48, 47, 484, 101, 100, 151, 109, 65,
733 /* 590 */ 416, 129, 416, 410, 411, 37, 483, 101, 100, 151,
734 /* 600 */ 109, 65, 416, 129, 134, 151, 109, 416, 482, 101,
735 /* 610 */ 100, 151, 109, 65, 416, 129, 348, 148, 348, 148,
736 /* 620 */ 481, 101, 100, 151, 109, 50, 49, 48, 47, 65,
737 /* 630 */ 325, 129, 50, 49, 48, 47, 480, 101, 100, 151,
738 /* 640 */ 109, 65, 416, 129, 50, 49, 48, 47, 479, 101,
739 /* 650 */ 100, 151, 109, 65, 416, 129, 416, 416, 416, 33,
740 /* 660 */ 118, 101, 100, 151, 109, 416, 65, 128, 129, 146,
741 /* 670 */ 108, 95, 108, 449, 101, 100, 151, 109, 416, 416,
742 /* 680 */ 103, 151, 109, 365, 431, 416, 95, 416, 416, 69,
743 /* 690 */ 69, 98, 418, 425, 26, 103, 151, 109, 421, 431,
744 /* 700 */ 416, 416, 361, 416, 416, 534, 136, 151, 109, 152,
745 /* 710 */ 416, 416, 21, 419, 425, 26, 416, 416, 416, 421,
746 /* 720 */ 50, 49, 48, 47, 50, 49, 48, 47, 416, 416,
747 /* 730 */ 152, 416, 416, 21, 416, 36, 138, 151, 109, 34,
748 /* 740 */ 50, 49, 48, 47, 50, 49, 48, 47, 50, 49,
749 /* 750 */ 48, 47, 416, 79, 416, 42, 416, 416, 80, 416,
750 /* 760 */ 416, 91, 103, 151, 109, 416, 416, 103, 151, 109,
751 /* 770 */ 103, 151, 109, 81, 416, 416, 92, 416, 361, 93,
752 /* 780 */ 416, 416, 103, 151, 109, 103, 151, 109, 103, 151,
753 /* 790 */ 109, 140, 151, 109, 145, 151, 109, 416, 416, 83,
754 /* 800 */ 416, 416, 364, 494, 151, 109, 361, 85, 103, 151,
755 /* 810 */ 109, 86, 416, 416, 87, 416, 103, 151, 109, 416,
756 /* 820 */ 103, 151, 109, 103, 151, 109, 416, 509, 416, 416,
757 /* 830 */ 416, 508, 416, 416, 507, 416, 103, 151, 109, 416,
758 /* 840 */ 103, 151, 109, 103, 151, 109, 416, 416, 506, 416,
759 /* 850 */ 416, 104, 416, 416, 105, 416, 416, 103, 151, 109,
760 /* 860 */ 103, 151, 109, 103, 151, 109,
761 };
762 static const YYCODETYPE yy_lookahead[] = {
763 /* 0 */ 86, 87, 88, 114, 90, 91, 92, 93, 94, 95,
764 /* 10 */ 96, 97, 4, 5, 14, 15, 16, 87, 18, 88,
765 /* 20 */ 90, 91, 92, 23, 24, 25, 26, 27, 28, 29,
766 /* 30 */ 30, 31, 32, 33, 34, 87, 36, 89, 90, 91,
767 /* 40 */ 88, 41, 42, 43, 44, 45, 46, 47, 48, 49,
768 /* 50 */ 50, 51, 52, 1, 2, 88, 4, 5, 110, 111,
769 /* 60 */ 19, 84, 85, 86, 12, 88, 14, 15, 16, 19,
770 /* 70 */ 93, 94, 95, 96, 97, 6, 7, 25, 26, 14,
771 /* 80 */ 15, 16, 53, 54, 55, 56, 57, 58, 59, 60,
772 /* 90 */ 88, 88, 106, 41, 42, 43, 44, 45, 46, 108,
773 /* 100 */ 2, 3, 4, 5, 6, 7, 41, 42, 43, 44,
774 /* 110 */ 45, 46, 62, 61, 112, 113, 113, 19, 98, 40,
775 /* 120 */ 68, 69, 70, 25, 26, 98, 74, 75, 76, 77,
776 /* 130 */ 78, 79, 80, 81, 1, 78, 79, 4, 5, 35,
777 /* 140 */ 12, 86, 32, 78, 79, 12, 67, 14, 15, 16,
778 /* 150 */ 95, 96, 97, 32, 56, 57, 101, 95, 96, 97,
779 /* 160 */ 62, 63, 64, 65, 39, 2, 3, 4, 5, 6,
780 /* 170 */ 7, 33, 2, 33, 41, 42, 43, 44, 45, 46,
781 /* 180 */ 1, 2, 19, 4, 5, 95, 96, 97, 25, 26,
782 /* 190 */ 38, 12, 78, 79, 61, 25, 26, 18, 70, 20,
783 /* 200 */ 21, 39, 74, 70, 25, 26, 10, 74, 75, 76,
784 /* 210 */ 77, 78, 79, 1, 2, 62, 4, 5, 22, 56,
785 /* 220 */ 57, 20, 21, 65, 12, 40, 63, 64, 65, 4,
786 /* 230 */ 5, 6, 7, 8, 86, 66, 88, 25, 26, 64,
787 /* 240 */ 61, 93, 94, 95, 96, 97, 3, 68, 69, 70,
788 /* 250 */ 80, 81, 67, 74, 75, 76, 77, 86, 73, 80,
789 /* 260 */ 81, 1, 20, 21, 4, 5, 95, 96, 97, 0,
790 /* 270 */ 99, 65, 12, 61, 14, 15, 16, 40, 18, 10,
791 /* 280 */ 68, 69, 70, 1, 20, 21, 74, 75, 76, 77,
792 /* 290 */ 3, 3, 80, 81, 12, 3, 14, 15, 16, 17,
793 /* 300 */ 18, 67, 20, 21, 67, 23, 24, 25, 26, 3,
794 /* 310 */ 3, 14, 15, 16, 1, 72, 74, 4, 5, 3,
795 /* 320 */ 3, 61, 95, 96, 97, 12, 4, 5, 6, 7,
796 /* 330 */ 70, 13, 67, 62, 74, 75, 76, 77, 41, 42,
797 /* 340 */ 43, 44, 45, 46, 1, 62, 62, 4, 5, 3,
798 /* 350 */ 37, 38, 95, 96, 97, 12, 4, 5, 6, 7,
799 /* 360 */ 8, 82, 83, 84, 85, 68, 69, 1, 89, 61,
800 /* 370 */ 4, 5, 3, 62, 61, 78, 79, 3, 12, 100,
801 /* 380 */ 3, 102, 103, 70, 62, 61, 3, 74, 75, 76,
802 /* 390 */ 77, 1, 22, 22, 4, 5, 4, 5, 6, 7,
803 /* 400 */ 8, 22, 12, 12, 61, 86, 87, 73, 11, 90,
804 /* 410 */ 91, 92, 115, 70, 95, 96, 97, 74, 75, 76,
805 /* 420 */ 77, 1, 115, 115, 4, 5, 115, 61, 86, 115,
806 /* 430 */ 115, 115, 12, 115, 115, 86, 70, 95, 96, 97,
807 /* 440 */ 74, 75, 76, 77, 95, 96, 97, 115, 86, 87,
808 /* 450 */ 115, 61, 90, 91, 92, 115, 115, 95, 96, 97,
809 /* 460 */ 70, 115, 115, 115, 74, 75, 76, 77, 86, 87,
810 /* 470 */ 115, 115, 90, 91, 92, 86, 115, 95, 96, 97,
811 /* 480 */ 115, 61, 115, 115, 95, 96, 97, 115, 99, 115,
812 /* 490 */ 70, 86, 115, 88, 74, 75, 76, 77, 93, 94,
813 /* 500 */ 95, 96, 97, 86, 115, 88, 4, 5, 6, 7,
814 /* 510 */ 93, 94, 95, 96, 97, 2, 95, 96, 97, 86,
815 /* 520 */ 115, 88, 115, 86, 115, 115, 93, 94, 95, 96,
816 /* 530 */ 97, 29, 95, 96, 97, 86, 115, 88, 25, 26,
817 /* 540 */ 115, 86, 93, 94, 95, 96, 97, 86, 115, 88,
818 /* 550 */ 95, 96, 97, 40, 93, 94, 95, 96, 97, 86,
819 /* 560 */ 115, 88, 107, 115, 109, 115, 93, 94, 95, 96,
820 /* 570 */ 97, 115, 4, 5, 6, 7, 115, 86, 115, 88,
821 /* 580 */ 4, 5, 6, 7, 93, 94, 95, 96, 97, 86,
822 /* 590 */ 115, 88, 115, 80, 81, 19, 93, 94, 95, 96,
823 /* 600 */ 97, 86, 115, 88, 95, 96, 97, 115, 93, 94,
824 /* 610 */ 95, 96, 97, 86, 115, 88, 20, 21, 20, 21,
825 /* 620 */ 93, 94, 95, 96, 97, 4, 5, 6, 7, 86,
826 /* 630 */ 62, 88, 4, 5, 6, 7, 93, 94, 95, 96,
827 /* 640 */ 97, 86, 115, 88, 4, 5, 6, 7, 93, 94,
828 /* 650 */ 95, 96, 97, 86, 115, 88, 115, 115, 115, 19,
829 /* 660 */ 93, 94, 95, 96, 97, 115, 86, 71, 88, 71,
830 /* 670 */ 74, 86, 74, 93, 94, 95, 96, 97, 115, 115,
831 /* 680 */ 95, 96, 97, 62, 99, 115, 86, 115, 115, 104,
832 /* 690 */ 105, 82, 83, 84, 85, 95, 96, 97, 89, 99,
833 /* 700 */ 115, 115, 62, 115, 115, 105, 95, 96, 97, 100,
834 /* 710 */ 115, 115, 103, 83, 84, 85, 115, 115, 115, 89,
835 /* 720 */ 4, 5, 6, 7, 4, 5, 6, 7, 115, 115,
836 /* 730 */ 100, 115, 115, 103, 115, 19, 95, 96, 97, 19,
837 /* 740 */ 4, 5, 6, 7, 4, 5, 6, 7, 4, 5,
838 /* 750 */ 6, 7, 115, 86, 115, 19, 115, 115, 86, 115,
839 /* 760 */ 115, 86, 95, 96, 97, 115, 115, 95, 96, 97,
840 /* 770 */ 95, 96, 97, 86, 115, 115, 86, 115, 62, 86,
841 /* 780 */ 115, 115, 95, 96, 97, 95, 96, 97, 95, 96,
842 /* 790 */ 97, 95, 96, 97, 95, 96, 97, 115, 115, 86,
843 /* 800 */ 115, 115, 62, 95, 96, 97, 62, 86, 95, 96,
844 /* 810 */ 97, 86, 115, 115, 86, 115, 95, 96, 97, 115,
845 /* 820 */ 95, 96, 97, 95, 96, 97, 115, 86, 115, 115,
846 /* 830 */ 115, 86, 115, 115, 86, 115, 95, 96, 97, 115,
847 /* 840 */ 95, 96, 97, 95, 96, 97, 115, 115, 86, 115,
848 /* 850 */ 115, 86, 115, 115, 86, 115, 115, 95, 96, 97,
849 /* 860 */ 95, 96, 97, 95, 96, 97, 82, 82, 82, 82,
850 /* 870 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
851 /* 880 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
852 /* 890 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
853 /* 900 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
854 /* 910 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
855 /* 920 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
856 /* 930 */ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
857 /* 940 */ 82, 82, 82, 82, 82, 82, 82, 82,
858 };
859 #define YY_SHIFT_COUNT (152)
860 #define YY_SHIFT_MIN (0)
861 #define YY_SHIFT_MAX (744)
862 static const unsigned short int yy_shift_ofst[] = {
863 /* 0 */ 282, 52, 179, 133, 133, 133, 212, 212, 212, 212,
864 /* 10 */ 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
865 /* 20 */ 212, 260, 282, 0, 260, 282, 343, 313, 366, 366,
866 /* 30 */ 297, 65, 343, 343, 343, 390, 343, 343, 420, 343,
867 /* 40 */ 343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
868 /* 50 */ 343, 513, 128, 128, 128, 128, 128, 128, 128, 128,
869 /* 60 */ 128, 128, 128, 513, 98, 163, 170, 170, 170, 41,
870 /* 70 */ 866, 866, 866, 29, 29, 640, 716, 502, 322, 720,
871 /* 80 */ 568, 576, 225, 352, 392, 621, 736, 740, 744, 596,
872 /* 90 */ 628, 628, 628, 628, 598, 628, 185, 242, 196, 50,
873 /* 100 */ 79, 8, 57, 237, 69, 69, 114, 201, 264, 243,
874 /* 110 */ 269, 104, 110, 121, 125, 138, 140, 152, 162, 153,
875 /* 120 */ 158, 175, 169, 206, 287, 288, 292, 234, 306, 307,
876 /* 130 */ 316, 317, 265, 318, 271, 369, 283, 346, 284, 377,
877 /* 140 */ 311, 374, 265, 308, 324, 234, 383, 370, 371, 379,
878 /* 150 */ 391, 334, 397,
879 };
880 #define YY_REDUCE_COUNT (72)
881 #define YY_REDUCE_MIN (-111)
882 #define YY_REDUCE_MAX (768)
883 static const short yy_reduce_ofst[] = {
884 /* 0 */ 279, -86, -23, 319, 362, 382, 148, 405, 417, 433,
885 /* 10 */ 449, 461, 473, 491, 503, 515, 527, 543, 555, 567,
886 /* 20 */ 580, 585, 609, -52, 600, 630, 455, 55, 171, 389,
887 /* 30 */ -70, -70, 342, 349, 437, 667, 672, 675, 687, 690,
888 /* 40 */ 693, 713, 721, 725, 728, 741, 745, 748, 762, 765,
889 /* 50 */ 768, 2, 62, 90, 227, 257, 421, 509, 611, 641,
890 /* 60 */ 696, 699, 708, 3, -111, -111, -69, -48, -33, -14,
891 /* 70 */ -9, 20, 27,
892 };
893 static const YYACTIONTYPE yy_default[] = {
894 /* 0 */ 420, 414, 414, 414, 414, 414, 414, 414, 414, 414,
895 /* 10 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
896 /* 20 */ 414, 414, 420, 539, 414, 420, 540, 448, 414, 414,
897 /* 30 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
898 /* 40 */ 444, 414, 414, 414, 414, 414, 414, 414, 414, 414,
899 /* 50 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
900 /* 60 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 426,
901 /* 70 */ 438, 469, 469, 436, 458, 414, 414, 414, 414, 414,
902 /* 80 */ 414, 414, 447, 442, 439, 414, 414, 414, 414, 414,
903 /* 90 */ 473, 472, 471, 443, 414, 531, 427, 414, 414, 414,
904 /* 100 */ 485, 552, 414, 414, 505, 504, 414, 500, 414, 493,
905 /* 110 */ 414, 456, 414, 414, 543, 414, 414, 414, 414, 414,
906 /* 120 */ 414, 414, 414, 414, 414, 414, 414, 492, 414, 414,
907 /* 130 */ 414, 414, 486, 414, 414, 414, 414, 414, 414, 414,
908 /* 140 */ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
909 /* 150 */ 414, 556, 414,
910 };
911 /********** End of lemon-generated parsing tables *****************************/
912
913 /* The next table maps tokens (terminal symbols) into fallback tokens.
914 ** If a construct like the following:
@@ -977,18 +984,22 @@
977 0, /* CCW => nothing */
978 0, /* LARROW => nothing */
979 0, /* RARROW => nothing */
980 0, /* LRARROW => nothing */
981 0, /* INVIS => nothing */
 
 
982 0, /* CENTER => nothing */
983 0, /* LJUST => nothing */
984 0, /* RJUST => nothing */
985 0, /* ABOVE => nothing */
986 0, /* BELOW => nothing */
987 0, /* ITALIC => nothing */
988 0, /* BOLD => nothing */
989 0, /* ALIGNED => nothing */
 
 
990 0, /* LP => nothing */
991 0, /* RP => nothing */
992 0, /* HEADING => nothing */
993 0, /* WAY => nothing */
994 0, /* BETWEEN => nothing */
@@ -1147,72 +1158,76 @@
1147 /* 48 */ "CCW",
1148 /* 49 */ "LARROW",
1149 /* 50 */ "RARROW",
1150 /* 51 */ "LRARROW",
1151 /* 52 */ "INVIS",
1152 /* 53 */ "CENTER",
1153 /* 54 */ "LJUST",
1154 /* 55 */ "RJUST",
1155 /* 56 */ "ABOVE",
1156 /* 57 */ "BELOW",
1157 /* 58 */ "ITALIC",
1158 /* 59 */ "BOLD",
1159 /* 60 */ "ALIGNED",
1160 /* 61 */ "LP",
1161 /* 62 */ "RP",
1162 /* 63 */ "HEADING",
1163 /* 64 */ "WAY",
1164 /* 65 */ "BETWEEN",
1165 /* 66 */ "THE",
1166 /* 67 */ "DOT_L",
1167 /* 68 */ "START",
1168 /* 69 */ "END",
1169 /* 70 */ "NTH",
1170 /* 71 */ "VERTEX",
1171 /* 72 */ "IN",
1172 /* 73 */ "DOT_U",
1173 /* 74 */ "LAST",
1174 /* 75 */ "NUMBER",
1175 /* 76 */ "FUNC1",
1176 /* 77 */ "FUNC2",
1177 /* 78 */ "X",
1178 /* 79 */ "Y",
1179 /* 80 */ "TOP",
1180 /* 81 */ "BOTTOM",
1181 /* 82 */ "element_list",
1182 /* 83 */ "element",
1183 /* 84 */ "unnamed_element",
1184 /* 85 */ "basetype",
1185 /* 86 */ "expr",
1186 /* 87 */ "numproperty",
1187 /* 88 */ "edge",
1188 /* 89 */ "direction",
1189 /* 90 */ "dashproperty",
1190 /* 91 */ "colorproperty",
1191 /* 92 */ "locproperty",
1192 /* 93 */ "position",
1193 /* 94 */ "place",
1194 /* 95 */ "object",
1195 /* 96 */ "objectname",
1196 /* 97 */ "nth",
1197 /* 98 */ "textposition",
1198 /* 99 */ "rvalue",
1199 /* 100 */ "lvalue",
1200 /* 101 */ "even",
1201 /* 102 */ "document",
1202 /* 103 */ "print",
1203 /* 104 */ "prlist",
1204 /* 105 */ "pritem",
1205 /* 106 */ "prsep",
1206 /* 107 */ "attribute_list",
1207 /* 108 */ "savelist",
1208 /* 109 */ "alist",
1209 /* 110 */ "attribute",
1210 /* 111 */ "boolproperty",
1211 /* 112 */ "withclause",
1212 /* 113 */ "with",
1213 /* 114 */ "between",
 
 
 
 
1214 };
1215 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1216
1217 #ifndef NDEBUG
1218 /* For tracing reduce actions, the names of all rules are required.
@@ -1268,104 +1283,106 @@
1268 /* 47 */ "boolproperty ::= CCW",
1269 /* 48 */ "boolproperty ::= LARROW",
1270 /* 49 */ "boolproperty ::= RARROW",
1271 /* 50 */ "boolproperty ::= LRARROW",
1272 /* 51 */ "boolproperty ::= INVIS",
1273 /* 52 */ "textposition ::=",
1274 /* 53 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED",
1275 /* 54 */ "position ::= expr COMMA expr",
1276 /* 55 */ "position ::= place PLUS expr COMMA expr",
1277 /* 56 */ "position ::= place MINUS expr COMMA expr",
1278 /* 57 */ "position ::= place PLUS LP expr COMMA expr RP",
1279 /* 58 */ "position ::= place MINUS LP expr COMMA expr RP",
1280 /* 59 */ "position ::= LP position COMMA position RP",
1281 /* 60 */ "position ::= LP position RP",
1282 /* 61 */ "position ::= expr between position AND position",
1283 /* 62 */ "position ::= expr ABOVE position",
1284 /* 63 */ "position ::= expr BELOW position",
1285 /* 64 */ "position ::= expr LEFT OF position",
1286 /* 65 */ "position ::= expr RIGHT OF position",
1287 /* 66 */ "position ::= expr EDGEPT OF position",
1288 /* 67 */ "position ::= expr HEADING expr FROM position",
1289 /* 68 */ "place ::= object",
1290 /* 69 */ "place ::= object DOT_E edge",
1291 /* 70 */ "place ::= object DOT_L START",
1292 /* 71 */ "place ::= object DOT_L END",
1293 /* 72 */ "place ::= START OF object",
1294 /* 73 */ "place ::= END OF object",
1295 /* 74 */ "place ::= edge OF object",
1296 /* 75 */ "place ::= NTH VERTEX OF object",
1297 /* 76 */ "object ::= nth",
1298 /* 77 */ "object ::= nth OF|IN object",
1299 /* 78 */ "objectname ::= PLACENAME",
1300 /* 79 */ "objectname ::= objectname DOT_U PLACENAME",
1301 /* 80 */ "nth ::= NTH CLASSNAME",
1302 /* 81 */ "nth ::= NTH LAST CLASSNAME",
1303 /* 82 */ "nth ::= LAST CLASSNAME",
1304 /* 83 */ "nth ::= LAST",
1305 /* 84 */ "nth ::= NTH LB RB",
1306 /* 85 */ "nth ::= NTH LAST LB RB",
1307 /* 86 */ "nth ::= LAST LB RB",
1308 /* 87 */ "expr ::= expr PLUS expr",
1309 /* 88 */ "expr ::= expr MINUS expr",
1310 /* 89 */ "expr ::= expr STAR expr",
1311 /* 90 */ "expr ::= expr SLASH expr",
1312 /* 91 */ "expr ::= MINUS expr",
1313 /* 92 */ "expr ::= PLUS expr",
1314 /* 93 */ "expr ::= LP expr RP",
1315 /* 94 */ "expr ::= NUMBER",
1316 /* 95 */ "expr ::= ID",
1317 /* 96 */ "expr ::= FUNC1 LP expr RP",
1318 /* 97 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1319 /* 98 */ "expr ::= object DOT_L locproperty",
1320 /* 99 */ "expr ::= object DOT_L numproperty",
1321 /* 100 */ "expr ::= object DOT_L dashproperty",
1322 /* 101 */ "expr ::= object DOT_L colorproperty",
1323 /* 102 */ "expr ::= object DOT_E edge DOT_L X",
1324 /* 103 */ "expr ::= object DOT_E edge DOT_L Y",
1325 /* 104 */ "expr ::= LP locproperty OF object RP",
1326 /* 105 */ "expr ::= LP dashproperty OF object RP",
1327 /* 106 */ "expr ::= LP numproperty OF object RP",
1328 /* 107 */ "expr ::= LP colorproperty OF object RP",
1329 /* 108 */ "expr ::= NTH VERTEX OF object DOT_L X",
1330 /* 109 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1331 /* 110 */ "lvalue ::= ID",
1332 /* 111 */ "lvalue ::= FILL",
1333 /* 112 */ "lvalue ::= COLOR",
1334 /* 113 */ "lvalue ::= THICKNESS",
1335 /* 114 */ "rvalue ::= expr",
1336 /* 115 */ "print ::= PRINT",
1337 /* 116 */ "prlist ::= pritem",
1338 /* 117 */ "prlist ::= prlist prsep pritem",
1339 /* 118 */ "direction ::= UP",
1340 /* 119 */ "direction ::= DOWN",
1341 /* 120 */ "direction ::= LEFT",
1342 /* 121 */ "direction ::= RIGHT",
1343 /* 122 */ "attribute_list ::= alist",
1344 /* 123 */ "alist ::=",
1345 /* 124 */ "alist ::= alist attribute",
1346 /* 125 */ "attribute ::= boolproperty",
1347 /* 126 */ "attribute ::= WITH withclause",
1348 /* 127 */ "even ::= UNTIL EVEN WITH",
1349 /* 128 */ "even ::= EVEN WITH",
1350 /* 129 */ "withclause ::= with",
1351 /* 130 */ "withclause ::= withclause AND with",
1352 /* 131 */ "dashproperty ::= DOTTED",
1353 /* 132 */ "dashproperty ::= DASHED",
1354 /* 133 */ "colorproperty ::= FILL",
1355 /* 134 */ "colorproperty ::= COLOR",
1356 /* 135 */ "position ::= place",
1357 /* 136 */ "between ::= WAY BETWEEN",
1358 /* 137 */ "between ::= BETWEEN",
1359 /* 138 */ "between ::= OF THE WAY BETWEEN",
1360 /* 139 */ "object ::= objectname",
1361 /* 140 */ "locproperty ::= X|Y",
1362 /* 141 */ "edge ::= EDGEPT",
1363 /* 142 */ "edge ::= TOP",
1364 /* 143 */ "edge ::= BOTTOM",
1365 /* 144 */ "edge ::= LEFT",
1366 /* 145 */ "edge ::= RIGHT",
 
 
1367 };
1368 #endif /* NDEBUG */
1369
1370
1371 #if YYSTACKDEPTH<=0
@@ -1487,24 +1504,24 @@
1487 ** Note: during a reduce, the only symbols destroyed are those
1488 ** which appear on the RHS of the rule, but which are *not* used
1489 ** inside the C code.
1490 */
1491 /********* Begin destructor definitions ***************************************/
1492 case 82: /* element_list */
1493 {
1494 #line 438 "pikchr.y"
1495 pik_elist_free(p,(yypminor->yy42));
1496 #line 1521 "pikchr.c"
1497 }
1498 break;
1499 case 83: /* element */
1500 case 84: /* unnamed_element */
1501 case 85: /* basetype */
1502 {
1503 #line 440 "pikchr.y"
1504 pik_elem_free(p,(yypminor->yy24));
1505 #line 1530 "pikchr.c"
1506 }
1507 break;
1508 /********* End destructor definitions *****************************************/
1509 default: break; /* If no destructor action specified: do nothing */
1510 }
@@ -1718,14 +1735,14 @@
1718 #endif
1719 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1720 /* Here code is inserted which will execute if the parser
1721 ** stack every overflows */
1722 /******** Begin %stack_overflow code ******************************************/
1723 #line 469 "pikchr.y"
1724
1725 pik_error(p, 0, "parser stack overflow");
1726 #line 1751 "pikchr.c"
1727 /******** End %stack_overflow code ********************************************/
1728 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1729 pik_parserCTX_STORE
1730 }
1731
@@ -1793,156 +1810,158 @@
1793 }
1794
1795 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1796 ** of that rule */
1797 static const YYCODETYPE yyRuleInfoLhs[] = {
1798 102, /* (0) document ::= element_list */
1799 82, /* (1) element_list ::= element */
1800 82, /* (2) element_list ::= element_list EOL element */
1801 83, /* (3) element ::= */
1802 83, /* (4) element ::= direction */
1803 83, /* (5) element ::= lvalue ASSIGN rvalue */
1804 83, /* (6) element ::= PLACENAME COLON unnamed_element */
1805 83, /* (7) element ::= PLACENAME COLON position */
1806 83, /* (8) element ::= unnamed_element */
1807 83, /* (9) element ::= print prlist */
1808 99, /* (10) rvalue ::= PLACENAME */
1809 105, /* (11) pritem ::= FILL */
1810 105, /* (12) pritem ::= COLOR */
1811 105, /* (13) pritem ::= THICKNESS */
1812 105, /* (14) pritem ::= rvalue */
1813 105, /* (15) pritem ::= STRING */
1814 106, /* (16) prsep ::= COMMA */
1815 84, /* (17) unnamed_element ::= basetype attribute_list */
1816 85, /* (18) basetype ::= CLASSNAME */
1817 85, /* (19) basetype ::= STRING textposition */
1818 85, /* (20) basetype ::= LB savelist element_list RB */
1819 108, /* (21) savelist ::= */
1820 107, /* (22) attribute_list ::= expr */
1821 107, /* (23) attribute_list ::= expr PERCENT */
1822 110, /* (24) attribute ::= numproperty expr PERCENT */
1823 110, /* (25) attribute ::= numproperty expr */
1824 110, /* (26) attribute ::= dashproperty expr */
1825 110, /* (27) attribute ::= dashproperty */
1826 110, /* (28) attribute ::= colorproperty rvalue */
1827 110, /* (29) attribute ::= direction expr PERCENT */
1828 110, /* (30) attribute ::= direction expr */
1829 110, /* (31) attribute ::= direction */
1830 110, /* (32) attribute ::= direction even position */
1831 110, /* (33) attribute ::= CLOSE */
1832 110, /* (34) attribute ::= CHOP */
1833 110, /* (35) attribute ::= FROM position */
1834 110, /* (36) attribute ::= TO position */
1835 110, /* (37) attribute ::= THEN */
1836 110, /* (38) attribute ::= AT position */
1837 110, /* (39) attribute ::= SAME */
1838 110, /* (40) attribute ::= SAME AS object */
1839 110, /* (41) attribute ::= STRING textposition */
1840 110, /* (42) attribute ::= FIT */
1841 113, /* (43) with ::= DOT_E edge AT position */
1842 113, /* (44) with ::= edge AT position */
1843 87, /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1844 111, /* (46) boolproperty ::= CW */
1845 111, /* (47) boolproperty ::= CCW */
1846 111, /* (48) boolproperty ::= LARROW */
1847 111, /* (49) boolproperty ::= RARROW */
1848 111, /* (50) boolproperty ::= LRARROW */
1849 111, /* (51) boolproperty ::= INVIS */
1850 98, /* (52) textposition ::= */
1851 98, /* (53) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
1852 93, /* (54) position ::= expr COMMA expr */
1853 93, /* (55) position ::= place PLUS expr COMMA expr */
1854 93, /* (56) position ::= place MINUS expr COMMA expr */
1855 93, /* (57) position ::= place PLUS LP expr COMMA expr RP */
1856 93, /* (58) position ::= place MINUS LP expr COMMA expr RP */
1857 93, /* (59) position ::= LP position COMMA position RP */
1858 93, /* (60) position ::= LP position RP */
1859 93, /* (61) position ::= expr between position AND position */
1860 93, /* (62) position ::= expr ABOVE position */
1861 93, /* (63) position ::= expr BELOW position */
1862 93, /* (64) position ::= expr LEFT OF position */
1863 93, /* (65) position ::= expr RIGHT OF position */
1864 93, /* (66) position ::= expr EDGEPT OF position */
1865 93, /* (67) position ::= expr HEADING expr FROM position */
1866 94, /* (68) place ::= object */
1867 94, /* (69) place ::= object DOT_E edge */
1868 94, /* (70) place ::= object DOT_L START */
1869 94, /* (71) place ::= object DOT_L END */
1870 94, /* (72) place ::= START OF object */
1871 94, /* (73) place ::= END OF object */
1872 94, /* (74) place ::= edge OF object */
1873 94, /* (75) place ::= NTH VERTEX OF object */
1874 95, /* (76) object ::= nth */
1875 95, /* (77) object ::= nth OF|IN object */
1876 96, /* (78) objectname ::= PLACENAME */
1877 96, /* (79) objectname ::= objectname DOT_U PLACENAME */
1878 97, /* (80) nth ::= NTH CLASSNAME */
1879 97, /* (81) nth ::= NTH LAST CLASSNAME */
1880 97, /* (82) nth ::= LAST CLASSNAME */
1881 97, /* (83) nth ::= LAST */
1882 97, /* (84) nth ::= NTH LB RB */
1883 97, /* (85) nth ::= NTH LAST LB RB */
1884 97, /* (86) nth ::= LAST LB RB */
1885 86, /* (87) expr ::= expr PLUS expr */
1886 86, /* (88) expr ::= expr MINUS expr */
1887 86, /* (89) expr ::= expr STAR expr */
1888 86, /* (90) expr ::= expr SLASH expr */
1889 86, /* (91) expr ::= MINUS expr */
1890 86, /* (92) expr ::= PLUS expr */
1891 86, /* (93) expr ::= LP expr RP */
1892 86, /* (94) expr ::= NUMBER */
1893 86, /* (95) expr ::= ID */
1894 86, /* (96) expr ::= FUNC1 LP expr RP */
1895 86, /* (97) expr ::= FUNC2 LP expr COMMA expr RP */
1896 86, /* (98) expr ::= object DOT_L locproperty */
1897 86, /* (99) expr ::= object DOT_L numproperty */
1898 86, /* (100) expr ::= object DOT_L dashproperty */
1899 86, /* (101) expr ::= object DOT_L colorproperty */
1900 86, /* (102) expr ::= object DOT_E edge DOT_L X */
1901 86, /* (103) expr ::= object DOT_E edge DOT_L Y */
1902 86, /* (104) expr ::= LP locproperty OF object RP */
1903 86, /* (105) expr ::= LP dashproperty OF object RP */
1904 86, /* (106) expr ::= LP numproperty OF object RP */
1905 86, /* (107) expr ::= LP colorproperty OF object RP */
1906 86, /* (108) expr ::= NTH VERTEX OF object DOT_L X */
1907 86, /* (109) expr ::= NTH VERTEX OF object DOT_L Y */
1908 100, /* (110) lvalue ::= ID */
1909 100, /* (111) lvalue ::= FILL */
1910 100, /* (112) lvalue ::= COLOR */
1911 100, /* (113) lvalue ::= THICKNESS */
1912 99, /* (114) rvalue ::= expr */
1913 103, /* (115) print ::= PRINT */
1914 104, /* (116) prlist ::= pritem */
1915 104, /* (117) prlist ::= prlist prsep pritem */
1916 89, /* (118) direction ::= UP */
1917 89, /* (119) direction ::= DOWN */
1918 89, /* (120) direction ::= LEFT */
1919 89, /* (121) direction ::= RIGHT */
1920 107, /* (122) attribute_list ::= alist */
1921 109, /* (123) alist ::= */
1922 109, /* (124) alist ::= alist attribute */
1923 110, /* (125) attribute ::= boolproperty */
1924 110, /* (126) attribute ::= WITH withclause */
1925 101, /* (127) even ::= UNTIL EVEN WITH */
1926 101, /* (128) even ::= EVEN WITH */
1927 112, /* (129) withclause ::= with */
1928 112, /* (130) withclause ::= withclause AND with */
1929 90, /* (131) dashproperty ::= DOTTED */
1930 90, /* (132) dashproperty ::= DASHED */
1931 91, /* (133) colorproperty ::= FILL */
1932 91, /* (134) colorproperty ::= COLOR */
1933 93, /* (135) position ::= place */
1934 114, /* (136) between ::= WAY BETWEEN */
1935 114, /* (137) between ::= BETWEEN */
1936 114, /* (138) between ::= OF THE WAY BETWEEN */
1937 95, /* (139) object ::= objectname */
1938 92, /* (140) locproperty ::= X|Y */
1939 88, /* (141) edge ::= EDGEPT */
1940 88, /* (142) edge ::= TOP */
1941 88, /* (143) edge ::= BOTTOM */
1942 88, /* (144) edge ::= LEFT */
1943 88, /* (145) edge ::= RIGHT */
 
 
1944 };
1945
1946 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
1947 ** of symbols on the right-hand side of that rule. */
1948 static const signed char yyRuleInfoNRhs[] = {
@@ -1996,104 +2015,106 @@
1996 -1, /* (47) boolproperty ::= CCW */
1997 -1, /* (48) boolproperty ::= LARROW */
1998 -1, /* (49) boolproperty ::= RARROW */
1999 -1, /* (50) boolproperty ::= LRARROW */
2000 -1, /* (51) boolproperty ::= INVIS */
2001 0, /* (52) textposition ::= */
2002 -2, /* (53) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
2003 -3, /* (54) position ::= expr COMMA expr */
2004 -5, /* (55) position ::= place PLUS expr COMMA expr */
2005 -5, /* (56) position ::= place MINUS expr COMMA expr */
2006 -7, /* (57) position ::= place PLUS LP expr COMMA expr RP */
2007 -7, /* (58) position ::= place MINUS LP expr COMMA expr RP */
2008 -5, /* (59) position ::= LP position COMMA position RP */
2009 -3, /* (60) position ::= LP position RP */
2010 -5, /* (61) position ::= expr between position AND position */
2011 -3, /* (62) position ::= expr ABOVE position */
2012 -3, /* (63) position ::= expr BELOW position */
2013 -4, /* (64) position ::= expr LEFT OF position */
2014 -4, /* (65) position ::= expr RIGHT OF position */
2015 -4, /* (66) position ::= expr EDGEPT OF position */
2016 -5, /* (67) position ::= expr HEADING expr FROM position */
2017 -1, /* (68) place ::= object */
2018 -3, /* (69) place ::= object DOT_E edge */
2019 -3, /* (70) place ::= object DOT_L START */
2020 -3, /* (71) place ::= object DOT_L END */
2021 -3, /* (72) place ::= START OF object */
2022 -3, /* (73) place ::= END OF object */
2023 -3, /* (74) place ::= edge OF object */
2024 -4, /* (75) place ::= NTH VERTEX OF object */
2025 -1, /* (76) object ::= nth */
2026 -3, /* (77) object ::= nth OF|IN object */
2027 -1, /* (78) objectname ::= PLACENAME */
2028 -3, /* (79) objectname ::= objectname DOT_U PLACENAME */
2029 -2, /* (80) nth ::= NTH CLASSNAME */
2030 -3, /* (81) nth ::= NTH LAST CLASSNAME */
2031 -2, /* (82) nth ::= LAST CLASSNAME */
2032 -1, /* (83) nth ::= LAST */
2033 -3, /* (84) nth ::= NTH LB RB */
2034 -4, /* (85) nth ::= NTH LAST LB RB */
2035 -3, /* (86) nth ::= LAST LB RB */
2036 -3, /* (87) expr ::= expr PLUS expr */
2037 -3, /* (88) expr ::= expr MINUS expr */
2038 -3, /* (89) expr ::= expr STAR expr */
2039 -3, /* (90) expr ::= expr SLASH expr */
2040 -2, /* (91) expr ::= MINUS expr */
2041 -2, /* (92) expr ::= PLUS expr */
2042 -3, /* (93) expr ::= LP expr RP */
2043 -1, /* (94) expr ::= NUMBER */
2044 -1, /* (95) expr ::= ID */
2045 -4, /* (96) expr ::= FUNC1 LP expr RP */
2046 -6, /* (97) expr ::= FUNC2 LP expr COMMA expr RP */
2047 -3, /* (98) expr ::= object DOT_L locproperty */
2048 -3, /* (99) expr ::= object DOT_L numproperty */
2049 -3, /* (100) expr ::= object DOT_L dashproperty */
2050 -3, /* (101) expr ::= object DOT_L colorproperty */
2051 -5, /* (102) expr ::= object DOT_E edge DOT_L X */
2052 -5, /* (103) expr ::= object DOT_E edge DOT_L Y */
2053 -5, /* (104) expr ::= LP locproperty OF object RP */
2054 -5, /* (105) expr ::= LP dashproperty OF object RP */
2055 -5, /* (106) expr ::= LP numproperty OF object RP */
2056 -5, /* (107) expr ::= LP colorproperty OF object RP */
2057 -6, /* (108) expr ::= NTH VERTEX OF object DOT_L X */
2058 -6, /* (109) expr ::= NTH VERTEX OF object DOT_L Y */
2059 -1, /* (110) lvalue ::= ID */
2060 -1, /* (111) lvalue ::= FILL */
2061 -1, /* (112) lvalue ::= COLOR */
2062 -1, /* (113) lvalue ::= THICKNESS */
2063 -1, /* (114) rvalue ::= expr */
2064 -1, /* (115) print ::= PRINT */
2065 -1, /* (116) prlist ::= pritem */
2066 -3, /* (117) prlist ::= prlist prsep pritem */
2067 -1, /* (118) direction ::= UP */
2068 -1, /* (119) direction ::= DOWN */
2069 -1, /* (120) direction ::= LEFT */
2070 -1, /* (121) direction ::= RIGHT */
2071 -1, /* (122) attribute_list ::= alist */
2072 0, /* (123) alist ::= */
2073 -2, /* (124) alist ::= alist attribute */
2074 -1, /* (125) attribute ::= boolproperty */
2075 -2, /* (126) attribute ::= WITH withclause */
2076 -3, /* (127) even ::= UNTIL EVEN WITH */
2077 -2, /* (128) even ::= EVEN WITH */
2078 -1, /* (129) withclause ::= with */
2079 -3, /* (130) withclause ::= withclause AND with */
2080 -1, /* (131) dashproperty ::= DOTTED */
2081 -1, /* (132) dashproperty ::= DASHED */
2082 -1, /* (133) colorproperty ::= FILL */
2083 -1, /* (134) colorproperty ::= COLOR */
2084 -1, /* (135) position ::= place */
2085 -2, /* (136) between ::= WAY BETWEEN */
2086 -1, /* (137) between ::= BETWEEN */
2087 -4, /* (138) between ::= OF THE WAY BETWEEN */
2088 -1, /* (139) object ::= objectname */
2089 -1, /* (140) locproperty ::= X|Y */
2090 -1, /* (141) edge ::= EDGEPT */
2091 -1, /* (142) edge ::= TOP */
2092 -1, /* (143) edge ::= BOTTOM */
2093 -1, /* (144) edge ::= LEFT */
2094 -1, /* (145) edge ::= RIGHT */
 
 
2095 };
2096
2097 static void yy_accept(yyParser*); /* Forward Declaration */
2098
2099 /*
@@ -2180,595 +2201,605 @@
2180 ** break;
2181 */
2182 /********** Begin reduce actions **********************************************/
2183 YYMINORTYPE yylhsminor;
2184 case 0: /* document ::= element_list */
2185 #line 473 "pikchr.y"
2186 {pik_render(p,yymsp[0].minor.yy42);}
2187 #line 2212 "pikchr.c"
2188 break;
2189 case 1: /* element_list ::= element */
2190 #line 476 "pikchr.y"
2191 { yylhsminor.yy42 = pik_elist_append(p,0,yymsp[0].minor.yy24); }
2192 #line 2217 "pikchr.c"
2193 yymsp[0].minor.yy42 = yylhsminor.yy42;
2194 break;
2195 case 2: /* element_list ::= element_list EOL element */
2196 #line 478 "pikchr.y"
2197 { yylhsminor.yy42 = pik_elist_append(p,yymsp[-2].minor.yy42,yymsp[0].minor.yy24); }
2198 #line 2223 "pikchr.c"
2199 yymsp[-2].minor.yy42 = yylhsminor.yy42;
2200 break;
2201 case 3: /* element ::= */
2202 #line 481 "pikchr.y"
2203 { yymsp[1].minor.yy24 = 0; }
2204 #line 2229 "pikchr.c"
2205 break;
2206 case 4: /* element ::= direction */
2207 #line 482 "pikchr.y"
2208 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy24=0; }
2209 #line 2234 "pikchr.c"
2210 yymsp[0].minor.yy24 = yylhsminor.yy24;
2211 break;
2212 case 5: /* element ::= lvalue ASSIGN rvalue */
2213 #line 483 "pikchr.y"
2214 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy83,&yymsp[-1].minor.yy0); yylhsminor.yy24=0;}
2215 #line 2240 "pikchr.c"
2216 yymsp[-2].minor.yy24 = yylhsminor.yy24;
2217 break;
2218 case 6: /* element ::= PLACENAME COLON unnamed_element */
2219 #line 485 "pikchr.y"
2220 { yylhsminor.yy24 = yymsp[0].minor.yy24; pik_elem_setname(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0); }
2221 #line 2246 "pikchr.c"
2222 yymsp[-2].minor.yy24 = yylhsminor.yy24;
2223 break;
2224 case 7: /* element ::= PLACENAME COLON position */
2225 #line 487 "pikchr.y"
2226 { yylhsminor.yy24 = pik_elem_new(p,0,0,0);
2227 if(yylhsminor.yy24){ yylhsminor.yy24->ptAt = yymsp[0].minor.yy49; pik_elem_setname(p,yylhsminor.yy24,&yymsp[-2].minor.yy0); }}
2228 #line 2253 "pikchr.c"
2229 yymsp[-2].minor.yy24 = yylhsminor.yy24;
2230 break;
2231 case 8: /* element ::= unnamed_element */
2232 #line 489 "pikchr.y"
2233 {yylhsminor.yy24 = yymsp[0].minor.yy24;}
2234 #line 2259 "pikchr.c"
2235 yymsp[0].minor.yy24 = yylhsminor.yy24;
2236 break;
2237 case 9: /* element ::= print prlist */
2238 #line 490 "pikchr.y"
2239 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy24=0;}
2240 #line 2265 "pikchr.c"
2241 break;
2242 case 10: /* rvalue ::= PLACENAME */
2243 #line 501 "pikchr.y"
2244 {yylhsminor.yy83 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2245 #line 2270 "pikchr.c"
2246 yymsp[0].minor.yy83 = yylhsminor.yy83;
2247 break;
2248 case 11: /* pritem ::= FILL */
2249 case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
2250 case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
2251 #line 506 "pikchr.y"
2252 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2253 #line 2278 "pikchr.c"
2254 break;
2255 case 14: /* pritem ::= rvalue */
2256 #line 509 "pikchr.y"
2257 {pik_append_num(p,"",yymsp[0].minor.yy83);}
2258 #line 2283 "pikchr.c"
2259 break;
2260 case 15: /* pritem ::= STRING */
2261 #line 510 "pikchr.y"
2262 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2263 #line 2288 "pikchr.c"
2264 break;
2265 case 16: /* prsep ::= COMMA */
2266 #line 511 "pikchr.y"
2267 {pik_append(p, " ", 1);}
2268 #line 2293 "pikchr.c"
2269 break;
2270 case 17: /* unnamed_element ::= basetype attribute_list */
2271 #line 514 "pikchr.y"
2272 {yylhsminor.yy24 = yymsp[-1].minor.yy24; pik_after_adding_attributes(p,yylhsminor.yy24);}
2273 #line 2298 "pikchr.c"
2274 yymsp[-1].minor.yy24 = yylhsminor.yy24;
2275 break;
2276 case 18: /* basetype ::= CLASSNAME */
2277 #line 516 "pikchr.y"
2278 {yylhsminor.yy24 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2279 #line 2304 "pikchr.c"
2280 yymsp[0].minor.yy24 = yylhsminor.yy24;
2281 break;
2282 case 19: /* basetype ::= STRING textposition */
2283 #line 518 "pikchr.y"
2284 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy52; yylhsminor.yy24 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2285 #line 2310 "pikchr.c"
2286 yymsp[-1].minor.yy24 = yylhsminor.yy24;
2287 break;
2288 case 20: /* basetype ::= LB savelist element_list RB */
2289 #line 520 "pikchr.y"
2290 { p->list = yymsp[-2].minor.yy42; yymsp[-3].minor.yy24 = pik_elem_new(p,0,0,yymsp[-1].minor.yy42); if(yymsp[-3].minor.yy24) yymsp[-3].minor.yy24->errTok = yymsp[0].minor.yy0; }
2291 #line 2316 "pikchr.c"
2292 break;
2293 case 21: /* savelist ::= */
2294 #line 525 "pikchr.y"
2295 {yymsp[1].minor.yy42 = p->list; p->list = 0;}
2296 #line 2321 "pikchr.c"
2297 break;
2298 case 22: /* attribute_list ::= expr */
2299 #line 532 "pikchr.y"
2300 { pik_add_direction(p,0,&yymsp[0].minor.yy83,0);}
2301 #line 2326 "pikchr.c"
2302 break;
2303 case 23: /* attribute_list ::= expr PERCENT */
2304 #line 533 "pikchr.y"
2305 { pik_add_direction(p,0,&yymsp[-1].minor.yy83,1);}
2306 #line 2331 "pikchr.c"
2307 break;
2308 case 24: /* attribute ::= numproperty expr PERCENT */
2309 #line 538 "pikchr.y"
2310 { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy83/100.0); }
2311 #line 2336 "pikchr.c"
2312 break;
2313 case 25: /* attribute ::= numproperty expr */
2314 case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
2315 #line 539 "pikchr.y"
2316 { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy83,0.0); }
2317 #line 2342 "pikchr.c"
2318 break;
2319 case 26: /* attribute ::= dashproperty expr */
2320 #line 540 "pikchr.y"
2321 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83); }
2322 #line 2347 "pikchr.c"
2323 break;
2324 case 27: /* attribute ::= dashproperty */
2325 #line 541 "pikchr.y"
2326 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2327 #line 2352 "pikchr.c"
2328 break;
2329 case 29: /* attribute ::= direction expr PERCENT */
2330 #line 544 "pikchr.y"
2331 { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy83,1);}
2332 #line 2357 "pikchr.c"
2333 break;
2334 case 30: /* attribute ::= direction expr */
2335 #line 545 "pikchr.y"
2336 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83,0);}
2337 #line 2362 "pikchr.c"
2338 break;
2339 case 31: /* attribute ::= direction */
2340 #line 546 "pikchr.y"
2341 { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
2342 #line 2367 "pikchr.c"
2343 break;
2344 case 32: /* attribute ::= direction even position */
2345 #line 547 "pikchr.y"
2346 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49);}
2347 #line 2372 "pikchr.c"
2348 break;
2349 case 33: /* attribute ::= CLOSE */
2350 #line 548 "pikchr.y"
2351 { pik_close_path(p,&yymsp[0].minor.yy0); }
2352 #line 2377 "pikchr.c"
2353 break;
2354 case 34: /* attribute ::= CHOP */
2355 #line 549 "pikchr.y"
2356 { p->cur->bChop = 1; }
2357 #line 2382 "pikchr.c"
2358 break;
2359 case 35: /* attribute ::= FROM position */
2360 #line 550 "pikchr.y"
2361 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); }
2362 #line 2387 "pikchr.c"
2363 break;
2364 case 36: /* attribute ::= TO position */
2365 #line 551 "pikchr.y"
2366 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); }
2367 #line 2392 "pikchr.c"
2368 break;
2369 case 37: /* attribute ::= THEN */
2370 #line 552 "pikchr.y"
2371 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2372 #line 2397 "pikchr.c"
2373 break;
2374 case 38: /* attribute ::= AT position */
2375 #line 554 "pikchr.y"
2376 { pik_set_at(p,0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); }
2377 #line 2402 "pikchr.c"
2378 break;
2379 case 39: /* attribute ::= SAME */
2380 #line 556 "pikchr.y"
2381 {pik_same(p,0,&yymsp[0].minor.yy0);}
2382 #line 2407 "pikchr.c"
2383 break;
2384 case 40: /* attribute ::= SAME AS object */
2385 #line 557 "pikchr.y"
2386 {pik_same(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
2387 #line 2412 "pikchr.c"
2388 break;
2389 case 41: /* attribute ::= STRING textposition */
2390 #line 558 "pikchr.y"
2391 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy52);}
2392 #line 2417 "pikchr.c"
2393 break;
2394 case 42: /* attribute ::= FIT */
2395 #line 559 "pikchr.y"
2396 {pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2397 #line 2422 "pikchr.c"
2398 break;
2399 case 43: /* with ::= DOT_E edge AT position */
2400 case 44: /* with ::= edge AT position */ yytestcase(yyruleno==44);
2401 #line 566 "pikchr.y"
2402 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); }
2403 #line 2428 "pikchr.c"
2404 break;
2405 case 45: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2406 #line 570 "pikchr.y"
2407 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2408 #line 2433 "pikchr.c"
2409 yymsp[0].minor.yy0 = yylhsminor.yy0;
2410 break;
2411 case 46: /* boolproperty ::= CW */
2412 #line 581 "pikchr.y"
2413 {p->cur->cw = 1;}
2414 #line 2439 "pikchr.c"
2415 break;
2416 case 47: /* boolproperty ::= CCW */
2417 #line 582 "pikchr.y"
2418 {p->cur->cw = 0;}
2419 #line 2444 "pikchr.c"
2420 break;
2421 case 48: /* boolproperty ::= LARROW */
2422 #line 583 "pikchr.y"
2423 {p->cur->larrow=1; p->cur->rarrow=0; }
2424 #line 2449 "pikchr.c"
2425 break;
2426 case 49: /* boolproperty ::= RARROW */
2427 #line 584 "pikchr.y"
2428 {p->cur->larrow=0; p->cur->rarrow=1; }
2429 #line 2454 "pikchr.c"
2430 break;
2431 case 50: /* boolproperty ::= LRARROW */
2432 #line 585 "pikchr.y"
2433 {p->cur->larrow=1; p->cur->rarrow=1; }
2434 #line 2459 "pikchr.c"
2435 break;
2436 case 51: /* boolproperty ::= INVIS */
2437 #line 586 "pikchr.y"
2438 {p->cur->sw = 0.0;}
2439 #line 2464 "pikchr.c"
2440 break;
2441 case 52: /* textposition ::= */
2442 #line 588 "pikchr.y"
2443 {yymsp[1].minor.yy52 = 0;}
2444 #line 2469 "pikchr.c"
2445 break;
2446 case 53: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
2447 #line 591 "pikchr.y"
2448 {yylhsminor.yy52 = pik_text_position(p,yymsp[-1].minor.yy52,&yymsp[0].minor.yy0);}
2449 #line 2474 "pikchr.c"
2450 yymsp[-1].minor.yy52 = yylhsminor.yy52;
 
 
 
 
2451 break;
2452 case 54: /* position ::= expr COMMA expr */
2453 #line 594 "pikchr.y"
2454 {yylhsminor.yy49.x=yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[0].minor.yy83;}
2455 #line 2480 "pikchr.c"
2456 yymsp[-2].minor.yy49 = yylhsminor.yy49;
2457 break;
2458 case 55: /* position ::= place PLUS expr COMMA expr */
2459 #line 596 "pikchr.y"
2460 {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x+yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y+yymsp[0].minor.yy83;}
2461 #line 2486 "pikchr.c"
2462 yymsp[-4].minor.yy49 = yylhsminor.yy49;
2463 break;
2464 case 56: /* position ::= place MINUS expr COMMA expr */
2465 #line 597 "pikchr.y"
2466 {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x-yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y-yymsp[0].minor.yy83;}
2467 #line 2492 "pikchr.c"
2468 yymsp[-4].minor.yy49 = yylhsminor.yy49;
2469 break;
2470 case 57: /* position ::= place PLUS LP expr COMMA expr RP */
2471 #line 599 "pikchr.y"
2472 {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x+yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y+yymsp[-1].minor.yy83;}
2473 #line 2498 "pikchr.c"
2474 yymsp[-6].minor.yy49 = yylhsminor.yy49;
2475 break;
2476 case 58: /* position ::= place MINUS LP expr COMMA expr RP */
2477 #line 601 "pikchr.y"
2478 {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x-yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y-yymsp[-1].minor.yy83;}
2479 #line 2504 "pikchr.c"
2480 yymsp[-6].minor.yy49 = yylhsminor.yy49;
2481 break;
2482 case 59: /* position ::= LP position COMMA position RP */
2483 #line 602 "pikchr.y"
2484 {yymsp[-4].minor.yy49.x=yymsp[-3].minor.yy49.x; yymsp[-4].minor.yy49.y=yymsp[-1].minor.yy49.y;}
2485 #line 2510 "pikchr.c"
 
2486 break;
2487 case 60: /* position ::= LP position RP */
2488 #line 603 "pikchr.y"
2489 {yymsp[-2].minor.yy49=yymsp[-1].minor.yy49;}
2490 #line 2515 "pikchr.c"
 
2491 break;
2492 case 61: /* position ::= expr between position AND position */
2493 #line 605 "pikchr.y"
2494 {yylhsminor.yy49 = pik_position_between(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy49,yymsp[0].minor.yy49);}
2495 #line 2520 "pikchr.c"
2496 yymsp[-4].minor.yy49 = yylhsminor.yy49;
2497 break;
2498 case 62: /* position ::= expr ABOVE position */
2499 #line 606 "pikchr.y"
2500 {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y += yymsp[-2].minor.yy83;}
2501 #line 2526 "pikchr.c"
2502 yymsp[-2].minor.yy49 = yylhsminor.yy49;
2503 break;
2504 case 63: /* position ::= expr BELOW position */
2505 #line 607 "pikchr.y"
2506 {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y -= yymsp[-2].minor.yy83;}
2507 #line 2532 "pikchr.c"
2508 yymsp[-2].minor.yy49 = yylhsminor.yy49;
2509 break;
2510 case 64: /* position ::= expr LEFT OF position */
2511 #line 608 "pikchr.y"
2512 {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x -= yymsp[-3].minor.yy83;}
2513 #line 2538 "pikchr.c"
2514 yymsp[-3].minor.yy49 = yylhsminor.yy49;
2515 break;
2516 case 65: /* position ::= expr RIGHT OF position */
2517 #line 609 "pikchr.y"
2518 {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x += yymsp[-3].minor.yy83;}
2519 #line 2544 "pikchr.c"
2520 yymsp[-3].minor.yy49 = yylhsminor.yy49;
2521 break;
2522 case 66: /* position ::= expr EDGEPT OF position */
2523 #line 611 "pikchr.y"
2524 {yylhsminor.yy49 = pik_position_at_hdg(p,yymsp[-3].minor.yy83,&yymsp[-2].minor.yy0,yymsp[0].minor.yy49);}
2525 #line 2550 "pikchr.c"
2526 yymsp[-3].minor.yy49 = yylhsminor.yy49;
 
 
 
 
 
 
2527 break;
2528 case 67: /* position ::= expr HEADING expr FROM position */
2529 #line 613 "pikchr.y"
2530 {yylhsminor.yy49 = pik_position_at_angle(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy83,yymsp[0].minor.yy49);}
2531 #line 2556 "pikchr.c"
2532 yymsp[-4].minor.yy49 = yylhsminor.yy49;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2533 break;
2534 case 68: /* place ::= object */
2535 #line 619 "pikchr.y"
2536 {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,0);}
2537 #line 2562 "pikchr.c"
2538 yymsp[0].minor.yy49 = yylhsminor.yy49;
2539 break;
2540 case 69: /* place ::= object DOT_E edge */
2541 case 70: /* place ::= object DOT_L START */ yytestcase(yyruleno==70);
2542 case 71: /* place ::= object DOT_L END */ yytestcase(yyruleno==71);
2543 #line 620 "pikchr.y"
2544 {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
2545 #line 2570 "pikchr.c"
2546 yymsp[-2].minor.yy49 = yylhsminor.yy49;
2547 break;
2548 case 72: /* place ::= START OF object */
2549 case 73: /* place ::= END OF object */ yytestcase(yyruleno==73);
2550 case 74: /* place ::= edge OF object */ yytestcase(yyruleno==74);
2551 #line 623 "pikchr.y"
2552 {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
2553 #line 2578 "pikchr.c"
2554 yymsp[-2].minor.yy49 = yylhsminor.yy49;
2555 break;
2556 case 75: /* place ::= NTH VERTEX OF object */
2557 #line 626 "pikchr.y"
2558 {yylhsminor.yy49 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy24);}
2559 #line 2584 "pikchr.c"
2560 yymsp[-3].minor.yy49 = yylhsminor.yy49;
2561 break;
2562 case 76: /* object ::= nth */
 
 
2563 #line 629 "pikchr.y"
2564 {yylhsminor.yy24 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2565 #line 2590 "pikchr.c"
2566 yymsp[0].minor.yy24 = yylhsminor.yy24;
2567 break;
2568 case 77: /* object ::= nth OF|IN object */
2569 #line 630 "pikchr.y"
2570 {yylhsminor.yy24 = pik_find_nth(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
2571 #line 2596 "pikchr.c"
2572 yymsp[-2].minor.yy24 = yylhsminor.yy24;
2573 break;
2574 case 78: /* objectname ::= PLACENAME */
2575 #line 632 "pikchr.y"
2576 {yylhsminor.yy24 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2577 #line 2602 "pikchr.c"
2578 yymsp[0].minor.yy24 = yylhsminor.yy24;
2579 break;
2580 case 79: /* objectname ::= objectname DOT_U PLACENAME */
2581 #line 634 "pikchr.y"
2582 {yylhsminor.yy24 = pik_find_byname(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
2583 #line 2608 "pikchr.c"
2584 yymsp[-2].minor.yy24 = yylhsminor.yy24;
2585 break;
2586 case 80: /* nth ::= NTH CLASSNAME */
2587 #line 636 "pikchr.y"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2588 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2589 #line 2614 "pikchr.c"
2590 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2591 break;
2592 case 81: /* nth ::= NTH LAST CLASSNAME */
2593 #line 637 "pikchr.y"
2594 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2595 #line 2620 "pikchr.c"
2596 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2597 break;
2598 case 82: /* nth ::= LAST CLASSNAME */
2599 #line 638 "pikchr.y"
2600 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2601 #line 2626 "pikchr.c"
2602 break;
2603 case 83: /* nth ::= LAST */
2604 #line 639 "pikchr.y"
2605 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2606 #line 2631 "pikchr.c"
2607 yymsp[0].minor.yy0 = yylhsminor.yy0;
2608 break;
2609 case 84: /* nth ::= NTH LB RB */
2610 #line 640 "pikchr.y"
2611 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2612 #line 2637 "pikchr.c"
2613 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2614 break;
2615 case 85: /* nth ::= NTH LAST LB RB */
2616 #line 641 "pikchr.y"
2617 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2618 #line 2643 "pikchr.c"
2619 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2620 break;
2621 case 86: /* nth ::= LAST LB RB */
2622 #line 642 "pikchr.y"
2623 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2624 #line 2649 "pikchr.c"
2625 break;
2626 case 87: /* expr ::= expr PLUS expr */
2627 #line 644 "pikchr.y"
2628 {yylhsminor.yy83=yymsp[-2].minor.yy83+yymsp[0].minor.yy83;}
2629 #line 2654 "pikchr.c"
2630 yymsp[-2].minor.yy83 = yylhsminor.yy83;
2631 break;
2632 case 88: /* expr ::= expr MINUS expr */
2633 #line 645 "pikchr.y"
2634 {yylhsminor.yy83=yymsp[-2].minor.yy83-yymsp[0].minor.yy83;}
2635 #line 2660 "pikchr.c"
2636 yymsp[-2].minor.yy83 = yylhsminor.yy83;
2637 break;
2638 case 89: /* expr ::= expr STAR expr */
2639 #line 646 "pikchr.y"
2640 {yylhsminor.yy83=yymsp[-2].minor.yy83*yymsp[0].minor.yy83;}
2641 #line 2666 "pikchr.c"
2642 yymsp[-2].minor.yy83 = yylhsminor.yy83;
2643 break;
2644 case 90: /* expr ::= expr SLASH expr */
2645 #line 647 "pikchr.y"
2646 {
2647 if( yymsp[0].minor.yy83==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy83 = 0.0; }
2648 else{ yylhsminor.yy83 = yymsp[-2].minor.yy83/yymsp[0].minor.yy83; }
2649 }
2650 #line 2675 "pikchr.c"
2651 yymsp[-2].minor.yy83 = yylhsminor.yy83;
2652 break;
2653 case 91: /* expr ::= MINUS expr */
2654 #line 651 "pikchr.y"
2655 {yymsp[-1].minor.yy83=-yymsp[0].minor.yy83;}
2656 #line 2681 "pikchr.c"
2657 break;
2658 case 92: /* expr ::= PLUS expr */
2659 #line 652 "pikchr.y"
2660 {yymsp[-1].minor.yy83=yymsp[0].minor.yy83;}
2661 #line 2686 "pikchr.c"
2662 break;
2663 case 93: /* expr ::= LP expr RP */
2664 #line 653 "pikchr.y"
2665 {yymsp[-2].minor.yy83=yymsp[-1].minor.yy83;}
2666 #line 2691 "pikchr.c"
2667 break;
2668 case 94: /* expr ::= NUMBER */
2669 #line 654 "pikchr.y"
2670 {yylhsminor.yy83=pik_atof(p,&yymsp[0].minor.yy0);}
2671 #line 2696 "pikchr.c"
2672 yymsp[0].minor.yy83 = yylhsminor.yy83;
2673 break;
2674 case 95: /* expr ::= ID */
2675 #line 655 "pikchr.y"
2676 {yylhsminor.yy83=pik_get_var(p,&yymsp[0].minor.yy0);}
2677 #line 2702 "pikchr.c"
2678 yymsp[0].minor.yy83 = yylhsminor.yy83;
2679 break;
2680 case 96: /* expr ::= FUNC1 LP expr RP */
2681 #line 656 "pikchr.y"
2682 {yylhsminor.yy83 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy83,0.0);}
2683 #line 2708 "pikchr.c"
2684 yymsp[-3].minor.yy83 = yylhsminor.yy83;
2685 break;
2686 case 97: /* expr ::= FUNC2 LP expr COMMA expr RP */
2687 #line 657 "pikchr.y"
2688 {yylhsminor.yy83 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy83,yymsp[-1].minor.yy83);}
2689 #line 2714 "pikchr.c"
2690 yymsp[-5].minor.yy83 = yylhsminor.yy83;
2691 break;
2692 case 98: /* expr ::= object DOT_L locproperty */
2693 case 99: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==99);
2694 case 100: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==100);
2695 case 101: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==101);
2696 #line 659 "pikchr.y"
2697 {yylhsminor.yy83=pik_property_of(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
2698 #line 2723 "pikchr.c"
2699 yymsp[-2].minor.yy83 = yylhsminor.yy83;
2700 break;
2701 case 102: /* expr ::= object DOT_E edge DOT_L X */
2702 #line 663 "pikchr.y"
2703 {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).x;}
2704 #line 2729 "pikchr.c"
2705 yymsp[-4].minor.yy83 = yylhsminor.yy83;
2706 break;
2707 case 103: /* expr ::= object DOT_E edge DOT_L Y */
2708 #line 664 "pikchr.y"
2709 {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).y;}
2710 #line 2735 "pikchr.c"
2711 yymsp[-4].minor.yy83 = yylhsminor.yy83;
2712 break;
2713 case 104: /* expr ::= LP locproperty OF object RP */
2714 case 105: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==105);
2715 case 106: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==106);
2716 case 107: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==107);
2717 #line 665 "pikchr.y"
2718 {yymsp[-4].minor.yy83=pik_property_of(p,yymsp[-1].minor.yy24,&yymsp[-3].minor.yy0);}
2719 #line 2744 "pikchr.c"
2720 break;
2721 case 108: /* expr ::= NTH VERTEX OF object DOT_L X */
2722 #line 671 "pikchr.y"
2723 {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).x;}
2724 #line 2749 "pikchr.c"
2725 yymsp[-5].minor.yy83 = yylhsminor.yy83;
2726 break;
2727 case 109: /* expr ::= NTH VERTEX OF object DOT_L Y */
2728 #line 673 "pikchr.y"
2729 {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).y;}
2730 #line 2755 "pikchr.c"
2731 yymsp[-5].minor.yy83 = yylhsminor.yy83;
2732 break;
2733 default:
2734 /* (110) lvalue ::= ID */ yytestcase(yyruleno==110);
2735 /* (111) lvalue ::= FILL */ yytestcase(yyruleno==111);
2736 /* (112) lvalue ::= COLOR */ yytestcase(yyruleno==112);
2737 /* (113) lvalue ::= THICKNESS */ yytestcase(yyruleno==113);
2738 /* (114) rvalue ::= expr */ yytestcase(yyruleno==114);
2739 /* (115) print ::= PRINT */ yytestcase(yyruleno==115);
2740 /* (116) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=116);
2741 /* (117) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==117);
2742 /* (118) direction ::= UP */ yytestcase(yyruleno==118);
2743 /* (119) direction ::= DOWN */ yytestcase(yyruleno==119);
2744 /* (120) direction ::= LEFT */ yytestcase(yyruleno==120);
2745 /* (121) direction ::= RIGHT */ yytestcase(yyruleno==121);
2746 /* (122) attribute_list ::= alist */ yytestcase(yyruleno==122);
2747 /* (123) alist ::= */ yytestcase(yyruleno==123);
2748 /* (124) alist ::= alist attribute */ yytestcase(yyruleno==124);
2749 /* (125) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=125);
2750 /* (126) attribute ::= WITH withclause */ yytestcase(yyruleno==126);
2751 /* (127) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==127);
2752 /* (128) even ::= EVEN WITH */ yytestcase(yyruleno==128);
2753 /* (129) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=129);
2754 /* (130) withclause ::= withclause AND with */ yytestcase(yyruleno==130);
2755 /* (131) dashproperty ::= DOTTED */ yytestcase(yyruleno==131);
2756 /* (132) dashproperty ::= DASHED */ yytestcase(yyruleno==132);
2757 /* (133) colorproperty ::= FILL */ yytestcase(yyruleno==133);
2758 /* (134) colorproperty ::= COLOR */ yytestcase(yyruleno==134);
2759 /* (135) position ::= place */ yytestcase(yyruleno==135);
2760 /* (136) between ::= WAY BETWEEN */ yytestcase(yyruleno==136);
2761 /* (137) between ::= BETWEEN */ yytestcase(yyruleno==137);
2762 /* (138) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==138);
2763 /* (139) object ::= objectname */ yytestcase(yyruleno==139);
2764 /* (140) locproperty ::= X|Y */ yytestcase(yyruleno==140);
2765 /* (141) edge ::= EDGEPT */ yytestcase(yyruleno==141);
2766 /* (142) edge ::= TOP */ yytestcase(yyruleno==142);
2767 /* (143) edge ::= BOTTOM */ yytestcase(yyruleno==143);
2768 /* (144) edge ::= LEFT */ yytestcase(yyruleno==144);
2769 /* (145) edge ::= RIGHT */ yytestcase(yyruleno==145);
2770 break;
2771 /********** End reduce actions ************************************************/
2772 };
2773 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
2774 yygoto = yyRuleInfoLhs[yyruleno];
@@ -2824,18 +2855,18 @@
2824 ){
2825 pik_parserARG_FETCH
2826 pik_parserCTX_FETCH
2827 #define TOKEN yyminor
2828 /************ Begin %syntax_error code ****************************************/
2829 #line 462 "pikchr.y"
2830
2831 if( TOKEN.z && TOKEN.z[0] ){
2832 pik_error(p, &TOKEN, "syntax error");
2833 }else{
2834 pik_error(p, 0, "syntax error");
2835 }
2836 #line 2861 "pikchr.c"
2837 /************ End %syntax_error code ******************************************/
2838 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
2839 pik_parserCTX_STORE
2840 }
2841
@@ -3064,11 +3095,11 @@
3064 #else
3065 (void)iToken;
3066 return 0;
3067 #endif
3068 }
3069 #line 683 "pikchr.y"
3070
3071
3072
3073 /* Chart of the 140 official HTML color names with their
3074 ** corresponding RGB value.
@@ -4110,11 +4141,11 @@
4110 buf[sizeof(buf)-1] = 0;
4111 pik_append(p, buf, -1);
4112 }
4113 static void pik_append_dis(Pik *p, const char *z1, PNum v, const char *z2){
4114 char buf[200];
4115 snprintf(buf, sizeof(buf)-1, "%s%d%s", z1, (int)(p->rScale*v), z2);
4116 buf[sizeof(buf)-1] = 0;
4117 pik_append(p, buf, -1);
4118 }
4119 static void pik_append_clr(Pik *p, const char *z1, PNum v, const char *z2){
4120 char buf[200];
@@ -4152,11 +4183,10 @@
4152 }else{
4153 pik_append(p,"fill:none;",-1);
4154 }
4155 if( pElem->sw>0.0 && pElem->color>=0.0 ){
4156 PNum sw = pElem->sw;
4157 if( sw*p->rScale<1.0 ) sw = 1.1/p->rScale;
4158 pik_append_dis(p, "stroke-width:", sw, ";");
4159 pik_append_clr(p, "stroke:",pElem->color,";");
4160 if( pElem->dotted>0.0 ){
4161 PNum v = pElem->dotted;
4162 if( sw<2.1/p->rScale ) sw = 2.1/p->rScale;
@@ -4263,21 +4293,25 @@
4263 }else{
4264 dy2 = 0.0;
4265 }
4266 for(i=0; i<n; i++){
4267 PToken *t = &aTxt[i];
 
4268 orig_y = y = pElem->ptAt.y;
4269 if( t->eCode & TP_ABOVE2 ) y += dy2 + 3*dy;
4270 if( t->eCode & TP_ABOVE ) y += dy2 + dy;
4271 if( t->eCode & TP_BELOW ) y -= dy2 + dy;
4272 if( t->eCode & TP_BELOW2 ) y -= dy2 + 3*dy;
 
 
 
4273
4274 if( pBox!=0 ){
4275 /* If pBox is not NULL, do not draw any <text>. Instead, just expand
4276 ** pBox to include the text */
4277 PNum cw = pik_text_length(t)*p->charWidth;
4278 PNum ch = p->charHeight*0.5;
4279 if( t->eCode & TP_RJUST ){
4280 pik_bbox_add_xy(pBox, x, y-ch);
4281 pik_bbox_add_xy(pBox, x-cw, y+ch);
4282 }else if( t->eCode & TP_LJUST ){
4283 pik_bbox_add_xy(pBox, x, y-ch);
@@ -4305,12 +4339,13 @@
4305 pik_append(p, " font-weight=\"bold\"", -1);
4306 }
4307 if( pElem->color>=0.0 ){
4308 pik_append_clr(p, " fill=\"", pElem->color, "\"");
4309 }
4310 if( p->fontScale<=0.99 || p->fontScale>=1.01 ){
4311 pik_append_num(p, " font-size=\"", p->fontScale*100.0);
 
4312 pik_append(p, "%\"", 2);
4313 }
4314 if( (t->eCode & TP_ALIGN)!=0 && pElem->nPath>=2 ){
4315 int n = pElem->nPath;
4316 PNum dx = pElem->aPath[n-1].x - pElem->aPath[0].x;
@@ -5065,11 +5100,15 @@
5065 case T_RJUST: iRes = (iRes&~TP_JMASK) | TP_RJUST; break;
5066 case T_ABOVE: iRes = (iRes&~TP_VMASK) | TP_ABOVE; break;
5067 case T_BELOW: iRes = (iRes&~TP_VMASK) | TP_BELOW; break;
5068 case T_ITALIC: iRes |= TP_ITALIC; break;
5069 case T_BOLD: iRes |= TP_BOLD; break;
5070 case T_ALIGNED: iRes |= TP_ALIGN; break;
 
 
 
 
5071 }
5072 return iRes;
5073 }
5074
5075 /* Return an estimate of the actually number of displayed characters
@@ -5940,10 +5979,11 @@
5940 { "and", 3, T_AND, 0, 0 },
5941 { "as", 2, T_AS, 0, 0 },
5942 { "at", 2, T_AT, 0, 0 },
5943 { "below", 5, T_BELOW, 0, 0 },
5944 { "between", 7, T_BETWEEN, 0, 0 },
 
5945 { "bold", 4, T_BOLD, 0, 0 },
5946 { "bot", 3, T_EDGEPT, 0, CP_S },
5947 { "bottom", 6, T_BOTTOM, 0, CP_S },
5948 { "c", 1, T_EDGEPT, 0, CP_C },
5949 { "ccw", 3, T_CCW, 0, 0 },
@@ -5990,18 +6030,21 @@
5990 { "rjust", 5, T_RJUST, 0, 0 },
5991 { "s", 1, T_EDGEPT, 0, CP_S },
5992 { "same", 4, T_SAME, 0, 0 },
5993 { "se", 2, T_EDGEPT, 0, CP_SE },
5994 { "sin", 3, T_FUNC1, FN_SIN, 0 },
 
5995 { "south", 5, T_EDGEPT, 0, CP_S },
5996 { "sqrt", 4, T_FUNC1, FN_SQRT, 0 },
5997 { "start", 5, T_START, 0, 0 },
5998 { "sw", 2, T_EDGEPT, 0, CP_SW },
5999 { "t", 1, T_TOP, 0, CP_N },
6000 { "the", 3, T_THE, 0, 0 },
6001 { "then", 4, T_THEN, 0, 0 },
 
6002 { "thickness", 9, T_THICKNESS, 0, 0 },
 
6003 { "to", 2, T_TO, 0, 0 },
6004 { "top", 3, T_TOP, 0, CP_N },
6005 { "until", 5, T_UNTIL, 0, 0 },
6006 { "up", 2, T_UP, DIR_UP, 0 },
6007 { "vertex", 6, T_VERTEX, 0, 0 },
@@ -6485,6 +6528,6 @@
6485 printf("</body></html>\n");
6486 return 0;
6487 }
6488 #endif /* PIKCHR_SHELL */
6489
6490 #line 6515 "pikchr.c"
6491
--- src/pikchr.c
+++ src/pikchr.c
@@ -179,10 +179,14 @@
179 #define TP_ABOVE 0x0008 /* Position text above PElem.ptAt */
180 #define TP_CENTER 0x0010 /* On the line */
181 #define TP_BELOW 0x0020 /* Position text below PElem.ptAt */
182 #define TP_BELOW2 0x0040 /* Position text way below PElem.ptAt */
183 #define TP_VMASK 0x007c /* Mask for text positioning flags */
184 #define TP_BIG 0x0100 /* Larger font */
185 #define TP_SMALL 0x0200 /* Smaller font */
186 #define TP_XTRA 0x0400 /* Amplify TP_BIG or TP_SMALL */
187 #define TP_SZMASK 0x0700 /* Font size mask */
188 #define TP_ITALIC 0x1000 /* Italic font */
189 #define TP_BOLD 0x2000 /* Bold font */
190 #define TP_FMASK 0x3000 /* Mask for font style */
191 #define TP_ALIGN 0x4000 /* Rotate to align with the line */
192
@@ -418,11 +422,11 @@
422 static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
423 static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
424 static void pik_compute_layout_settings(Pik*);
425
426
427 #line 453 "pikchr.c"
428 /**************** End of %include directives **********************************/
429 /* These constants specify the various numeric values for terminal symbols.
430 ***************** Begin token definitions *************************************/
431 #ifndef T_ID
432 #define T_ID 1
@@ -475,39 +479,43 @@
479 #define T_CCW 48
480 #define T_LARROW 49
481 #define T_RARROW 50
482 #define T_LRARROW 51
483 #define T_INVIS 52
484 #define T_THICK 53
485 #define T_THIN 54
486 #define T_CENTER 55
487 #define T_LJUST 56
488 #define T_RJUST 57
489 #define T_ABOVE 58
490 #define T_BELOW 59
491 #define T_ITALIC 60
492 #define T_BOLD 61
493 #define T_ALIGNED 62
494 #define T_BIG 63
495 #define T_SMALL 64
496 #define T_LP 65
497 #define T_RP 66
498 #define T_HEADING 67
499 #define T_WAY 68
500 #define T_BETWEEN 69
501 #define T_THE 70
502 #define T_DOT_L 71
503 #define T_START 72
504 #define T_END 73
505 #define T_NTH 74
506 #define T_VERTEX 75
507 #define T_IN 76
508 #define T_DOT_U 77
509 #define T_LAST 78
510 #define T_NUMBER 79
511 #define T_FUNC1 80
512 #define T_FUNC2 81
513 #define T_X 82
514 #define T_Y 83
515 #define T_TOP 84
516 #define T_BOTTOM 85
517 #endif
518 /**************** End token definitions ***************************************/
519
520 /* The next sections is a series of control #defines.
521 ** various aspects of the generated parser.
@@ -563,21 +571,21 @@
571 #ifndef INTERFACE
572 # define INTERFACE 1
573 #endif
574 /************* Begin control #defines *****************************************/
575 #define YYCODETYPE unsigned char
576 #define YYNOCODE 119
577 #define YYACTIONTYPE unsigned short int
578 #define pik_parserTOKENTYPE PToken
579 typedef union {
580 int yyinit;
581 pik_parserTOKENTYPE yy0;
582 PElem* yy26;
583 int yy60;
584 PEList* yy120;
585 PPoint yy131;
586 PNum yy191;
587 } YYMINORTYPE;
588 #ifndef YYSTACKDEPTH
589 #define YYSTACKDEPTH 100
590 #endif
591 #define pik_parserARG_SDECL
@@ -590,21 +598,21 @@
598 #define pik_parserCTX_PARAM ,p
599 #define pik_parserCTX_FETCH Pik *p=yypParser->p;
600 #define pik_parserCTX_STORE yypParser->p=p;
601 #define YYFALLBACK 1
602 #define YYNSTATE 153
603 #define YYNRULE 148
604 #define YYNRULE_WITH_ACTION 112
605 #define YYNTOKEN 86
606 #define YY_MAX_SHIFT 152
607 #define YY_MIN_SHIFTREDUCE 270
608 #define YY_MAX_SHIFTREDUCE 417
609 #define YY_ERROR_ACTION 418
610 #define YY_ACCEPT_ACTION 419
611 #define YY_NO_ACTION 420
612 #define YY_MIN_REDUCE 421
613 #define YY_MAX_REDUCE 568
614 /************* End control #defines *******************************************/
615 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
616
617 /* Define the yytestcase() macro to be a no-op if is not already defined
618 ** otherwise.
@@ -667,248 +675,247 @@
675 ** yy_reduce_ofst[] For each state, the offset into yy_action for
676 ** shifting non-terminals after a reduce.
677 ** yy_default[] Default action for each state.
678 **
679 *********** Begin parsing tables **********************************************/
680 #define YY_ACTTAB_COUNT (859)
681 static const YYACTIONTYPE yy_action[] = {
682 /* 0 */ 64, 137, 129, 19, 139, 135, 141, 99, 101, 100,
683 /* 10 */ 151, 109, 38, 35, 405, 406, 315, 522, 72, 113,
684 /* 20 */ 523, 524, 521, 390, 391, 392, 393, 303, 304, 10,
685 /* 30 */ 9, 307, 8, 51, 111, 132, 312, 50, 49, 48,
686 /* 40 */ 47, 315, 315, 315, 315, 403, 404, 316, 317, 318,
687 /* 50 */ 319, 320, 321, 322, 323, 367, 413, 142, 45, 46,
688 /* 60 */ 352, 148, 405, 406, 315, 25, 350, 62, 405, 406,
689 /* 70 */ 315, 286, 427, 26, 65, 12, 129, 290, 112, 416,
690 /* 80 */ 417, 428, 101, 100, 151, 109, 413, 24, 112, 315,
691 /* 90 */ 315, 315, 315, 403, 404, 315, 315, 315, 315, 403,
692 /* 100 */ 404, 367, 114, 114, 45, 46, 461, 151, 109, 416,
693 /* 110 */ 417, 22, 350, 553, 405, 406, 315, 73, 108, 1,
694 /* 120 */ 342, 343, 332, 74, 66, 67, 131, 130, 89, 52,
695 /* 130 */ 412, 412, 107, 366, 144, 143, 412, 412, 414, 415,
696 /* 140 */ 62, 315, 315, 315, 315, 403, 404, 367, 413, 6,
697 /* 150 */ 45, 46, 50, 49, 48, 47, 30, 7, 350, 50,
698 /* 160 */ 49, 48, 47, 68, 71, 5, 288, 70, 414, 415,
699 /* 170 */ 63, 416, 417, 400, 94, 374, 375, 13, 107, 366,
700 /* 180 */ 144, 143, 412, 412, 367, 413, 421, 45, 46, 41,
701 /* 190 */ 399, 27, 40, 28, 31, 350, 25, 325, 325, 325,
702 /* 200 */ 325, 325, 325, 325, 325, 325, 325, 116, 416, 417,
703 /* 210 */ 11, 1, 547, 547, 50, 49, 48, 47, 131, 130,
704 /* 220 */ 89, 330, 48, 47, 107, 366, 144, 143, 77, 33,
705 /* 230 */ 414, 415, 367, 354, 147, 45, 46, 103, 151, 109,
706 /* 240 */ 331, 95, 410, 96, 120, 281, 282, 283, 1, 285,
707 /* 250 */ 103, 151, 109, 408, 435, 131, 130, 89, 121, 69,
708 /* 260 */ 69, 107, 366, 144, 143, 14, 382, 414, 415, 15,
709 /* 270 */ 124, 122, 50, 49, 48, 47, 365, 133, 16, 383,
710 /* 280 */ 384, 385, 387, 71, 53, 288, 70, 39, 390, 391,
711 /* 290 */ 392, 393, 106, 126, 125, 54, 5, 124, 122, 50,
712 /* 300 */ 49, 48, 47, 350, 367, 94, 102, 45, 46, 107,
713 /* 310 */ 366, 144, 143, 2, 39, 350, 50, 49, 48, 47,
714 /* 320 */ 126, 125, 380, 381, 353, 149, 18, 17, 55, 405,
715 /* 330 */ 406, 315, 56, 379, 365, 32, 123, 409, 95, 367,
716 /* 340 */ 117, 115, 45, 46, 378, 377, 57, 103, 151, 109,
717 /* 350 */ 350, 449, 58, 18, 17, 59, 315, 315, 315, 315,
718 /* 360 */ 403, 404, 32, 123, 409, 97, 60, 376, 5, 107,
719 /* 370 */ 43, 501, 110, 422, 429, 26, 44, 94, 329, 425,
720 /* 380 */ 61, 107, 366, 144, 143, 367, 358, 356, 45, 46,
721 /* 390 */ 152, 357, 419, 21, 150, 351, 96, 412, 412, 29,
722 /* 400 */ 75, 137, 501, 5, 139, 135, 141, 420, 501, 103,
723 /* 410 */ 151, 109, 94, 352, 148, 420, 107, 366, 144, 143,
724 /* 420 */ 367, 420, 420, 45, 46, 420, 420, 98, 422, 429,
725 /* 430 */ 26, 350, 76, 137, 425, 420, 139, 135, 141, 420,
726 /* 440 */ 420, 103, 151, 109, 420, 152, 420, 420, 21, 5,
727 /* 450 */ 88, 137, 420, 420, 139, 135, 141, 420, 94, 103,
728 /* 460 */ 151, 109, 107, 366, 144, 143, 367, 420, 128, 45,
729 /* 470 */ 46, 108, 65, 420, 129, 420, 95, 350, 420, 465,
730 /* 480 */ 101, 100, 151, 109, 3, 103, 151, 109, 420, 435,
731 /* 490 */ 127, 151, 109, 94, 65, 540, 129, 107, 366, 144,
732 /* 500 */ 143, 464, 101, 100, 151, 109, 420, 65, 420, 129,
733 /* 510 */ 82, 497, 151, 109, 459, 101, 100, 151, 109, 103,
734 /* 520 */ 151, 109, 420, 420, 65, 20, 129, 78, 420, 420,
735 /* 530 */ 4, 457, 101, 100, 151, 109, 103, 151, 109, 94,
736 /* 540 */ 65, 420, 129, 107, 366, 144, 143, 456, 101, 100,
737 /* 550 */ 151, 109, 65, 420, 129, 496, 151, 109, 420, 484,
738 /* 560 */ 101, 100, 151, 109, 420, 65, 420, 129, 420, 420,
739 /* 570 */ 95, 420, 119, 101, 100, 151, 109, 420, 84, 103,
740 /* 580 */ 151, 109, 420, 426, 65, 420, 129, 103, 151, 109,
741 /* 590 */ 420, 490, 101, 100, 151, 109, 65, 420, 129, 438,
742 /* 600 */ 420, 23, 420, 489, 101, 100, 151, 109, 65, 420,
743 /* 610 */ 129, 50, 49, 48, 47, 488, 101, 100, 151, 109,
744 /* 620 */ 420, 65, 420, 129, 420, 420, 36, 420, 487, 101,
745 /* 630 */ 100, 151, 109, 65, 420, 129, 420, 420, 413, 420,
746 /* 640 */ 486, 101, 100, 151, 109, 65, 420, 129, 50, 49,
747 /* 650 */ 48, 47, 485, 101, 100, 151, 109, 420, 65, 420,
748 /* 660 */ 129, 416, 417, 34, 420, 118, 101, 100, 151, 109,
749 /* 670 */ 495, 151, 109, 365, 420, 65, 420, 129, 50, 49,
750 /* 680 */ 48, 47, 453, 101, 100, 151, 109, 50, 49, 48,
751 /* 690 */ 47, 423, 429, 26, 134, 151, 109, 425, 50, 49,
752 /* 700 */ 48, 47, 37, 50, 49, 48, 47, 420, 152, 420,
753 /* 710 */ 420, 21, 420, 50, 49, 48, 47, 299, 420, 420,
754 /* 720 */ 414, 415, 50, 49, 48, 47, 294, 50, 49, 48,
755 /* 730 */ 47, 293, 50, 49, 48, 47, 420, 352, 148, 90,
756 /* 740 */ 369, 420, 79, 420, 420, 80, 420, 42, 103, 151,
757 /* 750 */ 109, 103, 151, 109, 103, 151, 109, 91, 420, 420,
758 /* 760 */ 368, 136, 151, 109, 420, 365, 103, 151, 109, 81,
759 /* 770 */ 420, 420, 92, 420, 420, 93, 420, 420, 103, 151,
760 /* 780 */ 109, 103, 151, 109, 103, 151, 109, 420, 83, 420,
761 /* 790 */ 420, 85, 146, 420, 86, 108, 420, 103, 151, 109,
762 /* 800 */ 103, 151, 109, 103, 151, 109, 87, 420, 420, 420,
763 /* 810 */ 420, 515, 420, 420, 514, 103, 151, 109, 420, 513,
764 /* 820 */ 103, 151, 109, 103, 151, 109, 512, 420, 103, 151,
765 /* 830 */ 109, 104, 138, 151, 109, 103, 151, 109, 105, 420,
766 /* 840 */ 103, 151, 109, 420, 420, 420, 420, 103, 151, 109,
767 /* 850 */ 140, 151, 109, 145, 151, 109, 500, 151, 109,
 
768 };
769 static const YYCODETYPE yy_lookahead[] = {
770 /* 0 */ 90, 91, 92, 118, 94, 95, 96, 97, 98, 99,
771 /* 10 */ 100, 101, 4, 5, 14, 15, 16, 91, 18, 92,
772 /* 20 */ 94, 95, 96, 23, 24, 25, 26, 27, 28, 29,
773 /* 30 */ 30, 31, 32, 33, 34, 92, 36, 4, 5, 6,
774 /* 40 */ 7, 41, 42, 43, 44, 45, 46, 47, 48, 49,
775 /* 50 */ 50, 51, 52, 53, 54, 1, 2, 92, 4, 5,
776 /* 60 */ 20, 21, 14, 15, 16, 10, 12, 3, 14, 15,
777 /* 70 */ 16, 19, 88, 89, 90, 19, 92, 22, 92, 25,
778 /* 80 */ 26, 97, 98, 99, 100, 101, 2, 110, 92, 41,
779 /* 90 */ 42, 43, 44, 45, 46, 41, 42, 43, 44, 45,
780 /* 100 */ 46, 1, 116, 117, 4, 5, 99, 100, 101, 25,
781 /* 110 */ 26, 112, 12, 117, 14, 15, 16, 102, 78, 65,
782 /* 120 */ 72, 73, 66, 102, 40, 40, 72, 73, 74, 35,
783 /* 130 */ 82, 83, 78, 79, 80, 81, 82, 83, 84, 85,
784 /* 140 */ 76, 41, 42, 43, 44, 45, 46, 1, 2, 32,
785 /* 150 */ 4, 5, 4, 5, 6, 7, 71, 32, 12, 4,
786 /* 160 */ 5, 6, 7, 40, 18, 65, 20, 21, 84, 85,
787 /* 170 */ 39, 25, 26, 33, 74, 82, 83, 29, 78, 79,
788 /* 180 */ 80, 81, 82, 83, 1, 2, 0, 4, 5, 91,
789 /* 190 */ 33, 93, 94, 95, 71, 12, 10, 55, 56, 57,
790 /* 200 */ 58, 59, 60, 61, 62, 63, 64, 38, 25, 26,
791 /* 210 */ 39, 65, 114, 115, 4, 5, 6, 7, 72, 73,
792 /* 220 */ 74, 66, 6, 7, 78, 79, 80, 81, 90, 19,
793 /* 230 */ 84, 85, 1, 20, 21, 4, 5, 99, 100, 101,
794 /* 240 */ 66, 90, 69, 12, 68, 14, 15, 16, 65, 18,
795 /* 250 */ 99, 100, 101, 69, 103, 72, 73, 74, 70, 108,
796 /* 260 */ 109, 78, 79, 80, 81, 3, 1, 84, 85, 3,
797 /* 270 */ 2, 3, 4, 5, 6, 7, 66, 12, 3, 14,
798 /* 280 */ 15, 16, 17, 18, 3, 20, 21, 19, 23, 24,
799 /* 290 */ 25, 26, 71, 25, 26, 3, 65, 2, 3, 4,
800 /* 300 */ 5, 6, 7, 12, 1, 74, 71, 4, 5, 78,
801 /* 310 */ 79, 80, 81, 13, 19, 12, 4, 5, 6, 7,
802 /* 320 */ 25, 26, 82, 83, 20, 21, 58, 59, 3, 14,
803 /* 330 */ 15, 16, 3, 66, 66, 67, 68, 69, 90, 1,
804 /* 340 */ 37, 38, 4, 5, 66, 66, 3, 99, 100, 101,
805 /* 350 */ 12, 103, 3, 58, 59, 3, 41, 42, 43, 44,
806 /* 360 */ 45, 46, 67, 68, 69, 74, 3, 66, 65, 78,
807 /* 370 */ 65, 40, 86, 87, 88, 89, 65, 74, 66, 93,
808 /* 380 */ 3, 78, 79, 80, 81, 1, 22, 22, 4, 5,
809 /* 390 */ 104, 22, 106, 107, 77, 12, 12, 82, 83, 11,
810 /* 400 */ 90, 91, 71, 65, 94, 95, 96, 119, 77, 99,
811 /* 410 */ 100, 101, 74, 20, 21, 119, 78, 79, 80, 81,
812 /* 420 */ 1, 119, 119, 4, 5, 119, 119, 86, 87, 88,
813 /* 430 */ 89, 12, 90, 91, 93, 119, 94, 95, 96, 119,
814 /* 440 */ 119, 99, 100, 101, 119, 104, 119, 119, 107, 65,
815 /* 450 */ 90, 91, 119, 119, 94, 95, 96, 119, 74, 99,
816 /* 460 */ 100, 101, 78, 79, 80, 81, 1, 119, 75, 4,
817 /* 470 */ 5, 78, 90, 119, 92, 119, 90, 12, 119, 97,
818 /* 480 */ 98, 99, 100, 101, 65, 99, 100, 101, 119, 103,
819 /* 490 */ 99, 100, 101, 74, 90, 109, 92, 78, 79, 80,
820 /* 500 */ 81, 97, 98, 99, 100, 101, 119, 90, 119, 92,
821 /* 510 */ 90, 99, 100, 101, 97, 98, 99, 100, 101, 99,
822 /* 520 */ 100, 101, 119, 119, 90, 105, 92, 90, 119, 119,
823 /* 530 */ 65, 97, 98, 99, 100, 101, 99, 100, 101, 74,
824 /* 540 */ 90, 119, 92, 78, 79, 80, 81, 97, 98, 99,
825 /* 550 */ 100, 101, 90, 119, 92, 99, 100, 101, 119, 97,
826 /* 560 */ 98, 99, 100, 101, 119, 90, 119, 92, 119, 119,
827 /* 570 */ 90, 119, 97, 98, 99, 100, 101, 119, 90, 99,
828 /* 580 */ 100, 101, 119, 103, 90, 119, 92, 99, 100, 101,
829 /* 590 */ 119, 97, 98, 99, 100, 101, 90, 119, 92, 111,
830 /* 600 */ 119, 113, 119, 97, 98, 99, 100, 101, 90, 119,
831 /* 610 */ 92, 4, 5, 6, 7, 97, 98, 99, 100, 101,
832 /* 620 */ 119, 90, 119, 92, 119, 119, 19, 119, 97, 98,
833 /* 630 */ 99, 100, 101, 90, 119, 92, 119, 119, 2, 119,
834 /* 640 */ 97, 98, 99, 100, 101, 90, 119, 92, 4, 5,
835 /* 650 */ 6, 7, 97, 98, 99, 100, 101, 119, 90, 119,
836 /* 660 */ 92, 25, 26, 19, 119, 97, 98, 99, 100, 101,
837 /* 670 */ 99, 100, 101, 66, 119, 90, 119, 92, 4, 5,
838 /* 680 */ 6, 7, 97, 98, 99, 100, 101, 4, 5, 6,
839 /* 690 */ 7, 87, 88, 89, 99, 100, 101, 93, 4, 5,
840 /* 700 */ 6, 7, 19, 4, 5, 6, 7, 119, 104, 119,
841 /* 710 */ 119, 107, 119, 4, 5, 6, 7, 8, 119, 119,
842 /* 720 */ 84, 85, 4, 5, 6, 7, 8, 4, 5, 6,
843 /* 730 */ 7, 8, 4, 5, 6, 7, 119, 20, 21, 90,
844 /* 740 */ 66, 119, 90, 119, 119, 90, 119, 19, 99, 100,
845 /* 750 */ 101, 99, 100, 101, 99, 100, 101, 90, 119, 119,
846 /* 760 */ 66, 99, 100, 101, 119, 66, 99, 100, 101, 90,
847 /* 770 */ 119, 119, 90, 119, 119, 90, 119, 119, 99, 100,
848 /* 780 */ 101, 99, 100, 101, 99, 100, 101, 119, 90, 119,
849 /* 790 */ 119, 90, 75, 119, 90, 78, 119, 99, 100, 101,
850 /* 800 */ 99, 100, 101, 99, 100, 101, 90, 119, 119, 119,
851 /* 810 */ 119, 90, 119, 119, 90, 99, 100, 101, 119, 90,
852 /* 820 */ 99, 100, 101, 99, 100, 101, 90, 119, 99, 100,
853 /* 830 */ 101, 90, 99, 100, 101, 99, 100, 101, 90, 119,
854 /* 840 */ 99, 100, 101, 119, 119, 119, 119, 99, 100, 101,
855 /* 850 */ 99, 100, 101, 99, 100, 101, 99, 100, 101, 86,
856 /* 860 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
857 /* 870 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
858 /* 880 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
859 /* 890 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
860 /* 900 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
861 /* 910 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
862 /* 920 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
863 /* 930 */ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
864 /* 940 */ 86, 86, 86, 86, 86,
865 };
866 #define YY_SHIFT_COUNT (152)
867 #define YY_SHIFT_MIN (0)
868 #define YY_SHIFT_MAX (728)
869 static const unsigned short int yy_shift_ofst[] = {
870 /* 0 */ 265, 54, 146, 100, 100, 100, 183, 183, 183, 183,
871 /* 10 */ 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
872 /* 20 */ 183, 231, 265, 0, 231, 265, 338, 303, 384, 384,
873 /* 30 */ 48, 315, 338, 338, 338, 419, 338, 338, 465, 338,
874 /* 40 */ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
875 /* 50 */ 338, 84, 291, 291, 291, 291, 291, 291, 291, 291,
876 /* 60 */ 291, 291, 291, 84, 268, 295, 636, 636, 636, 52,
877 /* 70 */ 859, 859, 859, 142, 142, 210, 607, 148, 155, 644,
878 /* 80 */ 312, 683, 709, 718, 723, 674, 728, 694, 699, 393,
879 /* 90 */ 33, 33, 33, 33, 717, 33, 331, 40, 55, 56,
880 /* 100 */ 85, 8, 93, 123, 216, 216, 240, 213, 304, 64,
881 /* 110 */ 186, 94, 117, 125, 131, 140, 157, 169, 171, 174,
882 /* 120 */ 173, 176, 188, 184, 262, 266, 275, 221, 281, 292,
883 /* 130 */ 325, 329, 235, 300, 267, 343, 278, 349, 279, 352,
884 /* 140 */ 301, 363, 235, 305, 311, 221, 377, 364, 365, 369,
885 /* 150 */ 383, 317, 388,
886 };
887 #define YY_REDUCE_COUNT (72)
888 #define YY_REDUCE_MIN (-115)
889 #define YY_REDUCE_MAX (757)
890 static const short yy_reduce_ofst[] = {
891 /* 0 */ 286, -90, -16, 310, 342, 360, 382, 404, 417, 434,
892 /* 10 */ 450, 462, 475, 494, 506, 518, 531, 543, 555, 568,
893 /* 20 */ 585, 151, 341, 98, 386, 604, 488, 420, 248, 480,
894 /* 30 */ -74, -74, 138, 437, 649, 652, 655, 667, 679, 682,
895 /* 40 */ 685, 698, 701, 704, 716, 721, 724, 729, 736, 741,
896 /* 50 */ 748, -14, 7, 391, 412, 456, 571, 595, 662, 733,
897 /* 60 */ 751, 754, 757, -4, -115, -115, -73, -57, -35, -23,
898 /* 70 */ -1, 15, 21,
899 };
900 static const YYACTIONTYPE yy_default[] = {
901 /* 0 */ 424, 418, 418, 418, 418, 418, 418, 418, 418, 418,
902 /* 10 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
903 /* 20 */ 418, 418, 424, 545, 418, 424, 546, 452, 418, 418,
904 /* 30 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
905 /* 40 */ 448, 418, 418, 418, 418, 418, 418, 418, 418, 418,
906 /* 50 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
907 /* 60 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 430,
908 /* 70 */ 442, 475, 475, 440, 462, 418, 418, 418, 418, 418,
909 /* 80 */ 418, 418, 451, 446, 443, 418, 418, 418, 418, 418,
910 /* 90 */ 479, 478, 477, 447, 418, 537, 431, 418, 418, 418,
911 /* 100 */ 491, 558, 418, 418, 511, 510, 418, 506, 418, 499,
912 /* 110 */ 418, 460, 418, 418, 549, 418, 418, 418, 418, 418,
913 /* 120 */ 418, 418, 418, 418, 418, 418, 418, 498, 418, 418,
914 /* 130 */ 418, 418, 492, 418, 418, 418, 418, 418, 418, 418,
915 /* 140 */ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
916 /* 150 */ 418, 562, 418,
917 };
918 /********** End of lemon-generated parsing tables *****************************/
919
920 /* The next table maps tokens (terminal symbols) into fallback tokens.
921 ** If a construct like the following:
@@ -977,18 +984,22 @@
984 0, /* CCW => nothing */
985 0, /* LARROW => nothing */
986 0, /* RARROW => nothing */
987 0, /* LRARROW => nothing */
988 0, /* INVIS => nothing */
989 0, /* THICK => nothing */
990 0, /* THIN => nothing */
991 0, /* CENTER => nothing */
992 0, /* LJUST => nothing */
993 0, /* RJUST => nothing */
994 0, /* ABOVE => nothing */
995 0, /* BELOW => nothing */
996 0, /* ITALIC => nothing */
997 0, /* BOLD => nothing */
998 0, /* ALIGNED => nothing */
999 0, /* BIG => nothing */
1000 0, /* SMALL => nothing */
1001 0, /* LP => nothing */
1002 0, /* RP => nothing */
1003 0, /* HEADING => nothing */
1004 0, /* WAY => nothing */
1005 0, /* BETWEEN => nothing */
@@ -1147,72 +1158,76 @@
1158 /* 48 */ "CCW",
1159 /* 49 */ "LARROW",
1160 /* 50 */ "RARROW",
1161 /* 51 */ "LRARROW",
1162 /* 52 */ "INVIS",
1163 /* 53 */ "THICK",
1164 /* 54 */ "THIN",
1165 /* 55 */ "CENTER",
1166 /* 56 */ "LJUST",
1167 /* 57 */ "RJUST",
1168 /* 58 */ "ABOVE",
1169 /* 59 */ "BELOW",
1170 /* 60 */ "ITALIC",
1171 /* 61 */ "BOLD",
1172 /* 62 */ "ALIGNED",
1173 /* 63 */ "BIG",
1174 /* 64 */ "SMALL",
1175 /* 65 */ "LP",
1176 /* 66 */ "RP",
1177 /* 67 */ "HEADING",
1178 /* 68 */ "WAY",
1179 /* 69 */ "BETWEEN",
1180 /* 70 */ "THE",
1181 /* 71 */ "DOT_L",
1182 /* 72 */ "START",
1183 /* 73 */ "END",
1184 /* 74 */ "NTH",
1185 /* 75 */ "VERTEX",
1186 /* 76 */ "IN",
1187 /* 77 */ "DOT_U",
1188 /* 78 */ "LAST",
1189 /* 79 */ "NUMBER",
1190 /* 80 */ "FUNC1",
1191 /* 81 */ "FUNC2",
1192 /* 82 */ "X",
1193 /* 83 */ "Y",
1194 /* 84 */ "TOP",
1195 /* 85 */ "BOTTOM",
1196 /* 86 */ "element_list",
1197 /* 87 */ "element",
1198 /* 88 */ "unnamed_element",
1199 /* 89 */ "basetype",
1200 /* 90 */ "expr",
1201 /* 91 */ "numproperty",
1202 /* 92 */ "edge",
1203 /* 93 */ "direction",
1204 /* 94 */ "dashproperty",
1205 /* 95 */ "colorproperty",
1206 /* 96 */ "locproperty",
1207 /* 97 */ "position",
1208 /* 98 */ "place",
1209 /* 99 */ "object",
1210 /* 100 */ "objectname",
1211 /* 101 */ "nth",
1212 /* 102 */ "textposition",
1213 /* 103 */ "rvalue",
1214 /* 104 */ "lvalue",
1215 /* 105 */ "even",
1216 /* 106 */ "document",
1217 /* 107 */ "print",
1218 /* 108 */ "prlist",
1219 /* 109 */ "pritem",
1220 /* 110 */ "prsep",
1221 /* 111 */ "attribute_list",
1222 /* 112 */ "savelist",
1223 /* 113 */ "alist",
1224 /* 114 */ "attribute",
1225 /* 115 */ "boolproperty",
1226 /* 116 */ "withclause",
1227 /* 117 */ "with",
1228 /* 118 */ "between",
1229 };
1230 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1231
1232 #ifndef NDEBUG
1233 /* For tracing reduce actions, the names of all rules are required.
@@ -1268,104 +1283,106 @@
1283 /* 47 */ "boolproperty ::= CCW",
1284 /* 48 */ "boolproperty ::= LARROW",
1285 /* 49 */ "boolproperty ::= RARROW",
1286 /* 50 */ "boolproperty ::= LRARROW",
1287 /* 51 */ "boolproperty ::= INVIS",
1288 /* 52 */ "boolproperty ::= THICK",
1289 /* 53 */ "boolproperty ::= THIN",
1290 /* 54 */ "textposition ::=",
1291 /* 55 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1292 /* 56 */ "position ::= expr COMMA expr",
1293 /* 57 */ "position ::= place PLUS expr COMMA expr",
1294 /* 58 */ "position ::= place MINUS expr COMMA expr",
1295 /* 59 */ "position ::= place PLUS LP expr COMMA expr RP",
1296 /* 60 */ "position ::= place MINUS LP expr COMMA expr RP",
1297 /* 61 */ "position ::= LP position COMMA position RP",
1298 /* 62 */ "position ::= LP position RP",
1299 /* 63 */ "position ::= expr between position AND position",
1300 /* 64 */ "position ::= expr ABOVE position",
1301 /* 65 */ "position ::= expr BELOW position",
1302 /* 66 */ "position ::= expr LEFT OF position",
1303 /* 67 */ "position ::= expr RIGHT OF position",
1304 /* 68 */ "position ::= expr EDGEPT OF position",
1305 /* 69 */ "position ::= expr HEADING expr FROM position",
1306 /* 70 */ "place ::= object",
1307 /* 71 */ "place ::= object DOT_E edge",
1308 /* 72 */ "place ::= object DOT_L START",
1309 /* 73 */ "place ::= object DOT_L END",
1310 /* 74 */ "place ::= START OF object",
1311 /* 75 */ "place ::= END OF object",
1312 /* 76 */ "place ::= edge OF object",
1313 /* 77 */ "place ::= NTH VERTEX OF object",
1314 /* 78 */ "object ::= nth",
1315 /* 79 */ "object ::= nth OF|IN object",
1316 /* 80 */ "objectname ::= PLACENAME",
1317 /* 81 */ "objectname ::= objectname DOT_U PLACENAME",
1318 /* 82 */ "nth ::= NTH CLASSNAME",
1319 /* 83 */ "nth ::= NTH LAST CLASSNAME",
1320 /* 84 */ "nth ::= LAST CLASSNAME",
1321 /* 85 */ "nth ::= LAST",
1322 /* 86 */ "nth ::= NTH LB RB",
1323 /* 87 */ "nth ::= NTH LAST LB RB",
1324 /* 88 */ "nth ::= LAST LB RB",
1325 /* 89 */ "expr ::= expr PLUS expr",
1326 /* 90 */ "expr ::= expr MINUS expr",
1327 /* 91 */ "expr ::= expr STAR expr",
1328 /* 92 */ "expr ::= expr SLASH expr",
1329 /* 93 */ "expr ::= MINUS expr",
1330 /* 94 */ "expr ::= PLUS expr",
1331 /* 95 */ "expr ::= LP expr RP",
1332 /* 96 */ "expr ::= NUMBER",
1333 /* 97 */ "expr ::= ID",
1334 /* 98 */ "expr ::= FUNC1 LP expr RP",
1335 /* 99 */ "expr ::= FUNC2 LP expr COMMA expr RP",
1336 /* 100 */ "expr ::= object DOT_L locproperty",
1337 /* 101 */ "expr ::= object DOT_L numproperty",
1338 /* 102 */ "expr ::= object DOT_L dashproperty",
1339 /* 103 */ "expr ::= object DOT_L colorproperty",
1340 /* 104 */ "expr ::= object DOT_E edge DOT_L X",
1341 /* 105 */ "expr ::= object DOT_E edge DOT_L Y",
1342 /* 106 */ "expr ::= LP locproperty OF object RP",
1343 /* 107 */ "expr ::= LP dashproperty OF object RP",
1344 /* 108 */ "expr ::= LP numproperty OF object RP",
1345 /* 109 */ "expr ::= LP colorproperty OF object RP",
1346 /* 110 */ "expr ::= NTH VERTEX OF object DOT_L X",
1347 /* 111 */ "expr ::= NTH VERTEX OF object DOT_L Y",
1348 /* 112 */ "lvalue ::= ID",
1349 /* 113 */ "lvalue ::= FILL",
1350 /* 114 */ "lvalue ::= COLOR",
1351 /* 115 */ "lvalue ::= THICKNESS",
1352 /* 116 */ "rvalue ::= expr",
1353 /* 117 */ "print ::= PRINT",
1354 /* 118 */ "prlist ::= pritem",
1355 /* 119 */ "prlist ::= prlist prsep pritem",
1356 /* 120 */ "direction ::= UP",
1357 /* 121 */ "direction ::= DOWN",
1358 /* 122 */ "direction ::= LEFT",
1359 /* 123 */ "direction ::= RIGHT",
1360 /* 124 */ "attribute_list ::= alist",
1361 /* 125 */ "alist ::=",
1362 /* 126 */ "alist ::= alist attribute",
1363 /* 127 */ "attribute ::= boolproperty",
1364 /* 128 */ "attribute ::= WITH withclause",
1365 /* 129 */ "even ::= UNTIL EVEN WITH",
1366 /* 130 */ "even ::= EVEN WITH",
1367 /* 131 */ "withclause ::= with",
1368 /* 132 */ "withclause ::= withclause AND with",
1369 /* 133 */ "dashproperty ::= DOTTED",
1370 /* 134 */ "dashproperty ::= DASHED",
1371 /* 135 */ "colorproperty ::= FILL",
1372 /* 136 */ "colorproperty ::= COLOR",
1373 /* 137 */ "position ::= place",
1374 /* 138 */ "between ::= WAY BETWEEN",
1375 /* 139 */ "between ::= BETWEEN",
1376 /* 140 */ "between ::= OF THE WAY BETWEEN",
1377 /* 141 */ "object ::= objectname",
1378 /* 142 */ "locproperty ::= X|Y",
1379 /* 143 */ "edge ::= EDGEPT",
1380 /* 144 */ "edge ::= TOP",
1381 /* 145 */ "edge ::= BOTTOM",
1382 /* 146 */ "edge ::= LEFT",
1383 /* 147 */ "edge ::= RIGHT",
1384 };
1385 #endif /* NDEBUG */
1386
1387
1388 #if YYSTACKDEPTH<=0
@@ -1487,24 +1504,24 @@
1504 ** Note: during a reduce, the only symbols destroyed are those
1505 ** which appear on the RHS of the rule, but which are *not* used
1506 ** inside the C code.
1507 */
1508 /********* Begin destructor definitions ***************************************/
1509 case 86: /* element_list */
1510 {
1511 #line 442 "pikchr.y"
1512 pik_elist_free(p,(yypminor->yy120));
1513 #line 1538 "pikchr.c"
1514 }
1515 break;
1516 case 87: /* element */
1517 case 88: /* unnamed_element */
1518 case 89: /* basetype */
1519 {
1520 #line 444 "pikchr.y"
1521 pik_elem_free(p,(yypminor->yy26));
1522 #line 1547 "pikchr.c"
1523 }
1524 break;
1525 /********* End destructor definitions *****************************************/
1526 default: break; /* If no destructor action specified: do nothing */
1527 }
@@ -1718,14 +1735,14 @@
1735 #endif
1736 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1737 /* Here code is inserted which will execute if the parser
1738 ** stack every overflows */
1739 /******** Begin %stack_overflow code ******************************************/
1740 #line 473 "pikchr.y"
1741
1742 pik_error(p, 0, "parser stack overflow");
1743 #line 1768 "pikchr.c"
1744 /******** End %stack_overflow code ********************************************/
1745 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1746 pik_parserCTX_STORE
1747 }
1748
@@ -1793,156 +1810,158 @@
1810 }
1811
1812 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
1813 ** of that rule */
1814 static const YYCODETYPE yyRuleInfoLhs[] = {
1815 106, /* (0) document ::= element_list */
1816 86, /* (1) element_list ::= element */
1817 86, /* (2) element_list ::= element_list EOL element */
1818 87, /* (3) element ::= */
1819 87, /* (4) element ::= direction */
1820 87, /* (5) element ::= lvalue ASSIGN rvalue */
1821 87, /* (6) element ::= PLACENAME COLON unnamed_element */
1822 87, /* (7) element ::= PLACENAME COLON position */
1823 87, /* (8) element ::= unnamed_element */
1824 87, /* (9) element ::= print prlist */
1825 103, /* (10) rvalue ::= PLACENAME */
1826 109, /* (11) pritem ::= FILL */
1827 109, /* (12) pritem ::= COLOR */
1828 109, /* (13) pritem ::= THICKNESS */
1829 109, /* (14) pritem ::= rvalue */
1830 109, /* (15) pritem ::= STRING */
1831 110, /* (16) prsep ::= COMMA */
1832 88, /* (17) unnamed_element ::= basetype attribute_list */
1833 89, /* (18) basetype ::= CLASSNAME */
1834 89, /* (19) basetype ::= STRING textposition */
1835 89, /* (20) basetype ::= LB savelist element_list RB */
1836 112, /* (21) savelist ::= */
1837 111, /* (22) attribute_list ::= expr */
1838 111, /* (23) attribute_list ::= expr PERCENT */
1839 114, /* (24) attribute ::= numproperty expr PERCENT */
1840 114, /* (25) attribute ::= numproperty expr */
1841 114, /* (26) attribute ::= dashproperty expr */
1842 114, /* (27) attribute ::= dashproperty */
1843 114, /* (28) attribute ::= colorproperty rvalue */
1844 114, /* (29) attribute ::= direction expr PERCENT */
1845 114, /* (30) attribute ::= direction expr */
1846 114, /* (31) attribute ::= direction */
1847 114, /* (32) attribute ::= direction even position */
1848 114, /* (33) attribute ::= CLOSE */
1849 114, /* (34) attribute ::= CHOP */
1850 114, /* (35) attribute ::= FROM position */
1851 114, /* (36) attribute ::= TO position */
1852 114, /* (37) attribute ::= THEN */
1853 114, /* (38) attribute ::= AT position */
1854 114, /* (39) attribute ::= SAME */
1855 114, /* (40) attribute ::= SAME AS object */
1856 114, /* (41) attribute ::= STRING textposition */
1857 114, /* (42) attribute ::= FIT */
1858 117, /* (43) with ::= DOT_E edge AT position */
1859 117, /* (44) with ::= edge AT position */
1860 91, /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
1861 115, /* (46) boolproperty ::= CW */
1862 115, /* (47) boolproperty ::= CCW */
1863 115, /* (48) boolproperty ::= LARROW */
1864 115, /* (49) boolproperty ::= RARROW */
1865 115, /* (50) boolproperty ::= LRARROW */
1866 115, /* (51) boolproperty ::= INVIS */
1867 115, /* (52) boolproperty ::= THICK */
1868 115, /* (53) boolproperty ::= THIN */
1869 102, /* (54) textposition ::= */
1870 102, /* (55) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
1871 97, /* (56) position ::= expr COMMA expr */
1872 97, /* (57) position ::= place PLUS expr COMMA expr */
1873 97, /* (58) position ::= place MINUS expr COMMA expr */
1874 97, /* (59) position ::= place PLUS LP expr COMMA expr RP */
1875 97, /* (60) position ::= place MINUS LP expr COMMA expr RP */
1876 97, /* (61) position ::= LP position COMMA position RP */
1877 97, /* (62) position ::= LP position RP */
1878 97, /* (63) position ::= expr between position AND position */
1879 97, /* (64) position ::= expr ABOVE position */
1880 97, /* (65) position ::= expr BELOW position */
1881 97, /* (66) position ::= expr LEFT OF position */
1882 97, /* (67) position ::= expr RIGHT OF position */
1883 97, /* (68) position ::= expr EDGEPT OF position */
1884 97, /* (69) position ::= expr HEADING expr FROM position */
1885 98, /* (70) place ::= object */
1886 98, /* (71) place ::= object DOT_E edge */
1887 98, /* (72) place ::= object DOT_L START */
1888 98, /* (73) place ::= object DOT_L END */
1889 98, /* (74) place ::= START OF object */
1890 98, /* (75) place ::= END OF object */
1891 98, /* (76) place ::= edge OF object */
1892 98, /* (77) place ::= NTH VERTEX OF object */
1893 99, /* (78) object ::= nth */
1894 99, /* (79) object ::= nth OF|IN object */
1895 100, /* (80) objectname ::= PLACENAME */
1896 100, /* (81) objectname ::= objectname DOT_U PLACENAME */
1897 101, /* (82) nth ::= NTH CLASSNAME */
1898 101, /* (83) nth ::= NTH LAST CLASSNAME */
1899 101, /* (84) nth ::= LAST CLASSNAME */
1900 101, /* (85) nth ::= LAST */
1901 101, /* (86) nth ::= NTH LB RB */
1902 101, /* (87) nth ::= NTH LAST LB RB */
1903 101, /* (88) nth ::= LAST LB RB */
1904 90, /* (89) expr ::= expr PLUS expr */
1905 90, /* (90) expr ::= expr MINUS expr */
1906 90, /* (91) expr ::= expr STAR expr */
1907 90, /* (92) expr ::= expr SLASH expr */
1908 90, /* (93) expr ::= MINUS expr */
1909 90, /* (94) expr ::= PLUS expr */
1910 90, /* (95) expr ::= LP expr RP */
1911 90, /* (96) expr ::= NUMBER */
1912 90, /* (97) expr ::= ID */
1913 90, /* (98) expr ::= FUNC1 LP expr RP */
1914 90, /* (99) expr ::= FUNC2 LP expr COMMA expr RP */
1915 90, /* (100) expr ::= object DOT_L locproperty */
1916 90, /* (101) expr ::= object DOT_L numproperty */
1917 90, /* (102) expr ::= object DOT_L dashproperty */
1918 90, /* (103) expr ::= object DOT_L colorproperty */
1919 90, /* (104) expr ::= object DOT_E edge DOT_L X */
1920 90, /* (105) expr ::= object DOT_E edge DOT_L Y */
1921 90, /* (106) expr ::= LP locproperty OF object RP */
1922 90, /* (107) expr ::= LP dashproperty OF object RP */
1923 90, /* (108) expr ::= LP numproperty OF object RP */
1924 90, /* (109) expr ::= LP colorproperty OF object RP */
1925 90, /* (110) expr ::= NTH VERTEX OF object DOT_L X */
1926 90, /* (111) expr ::= NTH VERTEX OF object DOT_L Y */
1927 104, /* (112) lvalue ::= ID */
1928 104, /* (113) lvalue ::= FILL */
1929 104, /* (114) lvalue ::= COLOR */
1930 104, /* (115) lvalue ::= THICKNESS */
1931 103, /* (116) rvalue ::= expr */
1932 107, /* (117) print ::= PRINT */
1933 108, /* (118) prlist ::= pritem */
1934 108, /* (119) prlist ::= prlist prsep pritem */
1935 93, /* (120) direction ::= UP */
1936 93, /* (121) direction ::= DOWN */
1937 93, /* (122) direction ::= LEFT */
1938 93, /* (123) direction ::= RIGHT */
1939 111, /* (124) attribute_list ::= alist */
1940 113, /* (125) alist ::= */
1941 113, /* (126) alist ::= alist attribute */
1942 114, /* (127) attribute ::= boolproperty */
1943 114, /* (128) attribute ::= WITH withclause */
1944 105, /* (129) even ::= UNTIL EVEN WITH */
1945 105, /* (130) even ::= EVEN WITH */
1946 116, /* (131) withclause ::= with */
1947 116, /* (132) withclause ::= withclause AND with */
1948 94, /* (133) dashproperty ::= DOTTED */
1949 94, /* (134) dashproperty ::= DASHED */
1950 95, /* (135) colorproperty ::= FILL */
1951 95, /* (136) colorproperty ::= COLOR */
1952 97, /* (137) position ::= place */
1953 118, /* (138) between ::= WAY BETWEEN */
1954 118, /* (139) between ::= BETWEEN */
1955 118, /* (140) between ::= OF THE WAY BETWEEN */
1956 99, /* (141) object ::= objectname */
1957 96, /* (142) locproperty ::= X|Y */
1958 92, /* (143) edge ::= EDGEPT */
1959 92, /* (144) edge ::= TOP */
1960 92, /* (145) edge ::= BOTTOM */
1961 92, /* (146) edge ::= LEFT */
1962 92, /* (147) edge ::= RIGHT */
1963 };
1964
1965 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
1966 ** of symbols on the right-hand side of that rule. */
1967 static const signed char yyRuleInfoNRhs[] = {
@@ -1996,104 +2015,106 @@
2015 -1, /* (47) boolproperty ::= CCW */
2016 -1, /* (48) boolproperty ::= LARROW */
2017 -1, /* (49) boolproperty ::= RARROW */
2018 -1, /* (50) boolproperty ::= LRARROW */
2019 -1, /* (51) boolproperty ::= INVIS */
2020 -1, /* (52) boolproperty ::= THICK */
2021 -1, /* (53) boolproperty ::= THIN */
2022 0, /* (54) textposition ::= */
2023 -2, /* (55) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2024 -3, /* (56) position ::= expr COMMA expr */
2025 -5, /* (57) position ::= place PLUS expr COMMA expr */
2026 -5, /* (58) position ::= place MINUS expr COMMA expr */
2027 -7, /* (59) position ::= place PLUS LP expr COMMA expr RP */
2028 -7, /* (60) position ::= place MINUS LP expr COMMA expr RP */
2029 -5, /* (61) position ::= LP position COMMA position RP */
2030 -3, /* (62) position ::= LP position RP */
2031 -5, /* (63) position ::= expr between position AND position */
2032 -3, /* (64) position ::= expr ABOVE position */
2033 -3, /* (65) position ::= expr BELOW position */
2034 -4, /* (66) position ::= expr LEFT OF position */
2035 -4, /* (67) position ::= expr RIGHT OF position */
2036 -4, /* (68) position ::= expr EDGEPT OF position */
2037 -5, /* (69) position ::= expr HEADING expr FROM position */
2038 -1, /* (70) place ::= object */
2039 -3, /* (71) place ::= object DOT_E edge */
2040 -3, /* (72) place ::= object DOT_L START */
2041 -3, /* (73) place ::= object DOT_L END */
2042 -3, /* (74) place ::= START OF object */
2043 -3, /* (75) place ::= END OF object */
2044 -3, /* (76) place ::= edge OF object */
2045 -4, /* (77) place ::= NTH VERTEX OF object */
2046 -1, /* (78) object ::= nth */
2047 -3, /* (79) object ::= nth OF|IN object */
2048 -1, /* (80) objectname ::= PLACENAME */
2049 -3, /* (81) objectname ::= objectname DOT_U PLACENAME */
2050 -2, /* (82) nth ::= NTH CLASSNAME */
2051 -3, /* (83) nth ::= NTH LAST CLASSNAME */
2052 -2, /* (84) nth ::= LAST CLASSNAME */
2053 -1, /* (85) nth ::= LAST */
2054 -3, /* (86) nth ::= NTH LB RB */
2055 -4, /* (87) nth ::= NTH LAST LB RB */
2056 -3, /* (88) nth ::= LAST LB RB */
2057 -3, /* (89) expr ::= expr PLUS expr */
2058 -3, /* (90) expr ::= expr MINUS expr */
2059 -3, /* (91) expr ::= expr STAR expr */
2060 -3, /* (92) expr ::= expr SLASH expr */
2061 -2, /* (93) expr ::= MINUS expr */
2062 -2, /* (94) expr ::= PLUS expr */
2063 -3, /* (95) expr ::= LP expr RP */
2064 -1, /* (96) expr ::= NUMBER */
2065 -1, /* (97) expr ::= ID */
2066 -4, /* (98) expr ::= FUNC1 LP expr RP */
2067 -6, /* (99) expr ::= FUNC2 LP expr COMMA expr RP */
2068 -3, /* (100) expr ::= object DOT_L locproperty */
2069 -3, /* (101) expr ::= object DOT_L numproperty */
2070 -3, /* (102) expr ::= object DOT_L dashproperty */
2071 -3, /* (103) expr ::= object DOT_L colorproperty */
2072 -5, /* (104) expr ::= object DOT_E edge DOT_L X */
2073 -5, /* (105) expr ::= object DOT_E edge DOT_L Y */
2074 -5, /* (106) expr ::= LP locproperty OF object RP */
2075 -5, /* (107) expr ::= LP dashproperty OF object RP */
2076 -5, /* (108) expr ::= LP numproperty OF object RP */
2077 -5, /* (109) expr ::= LP colorproperty OF object RP */
2078 -6, /* (110) expr ::= NTH VERTEX OF object DOT_L X */
2079 -6, /* (111) expr ::= NTH VERTEX OF object DOT_L Y */
2080 -1, /* (112) lvalue ::= ID */
2081 -1, /* (113) lvalue ::= FILL */
2082 -1, /* (114) lvalue ::= COLOR */
2083 -1, /* (115) lvalue ::= THICKNESS */
2084 -1, /* (116) rvalue ::= expr */
2085 -1, /* (117) print ::= PRINT */
2086 -1, /* (118) prlist ::= pritem */
2087 -3, /* (119) prlist ::= prlist prsep pritem */
2088 -1, /* (120) direction ::= UP */
2089 -1, /* (121) direction ::= DOWN */
2090 -1, /* (122) direction ::= LEFT */
2091 -1, /* (123) direction ::= RIGHT */
2092 -1, /* (124) attribute_list ::= alist */
2093 0, /* (125) alist ::= */
2094 -2, /* (126) alist ::= alist attribute */
2095 -1, /* (127) attribute ::= boolproperty */
2096 -2, /* (128) attribute ::= WITH withclause */
2097 -3, /* (129) even ::= UNTIL EVEN WITH */
2098 -2, /* (130) even ::= EVEN WITH */
2099 -1, /* (131) withclause ::= with */
2100 -3, /* (132) withclause ::= withclause AND with */
2101 -1, /* (133) dashproperty ::= DOTTED */
2102 -1, /* (134) dashproperty ::= DASHED */
2103 -1, /* (135) colorproperty ::= FILL */
2104 -1, /* (136) colorproperty ::= COLOR */
2105 -1, /* (137) position ::= place */
2106 -2, /* (138) between ::= WAY BETWEEN */
2107 -1, /* (139) between ::= BETWEEN */
2108 -4, /* (140) between ::= OF THE WAY BETWEEN */
2109 -1, /* (141) object ::= objectname */
2110 -1, /* (142) locproperty ::= X|Y */
2111 -1, /* (143) edge ::= EDGEPT */
2112 -1, /* (144) edge ::= TOP */
2113 -1, /* (145) edge ::= BOTTOM */
2114 -1, /* (146) edge ::= LEFT */
2115 -1, /* (147) edge ::= RIGHT */
2116 };
2117
2118 static void yy_accept(yyParser*); /* Forward Declaration */
2119
2120 /*
@@ -2180,595 +2201,605 @@
2201 ** break;
2202 */
2203 /********** Begin reduce actions **********************************************/
2204 YYMINORTYPE yylhsminor;
2205 case 0: /* document ::= element_list */
2206 #line 477 "pikchr.y"
2207 {pik_render(p,yymsp[0].minor.yy120);}
2208 #line 2233 "pikchr.c"
2209 break;
2210 case 1: /* element_list ::= element */
2211 #line 480 "pikchr.y"
2212 { yylhsminor.yy120 = pik_elist_append(p,0,yymsp[0].minor.yy26); }
2213 #line 2238 "pikchr.c"
2214 yymsp[0].minor.yy120 = yylhsminor.yy120;
2215 break;
2216 case 2: /* element_list ::= element_list EOL element */
2217 #line 482 "pikchr.y"
2218 { yylhsminor.yy120 = pik_elist_append(p,yymsp[-2].minor.yy120,yymsp[0].minor.yy26); }
2219 #line 2244 "pikchr.c"
2220 yymsp[-2].minor.yy120 = yylhsminor.yy120;
2221 break;
2222 case 3: /* element ::= */
2223 #line 485 "pikchr.y"
2224 { yymsp[1].minor.yy26 = 0; }
2225 #line 2250 "pikchr.c"
2226 break;
2227 case 4: /* element ::= direction */
2228 #line 486 "pikchr.y"
2229 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy26=0; }
2230 #line 2255 "pikchr.c"
2231 yymsp[0].minor.yy26 = yylhsminor.yy26;
2232 break;
2233 case 5: /* element ::= lvalue ASSIGN rvalue */
2234 #line 487 "pikchr.y"
2235 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy191,&yymsp[-1].minor.yy0); yylhsminor.yy26=0;}
2236 #line 2261 "pikchr.c"
2237 yymsp[-2].minor.yy26 = yylhsminor.yy26;
2238 break;
2239 case 6: /* element ::= PLACENAME COLON unnamed_element */
2240 #line 489 "pikchr.y"
2241 { yylhsminor.yy26 = yymsp[0].minor.yy26; pik_elem_setname(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0); }
2242 #line 2267 "pikchr.c"
2243 yymsp[-2].minor.yy26 = yylhsminor.yy26;
2244 break;
2245 case 7: /* element ::= PLACENAME COLON position */
2246 #line 491 "pikchr.y"
2247 { yylhsminor.yy26 = pik_elem_new(p,0,0,0);
2248 if(yylhsminor.yy26){ yylhsminor.yy26->ptAt = yymsp[0].minor.yy131; pik_elem_setname(p,yylhsminor.yy26,&yymsp[-2].minor.yy0); }}
2249 #line 2274 "pikchr.c"
2250 yymsp[-2].minor.yy26 = yylhsminor.yy26;
2251 break;
2252 case 8: /* element ::= unnamed_element */
2253 #line 493 "pikchr.y"
2254 {yylhsminor.yy26 = yymsp[0].minor.yy26;}
2255 #line 2280 "pikchr.c"
2256 yymsp[0].minor.yy26 = yylhsminor.yy26;
2257 break;
2258 case 9: /* element ::= print prlist */
2259 #line 494 "pikchr.y"
2260 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy26=0;}
2261 #line 2286 "pikchr.c"
2262 break;
2263 case 10: /* rvalue ::= PLACENAME */
2264 #line 505 "pikchr.y"
2265 {yylhsminor.yy191 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2266 #line 2291 "pikchr.c"
2267 yymsp[0].minor.yy191 = yylhsminor.yy191;
2268 break;
2269 case 11: /* pritem ::= FILL */
2270 case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
2271 case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
2272 #line 510 "pikchr.y"
2273 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2274 #line 2299 "pikchr.c"
2275 break;
2276 case 14: /* pritem ::= rvalue */
2277 #line 513 "pikchr.y"
2278 {pik_append_num(p,"",yymsp[0].minor.yy191);}
2279 #line 2304 "pikchr.c"
2280 break;
2281 case 15: /* pritem ::= STRING */
2282 #line 514 "pikchr.y"
2283 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2284 #line 2309 "pikchr.c"
2285 break;
2286 case 16: /* prsep ::= COMMA */
2287 #line 515 "pikchr.y"
2288 {pik_append(p, " ", 1);}
2289 #line 2314 "pikchr.c"
2290 break;
2291 case 17: /* unnamed_element ::= basetype attribute_list */
2292 #line 518 "pikchr.y"
2293 {yylhsminor.yy26 = yymsp[-1].minor.yy26; pik_after_adding_attributes(p,yylhsminor.yy26);}
2294 #line 2319 "pikchr.c"
2295 yymsp[-1].minor.yy26 = yylhsminor.yy26;
2296 break;
2297 case 18: /* basetype ::= CLASSNAME */
2298 #line 520 "pikchr.y"
2299 {yylhsminor.yy26 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2300 #line 2325 "pikchr.c"
2301 yymsp[0].minor.yy26 = yylhsminor.yy26;
2302 break;
2303 case 19: /* basetype ::= STRING textposition */
2304 #line 522 "pikchr.y"
2305 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy60; yylhsminor.yy26 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2306 #line 2331 "pikchr.c"
2307 yymsp[-1].minor.yy26 = yylhsminor.yy26;
2308 break;
2309 case 20: /* basetype ::= LB savelist element_list RB */
2310 #line 524 "pikchr.y"
2311 { p->list = yymsp[-2].minor.yy120; yymsp[-3].minor.yy26 = pik_elem_new(p,0,0,yymsp[-1].minor.yy120); if(yymsp[-3].minor.yy26) yymsp[-3].minor.yy26->errTok = yymsp[0].minor.yy0; }
2312 #line 2337 "pikchr.c"
2313 break;
2314 case 21: /* savelist ::= */
2315 #line 529 "pikchr.y"
2316 {yymsp[1].minor.yy120 = p->list; p->list = 0;}
2317 #line 2342 "pikchr.c"
2318 break;
2319 case 22: /* attribute_list ::= expr */
2320 #line 536 "pikchr.y"
2321 { pik_add_direction(p,0,&yymsp[0].minor.yy191,0);}
2322 #line 2347 "pikchr.c"
2323 break;
2324 case 23: /* attribute_list ::= expr PERCENT */
2325 #line 537 "pikchr.y"
2326 { pik_add_direction(p,0,&yymsp[-1].minor.yy191,1);}
2327 #line 2352 "pikchr.c"
2328 break;
2329 case 24: /* attribute ::= numproperty expr PERCENT */
2330 #line 542 "pikchr.y"
2331 { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy191/100.0); }
2332 #line 2357 "pikchr.c"
2333 break;
2334 case 25: /* attribute ::= numproperty expr */
2335 case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
2336 #line 543 "pikchr.y"
2337 { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy191,0.0); }
2338 #line 2363 "pikchr.c"
2339 break;
2340 case 26: /* attribute ::= dashproperty expr */
2341 #line 544 "pikchr.y"
2342 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy191); }
2343 #line 2368 "pikchr.c"
2344 break;
2345 case 27: /* attribute ::= dashproperty */
2346 #line 545 "pikchr.y"
2347 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2348 #line 2373 "pikchr.c"
2349 break;
2350 case 29: /* attribute ::= direction expr PERCENT */
2351 #line 548 "pikchr.y"
2352 { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy191,1);}
2353 #line 2378 "pikchr.c"
2354 break;
2355 case 30: /* attribute ::= direction expr */
2356 #line 549 "pikchr.y"
2357 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy191,0);}
2358 #line 2383 "pikchr.c"
2359 break;
2360 case 31: /* attribute ::= direction */
2361 #line 550 "pikchr.y"
2362 { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
2363 #line 2388 "pikchr.c"
2364 break;
2365 case 32: /* attribute ::= direction even position */
2366 #line 551 "pikchr.y"
2367 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy131);}
2368 #line 2393 "pikchr.c"
2369 break;
2370 case 33: /* attribute ::= CLOSE */
2371 #line 552 "pikchr.y"
2372 { pik_close_path(p,&yymsp[0].minor.yy0); }
2373 #line 2398 "pikchr.c"
2374 break;
2375 case 34: /* attribute ::= CHOP */
2376 #line 553 "pikchr.y"
2377 { p->cur->bChop = 1; }
2378 #line 2403 "pikchr.c"
2379 break;
2380 case 35: /* attribute ::= FROM position */
2381 #line 554 "pikchr.y"
2382 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy131); }
2383 #line 2408 "pikchr.c"
2384 break;
2385 case 36: /* attribute ::= TO position */
2386 #line 555 "pikchr.y"
2387 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy131); }
2388 #line 2413 "pikchr.c"
2389 break;
2390 case 37: /* attribute ::= THEN */
2391 #line 556 "pikchr.y"
2392 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2393 #line 2418 "pikchr.c"
2394 break;
2395 case 38: /* attribute ::= AT position */
2396 #line 558 "pikchr.y"
2397 { pik_set_at(p,0,&yymsp[0].minor.yy131,&yymsp[-1].minor.yy0); }
2398 #line 2423 "pikchr.c"
2399 break;
2400 case 39: /* attribute ::= SAME */
2401 #line 560 "pikchr.y"
2402 {pik_same(p,0,&yymsp[0].minor.yy0);}
2403 #line 2428 "pikchr.c"
2404 break;
2405 case 40: /* attribute ::= SAME AS object */
2406 #line 561 "pikchr.y"
2407 {pik_same(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
2408 #line 2433 "pikchr.c"
2409 break;
2410 case 41: /* attribute ::= STRING textposition */
2411 #line 562 "pikchr.y"
2412 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy60);}
2413 #line 2438 "pikchr.c"
2414 break;
2415 case 42: /* attribute ::= FIT */
2416 #line 563 "pikchr.y"
2417 {pik_size_to_fit(p,&yymsp[0].minor.yy0); }
2418 #line 2443 "pikchr.c"
2419 break;
2420 case 43: /* with ::= DOT_E edge AT position */
2421 case 44: /* with ::= edge AT position */ yytestcase(yyruleno==44);
2422 #line 570 "pikchr.y"
2423 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy131,&yymsp[-1].minor.yy0); }
2424 #line 2449 "pikchr.c"
2425 break;
2426 case 45: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2427 #line 574 "pikchr.y"
2428 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2429 #line 2454 "pikchr.c"
2430 yymsp[0].minor.yy0 = yylhsminor.yy0;
2431 break;
2432 case 46: /* boolproperty ::= CW */
2433 #line 585 "pikchr.y"
2434 {p->cur->cw = 1;}
2435 #line 2460 "pikchr.c"
2436 break;
2437 case 47: /* boolproperty ::= CCW */
2438 #line 586 "pikchr.y"
2439 {p->cur->cw = 0;}
2440 #line 2465 "pikchr.c"
2441 break;
2442 case 48: /* boolproperty ::= LARROW */
2443 #line 587 "pikchr.y"
2444 {p->cur->larrow=1; p->cur->rarrow=0; }
2445 #line 2470 "pikchr.c"
2446 break;
2447 case 49: /* boolproperty ::= RARROW */
2448 #line 588 "pikchr.y"
2449 {p->cur->larrow=0; p->cur->rarrow=1; }
2450 #line 2475 "pikchr.c"
2451 break;
2452 case 50: /* boolproperty ::= LRARROW */
2453 #line 589 "pikchr.y"
2454 {p->cur->larrow=1; p->cur->rarrow=1; }
2455 #line 2480 "pikchr.c"
2456 break;
2457 case 51: /* boolproperty ::= INVIS */
2458 #line 590 "pikchr.y"
2459 {p->cur->sw = 0.0;}
2460 #line 2485 "pikchr.c"
2461 break;
2462 case 52: /* boolproperty ::= THICK */
 
 
 
 
 
2463 #line 591 "pikchr.y"
2464 {p->cur->sw *= 1.5;}
2465 #line 2490 "pikchr.c"
2466 break;
2467 case 53: /* boolproperty ::= THIN */
2468 #line 592 "pikchr.y"
2469 {p->cur->sw *= 0.67;}
2470 #line 2495 "pikchr.c"
2471 break;
2472 case 54: /* textposition ::= */
2473 #line 594 "pikchr.y"
2474 {yymsp[1].minor.yy60 = 0;}
2475 #line 2500 "pikchr.c"
2476 break;
2477 case 55: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
 
 
 
 
 
 
 
2478 #line 597 "pikchr.y"
2479 {yylhsminor.yy60 = pik_text_position(p,yymsp[-1].minor.yy60,&yymsp[0].minor.yy0);}
2480 #line 2505 "pikchr.c"
2481 yymsp[-1].minor.yy60 = yylhsminor.yy60;
2482 break;
2483 case 56: /* position ::= expr COMMA expr */
2484 #line 600 "pikchr.y"
2485 {yylhsminor.yy131.x=yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[0].minor.yy191;}
2486 #line 2511 "pikchr.c"
2487 yymsp[-2].minor.yy131 = yylhsminor.yy131;
2488 break;
2489 case 57: /* position ::= place PLUS expr COMMA expr */
 
 
 
 
 
 
2490 #line 602 "pikchr.y"
2491 {yylhsminor.yy131.x=yymsp[-4].minor.yy131.x+yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[-4].minor.yy131.y+yymsp[0].minor.yy191;}
2492 #line 2517 "pikchr.c"
2493 yymsp[-4].minor.yy131 = yylhsminor.yy131;
2494 break;
2495 case 58: /* position ::= place MINUS expr COMMA expr */
2496 #line 603 "pikchr.y"
2497 {yylhsminor.yy131.x=yymsp[-4].minor.yy131.x-yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[-4].minor.yy131.y-yymsp[0].minor.yy191;}
2498 #line 2523 "pikchr.c"
2499 yymsp[-4].minor.yy131 = yylhsminor.yy131;
2500 break;
2501 case 59: /* position ::= place PLUS LP expr COMMA expr RP */
2502 #line 605 "pikchr.y"
2503 {yylhsminor.yy131.x=yymsp[-6].minor.yy131.x+yymsp[-3].minor.yy191; yylhsminor.yy131.y=yymsp[-6].minor.yy131.y+yymsp[-1].minor.yy191;}
2504 #line 2529 "pikchr.c"
2505 yymsp[-6].minor.yy131 = yylhsminor.yy131;
2506 break;
2507 case 60: /* position ::= place MINUS LP expr COMMA expr RP */
 
 
 
 
 
 
2508 #line 607 "pikchr.y"
2509 {yylhsminor.yy131.x=yymsp[-6].minor.yy131.x-yymsp[-3].minor.yy191; yylhsminor.yy131.y=yymsp[-6].minor.yy131.y-yymsp[-1].minor.yy191;}
2510 #line 2535 "pikchr.c"
2511 yymsp[-6].minor.yy131 = yylhsminor.yy131;
2512 break;
2513 case 61: /* position ::= LP position COMMA position RP */
2514 #line 608 "pikchr.y"
2515 {yymsp[-4].minor.yy131.x=yymsp[-3].minor.yy131.x; yymsp[-4].minor.yy131.y=yymsp[-1].minor.yy131.y;}
2516 #line 2541 "pikchr.c"
 
2517 break;
2518 case 62: /* position ::= LP position RP */
2519 #line 609 "pikchr.y"
2520 {yymsp[-2].minor.yy131=yymsp[-1].minor.yy131;}
2521 #line 2546 "pikchr.c"
 
2522 break;
2523 case 63: /* position ::= expr between position AND position */
2524 #line 611 "pikchr.y"
2525 {yylhsminor.yy131 = pik_position_between(p,yymsp[-4].minor.yy191,yymsp[-2].minor.yy131,yymsp[0].minor.yy131);}
2526 #line 2551 "pikchr.c"
2527 yymsp[-4].minor.yy131 = yylhsminor.yy131;
2528 break;
2529 case 64: /* position ::= expr ABOVE position */
2530 #line 612 "pikchr.y"
2531 {yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.y += yymsp[-2].minor.yy191;}
2532 #line 2557 "pikchr.c"
2533 yymsp[-2].minor.yy131 = yylhsminor.yy131;
2534 break;
2535 case 65: /* position ::= expr BELOW position */
2536 #line 613 "pikchr.y"
2537 {yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.y -= yymsp[-2].minor.yy191;}
2538 #line 2563 "pikchr.c"
2539 yymsp[-2].minor.yy131 = yylhsminor.yy131;
2540 break;
2541 case 66: /* position ::= expr LEFT OF position */
2542 #line 614 "pikchr.y"
2543 {yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.x -= yymsp[-3].minor.yy191;}
2544 #line 2569 "pikchr.c"
2545 yymsp[-3].minor.yy131 = yylhsminor.yy131;
2546 break;
2547 case 67: /* position ::= expr RIGHT OF position */
2548 #line 615 "pikchr.y"
2549 {yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.x += yymsp[-3].minor.yy191;}
2550 #line 2575 "pikchr.c"
2551 yymsp[-3].minor.yy131 = yylhsminor.yy131;
2552 break;
2553 case 68: /* position ::= expr EDGEPT OF position */
2554 #line 617 "pikchr.y"
2555 {yylhsminor.yy131 = pik_position_at_hdg(p,yymsp[-3].minor.yy191,&yymsp[-2].minor.yy0,yymsp[0].minor.yy131);}
2556 #line 2581 "pikchr.c"
2557 yymsp[-3].minor.yy131 = yylhsminor.yy131;
2558 break;
2559 case 69: /* position ::= expr HEADING expr FROM position */
2560 #line 619 "pikchr.y"
2561 {yylhsminor.yy131 = pik_position_at_angle(p,yymsp[-4].minor.yy191,yymsp[-2].minor.yy191,yymsp[0].minor.yy131);}
2562 #line 2587 "pikchr.c"
2563 yymsp[-4].minor.yy131 = yylhsminor.yy131;
2564 break;
2565 case 70: /* place ::= object */
2566 #line 625 "pikchr.y"
2567 {yylhsminor.yy131 = pik_place_of_elem(p,yymsp[0].minor.yy26,0);}
2568 #line 2593 "pikchr.c"
2569 yymsp[0].minor.yy131 = yylhsminor.yy131;
2570 break;
2571 case 71: /* place ::= object DOT_E edge */
2572 case 72: /* place ::= object DOT_L START */ yytestcase(yyruleno==72);
2573 case 73: /* place ::= object DOT_L END */ yytestcase(yyruleno==73);
 
 
 
 
 
 
 
 
2574 #line 626 "pikchr.y"
2575 {yylhsminor.yy131 = pik_place_of_elem(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
2576 #line 2601 "pikchr.c"
2577 yymsp[-2].minor.yy131 = yylhsminor.yy131;
2578 break;
2579 case 74: /* place ::= START OF object */
2580 case 75: /* place ::= END OF object */ yytestcase(yyruleno==75);
2581 case 76: /* place ::= edge OF object */ yytestcase(yyruleno==76);
2582 #line 629 "pikchr.y"
2583 {yylhsminor.yy131 = pik_place_of_elem(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
2584 #line 2609 "pikchr.c"
2585 yymsp[-2].minor.yy131 = yylhsminor.yy131;
2586 break;
2587 case 77: /* place ::= NTH VERTEX OF object */
 
 
 
 
 
 
2588 #line 632 "pikchr.y"
2589 {yylhsminor.yy131 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy26);}
2590 #line 2615 "pikchr.c"
2591 yymsp[-3].minor.yy131 = yylhsminor.yy131;
2592 break;
2593 case 78: /* object ::= nth */
2594 #line 635 "pikchr.y"
2595 {yylhsminor.yy26 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2596 #line 2621 "pikchr.c"
2597 yymsp[0].minor.yy26 = yylhsminor.yy26;
2598 break;
2599 case 79: /* object ::= nth OF|IN object */
2600 #line 636 "pikchr.y"
2601 {yylhsminor.yy26 = pik_find_nth(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
2602 #line 2627 "pikchr.c"
2603 yymsp[-2].minor.yy26 = yylhsminor.yy26;
2604 break;
2605 case 80: /* objectname ::= PLACENAME */
2606 #line 638 "pikchr.y"
2607 {yylhsminor.yy26 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2608 #line 2633 "pikchr.c"
2609 yymsp[0].minor.yy26 = yylhsminor.yy26;
2610 break;
2611 case 81: /* objectname ::= objectname DOT_U PLACENAME */
2612 #line 640 "pikchr.y"
2613 {yylhsminor.yy26 = pik_find_byname(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
2614 #line 2639 "pikchr.c"
2615 yymsp[-2].minor.yy26 = yylhsminor.yy26;
2616 break;
2617 case 82: /* nth ::= NTH CLASSNAME */
2618 #line 642 "pikchr.y"
2619 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2620 #line 2645 "pikchr.c"
2621 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2622 break;
2623 case 83: /* nth ::= NTH LAST CLASSNAME */
2624 #line 643 "pikchr.y"
2625 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2626 #line 2651 "pikchr.c"
2627 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2628 break;
2629 case 84: /* nth ::= LAST CLASSNAME */
2630 #line 644 "pikchr.y"
2631 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2632 #line 2657 "pikchr.c"
2633 break;
2634 case 85: /* nth ::= LAST */
2635 #line 645 "pikchr.y"
2636 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2637 #line 2662 "pikchr.c"
2638 yymsp[0].minor.yy0 = yylhsminor.yy0;
2639 break;
2640 case 86: /* nth ::= NTH LB RB */
2641 #line 646 "pikchr.y"
2642 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2643 #line 2668 "pikchr.c"
2644 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2645 break;
2646 case 87: /* nth ::= NTH LAST LB RB */
2647 #line 647 "pikchr.y"
2648 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2649 #line 2674 "pikchr.c"
2650 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2651 break;
2652 case 88: /* nth ::= LAST LB RB */
2653 #line 648 "pikchr.y"
2654 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2655 #line 2680 "pikchr.c"
2656 break;
2657 case 89: /* expr ::= expr PLUS expr */
2658 #line 650 "pikchr.y"
2659 {yylhsminor.yy191=yymsp[-2].minor.yy191+yymsp[0].minor.yy191;}
2660 #line 2685 "pikchr.c"
2661 yymsp[-2].minor.yy191 = yylhsminor.yy191;
2662 break;
2663 case 90: /* expr ::= expr MINUS expr */
2664 #line 651 "pikchr.y"
2665 {yylhsminor.yy191=yymsp[-2].minor.yy191-yymsp[0].minor.yy191;}
2666 #line 2691 "pikchr.c"
2667 yymsp[-2].minor.yy191 = yylhsminor.yy191;
2668 break;
2669 case 91: /* expr ::= expr STAR expr */
2670 #line 652 "pikchr.y"
2671 {yylhsminor.yy191=yymsp[-2].minor.yy191*yymsp[0].minor.yy191;}
2672 #line 2697 "pikchr.c"
2673 yymsp[-2].minor.yy191 = yylhsminor.yy191;
2674 break;
2675 case 92: /* expr ::= expr SLASH expr */
2676 #line 653 "pikchr.y"
2677 {
2678 if( yymsp[0].minor.yy191==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy191 = 0.0; }
2679 else{ yylhsminor.yy191 = yymsp[-2].minor.yy191/yymsp[0].minor.yy191; }
2680 }
2681 #line 2706 "pikchr.c"
2682 yymsp[-2].minor.yy191 = yylhsminor.yy191;
2683 break;
2684 case 93: /* expr ::= MINUS expr */
2685 #line 657 "pikchr.y"
2686 {yymsp[-1].minor.yy191=-yymsp[0].minor.yy191;}
2687 #line 2712 "pikchr.c"
2688 break;
2689 case 94: /* expr ::= PLUS expr */
2690 #line 658 "pikchr.y"
2691 {yymsp[-1].minor.yy191=yymsp[0].minor.yy191;}
2692 #line 2717 "pikchr.c"
2693 break;
2694 case 95: /* expr ::= LP expr RP */
2695 #line 659 "pikchr.y"
2696 {yymsp[-2].minor.yy191=yymsp[-1].minor.yy191;}
2697 #line 2722 "pikchr.c"
2698 break;
2699 case 96: /* expr ::= NUMBER */
2700 #line 660 "pikchr.y"
2701 {yylhsminor.yy191=pik_atof(p,&yymsp[0].minor.yy0);}
2702 #line 2727 "pikchr.c"
2703 yymsp[0].minor.yy191 = yylhsminor.yy191;
2704 break;
2705 case 97: /* expr ::= ID */
2706 #line 661 "pikchr.y"
2707 {yylhsminor.yy191=pik_get_var(p,&yymsp[0].minor.yy0);}
2708 #line 2733 "pikchr.c"
2709 yymsp[0].minor.yy191 = yylhsminor.yy191;
2710 break;
2711 case 98: /* expr ::= FUNC1 LP expr RP */
2712 #line 662 "pikchr.y"
2713 {yylhsminor.yy191 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy191,0.0);}
2714 #line 2739 "pikchr.c"
2715 yymsp[-3].minor.yy191 = yylhsminor.yy191;
2716 break;
2717 case 99: /* expr ::= FUNC2 LP expr COMMA expr RP */
2718 #line 663 "pikchr.y"
2719 {yylhsminor.yy191 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy191,yymsp[-1].minor.yy191);}
2720 #line 2745 "pikchr.c"
2721 yymsp[-5].minor.yy191 = yylhsminor.yy191;
2722 break;
2723 case 100: /* expr ::= object DOT_L locproperty */
2724 case 101: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==101);
2725 case 102: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==102);
2726 case 103: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==103);
2727 #line 665 "pikchr.y"
2728 {yylhsminor.yy191=pik_property_of(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
2729 #line 2754 "pikchr.c"
2730 yymsp[-2].minor.yy191 = yylhsminor.yy191;
2731 break;
2732 case 104: /* expr ::= object DOT_E edge DOT_L X */
2733 #line 669 "pikchr.y"
2734 {yylhsminor.yy191=pik_place_of_elem(p,yymsp[-4].minor.yy26,&yymsp[-2].minor.yy0).x;}
2735 #line 2760 "pikchr.c"
2736 yymsp[-4].minor.yy191 = yylhsminor.yy191;
2737 break;
2738 case 105: /* expr ::= object DOT_E edge DOT_L Y */
2739 #line 670 "pikchr.y"
2740 {yylhsminor.yy191=pik_place_of_elem(p,yymsp[-4].minor.yy26,&yymsp[-2].minor.yy0).y;}
2741 #line 2766 "pikchr.c"
2742 yymsp[-4].minor.yy191 = yylhsminor.yy191;
2743 break;
2744 case 106: /* expr ::= LP locproperty OF object RP */
2745 case 107: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==107);
2746 case 108: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==108);
2747 case 109: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==109);
2748 #line 671 "pikchr.y"
2749 {yymsp[-4].minor.yy191=pik_property_of(p,yymsp[-1].minor.yy26,&yymsp[-3].minor.yy0);}
2750 #line 2775 "pikchr.c"
2751 break;
2752 case 110: /* expr ::= NTH VERTEX OF object DOT_L X */
2753 #line 677 "pikchr.y"
2754 {yylhsminor.yy191 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy26).x;}
2755 #line 2780 "pikchr.c"
2756 yymsp[-5].minor.yy191 = yylhsminor.yy191;
2757 break;
2758 case 111: /* expr ::= NTH VERTEX OF object DOT_L Y */
2759 #line 679 "pikchr.y"
2760 {yylhsminor.yy191 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy26).y;}
2761 #line 2786 "pikchr.c"
2762 yymsp[-5].minor.yy191 = yylhsminor.yy191;
2763 break;
2764 default:
2765 /* (112) lvalue ::= ID */ yytestcase(yyruleno==112);
2766 /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113);
2767 /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114);
2768 /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115);
2769 /* (116) rvalue ::= expr */ yytestcase(yyruleno==116);
2770 /* (117) print ::= PRINT */ yytestcase(yyruleno==117);
2771 /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118);
2772 /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119);
2773 /* (120) direction ::= UP */ yytestcase(yyruleno==120);
2774 /* (121) direction ::= DOWN */ yytestcase(yyruleno==121);
2775 /* (122) direction ::= LEFT */ yytestcase(yyruleno==122);
2776 /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123);
2777 /* (124) attribute_list ::= alist */ yytestcase(yyruleno==124);
2778 /* (125) alist ::= */ yytestcase(yyruleno==125);
2779 /* (126) alist ::= alist attribute */ yytestcase(yyruleno==126);
2780 /* (127) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=127);
2781 /* (128) attribute ::= WITH withclause */ yytestcase(yyruleno==128);
2782 /* (129) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==129);
2783 /* (130) even ::= EVEN WITH */ yytestcase(yyruleno==130);
2784 /* (131) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=131);
2785 /* (132) withclause ::= withclause AND with */ yytestcase(yyruleno==132);
2786 /* (133) dashproperty ::= DOTTED */ yytestcase(yyruleno==133);
2787 /* (134) dashproperty ::= DASHED */ yytestcase(yyruleno==134);
2788 /* (135) colorproperty ::= FILL */ yytestcase(yyruleno==135);
2789 /* (136) colorproperty ::= COLOR */ yytestcase(yyruleno==136);
2790 /* (137) position ::= place */ yytestcase(yyruleno==137);
2791 /* (138) between ::= WAY BETWEEN */ yytestcase(yyruleno==138);
2792 /* (139) between ::= BETWEEN */ yytestcase(yyruleno==139);
2793 /* (140) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==140);
2794 /* (141) object ::= objectname */ yytestcase(yyruleno==141);
2795 /* (142) locproperty ::= X|Y */ yytestcase(yyruleno==142);
2796 /* (143) edge ::= EDGEPT */ yytestcase(yyruleno==143);
2797 /* (144) edge ::= TOP */ yytestcase(yyruleno==144);
2798 /* (145) edge ::= BOTTOM */ yytestcase(yyruleno==145);
2799 /* (146) edge ::= LEFT */ yytestcase(yyruleno==146);
2800 /* (147) edge ::= RIGHT */ yytestcase(yyruleno==147);
2801 break;
2802 /********** End reduce actions ************************************************/
2803 };
2804 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
2805 yygoto = yyRuleInfoLhs[yyruleno];
@@ -2824,18 +2855,18 @@
2855 ){
2856 pik_parserARG_FETCH
2857 pik_parserCTX_FETCH
2858 #define TOKEN yyminor
2859 /************ Begin %syntax_error code ****************************************/
2860 #line 466 "pikchr.y"
2861
2862 if( TOKEN.z && TOKEN.z[0] ){
2863 pik_error(p, &TOKEN, "syntax error");
2864 }else{
2865 pik_error(p, 0, "syntax error");
2866 }
2867 #line 2892 "pikchr.c"
2868 /************ End %syntax_error code ******************************************/
2869 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
2870 pik_parserCTX_STORE
2871 }
2872
@@ -3064,11 +3095,11 @@
3095 #else
3096 (void)iToken;
3097 return 0;
3098 #endif
3099 }
3100 #line 689 "pikchr.y"
3101
3102
3103
3104 /* Chart of the 140 official HTML color names with their
3105 ** corresponding RGB value.
@@ -4110,11 +4141,11 @@
4141 buf[sizeof(buf)-1] = 0;
4142 pik_append(p, buf, -1);
4143 }
4144 static void pik_append_dis(Pik *p, const char *z1, PNum v, const char *z2){
4145 char buf[200];
4146 snprintf(buf, sizeof(buf)-1, "%s%g%s", z1, p->rScale*v, z2);
4147 buf[sizeof(buf)-1] = 0;
4148 pik_append(p, buf, -1);
4149 }
4150 static void pik_append_clr(Pik *p, const char *z1, PNum v, const char *z2){
4151 char buf[200];
@@ -4152,11 +4183,10 @@
4183 }else{
4184 pik_append(p,"fill:none;",-1);
4185 }
4186 if( pElem->sw>0.0 && pElem->color>=0.0 ){
4187 PNum sw = pElem->sw;
 
4188 pik_append_dis(p, "stroke-width:", sw, ";");
4189 pik_append_clr(p, "stroke:",pElem->color,";");
4190 if( pElem->dotted>0.0 ){
4191 PNum v = pElem->dotted;
4192 if( sw<2.1/p->rScale ) sw = 2.1/p->rScale;
@@ -4263,21 +4293,25 @@
4293 }else{
4294 dy2 = 0.0;
4295 }
4296 for(i=0; i<n; i++){
4297 PToken *t = &aTxt[i];
4298 PNum xtraFontScale = 1.0;
4299 orig_y = y = pElem->ptAt.y;
4300 if( t->eCode & TP_ABOVE2 ) y += dy2 + 3*dy;
4301 if( t->eCode & TP_ABOVE ) y += dy2 + dy;
4302 if( t->eCode & TP_BELOW ) y -= dy2 + dy;
4303 if( t->eCode & TP_BELOW2 ) y -= dy2 + 3*dy;
4304 if( t->eCode & TP_BIG ) xtraFontScale *= 1.25;
4305 if( t->eCode & TP_SMALL ) xtraFontScale *= 0.8;
4306 if( t->eCode & TP_XTRA ) xtraFontScale *= xtraFontScale;
4307
4308 if( pBox!=0 ){
4309 /* If pBox is not NULL, do not draw any <text>. Instead, just expand
4310 ** pBox to include the text */
4311 PNum cw = pik_text_length(t)*p->charWidth*xtraFontScale;
4312 PNum ch = p->charHeight*0.5*xtraFontScale;
4313 if( t->eCode & TP_RJUST ){
4314 pik_bbox_add_xy(pBox, x, y-ch);
4315 pik_bbox_add_xy(pBox, x-cw, y+ch);
4316 }else if( t->eCode & TP_LJUST ){
4317 pik_bbox_add_xy(pBox, x, y-ch);
@@ -4305,12 +4339,13 @@
4339 pik_append(p, " font-weight=\"bold\"", -1);
4340 }
4341 if( pElem->color>=0.0 ){
4342 pik_append_clr(p, " fill=\"", pElem->color, "\"");
4343 }
4344 xtraFontScale *= p->fontScale;
4345 if( xtraFontScale<=0.99 || xtraFontScale>=1.01 ){
4346 pik_append_num(p, " font-size=\"", xtraFontScale*100.0);
4347 pik_append(p, "%\"", 2);
4348 }
4349 if( (t->eCode & TP_ALIGN)!=0 && pElem->nPath>=2 ){
4350 int n = pElem->nPath;
4351 PNum dx = pElem->aPath[n-1].x - pElem->aPath[0].x;
@@ -5065,11 +5100,15 @@
5100 case T_RJUST: iRes = (iRes&~TP_JMASK) | TP_RJUST; break;
5101 case T_ABOVE: iRes = (iRes&~TP_VMASK) | TP_ABOVE; break;
5102 case T_BELOW: iRes = (iRes&~TP_VMASK) | TP_BELOW; break;
5103 case T_ITALIC: iRes |= TP_ITALIC; break;
5104 case T_BOLD: iRes |= TP_BOLD; break;
5105 case T_ALIGNED: iRes |= TP_ALIGN; break;
5106 case T_BIG: if( iRes & TP_BIG ) iRes |= TP_XTRA;
5107 else iRes = (iRes &~TP_SZMASK)|TP_BIG; break;
5108 case T_SMALL: if( iRes & TP_SMALL ) iRes |= TP_XTRA;
5109 else iRes = (iRes &~TP_SZMASK)|TP_SMALL; break;
5110 }
5111 return iRes;
5112 }
5113
5114 /* Return an estimate of the actually number of displayed characters
@@ -5940,10 +5979,11 @@
5979 { "and", 3, T_AND, 0, 0 },
5980 { "as", 2, T_AS, 0, 0 },
5981 { "at", 2, T_AT, 0, 0 },
5982 { "below", 5, T_BELOW, 0, 0 },
5983 { "between", 7, T_BETWEEN, 0, 0 },
5984 { "big", 3, T_BIG, 0, 0 },
5985 { "bold", 4, T_BOLD, 0, 0 },
5986 { "bot", 3, T_EDGEPT, 0, CP_S },
5987 { "bottom", 6, T_BOTTOM, 0, CP_S },
5988 { "c", 1, T_EDGEPT, 0, CP_C },
5989 { "ccw", 3, T_CCW, 0, 0 },
@@ -5990,18 +6030,21 @@
6030 { "rjust", 5, T_RJUST, 0, 0 },
6031 { "s", 1, T_EDGEPT, 0, CP_S },
6032 { "same", 4, T_SAME, 0, 0 },
6033 { "se", 2, T_EDGEPT, 0, CP_SE },
6034 { "sin", 3, T_FUNC1, FN_SIN, 0 },
6035 { "small", 5, T_SMALL, 0, 0 },
6036 { "south", 5, T_EDGEPT, 0, CP_S },
6037 { "sqrt", 4, T_FUNC1, FN_SQRT, 0 },
6038 { "start", 5, T_START, 0, 0 },
6039 { "sw", 2, T_EDGEPT, 0, CP_SW },
6040 { "t", 1, T_TOP, 0, CP_N },
6041 { "the", 3, T_THE, 0, 0 },
6042 { "then", 4, T_THEN, 0, 0 },
6043 { "thick", 5, T_THICK, 0, 0 },
6044 { "thickness", 9, T_THICKNESS, 0, 0 },
6045 { "thin", 4, T_THIN, 0, 0 },
6046 { "to", 2, T_TO, 0, 0 },
6047 { "top", 3, T_TOP, 0, CP_N },
6048 { "until", 5, T_UNTIL, 0, 0 },
6049 { "up", 2, T_UP, DIR_UP, 0 },
6050 { "vertex", 6, T_VERTEX, 0, 0 },
@@ -6485,6 +6528,6 @@
6528 printf("</body></html>\n");
6529 return 0;
6530 }
6531 #endif /* PIKCHR_SHELL */
6532
6533 #line 6558 "pikchr.c"
6534

Keyboard Shortcuts

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