Fossil SCM
Fix the assert() statement in Pikchr so that it works on positions, not just places.
Commit
249817138c37596e9bd17337dbc886866e7f418e07f2271befbc437f005d35df
Parent
11e7960e51efc3d…
1 file changed
+677
-657
+677
-657
| --- src/pikchr.c | ||
| +++ src/pikchr.c | ||
| @@ -443,11 +443,11 @@ | ||
| 443 | 443 | static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem); |
| 444 | 444 | static PToken pik_next_semantic_token(PToken *pThis); |
| 445 | 445 | static void pik_compute_layout_settings(Pik*); |
| 446 | 446 | static void pik_behind(Pik*,PElem*); |
| 447 | 447 | static PElem *pik_assert(Pik*,PNum,PToken*,PNum); |
| 448 | -static PElem *pik_place_assert(Pik*,PPoint*,PToken*,PPoint*); | |
| 448 | +static PElem *pik_position_assert(Pik*,PPoint*,PToken*,PPoint*); | |
| 449 | 449 | static PNum pik_dist(PPoint*,PPoint*); |
| 450 | 450 | |
| 451 | 451 | |
| 452 | 452 | #line 478 "pikchr.c" |
| 453 | 453 | /**************** End of %include directives **********************************/ |
| @@ -633,21 +633,21 @@ | ||
| 633 | 633 | #define pik_parserCTX_PARAM ,p |
| 634 | 634 | #define pik_parserCTX_FETCH Pik *p=yypParser->p; |
| 635 | 635 | #define pik_parserCTX_STORE yypParser->p=p; |
| 636 | 636 | #define YYFALLBACK 1 |
| 637 | 637 | #define YYNSTATE 162 |
| 638 | -#define YYNRULE 152 | |
| 639 | -#define YYNRULE_WITH_ACTION 112 | |
| 638 | +#define YYNRULE 153 | |
| 639 | +#define YYNRULE_WITH_ACTION 113 | |
| 640 | 640 | #define YYNTOKEN 95 |
| 641 | 641 | #define YY_MAX_SHIFT 161 |
| 642 | 642 | #define YY_MIN_SHIFTREDUCE 282 |
| 643 | -#define YY_MAX_SHIFTREDUCE 433 | |
| 644 | -#define YY_ERROR_ACTION 434 | |
| 645 | -#define YY_ACCEPT_ACTION 435 | |
| 646 | -#define YY_NO_ACTION 436 | |
| 647 | -#define YY_MIN_REDUCE 437 | |
| 648 | -#define YY_MAX_REDUCE 588 | |
| 643 | +#define YY_MAX_SHIFTREDUCE 434 | |
| 644 | +#define YY_ERROR_ACTION 435 | |
| 645 | +#define YY_ACCEPT_ACTION 436 | |
| 646 | +#define YY_NO_ACTION 437 | |
| 647 | +#define YY_MIN_REDUCE 438 | |
| 648 | +#define YY_MAX_REDUCE 590 | |
| 649 | 649 | /************* End control #defines *******************************************/ |
| 650 | 650 | #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) |
| 651 | 651 | |
| 652 | 652 | /* Define the yytestcase() macro to be a no-op if is not already defined |
| 653 | 653 | ** otherwise. |
| @@ -710,321 +710,328 @@ | ||
| 710 | 710 | ** yy_reduce_ofst[] For each state, the offset into yy_action for |
| 711 | 711 | ** shifting non-terminals after a reduce. |
| 712 | 712 | ** yy_default[] Default action for each state. |
| 713 | 713 | ** |
| 714 | 714 | *********** Begin parsing tables **********************************************/ |
| 715 | -#define YY_ACTTAB_COUNT (1206) | |
| 715 | +#define YY_ACTTAB_COUNT (1244) | |
| 716 | 716 | static const YYACTIONTYPE yy_action[] = { |
| 717 | - /* 0 */ 562, 437, 23, 443, 27, 73, 128, 147, 53, 49, | |
| 718 | - /* 10 */ 562, 35, 444, 113, 120, 159, 119, 127, 418, 419, | |
| 719 | - /* 20 */ 333, 546, 80, 519, 547, 548, 562, 64, 63, 62, | |
| 720 | - /* 30 */ 61, 316, 317, 6, 5, 32, 148, 31, 4, 71, | |
| 721 | - /* 40 */ 126, 26, 329, 66, 566, 300, 48, 333, 333, 333, | |
| 722 | - /* 50 */ 333, 416, 417, 334, 335, 336, 337, 338, 339, 340, | |
| 723 | - /* 60 */ 341, 464, 64, 63, 62, 61, 121, 438, 445, 27, | |
| 724 | - /* 70 */ 35, 464, 69, 441, 29, 292, 485, 159, 119, 418, | |
| 725 | - /* 80 */ 419, 333, 30, 80, 161, 350, 304, 464, 435, 25, | |
| 726 | - /* 90 */ 324, 10, 316, 317, 6, 5, 32, 82, 31, 4, | |
| 727 | - /* 100 */ 71, 126, 83, 329, 66, 482, 159, 119, 333, 333, | |
| 728 | - /* 110 */ 333, 333, 416, 417, 334, 335, 336, 337, 338, 339, | |
| 729 | - /* 120 */ 340, 341, 385, 426, 43, 59, 60, 34, 64, 63, | |
| 730 | - /* 130 */ 62, 61, 75, 368, 372, 155, 22, 75, 385, 426, | |
| 731 | - /* 140 */ 42, 59, 60, 79, 38, 302, 78, 45, 37, 368, | |
| 732 | - /* 150 */ 432, 431, 22, 69, 343, 343, 343, 343, 343, 343, | |
| 733 | - /* 160 */ 343, 343, 343, 343, 368, 293, 432, 431, 394, 564, | |
| 734 | - /* 170 */ 76, 564, 64, 63, 62, 61, 307, 389, 390, 132, | |
| 735 | - /* 180 */ 65, 125, 425, 62, 61, 395, 396, 397, 399, 79, | |
| 736 | - /* 190 */ 36, 302, 78, 28, 402, 403, 404, 405, 425, 106, | |
| 737 | - /* 200 */ 67, 427, 428, 429, 430, 415, 322, 117, 384, 154, | |
| 738 | - /* 210 */ 153, 152, 517, 159, 119, 106, 130, 427, 428, 429, | |
| 739 | - /* 220 */ 430, 371, 157, 117, 384, 154, 153, 152, 385, 426, | |
| 740 | - /* 230 */ 108, 59, 60, 64, 63, 62, 61, 2, 117, 368, | |
| 741 | - /* 240 */ 44, 147, 58, 3, 89, 426, 383, 123, 122, 159, | |
| 742 | - /* 250 */ 119, 414, 46, 120, 159, 119, 432, 431, 1, 141, | |
| 743 | - /* 260 */ 139, 64, 63, 62, 61, 385, 463, 388, 59, 60, | |
| 744 | - /* 270 */ 123, 8, 432, 431, 383, 151, 368, 9, 423, 58, | |
| 745 | - /* 280 */ 54, 107, 402, 403, 404, 405, 146, 145, 425, 74, | |
| 746 | - /* 290 */ 120, 159, 119, 40, 453, 64, 63, 62, 61, 349, | |
| 747 | - /* 300 */ 463, 77, 77, 137, 425, 106, 421, 427, 428, 429, | |
| 748 | - /* 310 */ 430, 138, 151, 117, 384, 154, 153, 152, 522, 159, | |
| 749 | - /* 320 */ 119, 19, 18, 427, 428, 429, 430, 114, 11, 21, | |
| 750 | - /* 330 */ 13, 144, 140, 422, 141, 139, 64, 63, 62, 61, | |
| 751 | - /* 340 */ 15, 41, 106, 64, 63, 62, 61, 16, 370, 156, | |
| 752 | - /* 350 */ 117, 384, 154, 153, 152, 54, 418, 419, 333, 17, | |
| 753 | - /* 360 */ 107, 146, 145, 385, 370, 156, 59, 60, 40, 120, | |
| 754 | - /* 370 */ 159, 119, 12, 468, 102, 68, 352, 58, 20, 24, | |
| 755 | - /* 380 */ 295, 296, 297, 56, 299, 333, 333, 333, 333, 416, | |
| 756 | - /* 390 */ 417, 151, 64, 63, 62, 61, 19, 18, 385, 523, | |
| 757 | - /* 400 */ 57, 59, 60, 160, 21, 383, 144, 140, 422, 368, | |
| 758 | - /* 410 */ 118, 50, 58, 376, 385, 142, 374, 59, 60, 385, | |
| 759 | - /* 420 */ 143, 375, 59, 60, 369, 368, 118, 158, 58, 70, | |
| 760 | - /* 430 */ 368, 39, 385, 58, 436, 59, 60, 436, 523, 436, | |
| 761 | - /* 440 */ 106, 131, 129, 368, 523, 436, 58, 523, 117, 384, | |
| 762 | - /* 450 */ 154, 153, 152, 426, 64, 63, 62, 61, 64, 63, | |
| 763 | - /* 460 */ 62, 61, 87, 368, 147, 385, 436, 348, 59, 60, | |
| 764 | - /* 470 */ 124, 120, 159, 119, 436, 106, 102, 52, 436, 58, | |
| 765 | - /* 480 */ 432, 431, 436, 117, 384, 154, 153, 152, 436, 436, | |
| 766 | - /* 490 */ 436, 106, 436, 148, 436, 436, 106, 436, 436, 117, | |
| 767 | - /* 500 */ 384, 154, 153, 152, 117, 384, 154, 153, 152, 106, | |
| 768 | - /* 510 */ 436, 385, 425, 436, 59, 60, 436, 117, 384, 154, | |
| 769 | - /* 520 */ 153, 152, 368, 436, 385, 47, 436, 59, 60, 106, | |
| 770 | - /* 530 */ 436, 427, 428, 429, 430, 368, 436, 117, 51, 439, | |
| 771 | - /* 540 */ 445, 27, 106, 436, 436, 441, 436, 436, 88, 436, | |
| 772 | - /* 550 */ 117, 384, 154, 153, 152, 436, 161, 120, 159, 119, | |
| 773 | - /* 560 */ 436, 25, 436, 7, 469, 469, 520, 159, 119, 109, | |
| 774 | - /* 570 */ 438, 445, 27, 436, 436, 73, 441, 147, 436, 151, | |
| 775 | - /* 580 */ 436, 436, 487, 113, 120, 159, 119, 161, 106, 436, | |
| 776 | - /* 590 */ 436, 436, 25, 436, 436, 436, 117, 384, 154, 153, | |
| 777 | - /* 600 */ 152, 106, 64, 63, 62, 61, 148, 436, 90, 117, | |
| 778 | - /* 610 */ 384, 154, 153, 152, 73, 436, 147, 120, 159, 119, | |
| 779 | - /* 620 */ 436, 486, 113, 120, 159, 119, 436, 73, 436, 147, | |
| 780 | - /* 630 */ 436, 14, 436, 436, 480, 113, 120, 159, 119, 151, | |
| 781 | - /* 640 */ 436, 436, 73, 436, 147, 148, 436, 436, 436, 474, | |
| 782 | - /* 650 */ 113, 120, 159, 119, 73, 436, 147, 107, 148, 436, | |
| 783 | - /* 660 */ 436, 473, 113, 120, 159, 119, 120, 159, 119, 436, | |
| 784 | - /* 670 */ 453, 436, 436, 148, 436, 436, 436, 436, 556, 436, | |
| 785 | - /* 680 */ 436, 436, 73, 436, 147, 148, 436, 436, 151, 470, | |
| 786 | - /* 690 */ 113, 120, 159, 119, 436, 436, 73, 436, 147, 436, | |
| 787 | - /* 700 */ 436, 436, 436, 133, 113, 120, 159, 119, 436, 73, | |
| 788 | - /* 710 */ 436, 147, 436, 148, 436, 436, 506, 113, 120, 159, | |
| 789 | - /* 720 */ 119, 73, 436, 147, 436, 436, 436, 148, 136, 113, | |
| 790 | - /* 730 */ 120, 159, 119, 436, 73, 436, 147, 436, 436, 436, | |
| 791 | - /* 740 */ 148, 514, 113, 120, 159, 119, 436, 436, 436, 73, | |
| 792 | - /* 750 */ 436, 147, 148, 436, 436, 436, 516, 113, 120, 159, | |
| 793 | - /* 760 */ 119, 73, 436, 147, 107, 148, 436, 436, 513, 113, | |
| 794 | - /* 770 */ 120, 159, 119, 120, 159, 119, 436, 442, 436, 436, | |
| 795 | - /* 780 */ 148, 436, 64, 63, 62, 61, 436, 436, 436, 73, | |
| 796 | - /* 790 */ 436, 147, 148, 436, 436, 151, 515, 113, 120, 159, | |
| 797 | - /* 800 */ 119, 55, 436, 73, 436, 147, 64, 63, 62, 61, | |
| 798 | - /* 810 */ 512, 113, 120, 159, 119, 436, 73, 436, 147, 386, | |
| 799 | - /* 820 */ 148, 436, 436, 511, 113, 120, 159, 119, 73, 436, | |
| 800 | - /* 830 */ 147, 436, 436, 436, 148, 510, 113, 120, 159, 119, | |
| 801 | - /* 840 */ 436, 73, 436, 147, 436, 436, 436, 148, 509, 113, | |
| 802 | - /* 850 */ 120, 159, 119, 436, 436, 436, 73, 436, 147, 148, | |
| 803 | - /* 860 */ 436, 436, 436, 508, 113, 120, 159, 119, 73, 436, | |
| 804 | - /* 870 */ 147, 86, 148, 436, 436, 149, 113, 120, 159, 119, | |
| 805 | - /* 880 */ 120, 159, 119, 436, 436, 436, 436, 148, 436, 436, | |
| 806 | - /* 890 */ 436, 436, 436, 436, 436, 436, 73, 436, 147, 148, | |
| 807 | - /* 900 */ 436, 426, 151, 150, 113, 120, 159, 119, 436, 436, | |
| 808 | - /* 910 */ 72, 436, 147, 436, 436, 436, 436, 112, 113, 120, | |
| 809 | - /* 920 */ 159, 119, 436, 73, 436, 147, 436, 148, 432, 431, | |
| 810 | - /* 930 */ 135, 113, 120, 159, 119, 73, 436, 147, 436, 88, | |
| 811 | - /* 940 */ 436, 148, 134, 113, 120, 159, 119, 436, 120, 159, | |
| 812 | - /* 950 */ 119, 436, 436, 436, 148, 81, 436, 436, 88, 436, | |
| 813 | - /* 960 */ 425, 436, 456, 436, 33, 436, 148, 120, 159, 119, | |
| 814 | - /* 970 */ 151, 436, 436, 436, 110, 110, 88, 436, 436, 427, | |
| 815 | - /* 980 */ 428, 429, 430, 436, 436, 120, 159, 119, 436, 151, | |
| 816 | - /* 990 */ 436, 436, 111, 111, 436, 436, 436, 436, 436, 88, | |
| 817 | - /* 1000 */ 436, 436, 99, 436, 436, 436, 436, 151, 120, 159, | |
| 818 | - /* 1010 */ 119, 120, 159, 119, 436, 465, 436, 100, 64, 63, | |
| 819 | - /* 1020 */ 62, 61, 436, 436, 436, 101, 120, 159, 119, 91, | |
| 820 | - /* 1030 */ 151, 347, 84, 151, 120, 159, 119, 436, 120, 159, | |
| 821 | - /* 1040 */ 119, 120, 159, 119, 103, 436, 436, 436, 151, 436, | |
| 822 | - /* 1050 */ 436, 436, 436, 120, 159, 119, 151, 436, 92, 436, | |
| 823 | - /* 1060 */ 151, 436, 93, 151, 436, 436, 436, 120, 159, 119, | |
| 824 | - /* 1070 */ 85, 120, 159, 119, 104, 151, 436, 436, 436, 120, | |
| 825 | - /* 1080 */ 159, 119, 436, 120, 159, 119, 94, 436, 436, 151, | |
| 826 | - /* 1090 */ 436, 436, 436, 151, 436, 120, 159, 119, 436, 105, | |
| 827 | - /* 1100 */ 436, 151, 95, 436, 436, 151, 436, 436, 120, 159, | |
| 828 | - /* 1110 */ 119, 120, 159, 119, 436, 96, 436, 151, 64, 63, | |
| 829 | - /* 1120 */ 62, 61, 436, 436, 120, 159, 119, 97, 436, 436, | |
| 830 | - /* 1130 */ 151, 387, 98, 151, 436, 436, 120, 159, 119, 537, | |
| 831 | - /* 1140 */ 436, 120, 159, 119, 536, 436, 151, 436, 120, 159, | |
| 832 | - /* 1150 */ 119, 436, 436, 120, 159, 119, 535, 436, 151, 436, | |
| 833 | - /* 1160 */ 436, 436, 534, 151, 436, 120, 159, 119, 115, 436, | |
| 834 | - /* 1170 */ 151, 120, 159, 119, 116, 151, 436, 120, 159, 119, | |
| 835 | - /* 1180 */ 436, 436, 436, 120, 159, 119, 436, 151, 64, 63, | |
| 836 | - /* 1190 */ 62, 61, 436, 151, 436, 436, 436, 436, 436, 151, | |
| 837 | - /* 1200 */ 436, 383, 436, 436, 436, 151, | |
| 717 | + /* 0 */ 564, 438, 25, 444, 29, 74, 127, 146, 54, 51, | |
| 718 | + /* 10 */ 564, 36, 445, 113, 120, 159, 119, 126, 419, 420, | |
| 719 | + /* 20 */ 333, 548, 81, 520, 549, 550, 564, 64, 63, 62, | |
| 720 | + /* 30 */ 61, 316, 317, 9, 8, 33, 147, 32, 7, 71, | |
| 721 | + /* 40 */ 125, 28, 329, 66, 568, 300, 50, 333, 333, 333, | |
| 722 | + /* 50 */ 333, 417, 418, 334, 335, 336, 337, 338, 339, 340, | |
| 723 | + /* 60 */ 341, 465, 64, 63, 62, 61, 121, 439, 446, 29, | |
| 724 | + /* 70 */ 36, 465, 30, 442, 368, 292, 486, 159, 119, 419, | |
| 725 | + /* 80 */ 420, 333, 31, 81, 161, 350, 304, 465, 436, 27, | |
| 726 | + /* 90 */ 324, 13, 316, 317, 9, 8, 33, 69, 32, 7, | |
| 727 | + /* 100 */ 71, 125, 83, 329, 66, 483, 159, 119, 333, 333, | |
| 728 | + /* 110 */ 333, 333, 417, 418, 334, 335, 336, 337, 338, 339, | |
| 729 | + /* 120 */ 340, 341, 386, 427, 46, 59, 60, 64, 63, 62, | |
| 730 | + /* 130 */ 61, 307, 84, 368, 322, 35, 2, 293, 386, 427, | |
| 731 | + /* 140 */ 108, 59, 60, 80, 4, 302, 79, 3, 117, 368, | |
| 732 | + /* 150 */ 433, 432, 2, 62, 61, 154, 154, 154, 386, 390, | |
| 733 | + /* 160 */ 391, 59, 60, 518, 159, 119, 433, 432, 47, 102, | |
| 734 | + /* 170 */ 38, 67, 42, 48, 37, 295, 296, 297, 69, 299, | |
| 735 | + /* 180 */ 372, 155, 426, 343, 343, 343, 343, 343, 343, 343, | |
| 736 | + /* 190 */ 343, 343, 343, 371, 157, 566, 77, 566, 426, 106, | |
| 737 | + /* 200 */ 76, 428, 429, 430, 431, 5, 6, 117, 385, 153, | |
| 738 | + /* 210 */ 152, 151, 523, 159, 119, 106, 416, 428, 429, 430, | |
| 739 | + /* 220 */ 431, 415, 427, 117, 385, 153, 152, 151, 386, 427, | |
| 740 | + /* 230 */ 129, 59, 60, 389, 1, 106, 521, 159, 119, 368, | |
| 741 | + /* 240 */ 11, 12, 2, 117, 385, 153, 152, 151, 65, 433, | |
| 742 | + /* 250 */ 432, 64, 63, 62, 61, 349, 433, 432, 136, 140, | |
| 743 | + /* 260 */ 138, 64, 63, 62, 61, 386, 75, 427, 59, 60, | |
| 744 | + /* 270 */ 53, 424, 422, 45, 137, 14, 368, 16, 18, 42, | |
| 745 | + /* 280 */ 55, 426, 154, 154, 154, 44, 145, 144, 426, 64, | |
| 746 | + /* 290 */ 63, 62, 61, 43, 433, 432, 64, 63, 62, 61, | |
| 747 | + /* 300 */ 428, 429, 430, 431, 19, 106, 114, 428, 429, 430, | |
| 748 | + /* 310 */ 431, 20, 68, 117, 385, 153, 152, 151, 15, 352, | |
| 749 | + /* 320 */ 23, 22, 21, 384, 376, 17, 426, 370, 156, 24, | |
| 750 | + /* 330 */ 26, 143, 139, 423, 140, 138, 64, 63, 62, 61, | |
| 751 | + /* 340 */ 374, 57, 106, 58, 375, 428, 429, 430, 431, 383, | |
| 752 | + /* 350 */ 117, 385, 153, 152, 151, 55, 64, 63, 62, 61, | |
| 753 | + /* 360 */ 369, 145, 144, 403, 404, 405, 406, 158, 43, 348, | |
| 754 | + /* 370 */ 70, 140, 138, 64, 63, 62, 61, 386, 464, 39, | |
| 755 | + /* 380 */ 59, 60, 64, 63, 62, 61, 437, 437, 368, 118, | |
| 756 | + /* 390 */ 437, 42, 55, 437, 437, 383, 22, 21, 145, 144, | |
| 757 | + /* 400 */ 395, 49, 437, 524, 24, 43, 143, 139, 423, 437, | |
| 758 | + /* 410 */ 437, 131, 464, 124, 437, 437, 437, 396, 397, 398, | |
| 759 | + /* 420 */ 400, 80, 437, 302, 79, 437, 403, 404, 405, 406, | |
| 760 | + /* 430 */ 440, 446, 29, 22, 21, 386, 442, 437, 59, 60, | |
| 761 | + /* 440 */ 437, 24, 524, 143, 139, 423, 368, 161, 524, 42, | |
| 762 | + /* 450 */ 437, 524, 27, 437, 106, 437, 386, 141, 437, 59, | |
| 763 | + /* 460 */ 60, 437, 117, 385, 153, 152, 151, 368, 437, 437, | |
| 764 | + /* 470 */ 42, 437, 386, 142, 437, 59, 60, 386, 130, 128, | |
| 765 | + /* 480 */ 59, 60, 437, 368, 370, 156, 42, 437, 368, 437, | |
| 766 | + /* 490 */ 386, 42, 437, 59, 60, 386, 437, 437, 59, 60, | |
| 767 | + /* 500 */ 437, 102, 437, 437, 42, 437, 368, 437, 437, 40, | |
| 768 | + /* 510 */ 437, 437, 106, 437, 386, 437, 437, 59, 60, 437, | |
| 769 | + /* 520 */ 117, 385, 153, 152, 151, 368, 437, 437, 41, 64, | |
| 770 | + /* 530 */ 63, 62, 61, 106, 64, 63, 62, 61, 437, 160, | |
| 771 | + /* 540 */ 437, 117, 385, 153, 152, 151, 118, 387, 56, 106, | |
| 772 | + /* 550 */ 437, 437, 437, 437, 106, 437, 437, 117, 385, 153, | |
| 773 | + /* 560 */ 152, 151, 117, 385, 153, 152, 151, 106, 64, 63, | |
| 774 | + /* 570 */ 62, 61, 106, 437, 437, 117, 385, 153, 152, 151, | |
| 775 | + /* 580 */ 117, 385, 153, 152, 151, 419, 420, 333, 437, 437, | |
| 776 | + /* 590 */ 437, 106, 437, 437, 437, 88, 437, 437, 437, 117, | |
| 777 | + /* 600 */ 385, 153, 152, 151, 120, 159, 119, 437, 437, 437, | |
| 778 | + /* 610 */ 10, 470, 470, 437, 333, 333, 333, 333, 417, 418, | |
| 779 | + /* 620 */ 73, 437, 146, 437, 437, 437, 150, 112, 113, 120, | |
| 780 | + /* 630 */ 159, 119, 437, 74, 437, 146, 64, 63, 62, 61, | |
| 781 | + /* 640 */ 122, 113, 120, 159, 119, 72, 437, 146, 437, 347, | |
| 782 | + /* 650 */ 437, 147, 123, 113, 120, 159, 119, 437, 74, 437, | |
| 783 | + /* 660 */ 146, 437, 437, 437, 147, 488, 113, 120, 159, 119, | |
| 784 | + /* 670 */ 437, 437, 74, 437, 146, 437, 147, 437, 437, 487, | |
| 785 | + /* 680 */ 113, 120, 159, 119, 74, 437, 146, 437, 437, 147, | |
| 786 | + /* 690 */ 437, 481, 113, 120, 159, 119, 437, 437, 437, 74, | |
| 787 | + /* 700 */ 437, 146, 88, 147, 437, 437, 475, 113, 120, 159, | |
| 788 | + /* 710 */ 119, 120, 159, 119, 74, 147, 146, 437, 110, 110, | |
| 789 | + /* 720 */ 437, 474, 113, 120, 159, 119, 437, 74, 437, 146, | |
| 790 | + /* 730 */ 147, 437, 437, 150, 471, 113, 120, 159, 119, 437, | |
| 791 | + /* 740 */ 74, 437, 146, 437, 437, 147, 437, 132, 113, 120, | |
| 792 | + /* 750 */ 159, 119, 74, 437, 146, 437, 437, 437, 147, 507, | |
| 793 | + /* 760 */ 113, 120, 159, 119, 437, 74, 437, 146, 437, 437, | |
| 794 | + /* 770 */ 437, 147, 135, 113, 120, 159, 119, 437, 437, 74, | |
| 795 | + /* 780 */ 437, 146, 437, 147, 437, 437, 515, 113, 120, 159, | |
| 796 | + /* 790 */ 119, 74, 437, 146, 437, 437, 147, 437, 517, 113, | |
| 797 | + /* 800 */ 120, 159, 119, 437, 437, 437, 74, 437, 146, 88, | |
| 798 | + /* 810 */ 147, 437, 437, 514, 113, 120, 159, 119, 120, 159, | |
| 799 | + /* 820 */ 119, 74, 147, 146, 437, 111, 111, 437, 516, 113, | |
| 800 | + /* 830 */ 120, 159, 119, 437, 74, 437, 146, 147, 437, 437, | |
| 801 | + /* 840 */ 150, 513, 113, 120, 159, 119, 437, 74, 437, 146, | |
| 802 | + /* 850 */ 437, 437, 147, 437, 512, 113, 120, 159, 119, 74, | |
| 803 | + /* 860 */ 437, 146, 437, 437, 437, 147, 511, 113, 120, 159, | |
| 804 | + /* 870 */ 119, 437, 74, 437, 146, 437, 437, 437, 147, 510, | |
| 805 | + /* 880 */ 113, 120, 159, 119, 437, 437, 74, 437, 146, 437, | |
| 806 | + /* 890 */ 147, 437, 437, 509, 113, 120, 159, 119, 74, 437, | |
| 807 | + /* 900 */ 146, 107, 437, 147, 437, 148, 113, 120, 159, 119, | |
| 808 | + /* 910 */ 120, 159, 119, 74, 469, 146, 85, 147, 437, 437, | |
| 809 | + /* 920 */ 149, 113, 120, 159, 119, 120, 159, 119, 74, 147, | |
| 810 | + /* 930 */ 146, 437, 150, 437, 437, 134, 113, 120, 159, 119, | |
| 811 | + /* 940 */ 437, 74, 437, 146, 147, 107, 437, 150, 133, 113, | |
| 812 | + /* 950 */ 120, 159, 119, 437, 120, 159, 119, 437, 454, 147, | |
| 813 | + /* 960 */ 437, 64, 63, 62, 61, 78, 78, 437, 88, 437, | |
| 814 | + /* 970 */ 437, 437, 147, 437, 383, 437, 150, 120, 159, 119, | |
| 815 | + /* 980 */ 52, 437, 437, 437, 82, 437, 88, 437, 437, 437, | |
| 816 | + /* 990 */ 437, 457, 437, 34, 107, 120, 159, 119, 437, 150, | |
| 817 | + /* 1000 */ 437, 437, 466, 120, 159, 119, 437, 454, 437, 109, | |
| 818 | + /* 1010 */ 439, 446, 29, 437, 437, 558, 442, 150, 437, 437, | |
| 819 | + /* 1020 */ 107, 64, 63, 62, 61, 150, 86, 161, 437, 120, | |
| 820 | + /* 1030 */ 159, 119, 27, 443, 388, 120, 159, 119, 98, 437, | |
| 821 | + /* 1040 */ 437, 437, 437, 89, 437, 437, 437, 120, 159, 119, | |
| 822 | + /* 1050 */ 90, 150, 120, 159, 119, 87, 437, 150, 437, 120, | |
| 823 | + /* 1060 */ 159, 119, 99, 437, 120, 159, 119, 437, 100, 150, | |
| 824 | + /* 1070 */ 437, 120, 159, 119, 150, 437, 437, 120, 159, 119, | |
| 825 | + /* 1080 */ 101, 150, 64, 63, 62, 61, 150, 437, 437, 120, | |
| 826 | + /* 1090 */ 159, 119, 437, 150, 91, 383, 437, 103, 437, 150, | |
| 827 | + /* 1100 */ 437, 437, 437, 120, 159, 119, 120, 159, 119, 92, | |
| 828 | + /* 1110 */ 437, 150, 93, 437, 437, 437, 437, 437, 120, 159, | |
| 829 | + /* 1120 */ 119, 120, 159, 119, 437, 150, 104, 437, 150, 437, | |
| 830 | + /* 1130 */ 437, 437, 437, 437, 437, 120, 159, 119, 94, 437, | |
| 831 | + /* 1140 */ 150, 437, 437, 150, 437, 437, 437, 120, 159, 119, | |
| 832 | + /* 1150 */ 105, 437, 437, 95, 437, 437, 437, 150, 437, 120, | |
| 833 | + /* 1160 */ 159, 119, 120, 159, 119, 96, 437, 437, 97, 150, | |
| 834 | + /* 1170 */ 437, 437, 437, 437, 120, 159, 119, 120, 159, 119, | |
| 835 | + /* 1180 */ 538, 150, 437, 437, 150, 437, 437, 437, 437, 120, | |
| 836 | + /* 1190 */ 159, 119, 437, 537, 437, 437, 150, 536, 437, 150, | |
| 837 | + /* 1200 */ 437, 437, 120, 159, 119, 535, 120, 159, 119, 115, | |
| 838 | + /* 1210 */ 437, 150, 116, 437, 120, 159, 119, 437, 120, 159, | |
| 839 | + /* 1220 */ 119, 120, 159, 119, 150, 437, 437, 437, 150, 437, | |
| 840 | + /* 1230 */ 437, 437, 437, 437, 437, 437, 150, 437, 437, 437, | |
| 841 | + /* 1240 */ 150, 437, 437, 150, | |
| 838 | 842 | }; |
| 839 | 843 | static const YYCODETYPE yy_lookahead[] = { |
| 840 | 844 | /* 0 */ 0, 0, 129, 97, 98, 99, 101, 101, 4, 5, |
| 841 | 845 | /* 10 */ 10, 10, 106, 107, 108, 109, 110, 101, 18, 19, |
| 842 | 846 | /* 20 */ 20, 100, 22, 101, 103, 104, 26, 4, 5, 6, |
| 843 | 847 | /* 30 */ 7, 31, 32, 33, 34, 35, 130, 37, 38, 39, |
| 844 | 848 | /* 40 */ 40, 102, 42, 43, 128, 23, 23, 47, 48, 49, |
| 845 | 849 | /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, |
| 846 | 850 | /* 60 */ 60, 0, 4, 5, 6, 7, 95, 96, 97, 98, |
| 847 | - /* 70 */ 10, 10, 3, 102, 121, 17, 108, 109, 110, 18, | |
| 851 | + /* 70 */ 10, 10, 121, 102, 12, 17, 108, 109, 110, 18, | |
| 848 | 852 | /* 80 */ 19, 20, 123, 22, 113, 17, 26, 26, 117, 118, |
| 849 | - /* 90 */ 2, 23, 31, 32, 33, 34, 35, 111, 37, 38, | |
| 853 | + /* 90 */ 2, 23, 31, 32, 33, 34, 35, 3, 37, 38, | |
| 850 | 854 | /* 100 */ 39, 40, 111, 42, 43, 108, 109, 110, 47, 48, |
| 851 | 855 | /* 110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, |
| 852 | - /* 120 */ 59, 60, 1, 2, 36, 4, 5, 124, 4, 5, | |
| 853 | - /* 130 */ 6, 7, 46, 12, 24, 25, 15, 46, 1, 2, | |
| 854 | - /* 140 */ 16, 4, 5, 22, 100, 24, 25, 103, 104, 12, | |
| 855 | - /* 150 */ 29, 30, 15, 84, 61, 62, 63, 64, 65, 66, | |
| 856 | - /* 160 */ 67, 68, 69, 70, 12, 17, 29, 30, 1, 125, | |
| 857 | - /* 170 */ 126, 127, 4, 5, 6, 7, 8, 92, 93, 12, | |
| 858 | - /* 180 */ 94, 14, 61, 6, 7, 18, 19, 20, 21, 22, | |
| 859 | - /* 190 */ 16, 24, 25, 15, 27, 28, 29, 30, 61, 78, | |
| 860 | - /* 200 */ 41, 80, 81, 82, 83, 39, 2, 86, 87, 88, | |
| 861 | - /* 210 */ 89, 90, 108, 109, 110, 78, 45, 80, 81, 82, | |
| 862 | - /* 220 */ 83, 24, 25, 86, 87, 88, 89, 90, 1, 2, | |
| 863 | - /* 230 */ 78, 4, 5, 4, 5, 6, 7, 38, 86, 12, | |
| 864 | - /* 240 */ 36, 101, 15, 38, 99, 2, 17, 107, 108, 109, | |
| 865 | - /* 250 */ 110, 39, 23, 108, 109, 110, 29, 30, 13, 2, | |
| 866 | - /* 260 */ 3, 4, 5, 6, 7, 1, 2, 17, 4, 5, | |
| 867 | - /* 270 */ 130, 23, 29, 30, 17, 130, 12, 71, 76, 15, | |
| 868 | - /* 280 */ 23, 99, 27, 28, 29, 30, 29, 30, 61, 46, | |
| 869 | - /* 290 */ 108, 109, 110, 36, 112, 4, 5, 6, 7, 17, | |
| 870 | - /* 300 */ 36, 119, 120, 75, 61, 78, 76, 80, 81, 82, | |
| 871 | - /* 310 */ 83, 77, 130, 86, 87, 88, 89, 90, 108, 109, | |
| 872 | - /* 320 */ 110, 64, 65, 80, 81, 82, 83, 91, 3, 72, | |
| 873 | - /* 330 */ 3, 74, 75, 76, 2, 3, 4, 5, 6, 7, | |
| 874 | - /* 340 */ 3, 36, 78, 4, 5, 6, 7, 3, 24, 25, | |
| 875 | - /* 350 */ 86, 87, 88, 89, 90, 23, 18, 19, 20, 3, | |
| 876 | - /* 360 */ 99, 29, 30, 1, 24, 25, 4, 5, 36, 108, | |
| 877 | - /* 370 */ 109, 110, 33, 112, 12, 3, 73, 15, 23, 15, | |
| 878 | - /* 380 */ 18, 19, 20, 15, 22, 47, 48, 49, 50, 51, | |
| 879 | - /* 390 */ 52, 130, 4, 5, 6, 7, 64, 65, 1, 46, | |
| 880 | - /* 400 */ 15, 4, 5, 79, 72, 17, 74, 75, 76, 12, | |
| 881 | - /* 410 */ 86, 23, 15, 26, 1, 2, 26, 4, 5, 1, | |
| 882 | - /* 420 */ 2, 26, 4, 5, 12, 12, 86, 85, 15, 3, | |
| 883 | - /* 430 */ 12, 11, 1, 15, 131, 4, 5, 131, 85, 131, | |
| 884 | - /* 440 */ 78, 44, 45, 12, 91, 131, 15, 94, 86, 87, | |
| 885 | - /* 450 */ 88, 89, 90, 2, 4, 5, 6, 7, 4, 5, | |
| 886 | - /* 460 */ 6, 7, 99, 12, 101, 1, 131, 17, 4, 5, | |
| 887 | - /* 470 */ 107, 108, 109, 110, 131, 78, 12, 23, 131, 15, | |
| 888 | - /* 480 */ 29, 30, 131, 86, 87, 88, 89, 90, 131, 131, | |
| 889 | - /* 490 */ 131, 78, 131, 130, 131, 131, 78, 131, 131, 86, | |
| 890 | - /* 500 */ 87, 88, 89, 90, 86, 87, 88, 89, 90, 78, | |
| 891 | - /* 510 */ 131, 1, 61, 131, 4, 5, 131, 86, 87, 88, | |
| 892 | - /* 520 */ 89, 90, 12, 131, 1, 15, 131, 4, 5, 78, | |
| 893 | - /* 530 */ 131, 80, 81, 82, 83, 12, 131, 86, 15, 96, | |
| 894 | - /* 540 */ 97, 98, 78, 131, 131, 102, 131, 131, 99, 131, | |
| 895 | - /* 550 */ 86, 87, 88, 89, 90, 131, 113, 108, 109, 110, | |
| 896 | - /* 560 */ 131, 118, 131, 114, 115, 116, 108, 109, 110, 95, | |
| 897 | - /* 570 */ 96, 97, 98, 131, 131, 99, 102, 101, 131, 130, | |
| 898 | - /* 580 */ 131, 131, 106, 107, 108, 109, 110, 113, 78, 131, | |
| 899 | - /* 590 */ 131, 131, 118, 131, 131, 131, 86, 87, 88, 89, | |
| 900 | - /* 600 */ 90, 78, 4, 5, 6, 7, 130, 131, 99, 86, | |
| 901 | - /* 610 */ 87, 88, 89, 90, 99, 131, 101, 108, 109, 110, | |
| 902 | - /* 620 */ 131, 106, 107, 108, 109, 110, 131, 99, 131, 101, | |
| 903 | - /* 630 */ 131, 33, 131, 131, 106, 107, 108, 109, 110, 130, | |
| 904 | - /* 640 */ 131, 131, 99, 131, 101, 130, 131, 131, 131, 106, | |
| 905 | - /* 650 */ 107, 108, 109, 110, 99, 131, 101, 99, 130, 131, | |
| 906 | - /* 660 */ 131, 106, 107, 108, 109, 110, 108, 109, 110, 131, | |
| 907 | - /* 670 */ 112, 131, 131, 130, 131, 131, 131, 131, 120, 131, | |
| 908 | - /* 680 */ 131, 131, 99, 131, 101, 130, 131, 131, 130, 106, | |
| 909 | - /* 690 */ 107, 108, 109, 110, 131, 131, 99, 131, 101, 131, | |
| 910 | - /* 700 */ 131, 131, 131, 106, 107, 108, 109, 110, 131, 99, | |
| 911 | - /* 710 */ 131, 101, 131, 130, 131, 131, 106, 107, 108, 109, | |
| 912 | - /* 720 */ 110, 99, 131, 101, 131, 131, 131, 130, 106, 107, | |
| 913 | - /* 730 */ 108, 109, 110, 131, 99, 131, 101, 131, 131, 131, | |
| 914 | - /* 740 */ 130, 106, 107, 108, 109, 110, 131, 131, 131, 99, | |
| 915 | - /* 750 */ 131, 101, 130, 131, 131, 131, 106, 107, 108, 109, | |
| 916 | - /* 760 */ 110, 99, 131, 101, 99, 130, 131, 131, 106, 107, | |
| 917 | - /* 770 */ 108, 109, 110, 108, 109, 110, 131, 112, 131, 131, | |
| 918 | - /* 780 */ 130, 131, 4, 5, 6, 7, 131, 131, 131, 99, | |
| 919 | - /* 790 */ 131, 101, 130, 131, 131, 130, 106, 107, 108, 109, | |
| 920 | - /* 800 */ 110, 23, 131, 99, 131, 101, 4, 5, 6, 7, | |
| 921 | - /* 810 */ 106, 107, 108, 109, 110, 131, 99, 131, 101, 17, | |
| 922 | - /* 820 */ 130, 131, 131, 106, 107, 108, 109, 110, 99, 131, | |
| 923 | - /* 830 */ 101, 131, 131, 131, 130, 106, 107, 108, 109, 110, | |
| 924 | - /* 840 */ 131, 99, 131, 101, 131, 131, 131, 130, 106, 107, | |
| 925 | - /* 850 */ 108, 109, 110, 131, 131, 131, 99, 131, 101, 130, | |
| 926 | - /* 860 */ 131, 131, 131, 106, 107, 108, 109, 110, 99, 131, | |
| 927 | - /* 870 */ 101, 99, 130, 131, 131, 106, 107, 108, 109, 110, | |
| 928 | - /* 880 */ 108, 109, 110, 131, 131, 131, 131, 130, 131, 131, | |
| 929 | - /* 890 */ 131, 131, 131, 131, 131, 131, 99, 131, 101, 130, | |
| 930 | - /* 900 */ 131, 2, 130, 106, 107, 108, 109, 110, 131, 131, | |
| 931 | - /* 910 */ 99, 131, 101, 131, 131, 131, 131, 106, 107, 108, | |
| 932 | - /* 920 */ 109, 110, 131, 99, 131, 101, 131, 130, 29, 30, | |
| 933 | - /* 930 */ 106, 107, 108, 109, 110, 99, 131, 101, 131, 99, | |
| 934 | - /* 940 */ 131, 130, 106, 107, 108, 109, 110, 131, 108, 109, | |
| 935 | - /* 950 */ 110, 131, 131, 131, 130, 115, 131, 131, 99, 131, | |
| 936 | - /* 960 */ 61, 131, 122, 131, 124, 131, 130, 108, 109, 110, | |
| 937 | - /* 970 */ 130, 131, 131, 131, 115, 116, 99, 131, 131, 80, | |
| 938 | - /* 980 */ 81, 82, 83, 131, 131, 108, 109, 110, 131, 130, | |
| 939 | - /* 990 */ 131, 131, 115, 116, 131, 131, 131, 131, 131, 99, | |
| 940 | - /* 1000 */ 131, 131, 99, 131, 131, 131, 131, 130, 108, 109, | |
| 941 | - /* 1010 */ 110, 108, 109, 110, 131, 115, 131, 99, 4, 5, | |
| 942 | - /* 1020 */ 6, 7, 131, 131, 131, 99, 108, 109, 110, 99, | |
| 943 | - /* 1030 */ 130, 17, 99, 130, 108, 109, 110, 131, 108, 109, | |
| 944 | - /* 1040 */ 110, 108, 109, 110, 99, 131, 131, 131, 130, 131, | |
| 945 | - /* 1050 */ 131, 131, 131, 108, 109, 110, 130, 131, 99, 131, | |
| 946 | - /* 1060 */ 130, 131, 99, 130, 131, 131, 131, 108, 109, 110, | |
| 947 | - /* 1070 */ 99, 108, 109, 110, 99, 130, 131, 131, 131, 108, | |
| 948 | - /* 1080 */ 109, 110, 131, 108, 109, 110, 99, 131, 131, 130, | |
| 949 | - /* 1090 */ 131, 131, 131, 130, 131, 108, 109, 110, 131, 99, | |
| 950 | - /* 1100 */ 131, 130, 99, 131, 131, 130, 131, 131, 108, 109, | |
| 951 | - /* 1110 */ 110, 108, 109, 110, 131, 99, 131, 130, 4, 5, | |
| 952 | - /* 1120 */ 6, 7, 131, 131, 108, 109, 110, 99, 131, 131, | |
| 953 | - /* 1130 */ 130, 17, 99, 130, 131, 131, 108, 109, 110, 99, | |
| 954 | - /* 1140 */ 131, 108, 109, 110, 99, 131, 130, 131, 108, 109, | |
| 955 | - /* 1150 */ 110, 131, 131, 108, 109, 110, 99, 131, 130, 131, | |
| 956 | - /* 1160 */ 131, 131, 99, 130, 131, 108, 109, 110, 99, 131, | |
| 957 | - /* 1170 */ 130, 108, 109, 110, 99, 130, 131, 108, 109, 110, | |
| 958 | - /* 1180 */ 131, 131, 131, 108, 109, 110, 131, 130, 4, 5, | |
| 959 | - /* 1190 */ 6, 7, 131, 130, 131, 131, 131, 131, 131, 130, | |
| 960 | - /* 1200 */ 131, 17, 131, 131, 131, 130, 131, 131, 131, 131, | |
| 961 | - /* 1210 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 962 | - /* 1220 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 963 | - /* 1230 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 964 | - /* 1240 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 965 | - /* 1250 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 966 | - /* 1260 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 967 | - /* 1270 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, | |
| 968 | - /* 1280 */ 131, 131, 131, 131, 95, 95, 95, 95, 95, 95, | |
| 856 | + /* 120 */ 59, 60, 1, 2, 36, 4, 5, 4, 5, 6, | |
| 857 | + /* 130 */ 7, 8, 111, 12, 2, 124, 15, 17, 1, 2, | |
| 858 | + /* 140 */ 78, 4, 5, 22, 15, 24, 25, 16, 86, 12, | |
| 859 | + /* 150 */ 29, 30, 15, 6, 7, 18, 19, 20, 1, 92, | |
| 860 | + /* 160 */ 93, 4, 5, 108, 109, 110, 29, 30, 36, 12, | |
| 861 | + /* 170 */ 100, 41, 15, 103, 104, 18, 19, 20, 84, 22, | |
| 862 | + /* 180 */ 24, 25, 61, 61, 62, 63, 64, 65, 66, 67, | |
| 863 | + /* 190 */ 68, 69, 70, 24, 25, 125, 126, 127, 61, 78, | |
| 864 | + /* 200 */ 46, 80, 81, 82, 83, 38, 38, 86, 87, 88, | |
| 865 | + /* 210 */ 89, 90, 108, 109, 110, 78, 39, 80, 81, 82, | |
| 866 | + /* 220 */ 83, 39, 2, 86, 87, 88, 89, 90, 1, 2, | |
| 867 | + /* 230 */ 45, 4, 5, 17, 13, 78, 108, 109, 110, 12, | |
| 868 | + /* 240 */ 23, 71, 15, 86, 87, 88, 89, 90, 94, 29, | |
| 869 | + /* 250 */ 30, 4, 5, 6, 7, 17, 29, 30, 75, 2, | |
| 870 | + /* 260 */ 3, 4, 5, 6, 7, 1, 46, 2, 4, 5, | |
| 871 | + /* 270 */ 23, 76, 76, 16, 77, 3, 12, 3, 3, 15, | |
| 872 | + /* 280 */ 23, 61, 18, 19, 20, 36, 29, 30, 61, 4, | |
| 873 | + /* 290 */ 5, 6, 7, 36, 29, 30, 4, 5, 6, 7, | |
| 874 | + /* 300 */ 80, 81, 82, 83, 3, 78, 91, 80, 81, 82, | |
| 875 | + /* 310 */ 83, 3, 3, 86, 87, 88, 89, 90, 33, 73, | |
| 876 | + /* 320 */ 23, 64, 65, 17, 26, 33, 61, 24, 25, 72, | |
| 877 | + /* 330 */ 15, 74, 75, 76, 2, 3, 4, 5, 6, 7, | |
| 878 | + /* 340 */ 26, 15, 78, 15, 26, 80, 81, 82, 83, 17, | |
| 879 | + /* 350 */ 86, 87, 88, 89, 90, 23, 4, 5, 6, 7, | |
| 880 | + /* 360 */ 12, 29, 30, 27, 28, 29, 30, 85, 36, 17, | |
| 881 | + /* 370 */ 3, 2, 3, 4, 5, 6, 7, 1, 2, 11, | |
| 882 | + /* 380 */ 4, 5, 4, 5, 6, 7, 131, 131, 12, 86, | |
| 883 | + /* 390 */ 131, 15, 23, 131, 131, 17, 64, 65, 29, 30, | |
| 884 | + /* 400 */ 1, 23, 131, 46, 72, 36, 74, 75, 76, 131, | |
| 885 | + /* 410 */ 131, 12, 36, 14, 131, 131, 131, 18, 19, 20, | |
| 886 | + /* 420 */ 21, 22, 131, 24, 25, 131, 27, 28, 29, 30, | |
| 887 | + /* 430 */ 96, 97, 98, 64, 65, 1, 102, 131, 4, 5, | |
| 888 | + /* 440 */ 131, 72, 85, 74, 75, 76, 12, 113, 91, 15, | |
| 889 | + /* 450 */ 131, 94, 118, 131, 78, 131, 1, 2, 131, 4, | |
| 890 | + /* 460 */ 5, 131, 86, 87, 88, 89, 90, 12, 131, 131, | |
| 891 | + /* 470 */ 15, 131, 1, 2, 131, 4, 5, 1, 44, 45, | |
| 892 | + /* 480 */ 4, 5, 131, 12, 24, 25, 15, 131, 12, 131, | |
| 893 | + /* 490 */ 1, 15, 131, 4, 5, 1, 131, 131, 4, 5, | |
| 894 | + /* 500 */ 131, 12, 131, 131, 15, 131, 12, 131, 131, 15, | |
| 895 | + /* 510 */ 131, 131, 78, 131, 1, 131, 131, 4, 5, 131, | |
| 896 | + /* 520 */ 86, 87, 88, 89, 90, 12, 131, 131, 15, 4, | |
| 897 | + /* 530 */ 5, 6, 7, 78, 4, 5, 6, 7, 131, 79, | |
| 898 | + /* 540 */ 131, 86, 87, 88, 89, 90, 86, 17, 23, 78, | |
| 899 | + /* 550 */ 131, 131, 131, 131, 78, 131, 131, 86, 87, 88, | |
| 900 | + /* 560 */ 89, 90, 86, 87, 88, 89, 90, 78, 4, 5, | |
| 901 | + /* 570 */ 6, 7, 78, 131, 131, 86, 87, 88, 89, 90, | |
| 902 | + /* 580 */ 86, 87, 88, 89, 90, 18, 19, 20, 131, 131, | |
| 903 | + /* 590 */ 131, 78, 131, 131, 131, 99, 131, 131, 131, 86, | |
| 904 | + /* 600 */ 87, 88, 89, 90, 108, 109, 110, 131, 131, 131, | |
| 905 | + /* 610 */ 114, 115, 116, 131, 47, 48, 49, 50, 51, 52, | |
| 906 | + /* 620 */ 99, 131, 101, 131, 131, 131, 130, 106, 107, 108, | |
| 907 | + /* 630 */ 109, 110, 131, 99, 131, 101, 4, 5, 6, 7, | |
| 908 | + /* 640 */ 106, 107, 108, 109, 110, 99, 131, 101, 131, 17, | |
| 909 | + /* 650 */ 131, 130, 106, 107, 108, 109, 110, 131, 99, 131, | |
| 910 | + /* 660 */ 101, 131, 131, 131, 130, 106, 107, 108, 109, 110, | |
| 911 | + /* 670 */ 131, 131, 99, 131, 101, 131, 130, 131, 131, 106, | |
| 912 | + /* 680 */ 107, 108, 109, 110, 99, 131, 101, 131, 131, 130, | |
| 913 | + /* 690 */ 131, 106, 107, 108, 109, 110, 131, 131, 131, 99, | |
| 914 | + /* 700 */ 131, 101, 99, 130, 131, 131, 106, 107, 108, 109, | |
| 915 | + /* 710 */ 110, 108, 109, 110, 99, 130, 101, 131, 115, 116, | |
| 916 | + /* 720 */ 131, 106, 107, 108, 109, 110, 131, 99, 131, 101, | |
| 917 | + /* 730 */ 130, 131, 131, 130, 106, 107, 108, 109, 110, 131, | |
| 918 | + /* 740 */ 99, 131, 101, 131, 131, 130, 131, 106, 107, 108, | |
| 919 | + /* 750 */ 109, 110, 99, 131, 101, 131, 131, 131, 130, 106, | |
| 920 | + /* 760 */ 107, 108, 109, 110, 131, 99, 131, 101, 131, 131, | |
| 921 | + /* 770 */ 131, 130, 106, 107, 108, 109, 110, 131, 131, 99, | |
| 922 | + /* 780 */ 131, 101, 131, 130, 131, 131, 106, 107, 108, 109, | |
| 923 | + /* 790 */ 110, 99, 131, 101, 131, 131, 130, 131, 106, 107, | |
| 924 | + /* 800 */ 108, 109, 110, 131, 131, 131, 99, 131, 101, 99, | |
| 925 | + /* 810 */ 130, 131, 131, 106, 107, 108, 109, 110, 108, 109, | |
| 926 | + /* 820 */ 110, 99, 130, 101, 131, 115, 116, 131, 106, 107, | |
| 927 | + /* 830 */ 108, 109, 110, 131, 99, 131, 101, 130, 131, 131, | |
| 928 | + /* 840 */ 130, 106, 107, 108, 109, 110, 131, 99, 131, 101, | |
| 929 | + /* 850 */ 131, 131, 130, 131, 106, 107, 108, 109, 110, 99, | |
| 930 | + /* 860 */ 131, 101, 131, 131, 131, 130, 106, 107, 108, 109, | |
| 931 | + /* 870 */ 110, 131, 99, 131, 101, 131, 131, 131, 130, 106, | |
| 932 | + /* 880 */ 107, 108, 109, 110, 131, 131, 99, 131, 101, 131, | |
| 933 | + /* 890 */ 130, 131, 131, 106, 107, 108, 109, 110, 99, 131, | |
| 934 | + /* 900 */ 101, 99, 131, 130, 131, 106, 107, 108, 109, 110, | |
| 935 | + /* 910 */ 108, 109, 110, 99, 112, 101, 99, 130, 131, 131, | |
| 936 | + /* 920 */ 106, 107, 108, 109, 110, 108, 109, 110, 99, 130, | |
| 937 | + /* 930 */ 101, 131, 130, 131, 131, 106, 107, 108, 109, 110, | |
| 938 | + /* 940 */ 131, 99, 131, 101, 130, 99, 131, 130, 106, 107, | |
| 939 | + /* 950 */ 108, 109, 110, 131, 108, 109, 110, 131, 112, 130, | |
| 940 | + /* 960 */ 131, 4, 5, 6, 7, 119, 120, 131, 99, 131, | |
| 941 | + /* 970 */ 131, 131, 130, 131, 17, 131, 130, 108, 109, 110, | |
| 942 | + /* 980 */ 23, 131, 131, 131, 115, 131, 99, 131, 131, 131, | |
| 943 | + /* 990 */ 131, 122, 131, 124, 99, 108, 109, 110, 131, 130, | |
| 944 | + /* 1000 */ 131, 131, 115, 108, 109, 110, 131, 112, 131, 95, | |
| 945 | + /* 1010 */ 96, 97, 98, 131, 131, 120, 102, 130, 131, 131, | |
| 946 | + /* 1020 */ 99, 4, 5, 6, 7, 130, 99, 113, 131, 108, | |
| 947 | + /* 1030 */ 109, 110, 118, 112, 17, 108, 109, 110, 99, 131, | |
| 948 | + /* 1040 */ 131, 131, 131, 99, 131, 131, 131, 108, 109, 110, | |
| 949 | + /* 1050 */ 99, 130, 108, 109, 110, 99, 131, 130, 131, 108, | |
| 950 | + /* 1060 */ 109, 110, 99, 131, 108, 109, 110, 131, 99, 130, | |
| 951 | + /* 1070 */ 131, 108, 109, 110, 130, 131, 131, 108, 109, 110, | |
| 952 | + /* 1080 */ 99, 130, 4, 5, 6, 7, 130, 131, 131, 108, | |
| 953 | + /* 1090 */ 109, 110, 131, 130, 99, 17, 131, 99, 131, 130, | |
| 954 | + /* 1100 */ 131, 131, 131, 108, 109, 110, 108, 109, 110, 99, | |
| 955 | + /* 1110 */ 131, 130, 99, 131, 131, 131, 131, 131, 108, 109, | |
| 956 | + /* 1120 */ 110, 108, 109, 110, 131, 130, 99, 131, 130, 131, | |
| 957 | + /* 1130 */ 131, 131, 131, 131, 131, 108, 109, 110, 99, 131, | |
| 958 | + /* 1140 */ 130, 131, 131, 130, 131, 131, 131, 108, 109, 110, | |
| 959 | + /* 1150 */ 99, 131, 131, 99, 131, 131, 131, 130, 131, 108, | |
| 960 | + /* 1160 */ 109, 110, 108, 109, 110, 99, 131, 131, 99, 130, | |
| 961 | + /* 1170 */ 131, 131, 131, 131, 108, 109, 110, 108, 109, 110, | |
| 962 | + /* 1180 */ 99, 130, 131, 131, 130, 131, 131, 131, 131, 108, | |
| 963 | + /* 1190 */ 109, 110, 131, 99, 131, 131, 130, 99, 131, 130, | |
| 964 | + /* 1200 */ 131, 131, 108, 109, 110, 99, 108, 109, 110, 99, | |
| 965 | + /* 1210 */ 131, 130, 99, 131, 108, 109, 110, 131, 108, 109, | |
| 966 | + /* 1220 */ 110, 108, 109, 110, 130, 131, 131, 131, 130, 131, | |
| 967 | + /* 1230 */ 131, 131, 131, 131, 131, 131, 130, 131, 131, 131, | |
| 968 | + /* 1240 */ 130, 131, 131, 130, 95, 95, 95, 95, 95, 95, | |
| 969 | + /* 1250 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 970 | + /* 1260 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 971 | + /* 1270 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 972 | + /* 1280 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 969 | 973 | /* 1290 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 970 | - /* 1300 */ 95, | |
| 974 | + /* 1300 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 975 | + /* 1310 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 976 | + /* 1320 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 977 | + /* 1330 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, | |
| 971 | 978 | }; |
| 972 | 979 | #define YY_SHIFT_COUNT (161) |
| 973 | 980 | #define YY_SHIFT_MIN (0) |
| 974 | -#define YY_SHIFT_MAX (1184) | |
| 981 | +#define YY_SHIFT_MAX (1078) | |
| 975 | 982 | static const unsigned short int yy_shift_ofst[] = { |
| 976 | - /* 0 */ 167, 121, 137, 137, 137, 137, 137, 137, 137, 137, | |
| 977 | - /* 10 */ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, | |
| 978 | - /* 20 */ 137, 137, 137, 137, 137, 362, 397, 431, 227, 362, | |
| 979 | - /* 30 */ 167, 264, 264, 0, 61, 167, 451, 464, 431, 464, | |
| 980 | - /* 40 */ 413, 418, 431, 431, 431, 431, 431, 431, 431, 510, | |
| 981 | - /* 50 */ 431, 431, 431, 523, 431, 431, 431, 431, 431, 431, | |
| 982 | - /* 60 */ 431, 431, 431, 431, 431, 338, 152, 152, 152, 152, | |
| 983 | - /* 70 */ 152, 243, 257, 332, 899, 899, 255, 22, 1206, 1206, | |
| 984 | - /* 80 */ 1206, 1206, 93, 93, 229, 388, 58, 124, 168, 339, | |
| 985 | - /* 90 */ 598, 450, 23, 1014, 454, 1114, 778, 802, 1184, 291, | |
| 986 | - /* 100 */ 291, 291, 353, 291, 291, 291, 324, 291, 340, 60, | |
| 987 | - /* 110 */ 88, 204, 68, 4, 85, 177, 177, 110, 197, 69, | |
| 988 | - /* 120 */ 86, 1, 91, 148, 174, 178, 159, 199, 205, 166, | |
| 989 | - /* 130 */ 212, 171, 245, 250, 248, 206, 282, 202, 228, 234, | |
| 990 | - /* 140 */ 230, 325, 327, 337, 305, 344, 356, 372, 236, 303, | |
| 991 | - /* 150 */ 355, 236, 364, 368, 385, 387, 390, 395, 412, 342, | |
| 992 | - /* 160 */ 426, 420, | |
| 983 | + /* 0 */ 399, 121, 137, 227, 227, 227, 227, 227, 227, 227, | |
| 984 | + /* 10 */ 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, | |
| 985 | + /* 20 */ 227, 227, 227, 227, 227, 227, 227, 157, 434, 476, | |
| 986 | + /* 30 */ 157, 399, 376, 376, 0, 61, 399, 489, 476, 489, | |
| 987 | + /* 40 */ 264, 264, 264, 455, 471, 476, 476, 476, 476, 476, | |
| 988 | + /* 50 */ 476, 494, 476, 476, 513, 476, 476, 476, 476, 476, | |
| 989 | + /* 60 */ 476, 476, 476, 476, 476, 567, 62, 62, 62, 62, | |
| 990 | + /* 70 */ 62, 220, 257, 332, 369, 265, 265, 336, 22, 1244, | |
| 991 | + /* 80 */ 1244, 1244, 1244, 122, 122, 378, 957, 58, 123, 285, | |
| 992 | + /* 90 */ 292, 352, 23, 632, 247, 1017, 525, 530, 1078, 564, | |
| 993 | + /* 100 */ 564, 564, 357, 564, 564, 564, 460, 564, 303, 60, | |
| 994 | + /* 110 */ 88, 132, 68, 4, 67, 147, 147, 156, 169, 94, | |
| 995 | + /* 120 */ 154, 1, 120, 131, 129, 130, 167, 168, 177, 182, | |
| 996 | + /* 130 */ 185, 221, 216, 217, 170, 238, 195, 183, 197, 196, | |
| 997 | + /* 140 */ 272, 274, 275, 249, 301, 308, 309, 215, 246, 297, | |
| 998 | + /* 150 */ 215, 315, 326, 328, 306, 298, 314, 318, 348, 282, | |
| 999 | + /* 160 */ 367, 368, | |
| 993 | 1000 | }; |
| 994 | -#define YY_REDUCE_COUNT (81) | |
| 1001 | +#define YY_REDUCE_COUNT (82) | |
| 995 | 1002 | #define YY_REDUCE_MIN (-127) |
| 996 | -#define YY_REDUCE_MAX (1075) | |
| 1003 | +#define YY_REDUCE_MAX (1113) | |
| 997 | 1004 | static const short yy_reduce_ofst[] = { |
| 998 | - /* 0 */ -29, -94, 476, 515, 528, 543, 555, 583, 597, 610, | |
| 999 | - /* 10 */ 622, 635, 650, 662, 690, 704, 717, 729, 742, 757, | |
| 1000 | - /* 20 */ 769, 797, 811, 824, 836, 182, 449, 840, 363, 558, | |
| 1001 | - /* 30 */ 474, 859, 877, 44, 44, 443, 140, 261, 900, 665, | |
| 1002 | - /* 40 */ 145, 509, 772, 903, 918, 926, 930, 933, 945, 959, | |
| 1003 | - /* 50 */ 963, 971, 975, 987, 1000, 1003, 1016, 1028, 1033, 1040, | |
| 1004 | - /* 60 */ 1045, 1057, 1063, 1069, 1075, -79, -32, -3, 104, 210, | |
| 1005 | - /* 70 */ 458, -84, -127, -127, -95, -78, -61, -47, -41, -14, | |
| 1006 | - /* 80 */ -9, 3, | |
| 1005 | + /* 0 */ -29, -94, 521, 534, 546, 559, 573, 585, 600, 615, | |
| 1006 | + /* 10 */ 628, 641, 653, 666, 680, 692, 707, 722, 735, 748, | |
| 1007 | + /* 20 */ 760, 773, 787, 799, 814, 829, 842, 846, 496, 869, | |
| 1008 | + /* 30 */ 895, 914, 603, 710, 70, 70, 334, 802, 887, 921, | |
| 1009 | + /* 40 */ 817, 927, 939, 944, 951, 956, 963, 969, 981, 995, | |
| 1010 | + /* 50 */ 998, 1010, 1013, 1027, 1039, 1051, 1054, 1066, 1069, 1081, | |
| 1011 | + /* 60 */ 1094, 1098, 1106, 1110, 1113, -79, -32, -3, 55, 104, | |
| 1012 | + /* 70 */ 128, -84, -127, -127, -127, -95, -78, -61, -49, -41, | |
| 1013 | + /* 80 */ -9, 21, 11, | |
| 1007 | 1014 | }; |
| 1008 | 1015 | static const YYACTIONTYPE yy_default[] = { |
| 1009 | - /* 0 */ 440, 434, 434, 434, 434, 434, 434, 434, 434, 434, | |
| 1010 | - /* 10 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, | |
| 1011 | - /* 20 */ 434, 434, 434, 434, 434, 434, 463, 563, 434, 434, | |
| 1012 | - /* 30 */ 440, 567, 475, 568, 568, 440, 434, 434, 434, 434, | |
| 1013 | - /* 40 */ 434, 434, 434, 434, 434, 467, 434, 434, 434, 434, | |
| 1014 | - /* 50 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, | |
| 1015 | - /* 60 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, | |
| 1016 | - /* 70 */ 434, 434, 434, 434, 434, 434, 434, 446, 460, 497, | |
| 1017 | - /* 80 */ 497, 563, 458, 483, 434, 434, 434, 434, 461, 434, | |
| 1018 | - /* 90 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 478, | |
| 1019 | - /* 100 */ 476, 466, 449, 501, 500, 499, 434, 553, 434, 434, | |
| 1020 | - /* 110 */ 434, 434, 434, 575, 434, 533, 532, 528, 434, 521, | |
| 1021 | - /* 120 */ 518, 434, 518, 434, 434, 434, 481, 434, 434, 434, | |
| 1022 | - /* 130 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, | |
| 1023 | - /* 140 */ 434, 434, 434, 434, 434, 434, 434, 434, 579, 434, | |
| 1024 | - /* 150 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 588, | |
| 1025 | - /* 160 */ 434, 434, | |
| 1016 | + /* 0 */ 441, 435, 435, 435, 435, 435, 435, 435, 435, 435, | |
| 1017 | + /* 10 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, | |
| 1018 | + /* 20 */ 435, 435, 435, 435, 435, 435, 435, 435, 464, 565, | |
| 1019 | + /* 30 */ 435, 441, 569, 476, 570, 570, 441, 435, 435, 435, | |
| 1020 | + /* 40 */ 435, 435, 435, 435, 435, 435, 435, 435, 468, 435, | |
| 1021 | + /* 50 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, | |
| 1022 | + /* 60 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, | |
| 1023 | + /* 70 */ 435, 435, 435, 435, 435, 435, 435, 435, 447, 461, | |
| 1024 | + /* 80 */ 498, 498, 565, 459, 484, 435, 435, 435, 462, 435, | |
| 1025 | + /* 90 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 479, | |
| 1026 | + /* 100 */ 477, 467, 450, 502, 501, 500, 435, 555, 435, 435, | |
| 1027 | + /* 110 */ 435, 435, 435, 577, 435, 534, 533, 529, 435, 522, | |
| 1028 | + /* 120 */ 519, 435, 435, 435, 435, 482, 435, 435, 435, 435, | |
| 1029 | + /* 130 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, | |
| 1030 | + /* 140 */ 435, 435, 435, 435, 435, 435, 435, 581, 435, 435, | |
| 1031 | + /* 150 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 590, | |
| 1032 | + /* 160 */ 435, 435, | |
| 1026 | 1033 | }; |
| 1027 | 1034 | /********** End of lemon-generated parsing tables *****************************/ |
| 1028 | 1035 | |
| 1029 | 1036 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 1030 | 1037 | ** If a construct like the following: |
| @@ -1372,11 +1379,11 @@ | ||
| 1372 | 1379 | /* 6 */ "element ::= PLACENAME COLON unnamed_element", |
| 1373 | 1380 | /* 7 */ "element ::= PLACENAME COLON position", |
| 1374 | 1381 | /* 8 */ "element ::= unnamed_element", |
| 1375 | 1382 | /* 9 */ "element ::= print prlist", |
| 1376 | 1383 | /* 10 */ "element ::= ASSERT LP expr EQ expr RP", |
| 1377 | - /* 11 */ "element ::= ASSERT LP place EQ place RP", | |
| 1384 | + /* 11 */ "element ::= ASSERT LP position EQ position RP", | |
| 1378 | 1385 | /* 12 */ "rvalue ::= PLACENAME", |
| 1379 | 1386 | /* 13 */ "pritem ::= FILL", |
| 1380 | 1387 | /* 14 */ "pritem ::= COLOR", |
| 1381 | 1388 | /* 15 */ "pritem ::= THICKNESS", |
| 1382 | 1389 | /* 16 */ "pritem ::= rvalue", |
| @@ -1463,60 +1470,61 @@ | ||
| 1463 | 1470 | /* 97 */ "expr ::= expr STAR expr", |
| 1464 | 1471 | /* 98 */ "expr ::= expr SLASH expr", |
| 1465 | 1472 | /* 99 */ "expr ::= MINUS expr", |
| 1466 | 1473 | /* 100 */ "expr ::= PLUS expr", |
| 1467 | 1474 | /* 101 */ "expr ::= LP expr RP", |
| 1468 | - /* 102 */ "expr ::= NUMBER", | |
| 1469 | - /* 103 */ "expr ::= ID", | |
| 1470 | - /* 104 */ "expr ::= FUNC1 LP expr RP", | |
| 1471 | - /* 105 */ "expr ::= FUNC2 LP expr COMMA expr RP", | |
| 1472 | - /* 106 */ "expr ::= DIST LP position COMMA position RP", | |
| 1473 | - /* 107 */ "expr ::= place2 DOT_XY X", | |
| 1474 | - /* 108 */ "expr ::= place2 DOT_XY Y", | |
| 1475 | - /* 109 */ "expr ::= object DOT_L numproperty", | |
| 1476 | - /* 110 */ "expr ::= object DOT_L dashproperty", | |
| 1477 | - /* 111 */ "expr ::= object DOT_L colorproperty", | |
| 1478 | - /* 112 */ "lvalue ::= ID", | |
| 1479 | - /* 113 */ "lvalue ::= FILL", | |
| 1480 | - /* 114 */ "lvalue ::= COLOR", | |
| 1481 | - /* 115 */ "lvalue ::= THICKNESS", | |
| 1482 | - /* 116 */ "rvalue ::= expr", | |
| 1483 | - /* 117 */ "print ::= PRINT", | |
| 1484 | - /* 118 */ "prlist ::= pritem", | |
| 1485 | - /* 119 */ "prlist ::= prlist prsep pritem", | |
| 1486 | - /* 120 */ "direction ::= UP", | |
| 1487 | - /* 121 */ "direction ::= DOWN", | |
| 1488 | - /* 122 */ "direction ::= LEFT", | |
| 1489 | - /* 123 */ "direction ::= RIGHT", | |
| 1490 | - /* 124 */ "optrelexpr ::= relexpr", | |
| 1491 | - /* 125 */ "attribute_list ::= alist", | |
| 1492 | - /* 126 */ "alist ::=", | |
| 1493 | - /* 127 */ "alist ::= alist attribute", | |
| 1494 | - /* 128 */ "attribute ::= boolproperty", | |
| 1495 | - /* 129 */ "attribute ::= WITH withclause", | |
| 1496 | - /* 130 */ "go ::= GO", | |
| 1497 | - /* 131 */ "go ::=", | |
| 1498 | - /* 132 */ "even ::= UNTIL EVEN WITH", | |
| 1499 | - /* 133 */ "even ::= EVEN WITH", | |
| 1500 | - /* 134 */ "dashproperty ::= DOTTED", | |
| 1501 | - /* 135 */ "dashproperty ::= DASHED", | |
| 1502 | - /* 136 */ "colorproperty ::= FILL", | |
| 1503 | - /* 137 */ "colorproperty ::= COLOR", | |
| 1504 | - /* 138 */ "position ::= place", | |
| 1505 | - /* 139 */ "between ::= WAY BETWEEN", | |
| 1506 | - /* 140 */ "between ::= BETWEEN", | |
| 1507 | - /* 141 */ "between ::= OF THE WAY BETWEEN", | |
| 1508 | - /* 142 */ "place ::= place2", | |
| 1509 | - /* 143 */ "edge ::= CENTER", | |
| 1510 | - /* 144 */ "edge ::= EDGEPT", | |
| 1511 | - /* 145 */ "edge ::= TOP", | |
| 1512 | - /* 146 */ "edge ::= BOTTOM", | |
| 1513 | - /* 147 */ "edge ::= START", | |
| 1514 | - /* 148 */ "edge ::= END", | |
| 1515 | - /* 149 */ "edge ::= RIGHT", | |
| 1516 | - /* 150 */ "edge ::= LEFT", | |
| 1517 | - /* 151 */ "object ::= objectname", | |
| 1475 | + /* 102 */ "expr ::= LP FILL|COLOR|THICKNESS RP", | |
| 1476 | + /* 103 */ "expr ::= NUMBER", | |
| 1477 | + /* 104 */ "expr ::= ID", | |
| 1478 | + /* 105 */ "expr ::= FUNC1 LP expr RP", | |
| 1479 | + /* 106 */ "expr ::= FUNC2 LP expr COMMA expr RP", | |
| 1480 | + /* 107 */ "expr ::= DIST LP position COMMA position RP", | |
| 1481 | + /* 108 */ "expr ::= place2 DOT_XY X", | |
| 1482 | + /* 109 */ "expr ::= place2 DOT_XY Y", | |
| 1483 | + /* 110 */ "expr ::= object DOT_L numproperty", | |
| 1484 | + /* 111 */ "expr ::= object DOT_L dashproperty", | |
| 1485 | + /* 112 */ "expr ::= object DOT_L colorproperty", | |
| 1486 | + /* 113 */ "lvalue ::= ID", | |
| 1487 | + /* 114 */ "lvalue ::= FILL", | |
| 1488 | + /* 115 */ "lvalue ::= COLOR", | |
| 1489 | + /* 116 */ "lvalue ::= THICKNESS", | |
| 1490 | + /* 117 */ "rvalue ::= expr", | |
| 1491 | + /* 118 */ "print ::= PRINT", | |
| 1492 | + /* 119 */ "prlist ::= pritem", | |
| 1493 | + /* 120 */ "prlist ::= prlist prsep pritem", | |
| 1494 | + /* 121 */ "direction ::= UP", | |
| 1495 | + /* 122 */ "direction ::= DOWN", | |
| 1496 | + /* 123 */ "direction ::= LEFT", | |
| 1497 | + /* 124 */ "direction ::= RIGHT", | |
| 1498 | + /* 125 */ "optrelexpr ::= relexpr", | |
| 1499 | + /* 126 */ "attribute_list ::= alist", | |
| 1500 | + /* 127 */ "alist ::=", | |
| 1501 | + /* 128 */ "alist ::= alist attribute", | |
| 1502 | + /* 129 */ "attribute ::= boolproperty", | |
| 1503 | + /* 130 */ "attribute ::= WITH withclause", | |
| 1504 | + /* 131 */ "go ::= GO", | |
| 1505 | + /* 132 */ "go ::=", | |
| 1506 | + /* 133 */ "even ::= UNTIL EVEN WITH", | |
| 1507 | + /* 134 */ "even ::= EVEN WITH", | |
| 1508 | + /* 135 */ "dashproperty ::= DOTTED", | |
| 1509 | + /* 136 */ "dashproperty ::= DASHED", | |
| 1510 | + /* 137 */ "colorproperty ::= FILL", | |
| 1511 | + /* 138 */ "colorproperty ::= COLOR", | |
| 1512 | + /* 139 */ "position ::= place", | |
| 1513 | + /* 140 */ "between ::= WAY BETWEEN", | |
| 1514 | + /* 141 */ "between ::= BETWEEN", | |
| 1515 | + /* 142 */ "between ::= OF THE WAY BETWEEN", | |
| 1516 | + /* 143 */ "place ::= place2", | |
| 1517 | + /* 144 */ "edge ::= CENTER", | |
| 1518 | + /* 145 */ "edge ::= EDGEPT", | |
| 1519 | + /* 146 */ "edge ::= TOP", | |
| 1520 | + /* 147 */ "edge ::= BOTTOM", | |
| 1521 | + /* 148 */ "edge ::= START", | |
| 1522 | + /* 149 */ "edge ::= END", | |
| 1523 | + /* 150 */ "edge ::= RIGHT", | |
| 1524 | + /* 151 */ "edge ::= LEFT", | |
| 1525 | + /* 152 */ "object ::= objectname", | |
| 1518 | 1526 | }; |
| 1519 | 1527 | #endif /* NDEBUG */ |
| 1520 | 1528 | |
| 1521 | 1529 | |
| 1522 | 1530 | #if YYSTACKDEPTH<=0 |
| @@ -1642,20 +1650,20 @@ | ||
| 1642 | 1650 | /********* Begin destructor definitions ***************************************/ |
| 1643 | 1651 | case 95: /* element_list */ |
| 1644 | 1652 | { |
| 1645 | 1653 | #line 467 "pikchr.y" |
| 1646 | 1654 | pik_elist_free(p,(yypminor->yy56)); |
| 1647 | -#line 1672 "pikchr.c" | |
| 1655 | +#line 1680 "pikchr.c" | |
| 1648 | 1656 | } |
| 1649 | 1657 | break; |
| 1650 | 1658 | case 96: /* element */ |
| 1651 | 1659 | case 97: /* unnamed_element */ |
| 1652 | 1660 | case 98: /* basetype */ |
| 1653 | 1661 | { |
| 1654 | 1662 | #line 469 "pikchr.y" |
| 1655 | 1663 | pik_elem_free(p,(yypminor->yy226)); |
| 1656 | -#line 1681 "pikchr.c" | |
| 1664 | +#line 1689 "pikchr.c" | |
| 1657 | 1665 | } |
| 1658 | 1666 | break; |
| 1659 | 1667 | /********* End destructor definitions *****************************************/ |
| 1660 | 1668 | default: break; /* If no destructor action specified: do nothing */ |
| 1661 | 1669 | } |
| @@ -1872,11 +1880,11 @@ | ||
| 1872 | 1880 | ** stack every overflows */ |
| 1873 | 1881 | /******** Begin %stack_overflow code ******************************************/ |
| 1874 | 1882 | #line 501 "pikchr.y" |
| 1875 | 1883 | |
| 1876 | 1884 | pik_error(p, 0, "parser stack overflow"); |
| 1877 | -#line 1902 "pikchr.c" | |
| 1885 | +#line 1910 "pikchr.c" | |
| 1878 | 1886 | /******** End %stack_overflow code ********************************************/ |
| 1879 | 1887 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 1880 | 1888 | pik_parserCTX_STORE |
| 1881 | 1889 | } |
| 1882 | 1890 | |
| @@ -1955,11 +1963,11 @@ | ||
| 1955 | 1963 | 96, /* (6) element ::= PLACENAME COLON unnamed_element */ |
| 1956 | 1964 | 96, /* (7) element ::= PLACENAME COLON position */ |
| 1957 | 1965 | 96, /* (8) element ::= unnamed_element */ |
| 1958 | 1966 | 96, /* (9) element ::= print prlist */ |
| 1959 | 1967 | 96, /* (10) element ::= ASSERT LP expr EQ expr RP */ |
| 1960 | - 96, /* (11) element ::= ASSERT LP place EQ place RP */ | |
| 1968 | + 96, /* (11) element ::= ASSERT LP position EQ position RP */ | |
| 1961 | 1969 | 112, /* (12) rvalue ::= PLACENAME */ |
| 1962 | 1970 | 120, /* (13) pritem ::= FILL */ |
| 1963 | 1971 | 120, /* (14) pritem ::= COLOR */ |
| 1964 | 1972 | 120, /* (15) pritem ::= THICKNESS */ |
| 1965 | 1973 | 120, /* (16) pritem ::= rvalue */ |
| @@ -2046,60 +2054,61 @@ | ||
| 2046 | 2054 | 99, /* (97) expr ::= expr STAR expr */ |
| 2047 | 2055 | 99, /* (98) expr ::= expr SLASH expr */ |
| 2048 | 2056 | 99, /* (99) expr ::= MINUS expr */ |
| 2049 | 2057 | 99, /* (100) expr ::= PLUS expr */ |
| 2050 | 2058 | 99, /* (101) expr ::= LP expr RP */ |
| 2051 | - 99, /* (102) expr ::= NUMBER */ | |
| 2052 | - 99, /* (103) expr ::= ID */ | |
| 2053 | - 99, /* (104) expr ::= FUNC1 LP expr RP */ | |
| 2054 | - 99, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */ | |
| 2055 | - 99, /* (106) expr ::= DIST LP position COMMA position RP */ | |
| 2056 | - 99, /* (107) expr ::= place2 DOT_XY X */ | |
| 2057 | - 99, /* (108) expr ::= place2 DOT_XY Y */ | |
| 2058 | - 99, /* (109) expr ::= object DOT_L numproperty */ | |
| 2059 | - 99, /* (110) expr ::= object DOT_L dashproperty */ | |
| 2060 | - 99, /* (111) expr ::= object DOT_L colorproperty */ | |
| 2061 | - 113, /* (112) lvalue ::= ID */ | |
| 2062 | - 113, /* (113) lvalue ::= FILL */ | |
| 2063 | - 113, /* (114) lvalue ::= COLOR */ | |
| 2064 | - 113, /* (115) lvalue ::= THICKNESS */ | |
| 2065 | - 112, /* (116) rvalue ::= expr */ | |
| 2066 | - 118, /* (117) print ::= PRINT */ | |
| 2067 | - 119, /* (118) prlist ::= pritem */ | |
| 2068 | - 119, /* (119) prlist ::= prlist prsep pritem */ | |
| 2069 | - 102, /* (120) direction ::= UP */ | |
| 2070 | - 102, /* (121) direction ::= DOWN */ | |
| 2071 | - 102, /* (122) direction ::= LEFT */ | |
| 2072 | - 102, /* (123) direction ::= RIGHT */ | |
| 2073 | - 116, /* (124) optrelexpr ::= relexpr */ | |
| 2074 | - 122, /* (125) attribute_list ::= alist */ | |
| 2075 | - 124, /* (126) alist ::= */ | |
| 2076 | - 124, /* (127) alist ::= alist attribute */ | |
| 2077 | - 125, /* (128) attribute ::= boolproperty */ | |
| 2078 | - 125, /* (129) attribute ::= WITH withclause */ | |
| 2079 | - 126, /* (130) go ::= GO */ | |
| 2080 | - 126, /* (131) go ::= */ | |
| 2081 | - 114, /* (132) even ::= UNTIL EVEN WITH */ | |
| 2082 | - 114, /* (133) even ::= EVEN WITH */ | |
| 2083 | - 103, /* (134) dashproperty ::= DOTTED */ | |
| 2084 | - 103, /* (135) dashproperty ::= DASHED */ | |
| 2085 | - 104, /* (136) colorproperty ::= FILL */ | |
| 2086 | - 104, /* (137) colorproperty ::= COLOR */ | |
| 2087 | - 106, /* (138) position ::= place */ | |
| 2088 | - 129, /* (139) between ::= WAY BETWEEN */ | |
| 2089 | - 129, /* (140) between ::= BETWEEN */ | |
| 2090 | - 129, /* (141) between ::= OF THE WAY BETWEEN */ | |
| 2091 | - 107, /* (142) place ::= place2 */ | |
| 2092 | - 101, /* (143) edge ::= CENTER */ | |
| 2093 | - 101, /* (144) edge ::= EDGEPT */ | |
| 2094 | - 101, /* (145) edge ::= TOP */ | |
| 2095 | - 101, /* (146) edge ::= BOTTOM */ | |
| 2096 | - 101, /* (147) edge ::= START */ | |
| 2097 | - 101, /* (148) edge ::= END */ | |
| 2098 | - 101, /* (149) edge ::= RIGHT */ | |
| 2099 | - 101, /* (150) edge ::= LEFT */ | |
| 2100 | - 108, /* (151) object ::= objectname */ | |
| 2059 | + 99, /* (102) expr ::= LP FILL|COLOR|THICKNESS RP */ | |
| 2060 | + 99, /* (103) expr ::= NUMBER */ | |
| 2061 | + 99, /* (104) expr ::= ID */ | |
| 2062 | + 99, /* (105) expr ::= FUNC1 LP expr RP */ | |
| 2063 | + 99, /* (106) expr ::= FUNC2 LP expr COMMA expr RP */ | |
| 2064 | + 99, /* (107) expr ::= DIST LP position COMMA position RP */ | |
| 2065 | + 99, /* (108) expr ::= place2 DOT_XY X */ | |
| 2066 | + 99, /* (109) expr ::= place2 DOT_XY Y */ | |
| 2067 | + 99, /* (110) expr ::= object DOT_L numproperty */ | |
| 2068 | + 99, /* (111) expr ::= object DOT_L dashproperty */ | |
| 2069 | + 99, /* (112) expr ::= object DOT_L colorproperty */ | |
| 2070 | + 113, /* (113) lvalue ::= ID */ | |
| 2071 | + 113, /* (114) lvalue ::= FILL */ | |
| 2072 | + 113, /* (115) lvalue ::= COLOR */ | |
| 2073 | + 113, /* (116) lvalue ::= THICKNESS */ | |
| 2074 | + 112, /* (117) rvalue ::= expr */ | |
| 2075 | + 118, /* (118) print ::= PRINT */ | |
| 2076 | + 119, /* (119) prlist ::= pritem */ | |
| 2077 | + 119, /* (120) prlist ::= prlist prsep pritem */ | |
| 2078 | + 102, /* (121) direction ::= UP */ | |
| 2079 | + 102, /* (122) direction ::= DOWN */ | |
| 2080 | + 102, /* (123) direction ::= LEFT */ | |
| 2081 | + 102, /* (124) direction ::= RIGHT */ | |
| 2082 | + 116, /* (125) optrelexpr ::= relexpr */ | |
| 2083 | + 122, /* (126) attribute_list ::= alist */ | |
| 2084 | + 124, /* (127) alist ::= */ | |
| 2085 | + 124, /* (128) alist ::= alist attribute */ | |
| 2086 | + 125, /* (129) attribute ::= boolproperty */ | |
| 2087 | + 125, /* (130) attribute ::= WITH withclause */ | |
| 2088 | + 126, /* (131) go ::= GO */ | |
| 2089 | + 126, /* (132) go ::= */ | |
| 2090 | + 114, /* (133) even ::= UNTIL EVEN WITH */ | |
| 2091 | + 114, /* (134) even ::= EVEN WITH */ | |
| 2092 | + 103, /* (135) dashproperty ::= DOTTED */ | |
| 2093 | + 103, /* (136) dashproperty ::= DASHED */ | |
| 2094 | + 104, /* (137) colorproperty ::= FILL */ | |
| 2095 | + 104, /* (138) colorproperty ::= COLOR */ | |
| 2096 | + 106, /* (139) position ::= place */ | |
| 2097 | + 129, /* (140) between ::= WAY BETWEEN */ | |
| 2098 | + 129, /* (141) between ::= BETWEEN */ | |
| 2099 | + 129, /* (142) between ::= OF THE WAY BETWEEN */ | |
| 2100 | + 107, /* (143) place ::= place2 */ | |
| 2101 | + 101, /* (144) edge ::= CENTER */ | |
| 2102 | + 101, /* (145) edge ::= EDGEPT */ | |
| 2103 | + 101, /* (146) edge ::= TOP */ | |
| 2104 | + 101, /* (147) edge ::= BOTTOM */ | |
| 2105 | + 101, /* (148) edge ::= START */ | |
| 2106 | + 101, /* (149) edge ::= END */ | |
| 2107 | + 101, /* (150) edge ::= RIGHT */ | |
| 2108 | + 101, /* (151) edge ::= LEFT */ | |
| 2109 | + 108, /* (152) object ::= objectname */ | |
| 2101 | 2110 | }; |
| 2102 | 2111 | |
| 2103 | 2112 | /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number |
| 2104 | 2113 | ** of symbols on the right-hand side of that rule. */ |
| 2105 | 2114 | static const signed char yyRuleInfoNRhs[] = { |
| @@ -2112,11 +2121,11 @@ | ||
| 2112 | 2121 | -3, /* (6) element ::= PLACENAME COLON unnamed_element */ |
| 2113 | 2122 | -3, /* (7) element ::= PLACENAME COLON position */ |
| 2114 | 2123 | -1, /* (8) element ::= unnamed_element */ |
| 2115 | 2124 | -2, /* (9) element ::= print prlist */ |
| 2116 | 2125 | -6, /* (10) element ::= ASSERT LP expr EQ expr RP */ |
| 2117 | - -6, /* (11) element ::= ASSERT LP place EQ place RP */ | |
| 2126 | + -6, /* (11) element ::= ASSERT LP position EQ position RP */ | |
| 2118 | 2127 | -1, /* (12) rvalue ::= PLACENAME */ |
| 2119 | 2128 | -1, /* (13) pritem ::= FILL */ |
| 2120 | 2129 | -1, /* (14) pritem ::= COLOR */ |
| 2121 | 2130 | -1, /* (15) pritem ::= THICKNESS */ |
| 2122 | 2131 | -1, /* (16) pritem ::= rvalue */ |
| @@ -2203,60 +2212,61 @@ | ||
| 2203 | 2212 | -3, /* (97) expr ::= expr STAR expr */ |
| 2204 | 2213 | -3, /* (98) expr ::= expr SLASH expr */ |
| 2205 | 2214 | -2, /* (99) expr ::= MINUS expr */ |
| 2206 | 2215 | -2, /* (100) expr ::= PLUS expr */ |
| 2207 | 2216 | -3, /* (101) expr ::= LP expr RP */ |
| 2208 | - -1, /* (102) expr ::= NUMBER */ | |
| 2209 | - -1, /* (103) expr ::= ID */ | |
| 2210 | - -4, /* (104) expr ::= FUNC1 LP expr RP */ | |
| 2211 | - -6, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */ | |
| 2212 | - -6, /* (106) expr ::= DIST LP position COMMA position RP */ | |
| 2213 | - -3, /* (107) expr ::= place2 DOT_XY X */ | |
| 2214 | - -3, /* (108) expr ::= place2 DOT_XY Y */ | |
| 2215 | - -3, /* (109) expr ::= object DOT_L numproperty */ | |
| 2216 | - -3, /* (110) expr ::= object DOT_L dashproperty */ | |
| 2217 | - -3, /* (111) expr ::= object DOT_L colorproperty */ | |
| 2218 | - -1, /* (112) lvalue ::= ID */ | |
| 2219 | - -1, /* (113) lvalue ::= FILL */ | |
| 2220 | - -1, /* (114) lvalue ::= COLOR */ | |
| 2221 | - -1, /* (115) lvalue ::= THICKNESS */ | |
| 2222 | - -1, /* (116) rvalue ::= expr */ | |
| 2223 | - -1, /* (117) print ::= PRINT */ | |
| 2224 | - -1, /* (118) prlist ::= pritem */ | |
| 2225 | - -3, /* (119) prlist ::= prlist prsep pritem */ | |
| 2226 | - -1, /* (120) direction ::= UP */ | |
| 2227 | - -1, /* (121) direction ::= DOWN */ | |
| 2228 | - -1, /* (122) direction ::= LEFT */ | |
| 2229 | - -1, /* (123) direction ::= RIGHT */ | |
| 2230 | - -1, /* (124) optrelexpr ::= relexpr */ | |
| 2231 | - -1, /* (125) attribute_list ::= alist */ | |
| 2232 | - 0, /* (126) alist ::= */ | |
| 2233 | - -2, /* (127) alist ::= alist attribute */ | |
| 2234 | - -1, /* (128) attribute ::= boolproperty */ | |
| 2235 | - -2, /* (129) attribute ::= WITH withclause */ | |
| 2236 | - -1, /* (130) go ::= GO */ | |
| 2237 | - 0, /* (131) go ::= */ | |
| 2238 | - -3, /* (132) even ::= UNTIL EVEN WITH */ | |
| 2239 | - -2, /* (133) even ::= EVEN WITH */ | |
| 2240 | - -1, /* (134) dashproperty ::= DOTTED */ | |
| 2241 | - -1, /* (135) dashproperty ::= DASHED */ | |
| 2242 | - -1, /* (136) colorproperty ::= FILL */ | |
| 2243 | - -1, /* (137) colorproperty ::= COLOR */ | |
| 2244 | - -1, /* (138) position ::= place */ | |
| 2245 | - -2, /* (139) between ::= WAY BETWEEN */ | |
| 2246 | - -1, /* (140) between ::= BETWEEN */ | |
| 2247 | - -4, /* (141) between ::= OF THE WAY BETWEEN */ | |
| 2248 | - -1, /* (142) place ::= place2 */ | |
| 2249 | - -1, /* (143) edge ::= CENTER */ | |
| 2250 | - -1, /* (144) edge ::= EDGEPT */ | |
| 2251 | - -1, /* (145) edge ::= TOP */ | |
| 2252 | - -1, /* (146) edge ::= BOTTOM */ | |
| 2253 | - -1, /* (147) edge ::= START */ | |
| 2254 | - -1, /* (148) edge ::= END */ | |
| 2255 | - -1, /* (149) edge ::= RIGHT */ | |
| 2256 | - -1, /* (150) edge ::= LEFT */ | |
| 2257 | - -1, /* (151) object ::= objectname */ | |
| 2217 | + -3, /* (102) expr ::= LP FILL|COLOR|THICKNESS RP */ | |
| 2218 | + -1, /* (103) expr ::= NUMBER */ | |
| 2219 | + -1, /* (104) expr ::= ID */ | |
| 2220 | + -4, /* (105) expr ::= FUNC1 LP expr RP */ | |
| 2221 | + -6, /* (106) expr ::= FUNC2 LP expr COMMA expr RP */ | |
| 2222 | + -6, /* (107) expr ::= DIST LP position COMMA position RP */ | |
| 2223 | + -3, /* (108) expr ::= place2 DOT_XY X */ | |
| 2224 | + -3, /* (109) expr ::= place2 DOT_XY Y */ | |
| 2225 | + -3, /* (110) expr ::= object DOT_L numproperty */ | |
| 2226 | + -3, /* (111) expr ::= object DOT_L dashproperty */ | |
| 2227 | + -3, /* (112) expr ::= object DOT_L colorproperty */ | |
| 2228 | + -1, /* (113) lvalue ::= ID */ | |
| 2229 | + -1, /* (114) lvalue ::= FILL */ | |
| 2230 | + -1, /* (115) lvalue ::= COLOR */ | |
| 2231 | + -1, /* (116) lvalue ::= THICKNESS */ | |
| 2232 | + -1, /* (117) rvalue ::= expr */ | |
| 2233 | + -1, /* (118) print ::= PRINT */ | |
| 2234 | + -1, /* (119) prlist ::= pritem */ | |
| 2235 | + -3, /* (120) prlist ::= prlist prsep pritem */ | |
| 2236 | + -1, /* (121) direction ::= UP */ | |
| 2237 | + -1, /* (122) direction ::= DOWN */ | |
| 2238 | + -1, /* (123) direction ::= LEFT */ | |
| 2239 | + -1, /* (124) direction ::= RIGHT */ | |
| 2240 | + -1, /* (125) optrelexpr ::= relexpr */ | |
| 2241 | + -1, /* (126) attribute_list ::= alist */ | |
| 2242 | + 0, /* (127) alist ::= */ | |
| 2243 | + -2, /* (128) alist ::= alist attribute */ | |
| 2244 | + -1, /* (129) attribute ::= boolproperty */ | |
| 2245 | + -2, /* (130) attribute ::= WITH withclause */ | |
| 2246 | + -1, /* (131) go ::= GO */ | |
| 2247 | + 0, /* (132) go ::= */ | |
| 2248 | + -3, /* (133) even ::= UNTIL EVEN WITH */ | |
| 2249 | + -2, /* (134) even ::= EVEN WITH */ | |
| 2250 | + -1, /* (135) dashproperty ::= DOTTED */ | |
| 2251 | + -1, /* (136) dashproperty ::= DASHED */ | |
| 2252 | + -1, /* (137) colorproperty ::= FILL */ | |
| 2253 | + -1, /* (138) colorproperty ::= COLOR */ | |
| 2254 | + -1, /* (139) position ::= place */ | |
| 2255 | + -2, /* (140) between ::= WAY BETWEEN */ | |
| 2256 | + -1, /* (141) between ::= BETWEEN */ | |
| 2257 | + -4, /* (142) between ::= OF THE WAY BETWEEN */ | |
| 2258 | + -1, /* (143) place ::= place2 */ | |
| 2259 | + -1, /* (144) edge ::= CENTER */ | |
| 2260 | + -1, /* (145) edge ::= EDGEPT */ | |
| 2261 | + -1, /* (146) edge ::= TOP */ | |
| 2262 | + -1, /* (147) edge ::= BOTTOM */ | |
| 2263 | + -1, /* (148) edge ::= START */ | |
| 2264 | + -1, /* (149) edge ::= END */ | |
| 2265 | + -1, /* (150) edge ::= RIGHT */ | |
| 2266 | + -1, /* (151) edge ::= LEFT */ | |
| 2267 | + -1, /* (152) object ::= objectname */ | |
| 2258 | 2268 | }; |
| 2259 | 2269 | |
| 2260 | 2270 | static void yy_accept(yyParser*); /* Forward Declaration */ |
| 2261 | 2271 | |
| 2262 | 2272 | /* |
| @@ -2282,12 +2292,13 @@ | ||
| 2282 | 2292 | int yysize; /* Amount to pop the stack */ |
| 2283 | 2293 | pik_parserARG_FETCH |
| 2284 | 2294 | (void)yyLookahead; |
| 2285 | 2295 | (void)yyLookaheadToken; |
| 2286 | 2296 | yymsp = yypParser->yytos; |
| 2297 | + assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ); | |
| 2287 | 2298 | #ifndef NDEBUG |
| 2288 | - if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ | |
| 2299 | + if( yyTraceFILE ){ | |
| 2289 | 2300 | yysize = yyRuleInfoNRhs[yyruleno]; |
| 2290 | 2301 | if( yysize ){ |
| 2291 | 2302 | fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", |
| 2292 | 2303 | yyTracePrompt, |
| 2293 | 2304 | yyruleno, yyRuleName[yyruleno], |
| @@ -2345,639 +2356,644 @@ | ||
| 2345 | 2356 | /********** Begin reduce actions **********************************************/ |
| 2346 | 2357 | YYMINORTYPE yylhsminor; |
| 2347 | 2358 | case 0: /* document ::= element_list */ |
| 2348 | 2359 | #line 505 "pikchr.y" |
| 2349 | 2360 | {pik_render(p,yymsp[0].minor.yy56);} |
| 2350 | -#line 2375 "pikchr.c" | |
| 2361 | +#line 2386 "pikchr.c" | |
| 2351 | 2362 | break; |
| 2352 | 2363 | case 1: /* element_list ::= element */ |
| 2353 | 2364 | #line 508 "pikchr.y" |
| 2354 | 2365 | { yylhsminor.yy56 = pik_elist_append(p,0,yymsp[0].minor.yy226); } |
| 2355 | -#line 2380 "pikchr.c" | |
| 2366 | +#line 2391 "pikchr.c" | |
| 2356 | 2367 | yymsp[0].minor.yy56 = yylhsminor.yy56; |
| 2357 | 2368 | break; |
| 2358 | 2369 | case 2: /* element_list ::= element_list EOL element */ |
| 2359 | 2370 | #line 510 "pikchr.y" |
| 2360 | 2371 | { yylhsminor.yy56 = pik_elist_append(p,yymsp[-2].minor.yy56,yymsp[0].minor.yy226); } |
| 2361 | -#line 2386 "pikchr.c" | |
| 2372 | +#line 2397 "pikchr.c" | |
| 2362 | 2373 | yymsp[-2].minor.yy56 = yylhsminor.yy56; |
| 2363 | 2374 | break; |
| 2364 | 2375 | case 3: /* element ::= */ |
| 2365 | 2376 | #line 513 "pikchr.y" |
| 2366 | 2377 | { yymsp[1].minor.yy226 = 0; } |
| 2367 | -#line 2392 "pikchr.c" | |
| 2378 | +#line 2403 "pikchr.c" | |
| 2368 | 2379 | break; |
| 2369 | 2380 | case 4: /* element ::= direction */ |
| 2370 | 2381 | #line 514 "pikchr.y" |
| 2371 | 2382 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy226=0; } |
| 2372 | -#line 2397 "pikchr.c" | |
| 2383 | +#line 2408 "pikchr.c" | |
| 2373 | 2384 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2374 | 2385 | break; |
| 2375 | 2386 | case 5: /* element ::= lvalue ASSIGN rvalue */ |
| 2376 | 2387 | #line 515 "pikchr.y" |
| 2377 | 2388 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy257,&yymsp[-1].minor.yy0); yylhsminor.yy226=0;} |
| 2378 | -#line 2403 "pikchr.c" | |
| 2389 | +#line 2414 "pikchr.c" | |
| 2379 | 2390 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2380 | 2391 | break; |
| 2381 | 2392 | case 6: /* element ::= PLACENAME COLON unnamed_element */ |
| 2382 | 2393 | #line 517 "pikchr.y" |
| 2383 | 2394 | { yylhsminor.yy226 = yymsp[0].minor.yy226; pik_elem_setname(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0); } |
| 2384 | -#line 2409 "pikchr.c" | |
| 2395 | +#line 2420 "pikchr.c" | |
| 2385 | 2396 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2386 | 2397 | break; |
| 2387 | 2398 | case 7: /* element ::= PLACENAME COLON position */ |
| 2388 | 2399 | #line 519 "pikchr.y" |
| 2389 | 2400 | { yylhsminor.yy226 = pik_elem_new(p,0,0,0); |
| 2390 | 2401 | if(yylhsminor.yy226){ yylhsminor.yy226->ptAt = yymsp[0].minor.yy175; pik_elem_setname(p,yylhsminor.yy226,&yymsp[-2].minor.yy0); }} |
| 2391 | -#line 2416 "pikchr.c" | |
| 2402 | +#line 2427 "pikchr.c" | |
| 2392 | 2403 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2393 | 2404 | break; |
| 2394 | 2405 | case 8: /* element ::= unnamed_element */ |
| 2395 | 2406 | #line 521 "pikchr.y" |
| 2396 | 2407 | {yylhsminor.yy226 = yymsp[0].minor.yy226;} |
| 2397 | -#line 2422 "pikchr.c" | |
| 2408 | +#line 2433 "pikchr.c" | |
| 2398 | 2409 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2399 | 2410 | break; |
| 2400 | 2411 | case 9: /* element ::= print prlist */ |
| 2401 | 2412 | #line 522 "pikchr.y" |
| 2402 | 2413 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy226=0;} |
| 2403 | -#line 2428 "pikchr.c" | |
| 2414 | +#line 2439 "pikchr.c" | |
| 2404 | 2415 | break; |
| 2405 | 2416 | case 10: /* element ::= ASSERT LP expr EQ expr RP */ |
| 2406 | 2417 | #line 527 "pikchr.y" |
| 2407 | 2418 | {yymsp[-5].minor.yy226=pik_assert(p,yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy257);} |
| 2408 | -#line 2433 "pikchr.c" | |
| 2419 | +#line 2444 "pikchr.c" | |
| 2409 | 2420 | break; |
| 2410 | - case 11: /* element ::= ASSERT LP place EQ place RP */ | |
| 2421 | + case 11: /* element ::= ASSERT LP position EQ position RP */ | |
| 2411 | 2422 | #line 529 "pikchr.y" |
| 2412 | -{yymsp[-5].minor.yy226=pik_place_assert(p,&yymsp[-3].minor.yy175,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy175);} | |
| 2413 | -#line 2438 "pikchr.c" | |
| 2423 | +{yymsp[-5].minor.yy226=pik_position_assert(p,&yymsp[-3].minor.yy175,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy175);} | |
| 2424 | +#line 2449 "pikchr.c" | |
| 2414 | 2425 | break; |
| 2415 | 2426 | case 12: /* rvalue ::= PLACENAME */ |
| 2416 | 2427 | #line 540 "pikchr.y" |
| 2417 | 2428 | {yylhsminor.yy257 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2418 | -#line 2443 "pikchr.c" | |
| 2429 | +#line 2454 "pikchr.c" | |
| 2419 | 2430 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2420 | 2431 | break; |
| 2421 | 2432 | case 13: /* pritem ::= FILL */ |
| 2422 | 2433 | case 14: /* pritem ::= COLOR */ yytestcase(yyruleno==14); |
| 2423 | 2434 | case 15: /* pritem ::= THICKNESS */ yytestcase(yyruleno==15); |
| 2424 | 2435 | #line 545 "pikchr.y" |
| 2425 | 2436 | {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));} |
| 2426 | -#line 2451 "pikchr.c" | |
| 2437 | +#line 2462 "pikchr.c" | |
| 2427 | 2438 | break; |
| 2428 | 2439 | case 16: /* pritem ::= rvalue */ |
| 2429 | 2440 | #line 548 "pikchr.y" |
| 2430 | 2441 | {pik_append_num(p,"",yymsp[0].minor.yy257);} |
| 2431 | -#line 2456 "pikchr.c" | |
| 2442 | +#line 2467 "pikchr.c" | |
| 2432 | 2443 | break; |
| 2433 | 2444 | case 17: /* pritem ::= STRING */ |
| 2434 | 2445 | #line 549 "pikchr.y" |
| 2435 | 2446 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2436 | -#line 2461 "pikchr.c" | |
| 2447 | +#line 2472 "pikchr.c" | |
| 2437 | 2448 | break; |
| 2438 | 2449 | case 18: /* prsep ::= COMMA */ |
| 2439 | 2450 | #line 550 "pikchr.y" |
| 2440 | 2451 | {pik_append(p, " ", 1);} |
| 2441 | -#line 2466 "pikchr.c" | |
| 2452 | +#line 2477 "pikchr.c" | |
| 2442 | 2453 | break; |
| 2443 | 2454 | case 19: /* unnamed_element ::= basetype attribute_list */ |
| 2444 | 2455 | #line 553 "pikchr.y" |
| 2445 | 2456 | {yylhsminor.yy226 = yymsp[-1].minor.yy226; pik_after_adding_attributes(p,yylhsminor.yy226);} |
| 2446 | -#line 2471 "pikchr.c" | |
| 2457 | +#line 2482 "pikchr.c" | |
| 2447 | 2458 | yymsp[-1].minor.yy226 = yylhsminor.yy226; |
| 2448 | 2459 | break; |
| 2449 | 2460 | case 20: /* basetype ::= CLASSNAME */ |
| 2450 | 2461 | #line 555 "pikchr.y" |
| 2451 | 2462 | {yylhsminor.yy226 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2452 | -#line 2477 "pikchr.c" | |
| 2463 | +#line 2488 "pikchr.c" | |
| 2453 | 2464 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2454 | 2465 | break; |
| 2455 | 2466 | case 21: /* basetype ::= STRING textposition */ |
| 2456 | 2467 | #line 557 "pikchr.y" |
| 2457 | 2468 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy116; yylhsminor.yy226 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2458 | -#line 2483 "pikchr.c" | |
| 2469 | +#line 2494 "pikchr.c" | |
| 2459 | 2470 | yymsp[-1].minor.yy226 = yylhsminor.yy226; |
| 2460 | 2471 | break; |
| 2461 | 2472 | case 22: /* basetype ::= LB savelist element_list RB */ |
| 2462 | 2473 | #line 559 "pikchr.y" |
| 2463 | 2474 | { p->list = yymsp[-2].minor.yy56; yymsp[-3].minor.yy226 = pik_elem_new(p,0,0,yymsp[-1].minor.yy56); if(yymsp[-3].minor.yy226) yymsp[-3].minor.yy226->errTok = yymsp[0].minor.yy0; } |
| 2464 | -#line 2489 "pikchr.c" | |
| 2475 | +#line 2500 "pikchr.c" | |
| 2465 | 2476 | break; |
| 2466 | 2477 | case 23: /* savelist ::= */ |
| 2467 | 2478 | #line 564 "pikchr.y" |
| 2468 | 2479 | {yymsp[1].minor.yy56 = p->list; p->list = 0;} |
| 2469 | -#line 2494 "pikchr.c" | |
| 2480 | +#line 2505 "pikchr.c" | |
| 2470 | 2481 | break; |
| 2471 | 2482 | case 24: /* relexpr ::= expr */ |
| 2472 | 2483 | #line 571 "pikchr.y" |
| 2473 | 2484 | {yylhsminor.yy164.rAbs = yymsp[0].minor.yy257; yylhsminor.yy164.rRel = 0;} |
| 2474 | -#line 2499 "pikchr.c" | |
| 2485 | +#line 2510 "pikchr.c" | |
| 2475 | 2486 | yymsp[0].minor.yy164 = yylhsminor.yy164; |
| 2476 | 2487 | break; |
| 2477 | 2488 | case 25: /* relexpr ::= expr PERCENT */ |
| 2478 | 2489 | #line 572 "pikchr.y" |
| 2479 | 2490 | {yylhsminor.yy164.rAbs = 0; yylhsminor.yy164.rRel = yymsp[-1].minor.yy257/100;} |
| 2480 | -#line 2505 "pikchr.c" | |
| 2491 | +#line 2516 "pikchr.c" | |
| 2481 | 2492 | yymsp[-1].minor.yy164 = yylhsminor.yy164; |
| 2482 | 2493 | break; |
| 2483 | 2494 | case 26: /* optrelexpr ::= */ |
| 2484 | 2495 | #line 574 "pikchr.y" |
| 2485 | 2496 | {yymsp[1].minor.yy164.rAbs = 0; yymsp[1].minor.yy164.rRel = 1.0;} |
| 2486 | -#line 2511 "pikchr.c" | |
| 2497 | +#line 2522 "pikchr.c" | |
| 2487 | 2498 | break; |
| 2488 | 2499 | case 27: /* attribute_list ::= relexpr alist */ |
| 2489 | 2500 | #line 576 "pikchr.y" |
| 2490 | 2501 | {pik_add_direction(p,0,&yymsp[-1].minor.yy164);} |
| 2491 | -#line 2516 "pikchr.c" | |
| 2502 | +#line 2527 "pikchr.c" | |
| 2492 | 2503 | break; |
| 2493 | 2504 | case 28: /* attribute ::= numproperty relexpr */ |
| 2494 | 2505 | #line 580 "pikchr.y" |
| 2495 | 2506 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164); } |
| 2496 | -#line 2521 "pikchr.c" | |
| 2507 | +#line 2532 "pikchr.c" | |
| 2497 | 2508 | break; |
| 2498 | 2509 | case 29: /* attribute ::= dashproperty expr */ |
| 2499 | 2510 | #line 581 "pikchr.y" |
| 2500 | 2511 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy257); } |
| 2501 | -#line 2526 "pikchr.c" | |
| 2512 | +#line 2537 "pikchr.c" | |
| 2502 | 2513 | break; |
| 2503 | 2514 | case 30: /* attribute ::= dashproperty */ |
| 2504 | 2515 | #line 582 "pikchr.y" |
| 2505 | 2516 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2506 | -#line 2531 "pikchr.c" | |
| 2517 | +#line 2542 "pikchr.c" | |
| 2507 | 2518 | break; |
| 2508 | 2519 | case 31: /* attribute ::= colorproperty rvalue */ |
| 2509 | 2520 | #line 583 "pikchr.y" |
| 2510 | 2521 | { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257); } |
| 2511 | -#line 2536 "pikchr.c" | |
| 2522 | +#line 2547 "pikchr.c" | |
| 2512 | 2523 | break; |
| 2513 | 2524 | case 32: /* attribute ::= go direction optrelexpr */ |
| 2514 | 2525 | #line 584 "pikchr.y" |
| 2515 | 2526 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164);} |
| 2516 | -#line 2541 "pikchr.c" | |
| 2527 | +#line 2552 "pikchr.c" | |
| 2517 | 2528 | break; |
| 2518 | 2529 | case 33: /* attribute ::= go direction even position */ |
| 2519 | 2530 | #line 585 "pikchr.y" |
| 2520 | 2531 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175);} |
| 2521 | -#line 2546 "pikchr.c" | |
| 2532 | +#line 2557 "pikchr.c" | |
| 2522 | 2533 | break; |
| 2523 | 2534 | case 34: /* attribute ::= CLOSE */ |
| 2524 | 2535 | #line 586 "pikchr.y" |
| 2525 | 2536 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2526 | -#line 2551 "pikchr.c" | |
| 2537 | +#line 2562 "pikchr.c" | |
| 2527 | 2538 | break; |
| 2528 | 2539 | case 35: /* attribute ::= CHOP */ |
| 2529 | 2540 | #line 587 "pikchr.y" |
| 2530 | 2541 | { p->cur->bChop = 1; } |
| 2531 | -#line 2556 "pikchr.c" | |
| 2542 | +#line 2567 "pikchr.c" | |
| 2532 | 2543 | break; |
| 2533 | 2544 | case 36: /* attribute ::= FROM position */ |
| 2534 | 2545 | #line 588 "pikchr.y" |
| 2535 | 2546 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); } |
| 2536 | -#line 2561 "pikchr.c" | |
| 2547 | +#line 2572 "pikchr.c" | |
| 2537 | 2548 | break; |
| 2538 | 2549 | case 37: /* attribute ::= TO position */ |
| 2539 | 2550 | #line 589 "pikchr.y" |
| 2540 | 2551 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); } |
| 2541 | -#line 2566 "pikchr.c" | |
| 2552 | +#line 2577 "pikchr.c" | |
| 2542 | 2553 | break; |
| 2543 | 2554 | case 38: /* attribute ::= THEN */ |
| 2544 | 2555 | #line 590 "pikchr.y" |
| 2545 | 2556 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2546 | -#line 2571 "pikchr.c" | |
| 2557 | +#line 2582 "pikchr.c" | |
| 2547 | 2558 | break; |
| 2548 | 2559 | case 39: /* attribute ::= THEN optrelexpr HEADING expr */ |
| 2549 | 2560 | case 41: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==41); |
| 2550 | 2561 | #line 592 "pikchr.y" |
| 2551 | 2562 | {pik_move_hdg(p,&yymsp[-2].minor.yy164,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257,0,&yymsp[-3].minor.yy0);} |
| 2552 | -#line 2577 "pikchr.c" | |
| 2563 | +#line 2588 "pikchr.c" | |
| 2553 | 2564 | break; |
| 2554 | 2565 | case 40: /* attribute ::= THEN optrelexpr EDGEPT */ |
| 2555 | 2566 | case 42: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==42); |
| 2556 | 2567 | #line 593 "pikchr.y" |
| 2557 | 2568 | {pik_move_hdg(p,&yymsp[-1].minor.yy164,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);} |
| 2558 | -#line 2583 "pikchr.c" | |
| 2569 | +#line 2594 "pikchr.c" | |
| 2559 | 2570 | break; |
| 2560 | 2571 | case 43: /* attribute ::= AT position */ |
| 2561 | 2572 | #line 598 "pikchr.y" |
| 2562 | 2573 | { pik_set_at(p,0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); } |
| 2563 | -#line 2588 "pikchr.c" | |
| 2574 | +#line 2599 "pikchr.c" | |
| 2564 | 2575 | break; |
| 2565 | 2576 | case 44: /* attribute ::= SAME */ |
| 2566 | 2577 | #line 600 "pikchr.y" |
| 2567 | 2578 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2568 | -#line 2593 "pikchr.c" | |
| 2579 | +#line 2604 "pikchr.c" | |
| 2569 | 2580 | break; |
| 2570 | 2581 | case 45: /* attribute ::= SAME AS object */ |
| 2571 | 2582 | #line 601 "pikchr.y" |
| 2572 | 2583 | {pik_same(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2573 | -#line 2598 "pikchr.c" | |
| 2584 | +#line 2609 "pikchr.c" | |
| 2574 | 2585 | break; |
| 2575 | 2586 | case 46: /* attribute ::= STRING textposition */ |
| 2576 | 2587 | #line 602 "pikchr.y" |
| 2577 | 2588 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy116);} |
| 2578 | -#line 2603 "pikchr.c" | |
| 2589 | +#line 2614 "pikchr.c" | |
| 2579 | 2590 | break; |
| 2580 | 2591 | case 47: /* attribute ::= FIT */ |
| 2581 | 2592 | #line 603 "pikchr.y" |
| 2582 | 2593 | {pik_size_to_fit(p,&yymsp[0].minor.yy0); } |
| 2583 | -#line 2608 "pikchr.c" | |
| 2594 | +#line 2619 "pikchr.c" | |
| 2584 | 2595 | break; |
| 2585 | 2596 | case 48: /* attribute ::= BEHIND object */ |
| 2586 | 2597 | #line 604 "pikchr.y" |
| 2587 | 2598 | {pik_behind(p,yymsp[0].minor.yy226);} |
| 2588 | -#line 2613 "pikchr.c" | |
| 2599 | +#line 2624 "pikchr.c" | |
| 2589 | 2600 | break; |
| 2590 | 2601 | case 49: /* withclause ::= DOT_E edge AT position */ |
| 2591 | 2602 | case 50: /* withclause ::= edge AT position */ yytestcase(yyruleno==50); |
| 2592 | 2603 | #line 612 "pikchr.y" |
| 2593 | 2604 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); } |
| 2594 | -#line 2619 "pikchr.c" | |
| 2605 | +#line 2630 "pikchr.c" | |
| 2595 | 2606 | break; |
| 2596 | 2607 | case 51: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2597 | 2608 | #line 616 "pikchr.y" |
| 2598 | 2609 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2599 | -#line 2624 "pikchr.c" | |
| 2610 | +#line 2635 "pikchr.c" | |
| 2600 | 2611 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2601 | 2612 | break; |
| 2602 | 2613 | case 52: /* boolproperty ::= CW */ |
| 2603 | 2614 | #line 627 "pikchr.y" |
| 2604 | 2615 | {p->cur->cw = 1;} |
| 2605 | -#line 2630 "pikchr.c" | |
| 2616 | +#line 2641 "pikchr.c" | |
| 2606 | 2617 | break; |
| 2607 | 2618 | case 53: /* boolproperty ::= CCW */ |
| 2608 | 2619 | #line 628 "pikchr.y" |
| 2609 | 2620 | {p->cur->cw = 0;} |
| 2610 | -#line 2635 "pikchr.c" | |
| 2621 | +#line 2646 "pikchr.c" | |
| 2611 | 2622 | break; |
| 2612 | 2623 | case 54: /* boolproperty ::= LARROW */ |
| 2613 | 2624 | #line 629 "pikchr.y" |
| 2614 | 2625 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2615 | -#line 2640 "pikchr.c" | |
| 2626 | +#line 2651 "pikchr.c" | |
| 2616 | 2627 | break; |
| 2617 | 2628 | case 55: /* boolproperty ::= RARROW */ |
| 2618 | 2629 | #line 630 "pikchr.y" |
| 2619 | 2630 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2620 | -#line 2645 "pikchr.c" | |
| 2631 | +#line 2656 "pikchr.c" | |
| 2621 | 2632 | break; |
| 2622 | 2633 | case 56: /* boolproperty ::= LRARROW */ |
| 2623 | 2634 | #line 631 "pikchr.y" |
| 2624 | 2635 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2625 | -#line 2650 "pikchr.c" | |
| 2636 | +#line 2661 "pikchr.c" | |
| 2626 | 2637 | break; |
| 2627 | 2638 | case 57: /* boolproperty ::= INVIS */ |
| 2628 | 2639 | #line 632 "pikchr.y" |
| 2629 | 2640 | {p->cur->sw = 0.0;} |
| 2630 | -#line 2655 "pikchr.c" | |
| 2641 | +#line 2666 "pikchr.c" | |
| 2631 | 2642 | break; |
| 2632 | 2643 | case 58: /* boolproperty ::= THICK */ |
| 2633 | 2644 | #line 633 "pikchr.y" |
| 2634 | 2645 | {p->cur->sw *= 1.5;} |
| 2635 | -#line 2660 "pikchr.c" | |
| 2646 | +#line 2671 "pikchr.c" | |
| 2636 | 2647 | break; |
| 2637 | 2648 | case 59: /* boolproperty ::= THIN */ |
| 2638 | 2649 | #line 634 "pikchr.y" |
| 2639 | 2650 | {p->cur->sw *= 0.67;} |
| 2640 | -#line 2665 "pikchr.c" | |
| 2651 | +#line 2676 "pikchr.c" | |
| 2641 | 2652 | break; |
| 2642 | 2653 | case 60: /* textposition ::= */ |
| 2643 | 2654 | #line 636 "pikchr.y" |
| 2644 | 2655 | {yymsp[1].minor.yy116 = 0;} |
| 2645 | -#line 2670 "pikchr.c" | |
| 2656 | +#line 2681 "pikchr.c" | |
| 2646 | 2657 | break; |
| 2647 | 2658 | case 61: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */ |
| 2648 | 2659 | #line 639 "pikchr.y" |
| 2649 | 2660 | {yylhsminor.yy116 = pik_text_position(yymsp[-1].minor.yy116,&yymsp[0].minor.yy0);} |
| 2650 | -#line 2675 "pikchr.c" | |
| 2661 | +#line 2686 "pikchr.c" | |
| 2651 | 2662 | yymsp[-1].minor.yy116 = yylhsminor.yy116; |
| 2652 | 2663 | break; |
| 2653 | 2664 | case 62: /* position ::= expr COMMA expr */ |
| 2654 | 2665 | #line 642 "pikchr.y" |
| 2655 | 2666 | {yylhsminor.yy175.x=yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[0].minor.yy257;} |
| 2656 | -#line 2681 "pikchr.c" | |
| 2667 | +#line 2692 "pikchr.c" | |
| 2657 | 2668 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2658 | 2669 | break; |
| 2659 | 2670 | case 63: /* position ::= place PLUS expr COMMA expr */ |
| 2660 | 2671 | #line 644 "pikchr.y" |
| 2661 | 2672 | {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x+yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y+yymsp[0].minor.yy257;} |
| 2662 | -#line 2687 "pikchr.c" | |
| 2673 | +#line 2698 "pikchr.c" | |
| 2663 | 2674 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2664 | 2675 | break; |
| 2665 | 2676 | case 64: /* position ::= place MINUS expr COMMA expr */ |
| 2666 | 2677 | #line 645 "pikchr.y" |
| 2667 | 2678 | {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x-yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y-yymsp[0].minor.yy257;} |
| 2668 | -#line 2693 "pikchr.c" | |
| 2679 | +#line 2704 "pikchr.c" | |
| 2669 | 2680 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2670 | 2681 | break; |
| 2671 | 2682 | case 65: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2672 | 2683 | #line 647 "pikchr.y" |
| 2673 | 2684 | {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x+yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y+yymsp[-1].minor.yy257;} |
| 2674 | -#line 2699 "pikchr.c" | |
| 2685 | +#line 2710 "pikchr.c" | |
| 2675 | 2686 | yymsp[-6].minor.yy175 = yylhsminor.yy175; |
| 2676 | 2687 | break; |
| 2677 | 2688 | case 66: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2678 | 2689 | #line 649 "pikchr.y" |
| 2679 | 2690 | {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x-yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y-yymsp[-1].minor.yy257;} |
| 2680 | -#line 2705 "pikchr.c" | |
| 2691 | +#line 2716 "pikchr.c" | |
| 2681 | 2692 | yymsp[-6].minor.yy175 = yylhsminor.yy175; |
| 2682 | 2693 | break; |
| 2683 | 2694 | case 67: /* position ::= LP position COMMA position RP */ |
| 2684 | 2695 | #line 650 "pikchr.y" |
| 2685 | 2696 | {yymsp[-4].minor.yy175.x=yymsp[-3].minor.yy175.x; yymsp[-4].minor.yy175.y=yymsp[-1].minor.yy175.y;} |
| 2686 | -#line 2711 "pikchr.c" | |
| 2697 | +#line 2722 "pikchr.c" | |
| 2687 | 2698 | break; |
| 2688 | 2699 | case 68: /* position ::= LP position RP */ |
| 2689 | 2700 | #line 651 "pikchr.y" |
| 2690 | 2701 | {yymsp[-2].minor.yy175=yymsp[-1].minor.yy175;} |
| 2691 | -#line 2716 "pikchr.c" | |
| 2702 | +#line 2727 "pikchr.c" | |
| 2692 | 2703 | break; |
| 2693 | 2704 | case 69: /* position ::= expr between position AND position */ |
| 2694 | 2705 | #line 653 "pikchr.y" |
| 2695 | 2706 | {yylhsminor.yy175 = pik_position_between(yymsp[-4].minor.yy257,yymsp[-2].minor.yy175,yymsp[0].minor.yy175);} |
| 2696 | -#line 2721 "pikchr.c" | |
| 2707 | +#line 2732 "pikchr.c" | |
| 2697 | 2708 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2698 | 2709 | break; |
| 2699 | 2710 | case 70: /* position ::= expr LT position COMMA position GT */ |
| 2700 | 2711 | #line 655 "pikchr.y" |
| 2701 | 2712 | {yylhsminor.yy175 = pik_position_between(yymsp[-5].minor.yy257,yymsp[-3].minor.yy175,yymsp[-1].minor.yy175);} |
| 2702 | -#line 2727 "pikchr.c" | |
| 2713 | +#line 2738 "pikchr.c" | |
| 2703 | 2714 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2704 | 2715 | break; |
| 2705 | 2716 | case 71: /* position ::= expr ABOVE position */ |
| 2706 | 2717 | #line 656 "pikchr.y" |
| 2707 | 2718 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y += yymsp[-2].minor.yy257;} |
| 2708 | -#line 2733 "pikchr.c" | |
| 2719 | +#line 2744 "pikchr.c" | |
| 2709 | 2720 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2710 | 2721 | break; |
| 2711 | 2722 | case 72: /* position ::= expr BELOW position */ |
| 2712 | 2723 | #line 657 "pikchr.y" |
| 2713 | 2724 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y -= yymsp[-2].minor.yy257;} |
| 2714 | -#line 2739 "pikchr.c" | |
| 2725 | +#line 2750 "pikchr.c" | |
| 2715 | 2726 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2716 | 2727 | break; |
| 2717 | 2728 | case 73: /* position ::= expr LEFT OF position */ |
| 2718 | 2729 | #line 658 "pikchr.y" |
| 2719 | 2730 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x -= yymsp[-3].minor.yy257;} |
| 2720 | -#line 2745 "pikchr.c" | |
| 2731 | +#line 2756 "pikchr.c" | |
| 2721 | 2732 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2722 | 2733 | break; |
| 2723 | 2734 | case 74: /* position ::= expr RIGHT OF position */ |
| 2724 | 2735 | #line 659 "pikchr.y" |
| 2725 | 2736 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x += yymsp[-3].minor.yy257;} |
| 2726 | -#line 2751 "pikchr.c" | |
| 2737 | +#line 2762 "pikchr.c" | |
| 2727 | 2738 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2728 | 2739 | break; |
| 2729 | 2740 | case 75: /* position ::= expr ON HEADING EDGEPT OF position */ |
| 2730 | 2741 | #line 661 "pikchr.y" |
| 2731 | 2742 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-5].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2732 | -#line 2757 "pikchr.c" | |
| 2743 | +#line 2768 "pikchr.c" | |
| 2733 | 2744 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2734 | 2745 | break; |
| 2735 | 2746 | case 76: /* position ::= expr HEADING EDGEPT OF position */ |
| 2736 | 2747 | #line 663 "pikchr.y" |
| 2737 | 2748 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-4].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2738 | -#line 2763 "pikchr.c" | |
| 2749 | +#line 2774 "pikchr.c" | |
| 2739 | 2750 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2740 | 2751 | break; |
| 2741 | 2752 | case 77: /* position ::= expr EDGEPT OF position */ |
| 2742 | 2753 | #line 665 "pikchr.y" |
| 2743 | 2754 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2744 | -#line 2769 "pikchr.c" | |
| 2755 | +#line 2780 "pikchr.c" | |
| 2745 | 2756 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2746 | 2757 | break; |
| 2747 | 2758 | case 78: /* position ::= expr ON HEADING expr FROM position */ |
| 2748 | 2759 | #line 667 "pikchr.y" |
| 2749 | 2760 | {yylhsminor.yy175 = pik_position_at_angle(yymsp[-5].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);} |
| 2750 | -#line 2775 "pikchr.c" | |
| 2761 | +#line 2786 "pikchr.c" | |
| 2751 | 2762 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2752 | 2763 | break; |
| 2753 | 2764 | case 79: /* position ::= expr HEADING expr FROM position */ |
| 2754 | 2765 | #line 669 "pikchr.y" |
| 2755 | 2766 | {yylhsminor.yy175 = pik_position_at_angle(yymsp[-4].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);} |
| 2756 | -#line 2781 "pikchr.c" | |
| 2767 | +#line 2792 "pikchr.c" | |
| 2757 | 2768 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2758 | 2769 | break; |
| 2759 | 2770 | case 80: /* place ::= edge OF object */ |
| 2760 | 2771 | #line 681 "pikchr.y" |
| 2761 | 2772 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2762 | -#line 2787 "pikchr.c" | |
| 2773 | +#line 2798 "pikchr.c" | |
| 2763 | 2774 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2764 | 2775 | break; |
| 2765 | 2776 | case 81: /* place2 ::= object */ |
| 2766 | 2777 | #line 682 "pikchr.y" |
| 2767 | 2778 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,0);} |
| 2768 | -#line 2793 "pikchr.c" | |
| 2779 | +#line 2804 "pikchr.c" | |
| 2769 | 2780 | yymsp[0].minor.yy175 = yylhsminor.yy175; |
| 2770 | 2781 | break; |
| 2771 | 2782 | case 82: /* place2 ::= object DOT_E edge */ |
| 2772 | 2783 | #line 683 "pikchr.y" |
| 2773 | 2784 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2774 | -#line 2799 "pikchr.c" | |
| 2785 | +#line 2810 "pikchr.c" | |
| 2775 | 2786 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2776 | 2787 | break; |
| 2777 | 2788 | case 83: /* place2 ::= NTH VERTEX OF object */ |
| 2778 | 2789 | #line 684 "pikchr.y" |
| 2779 | 2790 | {yylhsminor.yy175 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy226);} |
| 2780 | -#line 2805 "pikchr.c" | |
| 2791 | +#line 2816 "pikchr.c" | |
| 2781 | 2792 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2782 | 2793 | break; |
| 2783 | 2794 | case 84: /* object ::= nth */ |
| 2784 | 2795 | #line 696 "pikchr.y" |
| 2785 | 2796 | {yylhsminor.yy226 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2786 | -#line 2811 "pikchr.c" | |
| 2797 | +#line 2822 "pikchr.c" | |
| 2787 | 2798 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2788 | 2799 | break; |
| 2789 | 2800 | case 85: /* object ::= nth OF|IN object */ |
| 2790 | 2801 | #line 697 "pikchr.y" |
| 2791 | 2802 | {yylhsminor.yy226 = pik_find_nth(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2792 | -#line 2817 "pikchr.c" | |
| 2803 | +#line 2828 "pikchr.c" | |
| 2793 | 2804 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2794 | 2805 | break; |
| 2795 | 2806 | case 86: /* objectname ::= PLACENAME */ |
| 2796 | 2807 | #line 699 "pikchr.y" |
| 2797 | 2808 | {yylhsminor.yy226 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2798 | -#line 2823 "pikchr.c" | |
| 2809 | +#line 2834 "pikchr.c" | |
| 2799 | 2810 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2800 | 2811 | break; |
| 2801 | 2812 | case 87: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2802 | 2813 | #line 701 "pikchr.y" |
| 2803 | 2814 | {yylhsminor.yy226 = pik_find_byname(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2804 | -#line 2829 "pikchr.c" | |
| 2815 | +#line 2840 "pikchr.c" | |
| 2805 | 2816 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2806 | 2817 | break; |
| 2807 | 2818 | case 88: /* nth ::= NTH CLASSNAME */ |
| 2808 | 2819 | #line 703 "pikchr.y" |
| 2809 | 2820 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2810 | -#line 2835 "pikchr.c" | |
| 2821 | +#line 2846 "pikchr.c" | |
| 2811 | 2822 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2812 | 2823 | break; |
| 2813 | 2824 | case 89: /* nth ::= NTH LAST CLASSNAME */ |
| 2814 | 2825 | #line 704 "pikchr.y" |
| 2815 | 2826 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2816 | -#line 2841 "pikchr.c" | |
| 2827 | +#line 2852 "pikchr.c" | |
| 2817 | 2828 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2818 | 2829 | break; |
| 2819 | 2830 | case 90: /* nth ::= LAST CLASSNAME */ |
| 2820 | 2831 | #line 705 "pikchr.y" |
| 2821 | 2832 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2822 | -#line 2847 "pikchr.c" | |
| 2833 | +#line 2858 "pikchr.c" | |
| 2823 | 2834 | break; |
| 2824 | 2835 | case 91: /* nth ::= LAST */ |
| 2825 | 2836 | #line 706 "pikchr.y" |
| 2826 | 2837 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2827 | -#line 2852 "pikchr.c" | |
| 2838 | +#line 2863 "pikchr.c" | |
| 2828 | 2839 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2829 | 2840 | break; |
| 2830 | 2841 | case 92: /* nth ::= NTH LB RB */ |
| 2831 | 2842 | #line 707 "pikchr.y" |
| 2832 | 2843 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2833 | -#line 2858 "pikchr.c" | |
| 2844 | +#line 2869 "pikchr.c" | |
| 2834 | 2845 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2835 | 2846 | break; |
| 2836 | 2847 | case 93: /* nth ::= NTH LAST LB RB */ |
| 2837 | 2848 | #line 708 "pikchr.y" |
| 2838 | 2849 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2839 | -#line 2864 "pikchr.c" | |
| 2850 | +#line 2875 "pikchr.c" | |
| 2840 | 2851 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2841 | 2852 | break; |
| 2842 | 2853 | case 94: /* nth ::= LAST LB RB */ |
| 2843 | 2854 | #line 709 "pikchr.y" |
| 2844 | 2855 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2845 | -#line 2870 "pikchr.c" | |
| 2856 | +#line 2881 "pikchr.c" | |
| 2846 | 2857 | break; |
| 2847 | 2858 | case 95: /* expr ::= expr PLUS expr */ |
| 2848 | 2859 | #line 711 "pikchr.y" |
| 2849 | 2860 | {yylhsminor.yy257=yymsp[-2].minor.yy257+yymsp[0].minor.yy257;} |
| 2850 | -#line 2875 "pikchr.c" | |
| 2861 | +#line 2886 "pikchr.c" | |
| 2851 | 2862 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2852 | 2863 | break; |
| 2853 | 2864 | case 96: /* expr ::= expr MINUS expr */ |
| 2854 | 2865 | #line 712 "pikchr.y" |
| 2855 | 2866 | {yylhsminor.yy257=yymsp[-2].minor.yy257-yymsp[0].minor.yy257;} |
| 2856 | -#line 2881 "pikchr.c" | |
| 2867 | +#line 2892 "pikchr.c" | |
| 2857 | 2868 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2858 | 2869 | break; |
| 2859 | 2870 | case 97: /* expr ::= expr STAR expr */ |
| 2860 | 2871 | #line 713 "pikchr.y" |
| 2861 | 2872 | {yylhsminor.yy257=yymsp[-2].minor.yy257*yymsp[0].minor.yy257;} |
| 2862 | -#line 2887 "pikchr.c" | |
| 2873 | +#line 2898 "pikchr.c" | |
| 2863 | 2874 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2864 | 2875 | break; |
| 2865 | 2876 | case 98: /* expr ::= expr SLASH expr */ |
| 2866 | 2877 | #line 714 "pikchr.y" |
| 2867 | 2878 | { |
| 2868 | 2879 | if( yymsp[0].minor.yy257==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy257 = 0.0; } |
| 2869 | 2880 | else{ yylhsminor.yy257 = yymsp[-2].minor.yy257/yymsp[0].minor.yy257; } |
| 2870 | 2881 | } |
| 2871 | -#line 2896 "pikchr.c" | |
| 2882 | +#line 2907 "pikchr.c" | |
| 2872 | 2883 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2873 | 2884 | break; |
| 2874 | 2885 | case 99: /* expr ::= MINUS expr */ |
| 2875 | 2886 | #line 718 "pikchr.y" |
| 2876 | 2887 | {yymsp[-1].minor.yy257=-yymsp[0].minor.yy257;} |
| 2877 | -#line 2902 "pikchr.c" | |
| 2888 | +#line 2913 "pikchr.c" | |
| 2878 | 2889 | break; |
| 2879 | 2890 | case 100: /* expr ::= PLUS expr */ |
| 2880 | 2891 | #line 719 "pikchr.y" |
| 2881 | 2892 | {yymsp[-1].minor.yy257=yymsp[0].minor.yy257;} |
| 2882 | -#line 2907 "pikchr.c" | |
| 2893 | +#line 2918 "pikchr.c" | |
| 2883 | 2894 | break; |
| 2884 | 2895 | case 101: /* expr ::= LP expr RP */ |
| 2885 | 2896 | #line 720 "pikchr.y" |
| 2886 | 2897 | {yymsp[-2].minor.yy257=yymsp[-1].minor.yy257;} |
| 2887 | -#line 2912 "pikchr.c" | |
| 2888 | - break; | |
| 2889 | - case 102: /* expr ::= NUMBER */ | |
| 2890 | -#line 721 "pikchr.y" | |
| 2891 | -{yylhsminor.yy257=pik_atof(&yymsp[0].minor.yy0);} | |
| 2892 | -#line 2917 "pikchr.c" | |
| 2893 | - yymsp[0].minor.yy257 = yylhsminor.yy257; | |
| 2894 | - break; | |
| 2895 | - case 103: /* expr ::= ID */ | |
| 2896 | -#line 722 "pikchr.y" | |
| 2897 | -{yylhsminor.yy257=pik_get_var(p,&yymsp[0].minor.yy0);} | |
| 2898 | -#line 2923 "pikchr.c" | |
| 2899 | - yymsp[0].minor.yy257 = yylhsminor.yy257; | |
| 2900 | - break; | |
| 2901 | - case 104: /* expr ::= FUNC1 LP expr RP */ | |
| 2902 | -#line 723 "pikchr.y" | |
| 2903 | -{yylhsminor.yy257 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy257,0.0);} | |
| 2904 | -#line 2929 "pikchr.c" | |
| 2905 | - yymsp[-3].minor.yy257 = yylhsminor.yy257; | |
| 2906 | - break; | |
| 2907 | - case 105: /* expr ::= FUNC2 LP expr COMMA expr RP */ | |
| 2908 | -#line 724 "pikchr.y" | |
| 2909 | -{yylhsminor.yy257 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy257,yymsp[-1].minor.yy257);} | |
| 2910 | -#line 2935 "pikchr.c" | |
| 2898 | +#line 2923 "pikchr.c" | |
| 2899 | + break; | |
| 2900 | + case 102: /* expr ::= LP FILL|COLOR|THICKNESS RP */ | |
| 2901 | +#line 721 "pikchr.y" | |
| 2902 | +{yymsp[-2].minor.yy257=pik_get_var(p,&yymsp[-1].minor.yy0);} | |
| 2903 | +#line 2928 "pikchr.c" | |
| 2904 | + break; | |
| 2905 | + case 103: /* expr ::= NUMBER */ | |
| 2906 | +#line 722 "pikchr.y" | |
| 2907 | +{yylhsminor.yy257=pik_atof(&yymsp[0].minor.yy0);} | |
| 2908 | +#line 2933 "pikchr.c" | |
| 2909 | + yymsp[0].minor.yy257 = yylhsminor.yy257; | |
| 2910 | + break; | |
| 2911 | + case 104: /* expr ::= ID */ | |
| 2912 | +#line 723 "pikchr.y" | |
| 2913 | +{yylhsminor.yy257=pik_get_var(p,&yymsp[0].minor.yy0);} | |
| 2914 | +#line 2939 "pikchr.c" | |
| 2915 | + yymsp[0].minor.yy257 = yylhsminor.yy257; | |
| 2916 | + break; | |
| 2917 | + case 105: /* expr ::= FUNC1 LP expr RP */ | |
| 2918 | +#line 724 "pikchr.y" | |
| 2919 | +{yylhsminor.yy257 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy257,0.0);} | |
| 2920 | +#line 2945 "pikchr.c" | |
| 2921 | + yymsp[-3].minor.yy257 = yylhsminor.yy257; | |
| 2922 | + break; | |
| 2923 | + case 106: /* expr ::= FUNC2 LP expr COMMA expr RP */ | |
| 2924 | +#line 725 "pikchr.y" | |
| 2925 | +{yylhsminor.yy257 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy257,yymsp[-1].minor.yy257);} | |
| 2926 | +#line 2951 "pikchr.c" | |
| 2911 | 2927 | yymsp[-5].minor.yy257 = yylhsminor.yy257; |
| 2912 | 2928 | break; |
| 2913 | - case 106: /* expr ::= DIST LP position COMMA position RP */ | |
| 2914 | -#line 725 "pikchr.y" | |
| 2915 | -{yymsp[-5].minor.yy257 = pik_dist(&yymsp[-3].minor.yy175,&yymsp[-1].minor.yy175);} | |
| 2916 | -#line 2941 "pikchr.c" | |
| 2917 | - break; | |
| 2918 | - case 107: /* expr ::= place2 DOT_XY X */ | |
| 2919 | -#line 726 "pikchr.y" | |
| 2920 | -{yylhsminor.yy257 = yymsp[-2].minor.yy175.x;} | |
| 2921 | -#line 2946 "pikchr.c" | |
| 2922 | - yymsp[-2].minor.yy257 = yylhsminor.yy257; | |
| 2923 | - break; | |
| 2924 | - case 108: /* expr ::= place2 DOT_XY Y */ | |
| 2925 | -#line 727 "pikchr.y" | |
| 2926 | -{yylhsminor.yy257 = yymsp[-2].minor.yy175.y;} | |
| 2927 | -#line 2952 "pikchr.c" | |
| 2928 | - yymsp[-2].minor.yy257 = yylhsminor.yy257; | |
| 2929 | - break; | |
| 2930 | - case 109: /* expr ::= object DOT_L numproperty */ | |
| 2931 | - case 110: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==110); | |
| 2932 | - case 111: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==111); | |
| 2933 | -#line 728 "pikchr.y" | |
| 2934 | -{yylhsminor.yy257=pik_property_of(yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} | |
| 2935 | -#line 2960 "pikchr.c" | |
| 2929 | + case 107: /* expr ::= DIST LP position COMMA position RP */ | |
| 2930 | +#line 726 "pikchr.y" | |
| 2931 | +{yymsp[-5].minor.yy257 = pik_dist(&yymsp[-3].minor.yy175,&yymsp[-1].minor.yy175);} | |
| 2932 | +#line 2957 "pikchr.c" | |
| 2933 | + break; | |
| 2934 | + case 108: /* expr ::= place2 DOT_XY X */ | |
| 2935 | +#line 727 "pikchr.y" | |
| 2936 | +{yylhsminor.yy257 = yymsp[-2].minor.yy175.x;} | |
| 2937 | +#line 2962 "pikchr.c" | |
| 2938 | + yymsp[-2].minor.yy257 = yylhsminor.yy257; | |
| 2939 | + break; | |
| 2940 | + case 109: /* expr ::= place2 DOT_XY Y */ | |
| 2941 | +#line 728 "pikchr.y" | |
| 2942 | +{yylhsminor.yy257 = yymsp[-2].minor.yy175.y;} | |
| 2943 | +#line 2968 "pikchr.c" | |
| 2944 | + yymsp[-2].minor.yy257 = yylhsminor.yy257; | |
| 2945 | + break; | |
| 2946 | + case 110: /* expr ::= object DOT_L numproperty */ | |
| 2947 | + case 111: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==111); | |
| 2948 | + case 112: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==112); | |
| 2949 | +#line 729 "pikchr.y" | |
| 2950 | +{yylhsminor.yy257=pik_property_of(yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} | |
| 2951 | +#line 2976 "pikchr.c" | |
| 2936 | 2952 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2937 | 2953 | break; |
| 2938 | 2954 | default: |
| 2939 | - /* (112) lvalue ::= ID */ yytestcase(yyruleno==112); | |
| 2940 | - /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113); | |
| 2941 | - /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114); | |
| 2942 | - /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115); | |
| 2943 | - /* (116) rvalue ::= expr */ yytestcase(yyruleno==116); | |
| 2944 | - /* (117) print ::= PRINT */ yytestcase(yyruleno==117); | |
| 2945 | - /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118); | |
| 2946 | - /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119); | |
| 2947 | - /* (120) direction ::= UP */ yytestcase(yyruleno==120); | |
| 2948 | - /* (121) direction ::= DOWN */ yytestcase(yyruleno==121); | |
| 2949 | - /* (122) direction ::= LEFT */ yytestcase(yyruleno==122); | |
| 2950 | - /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123); | |
| 2951 | - /* (124) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=124); | |
| 2952 | - /* (125) attribute_list ::= alist */ yytestcase(yyruleno==125); | |
| 2953 | - /* (126) alist ::= */ yytestcase(yyruleno==126); | |
| 2954 | - /* (127) alist ::= alist attribute */ yytestcase(yyruleno==127); | |
| 2955 | - /* (128) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=128); | |
| 2956 | - /* (129) attribute ::= WITH withclause */ yytestcase(yyruleno==129); | |
| 2957 | - /* (130) go ::= GO */ yytestcase(yyruleno==130); | |
| 2958 | - /* (131) go ::= */ yytestcase(yyruleno==131); | |
| 2959 | - /* (132) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==132); | |
| 2960 | - /* (133) even ::= EVEN WITH */ yytestcase(yyruleno==133); | |
| 2961 | - /* (134) dashproperty ::= DOTTED */ yytestcase(yyruleno==134); | |
| 2962 | - /* (135) dashproperty ::= DASHED */ yytestcase(yyruleno==135); | |
| 2963 | - /* (136) colorproperty ::= FILL */ yytestcase(yyruleno==136); | |
| 2964 | - /* (137) colorproperty ::= COLOR */ yytestcase(yyruleno==137); | |
| 2965 | - /* (138) position ::= place */ yytestcase(yyruleno==138); | |
| 2966 | - /* (139) between ::= WAY BETWEEN */ yytestcase(yyruleno==139); | |
| 2967 | - /* (140) between ::= BETWEEN */ yytestcase(yyruleno==140); | |
| 2968 | - /* (141) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==141); | |
| 2969 | - /* (142) place ::= place2 */ yytestcase(yyruleno==142); | |
| 2970 | - /* (143) edge ::= CENTER */ yytestcase(yyruleno==143); | |
| 2971 | - /* (144) edge ::= EDGEPT */ yytestcase(yyruleno==144); | |
| 2972 | - /* (145) edge ::= TOP */ yytestcase(yyruleno==145); | |
| 2973 | - /* (146) edge ::= BOTTOM */ yytestcase(yyruleno==146); | |
| 2974 | - /* (147) edge ::= START */ yytestcase(yyruleno==147); | |
| 2975 | - /* (148) edge ::= END */ yytestcase(yyruleno==148); | |
| 2976 | - /* (149) edge ::= RIGHT */ yytestcase(yyruleno==149); | |
| 2977 | - /* (150) edge ::= LEFT */ yytestcase(yyruleno==150); | |
| 2978 | - /* (151) object ::= objectname */ yytestcase(yyruleno==151); | |
| 2955 | + /* (113) lvalue ::= ID */ yytestcase(yyruleno==113); | |
| 2956 | + /* (114) lvalue ::= FILL */ yytestcase(yyruleno==114); | |
| 2957 | + /* (115) lvalue ::= COLOR */ yytestcase(yyruleno==115); | |
| 2958 | + /* (116) lvalue ::= THICKNESS */ yytestcase(yyruleno==116); | |
| 2959 | + /* (117) rvalue ::= expr */ yytestcase(yyruleno==117); | |
| 2960 | + /* (118) print ::= PRINT */ yytestcase(yyruleno==118); | |
| 2961 | + /* (119) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=119); | |
| 2962 | + /* (120) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==120); | |
| 2963 | + /* (121) direction ::= UP */ yytestcase(yyruleno==121); | |
| 2964 | + /* (122) direction ::= DOWN */ yytestcase(yyruleno==122); | |
| 2965 | + /* (123) direction ::= LEFT */ yytestcase(yyruleno==123); | |
| 2966 | + /* (124) direction ::= RIGHT */ yytestcase(yyruleno==124); | |
| 2967 | + /* (125) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=125); | |
| 2968 | + /* (126) attribute_list ::= alist */ yytestcase(yyruleno==126); | |
| 2969 | + /* (127) alist ::= */ yytestcase(yyruleno==127); | |
| 2970 | + /* (128) alist ::= alist attribute */ yytestcase(yyruleno==128); | |
| 2971 | + /* (129) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=129); | |
| 2972 | + /* (130) attribute ::= WITH withclause */ yytestcase(yyruleno==130); | |
| 2973 | + /* (131) go ::= GO */ yytestcase(yyruleno==131); | |
| 2974 | + /* (132) go ::= */ yytestcase(yyruleno==132); | |
| 2975 | + /* (133) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==133); | |
| 2976 | + /* (134) even ::= EVEN WITH */ yytestcase(yyruleno==134); | |
| 2977 | + /* (135) dashproperty ::= DOTTED */ yytestcase(yyruleno==135); | |
| 2978 | + /* (136) dashproperty ::= DASHED */ yytestcase(yyruleno==136); | |
| 2979 | + /* (137) colorproperty ::= FILL */ yytestcase(yyruleno==137); | |
| 2980 | + /* (138) colorproperty ::= COLOR */ yytestcase(yyruleno==138); | |
| 2981 | + /* (139) position ::= place */ yytestcase(yyruleno==139); | |
| 2982 | + /* (140) between ::= WAY BETWEEN */ yytestcase(yyruleno==140); | |
| 2983 | + /* (141) between ::= BETWEEN */ yytestcase(yyruleno==141); | |
| 2984 | + /* (142) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==142); | |
| 2985 | + /* (143) place ::= place2 */ yytestcase(yyruleno==143); | |
| 2986 | + /* (144) edge ::= CENTER */ yytestcase(yyruleno==144); | |
| 2987 | + /* (145) edge ::= EDGEPT */ yytestcase(yyruleno==145); | |
| 2988 | + /* (146) edge ::= TOP */ yytestcase(yyruleno==146); | |
| 2989 | + /* (147) edge ::= BOTTOM */ yytestcase(yyruleno==147); | |
| 2990 | + /* (148) edge ::= START */ yytestcase(yyruleno==148); | |
| 2991 | + /* (149) edge ::= END */ yytestcase(yyruleno==149); | |
| 2992 | + /* (150) edge ::= RIGHT */ yytestcase(yyruleno==150); | |
| 2993 | + /* (151) edge ::= LEFT */ yytestcase(yyruleno==151); | |
| 2994 | + /* (152) object ::= objectname */ yytestcase(yyruleno==152); | |
| 2979 | 2995 | break; |
| 2980 | 2996 | /********** End reduce actions ************************************************/ |
| 2981 | 2997 | }; |
| 2982 | 2998 | assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) ); |
| 2983 | 2999 | yygoto = yyRuleInfoLhs[yyruleno]; |
| @@ -3041,11 +3057,11 @@ | ||
| 3041 | 3057 | pik_error(p, &TOKEN, "syntax error"); |
| 3042 | 3058 | }else{ |
| 3043 | 3059 | pik_error(p, 0, "syntax error"); |
| 3044 | 3060 | } |
| 3045 | 3061 | UNUSED_PARAMETER(yymajor); |
| 3046 | -#line 3071 "pikchr.c" | |
| 3062 | +#line 3087 "pikchr.c" | |
| 3047 | 3063 | /************ End %syntax_error code ******************************************/ |
| 3048 | 3064 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 3049 | 3065 | pik_parserCTX_STORE |
| 3050 | 3066 | } |
| 3051 | 3067 | |
| @@ -3274,11 +3290,11 @@ | ||
| 3274 | 3290 | #else |
| 3275 | 3291 | (void)iToken; |
| 3276 | 3292 | return 0; |
| 3277 | 3293 | #endif |
| 3278 | 3294 | } |
| 3279 | -#line 733 "pikchr.y" | |
| 3295 | +#line 734 "pikchr.y" | |
| 3280 | 3296 | |
| 3281 | 3297 | |
| 3282 | 3298 | |
| 3283 | 3299 | /* Chart of the 140 official HTML color names with their |
| 3284 | 3300 | ** corresponding RGB value. |
| @@ -4845,11 +4861,11 @@ | ||
| 4845 | 4861 | } |
| 4846 | 4862 | |
| 4847 | 4863 | /* |
| 4848 | 4864 | ** Process an "assert( place1 == place2 )" statement. Always return NULL. |
| 4849 | 4865 | */ |
| 4850 | -static PElem *pik_place_assert(Pik *p, PPoint *e1, PToken *pEq, PPoint *e2){ | |
| 4866 | +static PElem *pik_position_assert(Pik *p, PPoint *e1, PToken *pEq, PPoint *e2){ | |
| 4851 | 4867 | char zE1[100], zE2[100], zMsg[210]; |
| 4852 | 4868 | |
| 4853 | 4869 | /* Convert the numbers to strings using %g for comparison. This |
| 4854 | 4870 | ** limits the precision of the comparison to account for rounding error. */ |
| 4855 | 4871 | snprintf(zE1, sizeof(zE1), "(%g,%g)", e1->x, e1->y); zE1[sizeof(zE1)-1] = 0; |
| @@ -6369,11 +6385,15 @@ | ||
| 6369 | 6385 | |
| 6370 | 6386 | pElem->ptEnter = pElem->aPath[0]; |
| 6371 | 6387 | pElem->ptExit = pElem->aPath[pElem->nPath-1]; |
| 6372 | 6388 | |
| 6373 | 6389 | /* Compute the center of the line based on the bounding box over |
| 6374 | - ** the vertexes */ | |
| 6390 | + ** the vertexes. This is a difference from PIC. In Pikchr, the | |
| 6391 | + ** center of a line is the center of its bounding box. In PIC, the | |
| 6392 | + ** center of a line is halfway between its .start and .end. For | |
| 6393 | + ** straight lines, this is the same point, but for multi-segment | |
| 6394 | + ** lines the result is usually diferent */ | |
| 6375 | 6395 | for(i=0; i<pElem->nPath; i++){ |
| 6376 | 6396 | pik_bbox_add_xy(&pElem->bbox, pElem->aPath[i].x, pElem->aPath[i].y); |
| 6377 | 6397 | } |
| 6378 | 6398 | pElem->ptAt.x = (pElem->bbox.ne.x + pElem->bbox.sw.x)/2.0; |
| 6379 | 6399 | pElem->ptAt.y = (pElem->bbox.ne.y + pElem->bbox.sw.y)/2.0; |
| @@ -6384,15 +6404,13 @@ | ||
| 6384 | 6404 | pElem->h = pElem->bbox.ne.y - pElem->bbox.sw.y; |
| 6385 | 6405 | |
| 6386 | 6406 | /* If this is a polygon (if it has the "close" attribute), then |
| 6387 | 6407 | ** adjust the exit point */ |
| 6388 | 6408 | if( pElem->bClose ){ |
| 6389 | - /* "closed" lines work like block objects */ | |
| 6409 | + /* For "closed" lines, the .end is one of the .e, .s, .w, or .n | |
| 6410 | + ** points of the bounding box, as with block objects. */ | |
| 6390 | 6411 | pik_elem_set_exit(pElem, pElem->inDir); |
| 6391 | - }else{ | |
| 6392 | - /* For an open line, the "center" is half way between | |
| 6393 | - ** the .start and the .end */ | |
| 6394 | 6412 | } |
| 6395 | 6413 | }else{ |
| 6396 | 6414 | PNum w2 = pElem->w/2.0; |
| 6397 | 6415 | PNum h2 = pElem->h/2.0; |
| 6398 | 6416 | pElem->ptEnter = pElem->ptAt; |
| @@ -6535,11 +6553,10 @@ | ||
| 6535 | 6553 | static void pik_render(Pik *p, PEList *pEList){ |
| 6536 | 6554 | if( pEList==0 ) return; |
| 6537 | 6555 | if( p->nErr==0 ){ |
| 6538 | 6556 | PNum thickness; /* Stroke width */ |
| 6539 | 6557 | PNum margin; /* Extra bounding box margin */ |
| 6540 | - PNum leftmargin; /* Extra bounding box area on the left */ | |
| 6541 | 6558 | PNum w, h; /* Drawing width and height */ |
| 6542 | 6559 | PNum wArrow; |
| 6543 | 6560 | PNum pikScale; /* Value of the "scale" variable */ |
| 6544 | 6561 | |
| 6545 | 6562 | /* Set up rendering parameters */ |
| @@ -6546,24 +6563,23 @@ | ||
| 6546 | 6563 | pik_compute_layout_settings(p); |
| 6547 | 6564 | thickness = pik_value(p,"thickness",9,0); |
| 6548 | 6565 | if( thickness<=0.01 ) thickness = 0.01; |
| 6549 | 6566 | margin = pik_value(p,"margin",6,0); |
| 6550 | 6567 | margin += thickness; |
| 6551 | - leftmargin = pik_value(p,"leftmargin",10,0); | |
| 6552 | 6568 | wArrow = p->wArrow*thickness; |
| 6553 | 6569 | |
| 6554 | 6570 | /* Compute a bounding box over all objects so that we can know |
| 6555 | 6571 | ** how big to declare the SVG canvas */ |
| 6556 | 6572 | pik_bbox_init(&p->bbox); |
| 6557 | 6573 | pik_bbox_add_elist(p, pEList, wArrow); |
| 6558 | 6574 | |
| 6559 | 6575 | /* Expand the bounding box slightly to account for line thickness |
| 6560 | 6576 | ** and the optional "margin = EXPR" setting. */ |
| 6561 | - p->bbox.ne.x += margin; | |
| 6562 | - p->bbox.ne.y += margin; | |
| 6563 | - p->bbox.sw.x -= margin + leftmargin; | |
| 6564 | - p->bbox.sw.y -= margin; | |
| 6577 | + p->bbox.ne.x += margin + pik_value(p,"rightmargin",11,0); | |
| 6578 | + p->bbox.ne.y += margin + pik_value(p,"topmargin",9,0); | |
| 6579 | + p->bbox.sw.x -= margin + pik_value(p,"leftmargin",10,0); | |
| 6580 | + p->bbox.sw.y -= margin + pik_value(p,"bottommargin",12,0); | |
| 6565 | 6581 | |
| 6566 | 6582 | /* Output the SVG */ |
| 6567 | 6583 | pik_append(p, "<svg",4); |
| 6568 | 6584 | if( p->zClass ){ |
| 6569 | 6585 | pik_append(p, " class=\"", -1); |
| @@ -7131,10 +7147,11 @@ | ||
| 7131 | 7147 | static void usage(const char *argv0){ |
| 7132 | 7148 | fprintf(stderr, "usage: %s [OPTIONS] FILE ...\n", argv0); |
| 7133 | 7149 | fprintf(stderr, |
| 7134 | 7150 | "Convert Pikchr input files into SVG.\n" |
| 7135 | 7151 | "Options:\n" |
| 7152 | + " --dont-stop Process all files even if earlier files have errors\n" | |
| 7136 | 7153 | " --svg-only Omit raw SVG without the HTML wrapper\n" |
| 7137 | 7154 | ); |
| 7138 | 7155 | exit(1); |
| 7139 | 7156 | } |
| 7140 | 7157 | |
| @@ -7166,10 +7183,11 @@ | ||
| 7166 | 7183 | ** line. |
| 7167 | 7184 | */ |
| 7168 | 7185 | int main(int argc, char **argv){ |
| 7169 | 7186 | int i; |
| 7170 | 7187 | int bSvgOnly = 0; /* Output SVG only. No HTML wrapper */ |
| 7188 | + int bDontStop = 0; /* Continue in spite of errors */ | |
| 7171 | 7189 | const char *zHtmlHdr = |
| 7172 | 7190 | "<!DOCTYPE html>\n" |
| 7173 | 7191 | "<html lang=\"en-US\">\n" |
| 7174 | 7192 | "<head>\n<title>PIKCHR Test</title>\n" |
| 7175 | 7193 | "<style>\n" |
| @@ -7201,10 +7219,13 @@ | ||
| 7201 | 7219 | |
| 7202 | 7220 | if( argv[i][0]=='-' ){ |
| 7203 | 7221 | char *z = argv[i]; |
| 7204 | 7222 | z++; |
| 7205 | 7223 | if( z[0]=='-' ) z++; |
| 7224 | + if( strcmp(z,"dont-stop")==0 ){ | |
| 7225 | + bDontStop = 1; | |
| 7226 | + }else | |
| 7206 | 7227 | if( strcmp(z,"svg-only")==0 ){ |
| 7207 | 7228 | if( zHtmlHdr==0 ){ |
| 7208 | 7229 | fprintf(stderr, "the \"%s\" option must come first\n",argv[i]); |
| 7209 | 7230 | exit(1); |
| 7210 | 7231 | } |
| @@ -7234,13 +7255,12 @@ | ||
| 7234 | 7255 | fclose(in); |
| 7235 | 7256 | zIn[sz] = 0; |
| 7236 | 7257 | zOut = pikchr(zIn, "pikchr", 0, &w, &h); |
| 7237 | 7258 | if( zOut==0 ){ |
| 7238 | 7259 | fprintf(stderr, "pikchr() returns NULL. Out of memory?\n"); |
| 7239 | - exit(1); | |
| 7240 | - } | |
| 7241 | - if( bSvgOnly ){ | |
| 7260 | + if( !bDontStop ) exit(1); | |
| 7261 | + }else if( bSvgOnly ){ | |
| 7242 | 7262 | printf("%s\n", zOut); |
| 7243 | 7263 | }else{ |
| 7244 | 7264 | if( zHtmlHdr ){ |
| 7245 | 7265 | printf("%s", zHtmlHdr); |
| 7246 | 7266 | zHtmlHdr = 0; |
| @@ -7265,6 +7285,6 @@ | ||
| 7265 | 7285 | } |
| 7266 | 7286 | return 0; |
| 7267 | 7287 | } |
| 7268 | 7288 | #endif /* PIKCHR_SHELL */ |
| 7269 | 7289 | |
| 7270 | -#line 7295 "pikchr.c" | |
| 7290 | +#line 7315 "pikchr.c" | |
| 7271 | 7291 |
| --- src/pikchr.c | |
| +++ src/pikchr.c | |
| @@ -443,11 +443,11 @@ | |
| 443 | static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem); |
| 444 | static PToken pik_next_semantic_token(PToken *pThis); |
| 445 | static void pik_compute_layout_settings(Pik*); |
| 446 | static void pik_behind(Pik*,PElem*); |
| 447 | static PElem *pik_assert(Pik*,PNum,PToken*,PNum); |
| 448 | static PElem *pik_place_assert(Pik*,PPoint*,PToken*,PPoint*); |
| 449 | static PNum pik_dist(PPoint*,PPoint*); |
| 450 | |
| 451 | |
| 452 | #line 478 "pikchr.c" |
| 453 | /**************** End of %include directives **********************************/ |
| @@ -633,21 +633,21 @@ | |
| 633 | #define pik_parserCTX_PARAM ,p |
| 634 | #define pik_parserCTX_FETCH Pik *p=yypParser->p; |
| 635 | #define pik_parserCTX_STORE yypParser->p=p; |
| 636 | #define YYFALLBACK 1 |
| 637 | #define YYNSTATE 162 |
| 638 | #define YYNRULE 152 |
| 639 | #define YYNRULE_WITH_ACTION 112 |
| 640 | #define YYNTOKEN 95 |
| 641 | #define YY_MAX_SHIFT 161 |
| 642 | #define YY_MIN_SHIFTREDUCE 282 |
| 643 | #define YY_MAX_SHIFTREDUCE 433 |
| 644 | #define YY_ERROR_ACTION 434 |
| 645 | #define YY_ACCEPT_ACTION 435 |
| 646 | #define YY_NO_ACTION 436 |
| 647 | #define YY_MIN_REDUCE 437 |
| 648 | #define YY_MAX_REDUCE 588 |
| 649 | /************* End control #defines *******************************************/ |
| 650 | #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) |
| 651 | |
| 652 | /* Define the yytestcase() macro to be a no-op if is not already defined |
| 653 | ** otherwise. |
| @@ -710,321 +710,328 @@ | |
| 710 | ** yy_reduce_ofst[] For each state, the offset into yy_action for |
| 711 | ** shifting non-terminals after a reduce. |
| 712 | ** yy_default[] Default action for each state. |
| 713 | ** |
| 714 | *********** Begin parsing tables **********************************************/ |
| 715 | #define YY_ACTTAB_COUNT (1206) |
| 716 | static const YYACTIONTYPE yy_action[] = { |
| 717 | /* 0 */ 562, 437, 23, 443, 27, 73, 128, 147, 53, 49, |
| 718 | /* 10 */ 562, 35, 444, 113, 120, 159, 119, 127, 418, 419, |
| 719 | /* 20 */ 333, 546, 80, 519, 547, 548, 562, 64, 63, 62, |
| 720 | /* 30 */ 61, 316, 317, 6, 5, 32, 148, 31, 4, 71, |
| 721 | /* 40 */ 126, 26, 329, 66, 566, 300, 48, 333, 333, 333, |
| 722 | /* 50 */ 333, 416, 417, 334, 335, 336, 337, 338, 339, 340, |
| 723 | /* 60 */ 341, 464, 64, 63, 62, 61, 121, 438, 445, 27, |
| 724 | /* 70 */ 35, 464, 69, 441, 29, 292, 485, 159, 119, 418, |
| 725 | /* 80 */ 419, 333, 30, 80, 161, 350, 304, 464, 435, 25, |
| 726 | /* 90 */ 324, 10, 316, 317, 6, 5, 32, 82, 31, 4, |
| 727 | /* 100 */ 71, 126, 83, 329, 66, 482, 159, 119, 333, 333, |
| 728 | /* 110 */ 333, 333, 416, 417, 334, 335, 336, 337, 338, 339, |
| 729 | /* 120 */ 340, 341, 385, 426, 43, 59, 60, 34, 64, 63, |
| 730 | /* 130 */ 62, 61, 75, 368, 372, 155, 22, 75, 385, 426, |
| 731 | /* 140 */ 42, 59, 60, 79, 38, 302, 78, 45, 37, 368, |
| 732 | /* 150 */ 432, 431, 22, 69, 343, 343, 343, 343, 343, 343, |
| 733 | /* 160 */ 343, 343, 343, 343, 368, 293, 432, 431, 394, 564, |
| 734 | /* 170 */ 76, 564, 64, 63, 62, 61, 307, 389, 390, 132, |
| 735 | /* 180 */ 65, 125, 425, 62, 61, 395, 396, 397, 399, 79, |
| 736 | /* 190 */ 36, 302, 78, 28, 402, 403, 404, 405, 425, 106, |
| 737 | /* 200 */ 67, 427, 428, 429, 430, 415, 322, 117, 384, 154, |
| 738 | /* 210 */ 153, 152, 517, 159, 119, 106, 130, 427, 428, 429, |
| 739 | /* 220 */ 430, 371, 157, 117, 384, 154, 153, 152, 385, 426, |
| 740 | /* 230 */ 108, 59, 60, 64, 63, 62, 61, 2, 117, 368, |
| 741 | /* 240 */ 44, 147, 58, 3, 89, 426, 383, 123, 122, 159, |
| 742 | /* 250 */ 119, 414, 46, 120, 159, 119, 432, 431, 1, 141, |
| 743 | /* 260 */ 139, 64, 63, 62, 61, 385, 463, 388, 59, 60, |
| 744 | /* 270 */ 123, 8, 432, 431, 383, 151, 368, 9, 423, 58, |
| 745 | /* 280 */ 54, 107, 402, 403, 404, 405, 146, 145, 425, 74, |
| 746 | /* 290 */ 120, 159, 119, 40, 453, 64, 63, 62, 61, 349, |
| 747 | /* 300 */ 463, 77, 77, 137, 425, 106, 421, 427, 428, 429, |
| 748 | /* 310 */ 430, 138, 151, 117, 384, 154, 153, 152, 522, 159, |
| 749 | /* 320 */ 119, 19, 18, 427, 428, 429, 430, 114, 11, 21, |
| 750 | /* 330 */ 13, 144, 140, 422, 141, 139, 64, 63, 62, 61, |
| 751 | /* 340 */ 15, 41, 106, 64, 63, 62, 61, 16, 370, 156, |
| 752 | /* 350 */ 117, 384, 154, 153, 152, 54, 418, 419, 333, 17, |
| 753 | /* 360 */ 107, 146, 145, 385, 370, 156, 59, 60, 40, 120, |
| 754 | /* 370 */ 159, 119, 12, 468, 102, 68, 352, 58, 20, 24, |
| 755 | /* 380 */ 295, 296, 297, 56, 299, 333, 333, 333, 333, 416, |
| 756 | /* 390 */ 417, 151, 64, 63, 62, 61, 19, 18, 385, 523, |
| 757 | /* 400 */ 57, 59, 60, 160, 21, 383, 144, 140, 422, 368, |
| 758 | /* 410 */ 118, 50, 58, 376, 385, 142, 374, 59, 60, 385, |
| 759 | /* 420 */ 143, 375, 59, 60, 369, 368, 118, 158, 58, 70, |
| 760 | /* 430 */ 368, 39, 385, 58, 436, 59, 60, 436, 523, 436, |
| 761 | /* 440 */ 106, 131, 129, 368, 523, 436, 58, 523, 117, 384, |
| 762 | /* 450 */ 154, 153, 152, 426, 64, 63, 62, 61, 64, 63, |
| 763 | /* 460 */ 62, 61, 87, 368, 147, 385, 436, 348, 59, 60, |
| 764 | /* 470 */ 124, 120, 159, 119, 436, 106, 102, 52, 436, 58, |
| 765 | /* 480 */ 432, 431, 436, 117, 384, 154, 153, 152, 436, 436, |
| 766 | /* 490 */ 436, 106, 436, 148, 436, 436, 106, 436, 436, 117, |
| 767 | /* 500 */ 384, 154, 153, 152, 117, 384, 154, 153, 152, 106, |
| 768 | /* 510 */ 436, 385, 425, 436, 59, 60, 436, 117, 384, 154, |
| 769 | /* 520 */ 153, 152, 368, 436, 385, 47, 436, 59, 60, 106, |
| 770 | /* 530 */ 436, 427, 428, 429, 430, 368, 436, 117, 51, 439, |
| 771 | /* 540 */ 445, 27, 106, 436, 436, 441, 436, 436, 88, 436, |
| 772 | /* 550 */ 117, 384, 154, 153, 152, 436, 161, 120, 159, 119, |
| 773 | /* 560 */ 436, 25, 436, 7, 469, 469, 520, 159, 119, 109, |
| 774 | /* 570 */ 438, 445, 27, 436, 436, 73, 441, 147, 436, 151, |
| 775 | /* 580 */ 436, 436, 487, 113, 120, 159, 119, 161, 106, 436, |
| 776 | /* 590 */ 436, 436, 25, 436, 436, 436, 117, 384, 154, 153, |
| 777 | /* 600 */ 152, 106, 64, 63, 62, 61, 148, 436, 90, 117, |
| 778 | /* 610 */ 384, 154, 153, 152, 73, 436, 147, 120, 159, 119, |
| 779 | /* 620 */ 436, 486, 113, 120, 159, 119, 436, 73, 436, 147, |
| 780 | /* 630 */ 436, 14, 436, 436, 480, 113, 120, 159, 119, 151, |
| 781 | /* 640 */ 436, 436, 73, 436, 147, 148, 436, 436, 436, 474, |
| 782 | /* 650 */ 113, 120, 159, 119, 73, 436, 147, 107, 148, 436, |
| 783 | /* 660 */ 436, 473, 113, 120, 159, 119, 120, 159, 119, 436, |
| 784 | /* 670 */ 453, 436, 436, 148, 436, 436, 436, 436, 556, 436, |
| 785 | /* 680 */ 436, 436, 73, 436, 147, 148, 436, 436, 151, 470, |
| 786 | /* 690 */ 113, 120, 159, 119, 436, 436, 73, 436, 147, 436, |
| 787 | /* 700 */ 436, 436, 436, 133, 113, 120, 159, 119, 436, 73, |
| 788 | /* 710 */ 436, 147, 436, 148, 436, 436, 506, 113, 120, 159, |
| 789 | /* 720 */ 119, 73, 436, 147, 436, 436, 436, 148, 136, 113, |
| 790 | /* 730 */ 120, 159, 119, 436, 73, 436, 147, 436, 436, 436, |
| 791 | /* 740 */ 148, 514, 113, 120, 159, 119, 436, 436, 436, 73, |
| 792 | /* 750 */ 436, 147, 148, 436, 436, 436, 516, 113, 120, 159, |
| 793 | /* 760 */ 119, 73, 436, 147, 107, 148, 436, 436, 513, 113, |
| 794 | /* 770 */ 120, 159, 119, 120, 159, 119, 436, 442, 436, 436, |
| 795 | /* 780 */ 148, 436, 64, 63, 62, 61, 436, 436, 436, 73, |
| 796 | /* 790 */ 436, 147, 148, 436, 436, 151, 515, 113, 120, 159, |
| 797 | /* 800 */ 119, 55, 436, 73, 436, 147, 64, 63, 62, 61, |
| 798 | /* 810 */ 512, 113, 120, 159, 119, 436, 73, 436, 147, 386, |
| 799 | /* 820 */ 148, 436, 436, 511, 113, 120, 159, 119, 73, 436, |
| 800 | /* 830 */ 147, 436, 436, 436, 148, 510, 113, 120, 159, 119, |
| 801 | /* 840 */ 436, 73, 436, 147, 436, 436, 436, 148, 509, 113, |
| 802 | /* 850 */ 120, 159, 119, 436, 436, 436, 73, 436, 147, 148, |
| 803 | /* 860 */ 436, 436, 436, 508, 113, 120, 159, 119, 73, 436, |
| 804 | /* 870 */ 147, 86, 148, 436, 436, 149, 113, 120, 159, 119, |
| 805 | /* 880 */ 120, 159, 119, 436, 436, 436, 436, 148, 436, 436, |
| 806 | /* 890 */ 436, 436, 436, 436, 436, 436, 73, 436, 147, 148, |
| 807 | /* 900 */ 436, 426, 151, 150, 113, 120, 159, 119, 436, 436, |
| 808 | /* 910 */ 72, 436, 147, 436, 436, 436, 436, 112, 113, 120, |
| 809 | /* 920 */ 159, 119, 436, 73, 436, 147, 436, 148, 432, 431, |
| 810 | /* 930 */ 135, 113, 120, 159, 119, 73, 436, 147, 436, 88, |
| 811 | /* 940 */ 436, 148, 134, 113, 120, 159, 119, 436, 120, 159, |
| 812 | /* 950 */ 119, 436, 436, 436, 148, 81, 436, 436, 88, 436, |
| 813 | /* 960 */ 425, 436, 456, 436, 33, 436, 148, 120, 159, 119, |
| 814 | /* 970 */ 151, 436, 436, 436, 110, 110, 88, 436, 436, 427, |
| 815 | /* 980 */ 428, 429, 430, 436, 436, 120, 159, 119, 436, 151, |
| 816 | /* 990 */ 436, 436, 111, 111, 436, 436, 436, 436, 436, 88, |
| 817 | /* 1000 */ 436, 436, 99, 436, 436, 436, 436, 151, 120, 159, |
| 818 | /* 1010 */ 119, 120, 159, 119, 436, 465, 436, 100, 64, 63, |
| 819 | /* 1020 */ 62, 61, 436, 436, 436, 101, 120, 159, 119, 91, |
| 820 | /* 1030 */ 151, 347, 84, 151, 120, 159, 119, 436, 120, 159, |
| 821 | /* 1040 */ 119, 120, 159, 119, 103, 436, 436, 436, 151, 436, |
| 822 | /* 1050 */ 436, 436, 436, 120, 159, 119, 151, 436, 92, 436, |
| 823 | /* 1060 */ 151, 436, 93, 151, 436, 436, 436, 120, 159, 119, |
| 824 | /* 1070 */ 85, 120, 159, 119, 104, 151, 436, 436, 436, 120, |
| 825 | /* 1080 */ 159, 119, 436, 120, 159, 119, 94, 436, 436, 151, |
| 826 | /* 1090 */ 436, 436, 436, 151, 436, 120, 159, 119, 436, 105, |
| 827 | /* 1100 */ 436, 151, 95, 436, 436, 151, 436, 436, 120, 159, |
| 828 | /* 1110 */ 119, 120, 159, 119, 436, 96, 436, 151, 64, 63, |
| 829 | /* 1120 */ 62, 61, 436, 436, 120, 159, 119, 97, 436, 436, |
| 830 | /* 1130 */ 151, 387, 98, 151, 436, 436, 120, 159, 119, 537, |
| 831 | /* 1140 */ 436, 120, 159, 119, 536, 436, 151, 436, 120, 159, |
| 832 | /* 1150 */ 119, 436, 436, 120, 159, 119, 535, 436, 151, 436, |
| 833 | /* 1160 */ 436, 436, 534, 151, 436, 120, 159, 119, 115, 436, |
| 834 | /* 1170 */ 151, 120, 159, 119, 116, 151, 436, 120, 159, 119, |
| 835 | /* 1180 */ 436, 436, 436, 120, 159, 119, 436, 151, 64, 63, |
| 836 | /* 1190 */ 62, 61, 436, 151, 436, 436, 436, 436, 436, 151, |
| 837 | /* 1200 */ 436, 383, 436, 436, 436, 151, |
| 838 | }; |
| 839 | static const YYCODETYPE yy_lookahead[] = { |
| 840 | /* 0 */ 0, 0, 129, 97, 98, 99, 101, 101, 4, 5, |
| 841 | /* 10 */ 10, 10, 106, 107, 108, 109, 110, 101, 18, 19, |
| 842 | /* 20 */ 20, 100, 22, 101, 103, 104, 26, 4, 5, 6, |
| 843 | /* 30 */ 7, 31, 32, 33, 34, 35, 130, 37, 38, 39, |
| 844 | /* 40 */ 40, 102, 42, 43, 128, 23, 23, 47, 48, 49, |
| 845 | /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, |
| 846 | /* 60 */ 60, 0, 4, 5, 6, 7, 95, 96, 97, 98, |
| 847 | /* 70 */ 10, 10, 3, 102, 121, 17, 108, 109, 110, 18, |
| 848 | /* 80 */ 19, 20, 123, 22, 113, 17, 26, 26, 117, 118, |
| 849 | /* 90 */ 2, 23, 31, 32, 33, 34, 35, 111, 37, 38, |
| 850 | /* 100 */ 39, 40, 111, 42, 43, 108, 109, 110, 47, 48, |
| 851 | /* 110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, |
| 852 | /* 120 */ 59, 60, 1, 2, 36, 4, 5, 124, 4, 5, |
| 853 | /* 130 */ 6, 7, 46, 12, 24, 25, 15, 46, 1, 2, |
| 854 | /* 140 */ 16, 4, 5, 22, 100, 24, 25, 103, 104, 12, |
| 855 | /* 150 */ 29, 30, 15, 84, 61, 62, 63, 64, 65, 66, |
| 856 | /* 160 */ 67, 68, 69, 70, 12, 17, 29, 30, 1, 125, |
| 857 | /* 170 */ 126, 127, 4, 5, 6, 7, 8, 92, 93, 12, |
| 858 | /* 180 */ 94, 14, 61, 6, 7, 18, 19, 20, 21, 22, |
| 859 | /* 190 */ 16, 24, 25, 15, 27, 28, 29, 30, 61, 78, |
| 860 | /* 200 */ 41, 80, 81, 82, 83, 39, 2, 86, 87, 88, |
| 861 | /* 210 */ 89, 90, 108, 109, 110, 78, 45, 80, 81, 82, |
| 862 | /* 220 */ 83, 24, 25, 86, 87, 88, 89, 90, 1, 2, |
| 863 | /* 230 */ 78, 4, 5, 4, 5, 6, 7, 38, 86, 12, |
| 864 | /* 240 */ 36, 101, 15, 38, 99, 2, 17, 107, 108, 109, |
| 865 | /* 250 */ 110, 39, 23, 108, 109, 110, 29, 30, 13, 2, |
| 866 | /* 260 */ 3, 4, 5, 6, 7, 1, 2, 17, 4, 5, |
| 867 | /* 270 */ 130, 23, 29, 30, 17, 130, 12, 71, 76, 15, |
| 868 | /* 280 */ 23, 99, 27, 28, 29, 30, 29, 30, 61, 46, |
| 869 | /* 290 */ 108, 109, 110, 36, 112, 4, 5, 6, 7, 17, |
| 870 | /* 300 */ 36, 119, 120, 75, 61, 78, 76, 80, 81, 82, |
| 871 | /* 310 */ 83, 77, 130, 86, 87, 88, 89, 90, 108, 109, |
| 872 | /* 320 */ 110, 64, 65, 80, 81, 82, 83, 91, 3, 72, |
| 873 | /* 330 */ 3, 74, 75, 76, 2, 3, 4, 5, 6, 7, |
| 874 | /* 340 */ 3, 36, 78, 4, 5, 6, 7, 3, 24, 25, |
| 875 | /* 350 */ 86, 87, 88, 89, 90, 23, 18, 19, 20, 3, |
| 876 | /* 360 */ 99, 29, 30, 1, 24, 25, 4, 5, 36, 108, |
| 877 | /* 370 */ 109, 110, 33, 112, 12, 3, 73, 15, 23, 15, |
| 878 | /* 380 */ 18, 19, 20, 15, 22, 47, 48, 49, 50, 51, |
| 879 | /* 390 */ 52, 130, 4, 5, 6, 7, 64, 65, 1, 46, |
| 880 | /* 400 */ 15, 4, 5, 79, 72, 17, 74, 75, 76, 12, |
| 881 | /* 410 */ 86, 23, 15, 26, 1, 2, 26, 4, 5, 1, |
| 882 | /* 420 */ 2, 26, 4, 5, 12, 12, 86, 85, 15, 3, |
| 883 | /* 430 */ 12, 11, 1, 15, 131, 4, 5, 131, 85, 131, |
| 884 | /* 440 */ 78, 44, 45, 12, 91, 131, 15, 94, 86, 87, |
| 885 | /* 450 */ 88, 89, 90, 2, 4, 5, 6, 7, 4, 5, |
| 886 | /* 460 */ 6, 7, 99, 12, 101, 1, 131, 17, 4, 5, |
| 887 | /* 470 */ 107, 108, 109, 110, 131, 78, 12, 23, 131, 15, |
| 888 | /* 480 */ 29, 30, 131, 86, 87, 88, 89, 90, 131, 131, |
| 889 | /* 490 */ 131, 78, 131, 130, 131, 131, 78, 131, 131, 86, |
| 890 | /* 500 */ 87, 88, 89, 90, 86, 87, 88, 89, 90, 78, |
| 891 | /* 510 */ 131, 1, 61, 131, 4, 5, 131, 86, 87, 88, |
| 892 | /* 520 */ 89, 90, 12, 131, 1, 15, 131, 4, 5, 78, |
| 893 | /* 530 */ 131, 80, 81, 82, 83, 12, 131, 86, 15, 96, |
| 894 | /* 540 */ 97, 98, 78, 131, 131, 102, 131, 131, 99, 131, |
| 895 | /* 550 */ 86, 87, 88, 89, 90, 131, 113, 108, 109, 110, |
| 896 | /* 560 */ 131, 118, 131, 114, 115, 116, 108, 109, 110, 95, |
| 897 | /* 570 */ 96, 97, 98, 131, 131, 99, 102, 101, 131, 130, |
| 898 | /* 580 */ 131, 131, 106, 107, 108, 109, 110, 113, 78, 131, |
| 899 | /* 590 */ 131, 131, 118, 131, 131, 131, 86, 87, 88, 89, |
| 900 | /* 600 */ 90, 78, 4, 5, 6, 7, 130, 131, 99, 86, |
| 901 | /* 610 */ 87, 88, 89, 90, 99, 131, 101, 108, 109, 110, |
| 902 | /* 620 */ 131, 106, 107, 108, 109, 110, 131, 99, 131, 101, |
| 903 | /* 630 */ 131, 33, 131, 131, 106, 107, 108, 109, 110, 130, |
| 904 | /* 640 */ 131, 131, 99, 131, 101, 130, 131, 131, 131, 106, |
| 905 | /* 650 */ 107, 108, 109, 110, 99, 131, 101, 99, 130, 131, |
| 906 | /* 660 */ 131, 106, 107, 108, 109, 110, 108, 109, 110, 131, |
| 907 | /* 670 */ 112, 131, 131, 130, 131, 131, 131, 131, 120, 131, |
| 908 | /* 680 */ 131, 131, 99, 131, 101, 130, 131, 131, 130, 106, |
| 909 | /* 690 */ 107, 108, 109, 110, 131, 131, 99, 131, 101, 131, |
| 910 | /* 700 */ 131, 131, 131, 106, 107, 108, 109, 110, 131, 99, |
| 911 | /* 710 */ 131, 101, 131, 130, 131, 131, 106, 107, 108, 109, |
| 912 | /* 720 */ 110, 99, 131, 101, 131, 131, 131, 130, 106, 107, |
| 913 | /* 730 */ 108, 109, 110, 131, 99, 131, 101, 131, 131, 131, |
| 914 | /* 740 */ 130, 106, 107, 108, 109, 110, 131, 131, 131, 99, |
| 915 | /* 750 */ 131, 101, 130, 131, 131, 131, 106, 107, 108, 109, |
| 916 | /* 760 */ 110, 99, 131, 101, 99, 130, 131, 131, 106, 107, |
| 917 | /* 770 */ 108, 109, 110, 108, 109, 110, 131, 112, 131, 131, |
| 918 | /* 780 */ 130, 131, 4, 5, 6, 7, 131, 131, 131, 99, |
| 919 | /* 790 */ 131, 101, 130, 131, 131, 130, 106, 107, 108, 109, |
| 920 | /* 800 */ 110, 23, 131, 99, 131, 101, 4, 5, 6, 7, |
| 921 | /* 810 */ 106, 107, 108, 109, 110, 131, 99, 131, 101, 17, |
| 922 | /* 820 */ 130, 131, 131, 106, 107, 108, 109, 110, 99, 131, |
| 923 | /* 830 */ 101, 131, 131, 131, 130, 106, 107, 108, 109, 110, |
| 924 | /* 840 */ 131, 99, 131, 101, 131, 131, 131, 130, 106, 107, |
| 925 | /* 850 */ 108, 109, 110, 131, 131, 131, 99, 131, 101, 130, |
| 926 | /* 860 */ 131, 131, 131, 106, 107, 108, 109, 110, 99, 131, |
| 927 | /* 870 */ 101, 99, 130, 131, 131, 106, 107, 108, 109, 110, |
| 928 | /* 880 */ 108, 109, 110, 131, 131, 131, 131, 130, 131, 131, |
| 929 | /* 890 */ 131, 131, 131, 131, 131, 131, 99, 131, 101, 130, |
| 930 | /* 900 */ 131, 2, 130, 106, 107, 108, 109, 110, 131, 131, |
| 931 | /* 910 */ 99, 131, 101, 131, 131, 131, 131, 106, 107, 108, |
| 932 | /* 920 */ 109, 110, 131, 99, 131, 101, 131, 130, 29, 30, |
| 933 | /* 930 */ 106, 107, 108, 109, 110, 99, 131, 101, 131, 99, |
| 934 | /* 940 */ 131, 130, 106, 107, 108, 109, 110, 131, 108, 109, |
| 935 | /* 950 */ 110, 131, 131, 131, 130, 115, 131, 131, 99, 131, |
| 936 | /* 960 */ 61, 131, 122, 131, 124, 131, 130, 108, 109, 110, |
| 937 | /* 970 */ 130, 131, 131, 131, 115, 116, 99, 131, 131, 80, |
| 938 | /* 980 */ 81, 82, 83, 131, 131, 108, 109, 110, 131, 130, |
| 939 | /* 990 */ 131, 131, 115, 116, 131, 131, 131, 131, 131, 99, |
| 940 | /* 1000 */ 131, 131, 99, 131, 131, 131, 131, 130, 108, 109, |
| 941 | /* 1010 */ 110, 108, 109, 110, 131, 115, 131, 99, 4, 5, |
| 942 | /* 1020 */ 6, 7, 131, 131, 131, 99, 108, 109, 110, 99, |
| 943 | /* 1030 */ 130, 17, 99, 130, 108, 109, 110, 131, 108, 109, |
| 944 | /* 1040 */ 110, 108, 109, 110, 99, 131, 131, 131, 130, 131, |
| 945 | /* 1050 */ 131, 131, 131, 108, 109, 110, 130, 131, 99, 131, |
| 946 | /* 1060 */ 130, 131, 99, 130, 131, 131, 131, 108, 109, 110, |
| 947 | /* 1070 */ 99, 108, 109, 110, 99, 130, 131, 131, 131, 108, |
| 948 | /* 1080 */ 109, 110, 131, 108, 109, 110, 99, 131, 131, 130, |
| 949 | /* 1090 */ 131, 131, 131, 130, 131, 108, 109, 110, 131, 99, |
| 950 | /* 1100 */ 131, 130, 99, 131, 131, 130, 131, 131, 108, 109, |
| 951 | /* 1110 */ 110, 108, 109, 110, 131, 99, 131, 130, 4, 5, |
| 952 | /* 1120 */ 6, 7, 131, 131, 108, 109, 110, 99, 131, 131, |
| 953 | /* 1130 */ 130, 17, 99, 130, 131, 131, 108, 109, 110, 99, |
| 954 | /* 1140 */ 131, 108, 109, 110, 99, 131, 130, 131, 108, 109, |
| 955 | /* 1150 */ 110, 131, 131, 108, 109, 110, 99, 131, 130, 131, |
| 956 | /* 1160 */ 131, 131, 99, 130, 131, 108, 109, 110, 99, 131, |
| 957 | /* 1170 */ 130, 108, 109, 110, 99, 130, 131, 108, 109, 110, |
| 958 | /* 1180 */ 131, 131, 131, 108, 109, 110, 131, 130, 4, 5, |
| 959 | /* 1190 */ 6, 7, 131, 130, 131, 131, 131, 131, 131, 130, |
| 960 | /* 1200 */ 131, 17, 131, 131, 131, 130, 131, 131, 131, 131, |
| 961 | /* 1210 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 962 | /* 1220 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 963 | /* 1230 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 964 | /* 1240 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 965 | /* 1250 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 966 | /* 1260 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 967 | /* 1270 */ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, |
| 968 | /* 1280 */ 131, 131, 131, 131, 95, 95, 95, 95, 95, 95, |
| 969 | /* 1290 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 970 | /* 1300 */ 95, |
| 971 | }; |
| 972 | #define YY_SHIFT_COUNT (161) |
| 973 | #define YY_SHIFT_MIN (0) |
| 974 | #define YY_SHIFT_MAX (1184) |
| 975 | static const unsigned short int yy_shift_ofst[] = { |
| 976 | /* 0 */ 167, 121, 137, 137, 137, 137, 137, 137, 137, 137, |
| 977 | /* 10 */ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, |
| 978 | /* 20 */ 137, 137, 137, 137, 137, 362, 397, 431, 227, 362, |
| 979 | /* 30 */ 167, 264, 264, 0, 61, 167, 451, 464, 431, 464, |
| 980 | /* 40 */ 413, 418, 431, 431, 431, 431, 431, 431, 431, 510, |
| 981 | /* 50 */ 431, 431, 431, 523, 431, 431, 431, 431, 431, 431, |
| 982 | /* 60 */ 431, 431, 431, 431, 431, 338, 152, 152, 152, 152, |
| 983 | /* 70 */ 152, 243, 257, 332, 899, 899, 255, 22, 1206, 1206, |
| 984 | /* 80 */ 1206, 1206, 93, 93, 229, 388, 58, 124, 168, 339, |
| 985 | /* 90 */ 598, 450, 23, 1014, 454, 1114, 778, 802, 1184, 291, |
| 986 | /* 100 */ 291, 291, 353, 291, 291, 291, 324, 291, 340, 60, |
| 987 | /* 110 */ 88, 204, 68, 4, 85, 177, 177, 110, 197, 69, |
| 988 | /* 120 */ 86, 1, 91, 148, 174, 178, 159, 199, 205, 166, |
| 989 | /* 130 */ 212, 171, 245, 250, 248, 206, 282, 202, 228, 234, |
| 990 | /* 140 */ 230, 325, 327, 337, 305, 344, 356, 372, 236, 303, |
| 991 | /* 150 */ 355, 236, 364, 368, 385, 387, 390, 395, 412, 342, |
| 992 | /* 160 */ 426, 420, |
| 993 | }; |
| 994 | #define YY_REDUCE_COUNT (81) |
| 995 | #define YY_REDUCE_MIN (-127) |
| 996 | #define YY_REDUCE_MAX (1075) |
| 997 | static const short yy_reduce_ofst[] = { |
| 998 | /* 0 */ -29, -94, 476, 515, 528, 543, 555, 583, 597, 610, |
| 999 | /* 10 */ 622, 635, 650, 662, 690, 704, 717, 729, 742, 757, |
| 1000 | /* 20 */ 769, 797, 811, 824, 836, 182, 449, 840, 363, 558, |
| 1001 | /* 30 */ 474, 859, 877, 44, 44, 443, 140, 261, 900, 665, |
| 1002 | /* 40 */ 145, 509, 772, 903, 918, 926, 930, 933, 945, 959, |
| 1003 | /* 50 */ 963, 971, 975, 987, 1000, 1003, 1016, 1028, 1033, 1040, |
| 1004 | /* 60 */ 1045, 1057, 1063, 1069, 1075, -79, -32, -3, 104, 210, |
| 1005 | /* 70 */ 458, -84, -127, -127, -95, -78, -61, -47, -41, -14, |
| 1006 | /* 80 */ -9, 3, |
| 1007 | }; |
| 1008 | static const YYACTIONTYPE yy_default[] = { |
| 1009 | /* 0 */ 440, 434, 434, 434, 434, 434, 434, 434, 434, 434, |
| 1010 | /* 10 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, |
| 1011 | /* 20 */ 434, 434, 434, 434, 434, 434, 463, 563, 434, 434, |
| 1012 | /* 30 */ 440, 567, 475, 568, 568, 440, 434, 434, 434, 434, |
| 1013 | /* 40 */ 434, 434, 434, 434, 434, 467, 434, 434, 434, 434, |
| 1014 | /* 50 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, |
| 1015 | /* 60 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, |
| 1016 | /* 70 */ 434, 434, 434, 434, 434, 434, 434, 446, 460, 497, |
| 1017 | /* 80 */ 497, 563, 458, 483, 434, 434, 434, 434, 461, 434, |
| 1018 | /* 90 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 478, |
| 1019 | /* 100 */ 476, 466, 449, 501, 500, 499, 434, 553, 434, 434, |
| 1020 | /* 110 */ 434, 434, 434, 575, 434, 533, 532, 528, 434, 521, |
| 1021 | /* 120 */ 518, 434, 518, 434, 434, 434, 481, 434, 434, 434, |
| 1022 | /* 130 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, |
| 1023 | /* 140 */ 434, 434, 434, 434, 434, 434, 434, 434, 579, 434, |
| 1024 | /* 150 */ 434, 434, 434, 434, 434, 434, 434, 434, 434, 588, |
| 1025 | /* 160 */ 434, 434, |
| 1026 | }; |
| 1027 | /********** End of lemon-generated parsing tables *****************************/ |
| 1028 | |
| 1029 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 1030 | ** If a construct like the following: |
| @@ -1372,11 +1379,11 @@ | |
| 1372 | /* 6 */ "element ::= PLACENAME COLON unnamed_element", |
| 1373 | /* 7 */ "element ::= PLACENAME COLON position", |
| 1374 | /* 8 */ "element ::= unnamed_element", |
| 1375 | /* 9 */ "element ::= print prlist", |
| 1376 | /* 10 */ "element ::= ASSERT LP expr EQ expr RP", |
| 1377 | /* 11 */ "element ::= ASSERT LP place EQ place RP", |
| 1378 | /* 12 */ "rvalue ::= PLACENAME", |
| 1379 | /* 13 */ "pritem ::= FILL", |
| 1380 | /* 14 */ "pritem ::= COLOR", |
| 1381 | /* 15 */ "pritem ::= THICKNESS", |
| 1382 | /* 16 */ "pritem ::= rvalue", |
| @@ -1463,60 +1470,61 @@ | |
| 1463 | /* 97 */ "expr ::= expr STAR expr", |
| 1464 | /* 98 */ "expr ::= expr SLASH expr", |
| 1465 | /* 99 */ "expr ::= MINUS expr", |
| 1466 | /* 100 */ "expr ::= PLUS expr", |
| 1467 | /* 101 */ "expr ::= LP expr RP", |
| 1468 | /* 102 */ "expr ::= NUMBER", |
| 1469 | /* 103 */ "expr ::= ID", |
| 1470 | /* 104 */ "expr ::= FUNC1 LP expr RP", |
| 1471 | /* 105 */ "expr ::= FUNC2 LP expr COMMA expr RP", |
| 1472 | /* 106 */ "expr ::= DIST LP position COMMA position RP", |
| 1473 | /* 107 */ "expr ::= place2 DOT_XY X", |
| 1474 | /* 108 */ "expr ::= place2 DOT_XY Y", |
| 1475 | /* 109 */ "expr ::= object DOT_L numproperty", |
| 1476 | /* 110 */ "expr ::= object DOT_L dashproperty", |
| 1477 | /* 111 */ "expr ::= object DOT_L colorproperty", |
| 1478 | /* 112 */ "lvalue ::= ID", |
| 1479 | /* 113 */ "lvalue ::= FILL", |
| 1480 | /* 114 */ "lvalue ::= COLOR", |
| 1481 | /* 115 */ "lvalue ::= THICKNESS", |
| 1482 | /* 116 */ "rvalue ::= expr", |
| 1483 | /* 117 */ "print ::= PRINT", |
| 1484 | /* 118 */ "prlist ::= pritem", |
| 1485 | /* 119 */ "prlist ::= prlist prsep pritem", |
| 1486 | /* 120 */ "direction ::= UP", |
| 1487 | /* 121 */ "direction ::= DOWN", |
| 1488 | /* 122 */ "direction ::= LEFT", |
| 1489 | /* 123 */ "direction ::= RIGHT", |
| 1490 | /* 124 */ "optrelexpr ::= relexpr", |
| 1491 | /* 125 */ "attribute_list ::= alist", |
| 1492 | /* 126 */ "alist ::=", |
| 1493 | /* 127 */ "alist ::= alist attribute", |
| 1494 | /* 128 */ "attribute ::= boolproperty", |
| 1495 | /* 129 */ "attribute ::= WITH withclause", |
| 1496 | /* 130 */ "go ::= GO", |
| 1497 | /* 131 */ "go ::=", |
| 1498 | /* 132 */ "even ::= UNTIL EVEN WITH", |
| 1499 | /* 133 */ "even ::= EVEN WITH", |
| 1500 | /* 134 */ "dashproperty ::= DOTTED", |
| 1501 | /* 135 */ "dashproperty ::= DASHED", |
| 1502 | /* 136 */ "colorproperty ::= FILL", |
| 1503 | /* 137 */ "colorproperty ::= COLOR", |
| 1504 | /* 138 */ "position ::= place", |
| 1505 | /* 139 */ "between ::= WAY BETWEEN", |
| 1506 | /* 140 */ "between ::= BETWEEN", |
| 1507 | /* 141 */ "between ::= OF THE WAY BETWEEN", |
| 1508 | /* 142 */ "place ::= place2", |
| 1509 | /* 143 */ "edge ::= CENTER", |
| 1510 | /* 144 */ "edge ::= EDGEPT", |
| 1511 | /* 145 */ "edge ::= TOP", |
| 1512 | /* 146 */ "edge ::= BOTTOM", |
| 1513 | /* 147 */ "edge ::= START", |
| 1514 | /* 148 */ "edge ::= END", |
| 1515 | /* 149 */ "edge ::= RIGHT", |
| 1516 | /* 150 */ "edge ::= LEFT", |
| 1517 | /* 151 */ "object ::= objectname", |
| 1518 | }; |
| 1519 | #endif /* NDEBUG */ |
| 1520 | |
| 1521 | |
| 1522 | #if YYSTACKDEPTH<=0 |
| @@ -1642,20 +1650,20 @@ | |
| 1642 | /********* Begin destructor definitions ***************************************/ |
| 1643 | case 95: /* element_list */ |
| 1644 | { |
| 1645 | #line 467 "pikchr.y" |
| 1646 | pik_elist_free(p,(yypminor->yy56)); |
| 1647 | #line 1672 "pikchr.c" |
| 1648 | } |
| 1649 | break; |
| 1650 | case 96: /* element */ |
| 1651 | case 97: /* unnamed_element */ |
| 1652 | case 98: /* basetype */ |
| 1653 | { |
| 1654 | #line 469 "pikchr.y" |
| 1655 | pik_elem_free(p,(yypminor->yy226)); |
| 1656 | #line 1681 "pikchr.c" |
| 1657 | } |
| 1658 | break; |
| 1659 | /********* End destructor definitions *****************************************/ |
| 1660 | default: break; /* If no destructor action specified: do nothing */ |
| 1661 | } |
| @@ -1872,11 +1880,11 @@ | |
| 1872 | ** stack every overflows */ |
| 1873 | /******** Begin %stack_overflow code ******************************************/ |
| 1874 | #line 501 "pikchr.y" |
| 1875 | |
| 1876 | pik_error(p, 0, "parser stack overflow"); |
| 1877 | #line 1902 "pikchr.c" |
| 1878 | /******** End %stack_overflow code ********************************************/ |
| 1879 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 1880 | pik_parserCTX_STORE |
| 1881 | } |
| 1882 | |
| @@ -1955,11 +1963,11 @@ | |
| 1955 | 96, /* (6) element ::= PLACENAME COLON unnamed_element */ |
| 1956 | 96, /* (7) element ::= PLACENAME COLON position */ |
| 1957 | 96, /* (8) element ::= unnamed_element */ |
| 1958 | 96, /* (9) element ::= print prlist */ |
| 1959 | 96, /* (10) element ::= ASSERT LP expr EQ expr RP */ |
| 1960 | 96, /* (11) element ::= ASSERT LP place EQ place RP */ |
| 1961 | 112, /* (12) rvalue ::= PLACENAME */ |
| 1962 | 120, /* (13) pritem ::= FILL */ |
| 1963 | 120, /* (14) pritem ::= COLOR */ |
| 1964 | 120, /* (15) pritem ::= THICKNESS */ |
| 1965 | 120, /* (16) pritem ::= rvalue */ |
| @@ -2046,60 +2054,61 @@ | |
| 2046 | 99, /* (97) expr ::= expr STAR expr */ |
| 2047 | 99, /* (98) expr ::= expr SLASH expr */ |
| 2048 | 99, /* (99) expr ::= MINUS expr */ |
| 2049 | 99, /* (100) expr ::= PLUS expr */ |
| 2050 | 99, /* (101) expr ::= LP expr RP */ |
| 2051 | 99, /* (102) expr ::= NUMBER */ |
| 2052 | 99, /* (103) expr ::= ID */ |
| 2053 | 99, /* (104) expr ::= FUNC1 LP expr RP */ |
| 2054 | 99, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2055 | 99, /* (106) expr ::= DIST LP position COMMA position RP */ |
| 2056 | 99, /* (107) expr ::= place2 DOT_XY X */ |
| 2057 | 99, /* (108) expr ::= place2 DOT_XY Y */ |
| 2058 | 99, /* (109) expr ::= object DOT_L numproperty */ |
| 2059 | 99, /* (110) expr ::= object DOT_L dashproperty */ |
| 2060 | 99, /* (111) expr ::= object DOT_L colorproperty */ |
| 2061 | 113, /* (112) lvalue ::= ID */ |
| 2062 | 113, /* (113) lvalue ::= FILL */ |
| 2063 | 113, /* (114) lvalue ::= COLOR */ |
| 2064 | 113, /* (115) lvalue ::= THICKNESS */ |
| 2065 | 112, /* (116) rvalue ::= expr */ |
| 2066 | 118, /* (117) print ::= PRINT */ |
| 2067 | 119, /* (118) prlist ::= pritem */ |
| 2068 | 119, /* (119) prlist ::= prlist prsep pritem */ |
| 2069 | 102, /* (120) direction ::= UP */ |
| 2070 | 102, /* (121) direction ::= DOWN */ |
| 2071 | 102, /* (122) direction ::= LEFT */ |
| 2072 | 102, /* (123) direction ::= RIGHT */ |
| 2073 | 116, /* (124) optrelexpr ::= relexpr */ |
| 2074 | 122, /* (125) attribute_list ::= alist */ |
| 2075 | 124, /* (126) alist ::= */ |
| 2076 | 124, /* (127) alist ::= alist attribute */ |
| 2077 | 125, /* (128) attribute ::= boolproperty */ |
| 2078 | 125, /* (129) attribute ::= WITH withclause */ |
| 2079 | 126, /* (130) go ::= GO */ |
| 2080 | 126, /* (131) go ::= */ |
| 2081 | 114, /* (132) even ::= UNTIL EVEN WITH */ |
| 2082 | 114, /* (133) even ::= EVEN WITH */ |
| 2083 | 103, /* (134) dashproperty ::= DOTTED */ |
| 2084 | 103, /* (135) dashproperty ::= DASHED */ |
| 2085 | 104, /* (136) colorproperty ::= FILL */ |
| 2086 | 104, /* (137) colorproperty ::= COLOR */ |
| 2087 | 106, /* (138) position ::= place */ |
| 2088 | 129, /* (139) between ::= WAY BETWEEN */ |
| 2089 | 129, /* (140) between ::= BETWEEN */ |
| 2090 | 129, /* (141) between ::= OF THE WAY BETWEEN */ |
| 2091 | 107, /* (142) place ::= place2 */ |
| 2092 | 101, /* (143) edge ::= CENTER */ |
| 2093 | 101, /* (144) edge ::= EDGEPT */ |
| 2094 | 101, /* (145) edge ::= TOP */ |
| 2095 | 101, /* (146) edge ::= BOTTOM */ |
| 2096 | 101, /* (147) edge ::= START */ |
| 2097 | 101, /* (148) edge ::= END */ |
| 2098 | 101, /* (149) edge ::= RIGHT */ |
| 2099 | 101, /* (150) edge ::= LEFT */ |
| 2100 | 108, /* (151) object ::= objectname */ |
| 2101 | }; |
| 2102 | |
| 2103 | /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number |
| 2104 | ** of symbols on the right-hand side of that rule. */ |
| 2105 | static const signed char yyRuleInfoNRhs[] = { |
| @@ -2112,11 +2121,11 @@ | |
| 2112 | -3, /* (6) element ::= PLACENAME COLON unnamed_element */ |
| 2113 | -3, /* (7) element ::= PLACENAME COLON position */ |
| 2114 | -1, /* (8) element ::= unnamed_element */ |
| 2115 | -2, /* (9) element ::= print prlist */ |
| 2116 | -6, /* (10) element ::= ASSERT LP expr EQ expr RP */ |
| 2117 | -6, /* (11) element ::= ASSERT LP place EQ place RP */ |
| 2118 | -1, /* (12) rvalue ::= PLACENAME */ |
| 2119 | -1, /* (13) pritem ::= FILL */ |
| 2120 | -1, /* (14) pritem ::= COLOR */ |
| 2121 | -1, /* (15) pritem ::= THICKNESS */ |
| 2122 | -1, /* (16) pritem ::= rvalue */ |
| @@ -2203,60 +2212,61 @@ | |
| 2203 | -3, /* (97) expr ::= expr STAR expr */ |
| 2204 | -3, /* (98) expr ::= expr SLASH expr */ |
| 2205 | -2, /* (99) expr ::= MINUS expr */ |
| 2206 | -2, /* (100) expr ::= PLUS expr */ |
| 2207 | -3, /* (101) expr ::= LP expr RP */ |
| 2208 | -1, /* (102) expr ::= NUMBER */ |
| 2209 | -1, /* (103) expr ::= ID */ |
| 2210 | -4, /* (104) expr ::= FUNC1 LP expr RP */ |
| 2211 | -6, /* (105) expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2212 | -6, /* (106) expr ::= DIST LP position COMMA position RP */ |
| 2213 | -3, /* (107) expr ::= place2 DOT_XY X */ |
| 2214 | -3, /* (108) expr ::= place2 DOT_XY Y */ |
| 2215 | -3, /* (109) expr ::= object DOT_L numproperty */ |
| 2216 | -3, /* (110) expr ::= object DOT_L dashproperty */ |
| 2217 | -3, /* (111) expr ::= object DOT_L colorproperty */ |
| 2218 | -1, /* (112) lvalue ::= ID */ |
| 2219 | -1, /* (113) lvalue ::= FILL */ |
| 2220 | -1, /* (114) lvalue ::= COLOR */ |
| 2221 | -1, /* (115) lvalue ::= THICKNESS */ |
| 2222 | -1, /* (116) rvalue ::= expr */ |
| 2223 | -1, /* (117) print ::= PRINT */ |
| 2224 | -1, /* (118) prlist ::= pritem */ |
| 2225 | -3, /* (119) prlist ::= prlist prsep pritem */ |
| 2226 | -1, /* (120) direction ::= UP */ |
| 2227 | -1, /* (121) direction ::= DOWN */ |
| 2228 | -1, /* (122) direction ::= LEFT */ |
| 2229 | -1, /* (123) direction ::= RIGHT */ |
| 2230 | -1, /* (124) optrelexpr ::= relexpr */ |
| 2231 | -1, /* (125) attribute_list ::= alist */ |
| 2232 | 0, /* (126) alist ::= */ |
| 2233 | -2, /* (127) alist ::= alist attribute */ |
| 2234 | -1, /* (128) attribute ::= boolproperty */ |
| 2235 | -2, /* (129) attribute ::= WITH withclause */ |
| 2236 | -1, /* (130) go ::= GO */ |
| 2237 | 0, /* (131) go ::= */ |
| 2238 | -3, /* (132) even ::= UNTIL EVEN WITH */ |
| 2239 | -2, /* (133) even ::= EVEN WITH */ |
| 2240 | -1, /* (134) dashproperty ::= DOTTED */ |
| 2241 | -1, /* (135) dashproperty ::= DASHED */ |
| 2242 | -1, /* (136) colorproperty ::= FILL */ |
| 2243 | -1, /* (137) colorproperty ::= COLOR */ |
| 2244 | -1, /* (138) position ::= place */ |
| 2245 | -2, /* (139) between ::= WAY BETWEEN */ |
| 2246 | -1, /* (140) between ::= BETWEEN */ |
| 2247 | -4, /* (141) between ::= OF THE WAY BETWEEN */ |
| 2248 | -1, /* (142) place ::= place2 */ |
| 2249 | -1, /* (143) edge ::= CENTER */ |
| 2250 | -1, /* (144) edge ::= EDGEPT */ |
| 2251 | -1, /* (145) edge ::= TOP */ |
| 2252 | -1, /* (146) edge ::= BOTTOM */ |
| 2253 | -1, /* (147) edge ::= START */ |
| 2254 | -1, /* (148) edge ::= END */ |
| 2255 | -1, /* (149) edge ::= RIGHT */ |
| 2256 | -1, /* (150) edge ::= LEFT */ |
| 2257 | -1, /* (151) object ::= objectname */ |
| 2258 | }; |
| 2259 | |
| 2260 | static void yy_accept(yyParser*); /* Forward Declaration */ |
| 2261 | |
| 2262 | /* |
| @@ -2282,12 +2292,13 @@ | |
| 2282 | int yysize; /* Amount to pop the stack */ |
| 2283 | pik_parserARG_FETCH |
| 2284 | (void)yyLookahead; |
| 2285 | (void)yyLookaheadToken; |
| 2286 | yymsp = yypParser->yytos; |
| 2287 | #ifndef NDEBUG |
| 2288 | if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ |
| 2289 | yysize = yyRuleInfoNRhs[yyruleno]; |
| 2290 | if( yysize ){ |
| 2291 | fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", |
| 2292 | yyTracePrompt, |
| 2293 | yyruleno, yyRuleName[yyruleno], |
| @@ -2345,639 +2356,644 @@ | |
| 2345 | /********** Begin reduce actions **********************************************/ |
| 2346 | YYMINORTYPE yylhsminor; |
| 2347 | case 0: /* document ::= element_list */ |
| 2348 | #line 505 "pikchr.y" |
| 2349 | {pik_render(p,yymsp[0].minor.yy56);} |
| 2350 | #line 2375 "pikchr.c" |
| 2351 | break; |
| 2352 | case 1: /* element_list ::= element */ |
| 2353 | #line 508 "pikchr.y" |
| 2354 | { yylhsminor.yy56 = pik_elist_append(p,0,yymsp[0].minor.yy226); } |
| 2355 | #line 2380 "pikchr.c" |
| 2356 | yymsp[0].minor.yy56 = yylhsminor.yy56; |
| 2357 | break; |
| 2358 | case 2: /* element_list ::= element_list EOL element */ |
| 2359 | #line 510 "pikchr.y" |
| 2360 | { yylhsminor.yy56 = pik_elist_append(p,yymsp[-2].minor.yy56,yymsp[0].minor.yy226); } |
| 2361 | #line 2386 "pikchr.c" |
| 2362 | yymsp[-2].minor.yy56 = yylhsminor.yy56; |
| 2363 | break; |
| 2364 | case 3: /* element ::= */ |
| 2365 | #line 513 "pikchr.y" |
| 2366 | { yymsp[1].minor.yy226 = 0; } |
| 2367 | #line 2392 "pikchr.c" |
| 2368 | break; |
| 2369 | case 4: /* element ::= direction */ |
| 2370 | #line 514 "pikchr.y" |
| 2371 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy226=0; } |
| 2372 | #line 2397 "pikchr.c" |
| 2373 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2374 | break; |
| 2375 | case 5: /* element ::= lvalue ASSIGN rvalue */ |
| 2376 | #line 515 "pikchr.y" |
| 2377 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy257,&yymsp[-1].minor.yy0); yylhsminor.yy226=0;} |
| 2378 | #line 2403 "pikchr.c" |
| 2379 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2380 | break; |
| 2381 | case 6: /* element ::= PLACENAME COLON unnamed_element */ |
| 2382 | #line 517 "pikchr.y" |
| 2383 | { yylhsminor.yy226 = yymsp[0].minor.yy226; pik_elem_setname(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0); } |
| 2384 | #line 2409 "pikchr.c" |
| 2385 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2386 | break; |
| 2387 | case 7: /* element ::= PLACENAME COLON position */ |
| 2388 | #line 519 "pikchr.y" |
| 2389 | { yylhsminor.yy226 = pik_elem_new(p,0,0,0); |
| 2390 | if(yylhsminor.yy226){ yylhsminor.yy226->ptAt = yymsp[0].minor.yy175; pik_elem_setname(p,yylhsminor.yy226,&yymsp[-2].minor.yy0); }} |
| 2391 | #line 2416 "pikchr.c" |
| 2392 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2393 | break; |
| 2394 | case 8: /* element ::= unnamed_element */ |
| 2395 | #line 521 "pikchr.y" |
| 2396 | {yylhsminor.yy226 = yymsp[0].minor.yy226;} |
| 2397 | #line 2422 "pikchr.c" |
| 2398 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2399 | break; |
| 2400 | case 9: /* element ::= print prlist */ |
| 2401 | #line 522 "pikchr.y" |
| 2402 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy226=0;} |
| 2403 | #line 2428 "pikchr.c" |
| 2404 | break; |
| 2405 | case 10: /* element ::= ASSERT LP expr EQ expr RP */ |
| 2406 | #line 527 "pikchr.y" |
| 2407 | {yymsp[-5].minor.yy226=pik_assert(p,yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy257);} |
| 2408 | #line 2433 "pikchr.c" |
| 2409 | break; |
| 2410 | case 11: /* element ::= ASSERT LP place EQ place RP */ |
| 2411 | #line 529 "pikchr.y" |
| 2412 | {yymsp[-5].minor.yy226=pik_place_assert(p,&yymsp[-3].minor.yy175,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy175);} |
| 2413 | #line 2438 "pikchr.c" |
| 2414 | break; |
| 2415 | case 12: /* rvalue ::= PLACENAME */ |
| 2416 | #line 540 "pikchr.y" |
| 2417 | {yylhsminor.yy257 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2418 | #line 2443 "pikchr.c" |
| 2419 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2420 | break; |
| 2421 | case 13: /* pritem ::= FILL */ |
| 2422 | case 14: /* pritem ::= COLOR */ yytestcase(yyruleno==14); |
| 2423 | case 15: /* pritem ::= THICKNESS */ yytestcase(yyruleno==15); |
| 2424 | #line 545 "pikchr.y" |
| 2425 | {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));} |
| 2426 | #line 2451 "pikchr.c" |
| 2427 | break; |
| 2428 | case 16: /* pritem ::= rvalue */ |
| 2429 | #line 548 "pikchr.y" |
| 2430 | {pik_append_num(p,"",yymsp[0].minor.yy257);} |
| 2431 | #line 2456 "pikchr.c" |
| 2432 | break; |
| 2433 | case 17: /* pritem ::= STRING */ |
| 2434 | #line 549 "pikchr.y" |
| 2435 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2436 | #line 2461 "pikchr.c" |
| 2437 | break; |
| 2438 | case 18: /* prsep ::= COMMA */ |
| 2439 | #line 550 "pikchr.y" |
| 2440 | {pik_append(p, " ", 1);} |
| 2441 | #line 2466 "pikchr.c" |
| 2442 | break; |
| 2443 | case 19: /* unnamed_element ::= basetype attribute_list */ |
| 2444 | #line 553 "pikchr.y" |
| 2445 | {yylhsminor.yy226 = yymsp[-1].minor.yy226; pik_after_adding_attributes(p,yylhsminor.yy226);} |
| 2446 | #line 2471 "pikchr.c" |
| 2447 | yymsp[-1].minor.yy226 = yylhsminor.yy226; |
| 2448 | break; |
| 2449 | case 20: /* basetype ::= CLASSNAME */ |
| 2450 | #line 555 "pikchr.y" |
| 2451 | {yylhsminor.yy226 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2452 | #line 2477 "pikchr.c" |
| 2453 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2454 | break; |
| 2455 | case 21: /* basetype ::= STRING textposition */ |
| 2456 | #line 557 "pikchr.y" |
| 2457 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy116; yylhsminor.yy226 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2458 | #line 2483 "pikchr.c" |
| 2459 | yymsp[-1].minor.yy226 = yylhsminor.yy226; |
| 2460 | break; |
| 2461 | case 22: /* basetype ::= LB savelist element_list RB */ |
| 2462 | #line 559 "pikchr.y" |
| 2463 | { p->list = yymsp[-2].minor.yy56; yymsp[-3].minor.yy226 = pik_elem_new(p,0,0,yymsp[-1].minor.yy56); if(yymsp[-3].minor.yy226) yymsp[-3].minor.yy226->errTok = yymsp[0].minor.yy0; } |
| 2464 | #line 2489 "pikchr.c" |
| 2465 | break; |
| 2466 | case 23: /* savelist ::= */ |
| 2467 | #line 564 "pikchr.y" |
| 2468 | {yymsp[1].minor.yy56 = p->list; p->list = 0;} |
| 2469 | #line 2494 "pikchr.c" |
| 2470 | break; |
| 2471 | case 24: /* relexpr ::= expr */ |
| 2472 | #line 571 "pikchr.y" |
| 2473 | {yylhsminor.yy164.rAbs = yymsp[0].minor.yy257; yylhsminor.yy164.rRel = 0;} |
| 2474 | #line 2499 "pikchr.c" |
| 2475 | yymsp[0].minor.yy164 = yylhsminor.yy164; |
| 2476 | break; |
| 2477 | case 25: /* relexpr ::= expr PERCENT */ |
| 2478 | #line 572 "pikchr.y" |
| 2479 | {yylhsminor.yy164.rAbs = 0; yylhsminor.yy164.rRel = yymsp[-1].minor.yy257/100;} |
| 2480 | #line 2505 "pikchr.c" |
| 2481 | yymsp[-1].minor.yy164 = yylhsminor.yy164; |
| 2482 | break; |
| 2483 | case 26: /* optrelexpr ::= */ |
| 2484 | #line 574 "pikchr.y" |
| 2485 | {yymsp[1].minor.yy164.rAbs = 0; yymsp[1].minor.yy164.rRel = 1.0;} |
| 2486 | #line 2511 "pikchr.c" |
| 2487 | break; |
| 2488 | case 27: /* attribute_list ::= relexpr alist */ |
| 2489 | #line 576 "pikchr.y" |
| 2490 | {pik_add_direction(p,0,&yymsp[-1].minor.yy164);} |
| 2491 | #line 2516 "pikchr.c" |
| 2492 | break; |
| 2493 | case 28: /* attribute ::= numproperty relexpr */ |
| 2494 | #line 580 "pikchr.y" |
| 2495 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164); } |
| 2496 | #line 2521 "pikchr.c" |
| 2497 | break; |
| 2498 | case 29: /* attribute ::= dashproperty expr */ |
| 2499 | #line 581 "pikchr.y" |
| 2500 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy257); } |
| 2501 | #line 2526 "pikchr.c" |
| 2502 | break; |
| 2503 | case 30: /* attribute ::= dashproperty */ |
| 2504 | #line 582 "pikchr.y" |
| 2505 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2506 | #line 2531 "pikchr.c" |
| 2507 | break; |
| 2508 | case 31: /* attribute ::= colorproperty rvalue */ |
| 2509 | #line 583 "pikchr.y" |
| 2510 | { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257); } |
| 2511 | #line 2536 "pikchr.c" |
| 2512 | break; |
| 2513 | case 32: /* attribute ::= go direction optrelexpr */ |
| 2514 | #line 584 "pikchr.y" |
| 2515 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164);} |
| 2516 | #line 2541 "pikchr.c" |
| 2517 | break; |
| 2518 | case 33: /* attribute ::= go direction even position */ |
| 2519 | #line 585 "pikchr.y" |
| 2520 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175);} |
| 2521 | #line 2546 "pikchr.c" |
| 2522 | break; |
| 2523 | case 34: /* attribute ::= CLOSE */ |
| 2524 | #line 586 "pikchr.y" |
| 2525 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2526 | #line 2551 "pikchr.c" |
| 2527 | break; |
| 2528 | case 35: /* attribute ::= CHOP */ |
| 2529 | #line 587 "pikchr.y" |
| 2530 | { p->cur->bChop = 1; } |
| 2531 | #line 2556 "pikchr.c" |
| 2532 | break; |
| 2533 | case 36: /* attribute ::= FROM position */ |
| 2534 | #line 588 "pikchr.y" |
| 2535 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); } |
| 2536 | #line 2561 "pikchr.c" |
| 2537 | break; |
| 2538 | case 37: /* attribute ::= TO position */ |
| 2539 | #line 589 "pikchr.y" |
| 2540 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); } |
| 2541 | #line 2566 "pikchr.c" |
| 2542 | break; |
| 2543 | case 38: /* attribute ::= THEN */ |
| 2544 | #line 590 "pikchr.y" |
| 2545 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2546 | #line 2571 "pikchr.c" |
| 2547 | break; |
| 2548 | case 39: /* attribute ::= THEN optrelexpr HEADING expr */ |
| 2549 | case 41: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==41); |
| 2550 | #line 592 "pikchr.y" |
| 2551 | {pik_move_hdg(p,&yymsp[-2].minor.yy164,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257,0,&yymsp[-3].minor.yy0);} |
| 2552 | #line 2577 "pikchr.c" |
| 2553 | break; |
| 2554 | case 40: /* attribute ::= THEN optrelexpr EDGEPT */ |
| 2555 | case 42: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==42); |
| 2556 | #line 593 "pikchr.y" |
| 2557 | {pik_move_hdg(p,&yymsp[-1].minor.yy164,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);} |
| 2558 | #line 2583 "pikchr.c" |
| 2559 | break; |
| 2560 | case 43: /* attribute ::= AT position */ |
| 2561 | #line 598 "pikchr.y" |
| 2562 | { pik_set_at(p,0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); } |
| 2563 | #line 2588 "pikchr.c" |
| 2564 | break; |
| 2565 | case 44: /* attribute ::= SAME */ |
| 2566 | #line 600 "pikchr.y" |
| 2567 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2568 | #line 2593 "pikchr.c" |
| 2569 | break; |
| 2570 | case 45: /* attribute ::= SAME AS object */ |
| 2571 | #line 601 "pikchr.y" |
| 2572 | {pik_same(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2573 | #line 2598 "pikchr.c" |
| 2574 | break; |
| 2575 | case 46: /* attribute ::= STRING textposition */ |
| 2576 | #line 602 "pikchr.y" |
| 2577 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy116);} |
| 2578 | #line 2603 "pikchr.c" |
| 2579 | break; |
| 2580 | case 47: /* attribute ::= FIT */ |
| 2581 | #line 603 "pikchr.y" |
| 2582 | {pik_size_to_fit(p,&yymsp[0].minor.yy0); } |
| 2583 | #line 2608 "pikchr.c" |
| 2584 | break; |
| 2585 | case 48: /* attribute ::= BEHIND object */ |
| 2586 | #line 604 "pikchr.y" |
| 2587 | {pik_behind(p,yymsp[0].minor.yy226);} |
| 2588 | #line 2613 "pikchr.c" |
| 2589 | break; |
| 2590 | case 49: /* withclause ::= DOT_E edge AT position */ |
| 2591 | case 50: /* withclause ::= edge AT position */ yytestcase(yyruleno==50); |
| 2592 | #line 612 "pikchr.y" |
| 2593 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); } |
| 2594 | #line 2619 "pikchr.c" |
| 2595 | break; |
| 2596 | case 51: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2597 | #line 616 "pikchr.y" |
| 2598 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2599 | #line 2624 "pikchr.c" |
| 2600 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2601 | break; |
| 2602 | case 52: /* boolproperty ::= CW */ |
| 2603 | #line 627 "pikchr.y" |
| 2604 | {p->cur->cw = 1;} |
| 2605 | #line 2630 "pikchr.c" |
| 2606 | break; |
| 2607 | case 53: /* boolproperty ::= CCW */ |
| 2608 | #line 628 "pikchr.y" |
| 2609 | {p->cur->cw = 0;} |
| 2610 | #line 2635 "pikchr.c" |
| 2611 | break; |
| 2612 | case 54: /* boolproperty ::= LARROW */ |
| 2613 | #line 629 "pikchr.y" |
| 2614 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2615 | #line 2640 "pikchr.c" |
| 2616 | break; |
| 2617 | case 55: /* boolproperty ::= RARROW */ |
| 2618 | #line 630 "pikchr.y" |
| 2619 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2620 | #line 2645 "pikchr.c" |
| 2621 | break; |
| 2622 | case 56: /* boolproperty ::= LRARROW */ |
| 2623 | #line 631 "pikchr.y" |
| 2624 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2625 | #line 2650 "pikchr.c" |
| 2626 | break; |
| 2627 | case 57: /* boolproperty ::= INVIS */ |
| 2628 | #line 632 "pikchr.y" |
| 2629 | {p->cur->sw = 0.0;} |
| 2630 | #line 2655 "pikchr.c" |
| 2631 | break; |
| 2632 | case 58: /* boolproperty ::= THICK */ |
| 2633 | #line 633 "pikchr.y" |
| 2634 | {p->cur->sw *= 1.5;} |
| 2635 | #line 2660 "pikchr.c" |
| 2636 | break; |
| 2637 | case 59: /* boolproperty ::= THIN */ |
| 2638 | #line 634 "pikchr.y" |
| 2639 | {p->cur->sw *= 0.67;} |
| 2640 | #line 2665 "pikchr.c" |
| 2641 | break; |
| 2642 | case 60: /* textposition ::= */ |
| 2643 | #line 636 "pikchr.y" |
| 2644 | {yymsp[1].minor.yy116 = 0;} |
| 2645 | #line 2670 "pikchr.c" |
| 2646 | break; |
| 2647 | case 61: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */ |
| 2648 | #line 639 "pikchr.y" |
| 2649 | {yylhsminor.yy116 = pik_text_position(yymsp[-1].minor.yy116,&yymsp[0].minor.yy0);} |
| 2650 | #line 2675 "pikchr.c" |
| 2651 | yymsp[-1].minor.yy116 = yylhsminor.yy116; |
| 2652 | break; |
| 2653 | case 62: /* position ::= expr COMMA expr */ |
| 2654 | #line 642 "pikchr.y" |
| 2655 | {yylhsminor.yy175.x=yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[0].minor.yy257;} |
| 2656 | #line 2681 "pikchr.c" |
| 2657 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2658 | break; |
| 2659 | case 63: /* position ::= place PLUS expr COMMA expr */ |
| 2660 | #line 644 "pikchr.y" |
| 2661 | {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x+yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y+yymsp[0].minor.yy257;} |
| 2662 | #line 2687 "pikchr.c" |
| 2663 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2664 | break; |
| 2665 | case 64: /* position ::= place MINUS expr COMMA expr */ |
| 2666 | #line 645 "pikchr.y" |
| 2667 | {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x-yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y-yymsp[0].minor.yy257;} |
| 2668 | #line 2693 "pikchr.c" |
| 2669 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2670 | break; |
| 2671 | case 65: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2672 | #line 647 "pikchr.y" |
| 2673 | {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x+yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y+yymsp[-1].minor.yy257;} |
| 2674 | #line 2699 "pikchr.c" |
| 2675 | yymsp[-6].minor.yy175 = yylhsminor.yy175; |
| 2676 | break; |
| 2677 | case 66: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2678 | #line 649 "pikchr.y" |
| 2679 | {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x-yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y-yymsp[-1].minor.yy257;} |
| 2680 | #line 2705 "pikchr.c" |
| 2681 | yymsp[-6].minor.yy175 = yylhsminor.yy175; |
| 2682 | break; |
| 2683 | case 67: /* position ::= LP position COMMA position RP */ |
| 2684 | #line 650 "pikchr.y" |
| 2685 | {yymsp[-4].minor.yy175.x=yymsp[-3].minor.yy175.x; yymsp[-4].minor.yy175.y=yymsp[-1].minor.yy175.y;} |
| 2686 | #line 2711 "pikchr.c" |
| 2687 | break; |
| 2688 | case 68: /* position ::= LP position RP */ |
| 2689 | #line 651 "pikchr.y" |
| 2690 | {yymsp[-2].minor.yy175=yymsp[-1].minor.yy175;} |
| 2691 | #line 2716 "pikchr.c" |
| 2692 | break; |
| 2693 | case 69: /* position ::= expr between position AND position */ |
| 2694 | #line 653 "pikchr.y" |
| 2695 | {yylhsminor.yy175 = pik_position_between(yymsp[-4].minor.yy257,yymsp[-2].minor.yy175,yymsp[0].minor.yy175);} |
| 2696 | #line 2721 "pikchr.c" |
| 2697 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2698 | break; |
| 2699 | case 70: /* position ::= expr LT position COMMA position GT */ |
| 2700 | #line 655 "pikchr.y" |
| 2701 | {yylhsminor.yy175 = pik_position_between(yymsp[-5].minor.yy257,yymsp[-3].minor.yy175,yymsp[-1].minor.yy175);} |
| 2702 | #line 2727 "pikchr.c" |
| 2703 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2704 | break; |
| 2705 | case 71: /* position ::= expr ABOVE position */ |
| 2706 | #line 656 "pikchr.y" |
| 2707 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y += yymsp[-2].minor.yy257;} |
| 2708 | #line 2733 "pikchr.c" |
| 2709 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2710 | break; |
| 2711 | case 72: /* position ::= expr BELOW position */ |
| 2712 | #line 657 "pikchr.y" |
| 2713 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y -= yymsp[-2].minor.yy257;} |
| 2714 | #line 2739 "pikchr.c" |
| 2715 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2716 | break; |
| 2717 | case 73: /* position ::= expr LEFT OF position */ |
| 2718 | #line 658 "pikchr.y" |
| 2719 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x -= yymsp[-3].minor.yy257;} |
| 2720 | #line 2745 "pikchr.c" |
| 2721 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2722 | break; |
| 2723 | case 74: /* position ::= expr RIGHT OF position */ |
| 2724 | #line 659 "pikchr.y" |
| 2725 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x += yymsp[-3].minor.yy257;} |
| 2726 | #line 2751 "pikchr.c" |
| 2727 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2728 | break; |
| 2729 | case 75: /* position ::= expr ON HEADING EDGEPT OF position */ |
| 2730 | #line 661 "pikchr.y" |
| 2731 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-5].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2732 | #line 2757 "pikchr.c" |
| 2733 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2734 | break; |
| 2735 | case 76: /* position ::= expr HEADING EDGEPT OF position */ |
| 2736 | #line 663 "pikchr.y" |
| 2737 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-4].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2738 | #line 2763 "pikchr.c" |
| 2739 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2740 | break; |
| 2741 | case 77: /* position ::= expr EDGEPT OF position */ |
| 2742 | #line 665 "pikchr.y" |
| 2743 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2744 | #line 2769 "pikchr.c" |
| 2745 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2746 | break; |
| 2747 | case 78: /* position ::= expr ON HEADING expr FROM position */ |
| 2748 | #line 667 "pikchr.y" |
| 2749 | {yylhsminor.yy175 = pik_position_at_angle(yymsp[-5].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);} |
| 2750 | #line 2775 "pikchr.c" |
| 2751 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2752 | break; |
| 2753 | case 79: /* position ::= expr HEADING expr FROM position */ |
| 2754 | #line 669 "pikchr.y" |
| 2755 | {yylhsminor.yy175 = pik_position_at_angle(yymsp[-4].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);} |
| 2756 | #line 2781 "pikchr.c" |
| 2757 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2758 | break; |
| 2759 | case 80: /* place ::= edge OF object */ |
| 2760 | #line 681 "pikchr.y" |
| 2761 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2762 | #line 2787 "pikchr.c" |
| 2763 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2764 | break; |
| 2765 | case 81: /* place2 ::= object */ |
| 2766 | #line 682 "pikchr.y" |
| 2767 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,0);} |
| 2768 | #line 2793 "pikchr.c" |
| 2769 | yymsp[0].minor.yy175 = yylhsminor.yy175; |
| 2770 | break; |
| 2771 | case 82: /* place2 ::= object DOT_E edge */ |
| 2772 | #line 683 "pikchr.y" |
| 2773 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2774 | #line 2799 "pikchr.c" |
| 2775 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2776 | break; |
| 2777 | case 83: /* place2 ::= NTH VERTEX OF object */ |
| 2778 | #line 684 "pikchr.y" |
| 2779 | {yylhsminor.yy175 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy226);} |
| 2780 | #line 2805 "pikchr.c" |
| 2781 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2782 | break; |
| 2783 | case 84: /* object ::= nth */ |
| 2784 | #line 696 "pikchr.y" |
| 2785 | {yylhsminor.yy226 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2786 | #line 2811 "pikchr.c" |
| 2787 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2788 | break; |
| 2789 | case 85: /* object ::= nth OF|IN object */ |
| 2790 | #line 697 "pikchr.y" |
| 2791 | {yylhsminor.yy226 = pik_find_nth(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2792 | #line 2817 "pikchr.c" |
| 2793 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2794 | break; |
| 2795 | case 86: /* objectname ::= PLACENAME */ |
| 2796 | #line 699 "pikchr.y" |
| 2797 | {yylhsminor.yy226 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2798 | #line 2823 "pikchr.c" |
| 2799 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2800 | break; |
| 2801 | case 87: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2802 | #line 701 "pikchr.y" |
| 2803 | {yylhsminor.yy226 = pik_find_byname(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2804 | #line 2829 "pikchr.c" |
| 2805 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2806 | break; |
| 2807 | case 88: /* nth ::= NTH CLASSNAME */ |
| 2808 | #line 703 "pikchr.y" |
| 2809 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2810 | #line 2835 "pikchr.c" |
| 2811 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2812 | break; |
| 2813 | case 89: /* nth ::= NTH LAST CLASSNAME */ |
| 2814 | #line 704 "pikchr.y" |
| 2815 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2816 | #line 2841 "pikchr.c" |
| 2817 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2818 | break; |
| 2819 | case 90: /* nth ::= LAST CLASSNAME */ |
| 2820 | #line 705 "pikchr.y" |
| 2821 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2822 | #line 2847 "pikchr.c" |
| 2823 | break; |
| 2824 | case 91: /* nth ::= LAST */ |
| 2825 | #line 706 "pikchr.y" |
| 2826 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2827 | #line 2852 "pikchr.c" |
| 2828 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2829 | break; |
| 2830 | case 92: /* nth ::= NTH LB RB */ |
| 2831 | #line 707 "pikchr.y" |
| 2832 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2833 | #line 2858 "pikchr.c" |
| 2834 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2835 | break; |
| 2836 | case 93: /* nth ::= NTH LAST LB RB */ |
| 2837 | #line 708 "pikchr.y" |
| 2838 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2839 | #line 2864 "pikchr.c" |
| 2840 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2841 | break; |
| 2842 | case 94: /* nth ::= LAST LB RB */ |
| 2843 | #line 709 "pikchr.y" |
| 2844 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2845 | #line 2870 "pikchr.c" |
| 2846 | break; |
| 2847 | case 95: /* expr ::= expr PLUS expr */ |
| 2848 | #line 711 "pikchr.y" |
| 2849 | {yylhsminor.yy257=yymsp[-2].minor.yy257+yymsp[0].minor.yy257;} |
| 2850 | #line 2875 "pikchr.c" |
| 2851 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2852 | break; |
| 2853 | case 96: /* expr ::= expr MINUS expr */ |
| 2854 | #line 712 "pikchr.y" |
| 2855 | {yylhsminor.yy257=yymsp[-2].minor.yy257-yymsp[0].minor.yy257;} |
| 2856 | #line 2881 "pikchr.c" |
| 2857 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2858 | break; |
| 2859 | case 97: /* expr ::= expr STAR expr */ |
| 2860 | #line 713 "pikchr.y" |
| 2861 | {yylhsminor.yy257=yymsp[-2].minor.yy257*yymsp[0].minor.yy257;} |
| 2862 | #line 2887 "pikchr.c" |
| 2863 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2864 | break; |
| 2865 | case 98: /* expr ::= expr SLASH expr */ |
| 2866 | #line 714 "pikchr.y" |
| 2867 | { |
| 2868 | if( yymsp[0].minor.yy257==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy257 = 0.0; } |
| 2869 | else{ yylhsminor.yy257 = yymsp[-2].minor.yy257/yymsp[0].minor.yy257; } |
| 2870 | } |
| 2871 | #line 2896 "pikchr.c" |
| 2872 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2873 | break; |
| 2874 | case 99: /* expr ::= MINUS expr */ |
| 2875 | #line 718 "pikchr.y" |
| 2876 | {yymsp[-1].minor.yy257=-yymsp[0].minor.yy257;} |
| 2877 | #line 2902 "pikchr.c" |
| 2878 | break; |
| 2879 | case 100: /* expr ::= PLUS expr */ |
| 2880 | #line 719 "pikchr.y" |
| 2881 | {yymsp[-1].minor.yy257=yymsp[0].minor.yy257;} |
| 2882 | #line 2907 "pikchr.c" |
| 2883 | break; |
| 2884 | case 101: /* expr ::= LP expr RP */ |
| 2885 | #line 720 "pikchr.y" |
| 2886 | {yymsp[-2].minor.yy257=yymsp[-1].minor.yy257;} |
| 2887 | #line 2912 "pikchr.c" |
| 2888 | break; |
| 2889 | case 102: /* expr ::= NUMBER */ |
| 2890 | #line 721 "pikchr.y" |
| 2891 | {yylhsminor.yy257=pik_atof(&yymsp[0].minor.yy0);} |
| 2892 | #line 2917 "pikchr.c" |
| 2893 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2894 | break; |
| 2895 | case 103: /* expr ::= ID */ |
| 2896 | #line 722 "pikchr.y" |
| 2897 | {yylhsminor.yy257=pik_get_var(p,&yymsp[0].minor.yy0);} |
| 2898 | #line 2923 "pikchr.c" |
| 2899 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2900 | break; |
| 2901 | case 104: /* expr ::= FUNC1 LP expr RP */ |
| 2902 | #line 723 "pikchr.y" |
| 2903 | {yylhsminor.yy257 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy257,0.0);} |
| 2904 | #line 2929 "pikchr.c" |
| 2905 | yymsp[-3].minor.yy257 = yylhsminor.yy257; |
| 2906 | break; |
| 2907 | case 105: /* expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2908 | #line 724 "pikchr.y" |
| 2909 | {yylhsminor.yy257 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy257,yymsp[-1].minor.yy257);} |
| 2910 | #line 2935 "pikchr.c" |
| 2911 | yymsp[-5].minor.yy257 = yylhsminor.yy257; |
| 2912 | break; |
| 2913 | case 106: /* expr ::= DIST LP position COMMA position RP */ |
| 2914 | #line 725 "pikchr.y" |
| 2915 | {yymsp[-5].minor.yy257 = pik_dist(&yymsp[-3].minor.yy175,&yymsp[-1].minor.yy175);} |
| 2916 | #line 2941 "pikchr.c" |
| 2917 | break; |
| 2918 | case 107: /* expr ::= place2 DOT_XY X */ |
| 2919 | #line 726 "pikchr.y" |
| 2920 | {yylhsminor.yy257 = yymsp[-2].minor.yy175.x;} |
| 2921 | #line 2946 "pikchr.c" |
| 2922 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2923 | break; |
| 2924 | case 108: /* expr ::= place2 DOT_XY Y */ |
| 2925 | #line 727 "pikchr.y" |
| 2926 | {yylhsminor.yy257 = yymsp[-2].minor.yy175.y;} |
| 2927 | #line 2952 "pikchr.c" |
| 2928 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2929 | break; |
| 2930 | case 109: /* expr ::= object DOT_L numproperty */ |
| 2931 | case 110: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==110); |
| 2932 | case 111: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==111); |
| 2933 | #line 728 "pikchr.y" |
| 2934 | {yylhsminor.yy257=pik_property_of(yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2935 | #line 2960 "pikchr.c" |
| 2936 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2937 | break; |
| 2938 | default: |
| 2939 | /* (112) lvalue ::= ID */ yytestcase(yyruleno==112); |
| 2940 | /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113); |
| 2941 | /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114); |
| 2942 | /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115); |
| 2943 | /* (116) rvalue ::= expr */ yytestcase(yyruleno==116); |
| 2944 | /* (117) print ::= PRINT */ yytestcase(yyruleno==117); |
| 2945 | /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118); |
| 2946 | /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119); |
| 2947 | /* (120) direction ::= UP */ yytestcase(yyruleno==120); |
| 2948 | /* (121) direction ::= DOWN */ yytestcase(yyruleno==121); |
| 2949 | /* (122) direction ::= LEFT */ yytestcase(yyruleno==122); |
| 2950 | /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123); |
| 2951 | /* (124) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=124); |
| 2952 | /* (125) attribute_list ::= alist */ yytestcase(yyruleno==125); |
| 2953 | /* (126) alist ::= */ yytestcase(yyruleno==126); |
| 2954 | /* (127) alist ::= alist attribute */ yytestcase(yyruleno==127); |
| 2955 | /* (128) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=128); |
| 2956 | /* (129) attribute ::= WITH withclause */ yytestcase(yyruleno==129); |
| 2957 | /* (130) go ::= GO */ yytestcase(yyruleno==130); |
| 2958 | /* (131) go ::= */ yytestcase(yyruleno==131); |
| 2959 | /* (132) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==132); |
| 2960 | /* (133) even ::= EVEN WITH */ yytestcase(yyruleno==133); |
| 2961 | /* (134) dashproperty ::= DOTTED */ yytestcase(yyruleno==134); |
| 2962 | /* (135) dashproperty ::= DASHED */ yytestcase(yyruleno==135); |
| 2963 | /* (136) colorproperty ::= FILL */ yytestcase(yyruleno==136); |
| 2964 | /* (137) colorproperty ::= COLOR */ yytestcase(yyruleno==137); |
| 2965 | /* (138) position ::= place */ yytestcase(yyruleno==138); |
| 2966 | /* (139) between ::= WAY BETWEEN */ yytestcase(yyruleno==139); |
| 2967 | /* (140) between ::= BETWEEN */ yytestcase(yyruleno==140); |
| 2968 | /* (141) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==141); |
| 2969 | /* (142) place ::= place2 */ yytestcase(yyruleno==142); |
| 2970 | /* (143) edge ::= CENTER */ yytestcase(yyruleno==143); |
| 2971 | /* (144) edge ::= EDGEPT */ yytestcase(yyruleno==144); |
| 2972 | /* (145) edge ::= TOP */ yytestcase(yyruleno==145); |
| 2973 | /* (146) edge ::= BOTTOM */ yytestcase(yyruleno==146); |
| 2974 | /* (147) edge ::= START */ yytestcase(yyruleno==147); |
| 2975 | /* (148) edge ::= END */ yytestcase(yyruleno==148); |
| 2976 | /* (149) edge ::= RIGHT */ yytestcase(yyruleno==149); |
| 2977 | /* (150) edge ::= LEFT */ yytestcase(yyruleno==150); |
| 2978 | /* (151) object ::= objectname */ yytestcase(yyruleno==151); |
| 2979 | break; |
| 2980 | /********** End reduce actions ************************************************/ |
| 2981 | }; |
| 2982 | assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) ); |
| 2983 | yygoto = yyRuleInfoLhs[yyruleno]; |
| @@ -3041,11 +3057,11 @@ | |
| 3041 | pik_error(p, &TOKEN, "syntax error"); |
| 3042 | }else{ |
| 3043 | pik_error(p, 0, "syntax error"); |
| 3044 | } |
| 3045 | UNUSED_PARAMETER(yymajor); |
| 3046 | #line 3071 "pikchr.c" |
| 3047 | /************ End %syntax_error code ******************************************/ |
| 3048 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 3049 | pik_parserCTX_STORE |
| 3050 | } |
| 3051 | |
| @@ -3274,11 +3290,11 @@ | |
| 3274 | #else |
| 3275 | (void)iToken; |
| 3276 | return 0; |
| 3277 | #endif |
| 3278 | } |
| 3279 | #line 733 "pikchr.y" |
| 3280 | |
| 3281 | |
| 3282 | |
| 3283 | /* Chart of the 140 official HTML color names with their |
| 3284 | ** corresponding RGB value. |
| @@ -4845,11 +4861,11 @@ | |
| 4845 | } |
| 4846 | |
| 4847 | /* |
| 4848 | ** Process an "assert( place1 == place2 )" statement. Always return NULL. |
| 4849 | */ |
| 4850 | static PElem *pik_place_assert(Pik *p, PPoint *e1, PToken *pEq, PPoint *e2){ |
| 4851 | char zE1[100], zE2[100], zMsg[210]; |
| 4852 | |
| 4853 | /* Convert the numbers to strings using %g for comparison. This |
| 4854 | ** limits the precision of the comparison to account for rounding error. */ |
| 4855 | snprintf(zE1, sizeof(zE1), "(%g,%g)", e1->x, e1->y); zE1[sizeof(zE1)-1] = 0; |
| @@ -6369,11 +6385,15 @@ | |
| 6369 | |
| 6370 | pElem->ptEnter = pElem->aPath[0]; |
| 6371 | pElem->ptExit = pElem->aPath[pElem->nPath-1]; |
| 6372 | |
| 6373 | /* Compute the center of the line based on the bounding box over |
| 6374 | ** the vertexes */ |
| 6375 | for(i=0; i<pElem->nPath; i++){ |
| 6376 | pik_bbox_add_xy(&pElem->bbox, pElem->aPath[i].x, pElem->aPath[i].y); |
| 6377 | } |
| 6378 | pElem->ptAt.x = (pElem->bbox.ne.x + pElem->bbox.sw.x)/2.0; |
| 6379 | pElem->ptAt.y = (pElem->bbox.ne.y + pElem->bbox.sw.y)/2.0; |
| @@ -6384,15 +6404,13 @@ | |
| 6384 | pElem->h = pElem->bbox.ne.y - pElem->bbox.sw.y; |
| 6385 | |
| 6386 | /* If this is a polygon (if it has the "close" attribute), then |
| 6387 | ** adjust the exit point */ |
| 6388 | if( pElem->bClose ){ |
| 6389 | /* "closed" lines work like block objects */ |
| 6390 | pik_elem_set_exit(pElem, pElem->inDir); |
| 6391 | }else{ |
| 6392 | /* For an open line, the "center" is half way between |
| 6393 | ** the .start and the .end */ |
| 6394 | } |
| 6395 | }else{ |
| 6396 | PNum w2 = pElem->w/2.0; |
| 6397 | PNum h2 = pElem->h/2.0; |
| 6398 | pElem->ptEnter = pElem->ptAt; |
| @@ -6535,11 +6553,10 @@ | |
| 6535 | static void pik_render(Pik *p, PEList *pEList){ |
| 6536 | if( pEList==0 ) return; |
| 6537 | if( p->nErr==0 ){ |
| 6538 | PNum thickness; /* Stroke width */ |
| 6539 | PNum margin; /* Extra bounding box margin */ |
| 6540 | PNum leftmargin; /* Extra bounding box area on the left */ |
| 6541 | PNum w, h; /* Drawing width and height */ |
| 6542 | PNum wArrow; |
| 6543 | PNum pikScale; /* Value of the "scale" variable */ |
| 6544 | |
| 6545 | /* Set up rendering parameters */ |
| @@ -6546,24 +6563,23 @@ | |
| 6546 | pik_compute_layout_settings(p); |
| 6547 | thickness = pik_value(p,"thickness",9,0); |
| 6548 | if( thickness<=0.01 ) thickness = 0.01; |
| 6549 | margin = pik_value(p,"margin",6,0); |
| 6550 | margin += thickness; |
| 6551 | leftmargin = pik_value(p,"leftmargin",10,0); |
| 6552 | wArrow = p->wArrow*thickness; |
| 6553 | |
| 6554 | /* Compute a bounding box over all objects so that we can know |
| 6555 | ** how big to declare the SVG canvas */ |
| 6556 | pik_bbox_init(&p->bbox); |
| 6557 | pik_bbox_add_elist(p, pEList, wArrow); |
| 6558 | |
| 6559 | /* Expand the bounding box slightly to account for line thickness |
| 6560 | ** and the optional "margin = EXPR" setting. */ |
| 6561 | p->bbox.ne.x += margin; |
| 6562 | p->bbox.ne.y += margin; |
| 6563 | p->bbox.sw.x -= margin + leftmargin; |
| 6564 | p->bbox.sw.y -= margin; |
| 6565 | |
| 6566 | /* Output the SVG */ |
| 6567 | pik_append(p, "<svg",4); |
| 6568 | if( p->zClass ){ |
| 6569 | pik_append(p, " class=\"", -1); |
| @@ -7131,10 +7147,11 @@ | |
| 7131 | static void usage(const char *argv0){ |
| 7132 | fprintf(stderr, "usage: %s [OPTIONS] FILE ...\n", argv0); |
| 7133 | fprintf(stderr, |
| 7134 | "Convert Pikchr input files into SVG.\n" |
| 7135 | "Options:\n" |
| 7136 | " --svg-only Omit raw SVG without the HTML wrapper\n" |
| 7137 | ); |
| 7138 | exit(1); |
| 7139 | } |
| 7140 | |
| @@ -7166,10 +7183,11 @@ | |
| 7166 | ** line. |
| 7167 | */ |
| 7168 | int main(int argc, char **argv){ |
| 7169 | int i; |
| 7170 | int bSvgOnly = 0; /* Output SVG only. No HTML wrapper */ |
| 7171 | const char *zHtmlHdr = |
| 7172 | "<!DOCTYPE html>\n" |
| 7173 | "<html lang=\"en-US\">\n" |
| 7174 | "<head>\n<title>PIKCHR Test</title>\n" |
| 7175 | "<style>\n" |
| @@ -7201,10 +7219,13 @@ | |
| 7201 | |
| 7202 | if( argv[i][0]=='-' ){ |
| 7203 | char *z = argv[i]; |
| 7204 | z++; |
| 7205 | if( z[0]=='-' ) z++; |
| 7206 | if( strcmp(z,"svg-only")==0 ){ |
| 7207 | if( zHtmlHdr==0 ){ |
| 7208 | fprintf(stderr, "the \"%s\" option must come first\n",argv[i]); |
| 7209 | exit(1); |
| 7210 | } |
| @@ -7234,13 +7255,12 @@ | |
| 7234 | fclose(in); |
| 7235 | zIn[sz] = 0; |
| 7236 | zOut = pikchr(zIn, "pikchr", 0, &w, &h); |
| 7237 | if( zOut==0 ){ |
| 7238 | fprintf(stderr, "pikchr() returns NULL. Out of memory?\n"); |
| 7239 | exit(1); |
| 7240 | } |
| 7241 | if( bSvgOnly ){ |
| 7242 | printf("%s\n", zOut); |
| 7243 | }else{ |
| 7244 | if( zHtmlHdr ){ |
| 7245 | printf("%s", zHtmlHdr); |
| 7246 | zHtmlHdr = 0; |
| @@ -7265,6 +7285,6 @@ | |
| 7265 | } |
| 7266 | return 0; |
| 7267 | } |
| 7268 | #endif /* PIKCHR_SHELL */ |
| 7269 | |
| 7270 | #line 7295 "pikchr.c" |
| 7271 |
| --- src/pikchr.c | |
| +++ src/pikchr.c | |
| @@ -443,11 +443,11 @@ | |
| 443 | static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem); |
| 444 | static PToken pik_next_semantic_token(PToken *pThis); |
| 445 | static void pik_compute_layout_settings(Pik*); |
| 446 | static void pik_behind(Pik*,PElem*); |
| 447 | static PElem *pik_assert(Pik*,PNum,PToken*,PNum); |
| 448 | static PElem *pik_position_assert(Pik*,PPoint*,PToken*,PPoint*); |
| 449 | static PNum pik_dist(PPoint*,PPoint*); |
| 450 | |
| 451 | |
| 452 | #line 478 "pikchr.c" |
| 453 | /**************** End of %include directives **********************************/ |
| @@ -633,21 +633,21 @@ | |
| 633 | #define pik_parserCTX_PARAM ,p |
| 634 | #define pik_parserCTX_FETCH Pik *p=yypParser->p; |
| 635 | #define pik_parserCTX_STORE yypParser->p=p; |
| 636 | #define YYFALLBACK 1 |
| 637 | #define YYNSTATE 162 |
| 638 | #define YYNRULE 153 |
| 639 | #define YYNRULE_WITH_ACTION 113 |
| 640 | #define YYNTOKEN 95 |
| 641 | #define YY_MAX_SHIFT 161 |
| 642 | #define YY_MIN_SHIFTREDUCE 282 |
| 643 | #define YY_MAX_SHIFTREDUCE 434 |
| 644 | #define YY_ERROR_ACTION 435 |
| 645 | #define YY_ACCEPT_ACTION 436 |
| 646 | #define YY_NO_ACTION 437 |
| 647 | #define YY_MIN_REDUCE 438 |
| 648 | #define YY_MAX_REDUCE 590 |
| 649 | /************* End control #defines *******************************************/ |
| 650 | #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) |
| 651 | |
| 652 | /* Define the yytestcase() macro to be a no-op if is not already defined |
| 653 | ** otherwise. |
| @@ -710,321 +710,328 @@ | |
| 710 | ** yy_reduce_ofst[] For each state, the offset into yy_action for |
| 711 | ** shifting non-terminals after a reduce. |
| 712 | ** yy_default[] Default action for each state. |
| 713 | ** |
| 714 | *********** Begin parsing tables **********************************************/ |
| 715 | #define YY_ACTTAB_COUNT (1244) |
| 716 | static const YYACTIONTYPE yy_action[] = { |
| 717 | /* 0 */ 564, 438, 25, 444, 29, 74, 127, 146, 54, 51, |
| 718 | /* 10 */ 564, 36, 445, 113, 120, 159, 119, 126, 419, 420, |
| 719 | /* 20 */ 333, 548, 81, 520, 549, 550, 564, 64, 63, 62, |
| 720 | /* 30 */ 61, 316, 317, 9, 8, 33, 147, 32, 7, 71, |
| 721 | /* 40 */ 125, 28, 329, 66, 568, 300, 50, 333, 333, 333, |
| 722 | /* 50 */ 333, 417, 418, 334, 335, 336, 337, 338, 339, 340, |
| 723 | /* 60 */ 341, 465, 64, 63, 62, 61, 121, 439, 446, 29, |
| 724 | /* 70 */ 36, 465, 30, 442, 368, 292, 486, 159, 119, 419, |
| 725 | /* 80 */ 420, 333, 31, 81, 161, 350, 304, 465, 436, 27, |
| 726 | /* 90 */ 324, 13, 316, 317, 9, 8, 33, 69, 32, 7, |
| 727 | /* 100 */ 71, 125, 83, 329, 66, 483, 159, 119, 333, 333, |
| 728 | /* 110 */ 333, 333, 417, 418, 334, 335, 336, 337, 338, 339, |
| 729 | /* 120 */ 340, 341, 386, 427, 46, 59, 60, 64, 63, 62, |
| 730 | /* 130 */ 61, 307, 84, 368, 322, 35, 2, 293, 386, 427, |
| 731 | /* 140 */ 108, 59, 60, 80, 4, 302, 79, 3, 117, 368, |
| 732 | /* 150 */ 433, 432, 2, 62, 61, 154, 154, 154, 386, 390, |
| 733 | /* 160 */ 391, 59, 60, 518, 159, 119, 433, 432, 47, 102, |
| 734 | /* 170 */ 38, 67, 42, 48, 37, 295, 296, 297, 69, 299, |
| 735 | /* 180 */ 372, 155, 426, 343, 343, 343, 343, 343, 343, 343, |
| 736 | /* 190 */ 343, 343, 343, 371, 157, 566, 77, 566, 426, 106, |
| 737 | /* 200 */ 76, 428, 429, 430, 431, 5, 6, 117, 385, 153, |
| 738 | /* 210 */ 152, 151, 523, 159, 119, 106, 416, 428, 429, 430, |
| 739 | /* 220 */ 431, 415, 427, 117, 385, 153, 152, 151, 386, 427, |
| 740 | /* 230 */ 129, 59, 60, 389, 1, 106, 521, 159, 119, 368, |
| 741 | /* 240 */ 11, 12, 2, 117, 385, 153, 152, 151, 65, 433, |
| 742 | /* 250 */ 432, 64, 63, 62, 61, 349, 433, 432, 136, 140, |
| 743 | /* 260 */ 138, 64, 63, 62, 61, 386, 75, 427, 59, 60, |
| 744 | /* 270 */ 53, 424, 422, 45, 137, 14, 368, 16, 18, 42, |
| 745 | /* 280 */ 55, 426, 154, 154, 154, 44, 145, 144, 426, 64, |
| 746 | /* 290 */ 63, 62, 61, 43, 433, 432, 64, 63, 62, 61, |
| 747 | /* 300 */ 428, 429, 430, 431, 19, 106, 114, 428, 429, 430, |
| 748 | /* 310 */ 431, 20, 68, 117, 385, 153, 152, 151, 15, 352, |
| 749 | /* 320 */ 23, 22, 21, 384, 376, 17, 426, 370, 156, 24, |
| 750 | /* 330 */ 26, 143, 139, 423, 140, 138, 64, 63, 62, 61, |
| 751 | /* 340 */ 374, 57, 106, 58, 375, 428, 429, 430, 431, 383, |
| 752 | /* 350 */ 117, 385, 153, 152, 151, 55, 64, 63, 62, 61, |
| 753 | /* 360 */ 369, 145, 144, 403, 404, 405, 406, 158, 43, 348, |
| 754 | /* 370 */ 70, 140, 138, 64, 63, 62, 61, 386, 464, 39, |
| 755 | /* 380 */ 59, 60, 64, 63, 62, 61, 437, 437, 368, 118, |
| 756 | /* 390 */ 437, 42, 55, 437, 437, 383, 22, 21, 145, 144, |
| 757 | /* 400 */ 395, 49, 437, 524, 24, 43, 143, 139, 423, 437, |
| 758 | /* 410 */ 437, 131, 464, 124, 437, 437, 437, 396, 397, 398, |
| 759 | /* 420 */ 400, 80, 437, 302, 79, 437, 403, 404, 405, 406, |
| 760 | /* 430 */ 440, 446, 29, 22, 21, 386, 442, 437, 59, 60, |
| 761 | /* 440 */ 437, 24, 524, 143, 139, 423, 368, 161, 524, 42, |
| 762 | /* 450 */ 437, 524, 27, 437, 106, 437, 386, 141, 437, 59, |
| 763 | /* 460 */ 60, 437, 117, 385, 153, 152, 151, 368, 437, 437, |
| 764 | /* 470 */ 42, 437, 386, 142, 437, 59, 60, 386, 130, 128, |
| 765 | /* 480 */ 59, 60, 437, 368, 370, 156, 42, 437, 368, 437, |
| 766 | /* 490 */ 386, 42, 437, 59, 60, 386, 437, 437, 59, 60, |
| 767 | /* 500 */ 437, 102, 437, 437, 42, 437, 368, 437, 437, 40, |
| 768 | /* 510 */ 437, 437, 106, 437, 386, 437, 437, 59, 60, 437, |
| 769 | /* 520 */ 117, 385, 153, 152, 151, 368, 437, 437, 41, 64, |
| 770 | /* 530 */ 63, 62, 61, 106, 64, 63, 62, 61, 437, 160, |
| 771 | /* 540 */ 437, 117, 385, 153, 152, 151, 118, 387, 56, 106, |
| 772 | /* 550 */ 437, 437, 437, 437, 106, 437, 437, 117, 385, 153, |
| 773 | /* 560 */ 152, 151, 117, 385, 153, 152, 151, 106, 64, 63, |
| 774 | /* 570 */ 62, 61, 106, 437, 437, 117, 385, 153, 152, 151, |
| 775 | /* 580 */ 117, 385, 153, 152, 151, 419, 420, 333, 437, 437, |
| 776 | /* 590 */ 437, 106, 437, 437, 437, 88, 437, 437, 437, 117, |
| 777 | /* 600 */ 385, 153, 152, 151, 120, 159, 119, 437, 437, 437, |
| 778 | /* 610 */ 10, 470, 470, 437, 333, 333, 333, 333, 417, 418, |
| 779 | /* 620 */ 73, 437, 146, 437, 437, 437, 150, 112, 113, 120, |
| 780 | /* 630 */ 159, 119, 437, 74, 437, 146, 64, 63, 62, 61, |
| 781 | /* 640 */ 122, 113, 120, 159, 119, 72, 437, 146, 437, 347, |
| 782 | /* 650 */ 437, 147, 123, 113, 120, 159, 119, 437, 74, 437, |
| 783 | /* 660 */ 146, 437, 437, 437, 147, 488, 113, 120, 159, 119, |
| 784 | /* 670 */ 437, 437, 74, 437, 146, 437, 147, 437, 437, 487, |
| 785 | /* 680 */ 113, 120, 159, 119, 74, 437, 146, 437, 437, 147, |
| 786 | /* 690 */ 437, 481, 113, 120, 159, 119, 437, 437, 437, 74, |
| 787 | /* 700 */ 437, 146, 88, 147, 437, 437, 475, 113, 120, 159, |
| 788 | /* 710 */ 119, 120, 159, 119, 74, 147, 146, 437, 110, 110, |
| 789 | /* 720 */ 437, 474, 113, 120, 159, 119, 437, 74, 437, 146, |
| 790 | /* 730 */ 147, 437, 437, 150, 471, 113, 120, 159, 119, 437, |
| 791 | /* 740 */ 74, 437, 146, 437, 437, 147, 437, 132, 113, 120, |
| 792 | /* 750 */ 159, 119, 74, 437, 146, 437, 437, 437, 147, 507, |
| 793 | /* 760 */ 113, 120, 159, 119, 437, 74, 437, 146, 437, 437, |
| 794 | /* 770 */ 437, 147, 135, 113, 120, 159, 119, 437, 437, 74, |
| 795 | /* 780 */ 437, 146, 437, 147, 437, 437, 515, 113, 120, 159, |
| 796 | /* 790 */ 119, 74, 437, 146, 437, 437, 147, 437, 517, 113, |
| 797 | /* 800 */ 120, 159, 119, 437, 437, 437, 74, 437, 146, 88, |
| 798 | /* 810 */ 147, 437, 437, 514, 113, 120, 159, 119, 120, 159, |
| 799 | /* 820 */ 119, 74, 147, 146, 437, 111, 111, 437, 516, 113, |
| 800 | /* 830 */ 120, 159, 119, 437, 74, 437, 146, 147, 437, 437, |
| 801 | /* 840 */ 150, 513, 113, 120, 159, 119, 437, 74, 437, 146, |
| 802 | /* 850 */ 437, 437, 147, 437, 512, 113, 120, 159, 119, 74, |
| 803 | /* 860 */ 437, 146, 437, 437, 437, 147, 511, 113, 120, 159, |
| 804 | /* 870 */ 119, 437, 74, 437, 146, 437, 437, 437, 147, 510, |
| 805 | /* 880 */ 113, 120, 159, 119, 437, 437, 74, 437, 146, 437, |
| 806 | /* 890 */ 147, 437, 437, 509, 113, 120, 159, 119, 74, 437, |
| 807 | /* 900 */ 146, 107, 437, 147, 437, 148, 113, 120, 159, 119, |
| 808 | /* 910 */ 120, 159, 119, 74, 469, 146, 85, 147, 437, 437, |
| 809 | /* 920 */ 149, 113, 120, 159, 119, 120, 159, 119, 74, 147, |
| 810 | /* 930 */ 146, 437, 150, 437, 437, 134, 113, 120, 159, 119, |
| 811 | /* 940 */ 437, 74, 437, 146, 147, 107, 437, 150, 133, 113, |
| 812 | /* 950 */ 120, 159, 119, 437, 120, 159, 119, 437, 454, 147, |
| 813 | /* 960 */ 437, 64, 63, 62, 61, 78, 78, 437, 88, 437, |
| 814 | /* 970 */ 437, 437, 147, 437, 383, 437, 150, 120, 159, 119, |
| 815 | /* 980 */ 52, 437, 437, 437, 82, 437, 88, 437, 437, 437, |
| 816 | /* 990 */ 437, 457, 437, 34, 107, 120, 159, 119, 437, 150, |
| 817 | /* 1000 */ 437, 437, 466, 120, 159, 119, 437, 454, 437, 109, |
| 818 | /* 1010 */ 439, 446, 29, 437, 437, 558, 442, 150, 437, 437, |
| 819 | /* 1020 */ 107, 64, 63, 62, 61, 150, 86, 161, 437, 120, |
| 820 | /* 1030 */ 159, 119, 27, 443, 388, 120, 159, 119, 98, 437, |
| 821 | /* 1040 */ 437, 437, 437, 89, 437, 437, 437, 120, 159, 119, |
| 822 | /* 1050 */ 90, 150, 120, 159, 119, 87, 437, 150, 437, 120, |
| 823 | /* 1060 */ 159, 119, 99, 437, 120, 159, 119, 437, 100, 150, |
| 824 | /* 1070 */ 437, 120, 159, 119, 150, 437, 437, 120, 159, 119, |
| 825 | /* 1080 */ 101, 150, 64, 63, 62, 61, 150, 437, 437, 120, |
| 826 | /* 1090 */ 159, 119, 437, 150, 91, 383, 437, 103, 437, 150, |
| 827 | /* 1100 */ 437, 437, 437, 120, 159, 119, 120, 159, 119, 92, |
| 828 | /* 1110 */ 437, 150, 93, 437, 437, 437, 437, 437, 120, 159, |
| 829 | /* 1120 */ 119, 120, 159, 119, 437, 150, 104, 437, 150, 437, |
| 830 | /* 1130 */ 437, 437, 437, 437, 437, 120, 159, 119, 94, 437, |
| 831 | /* 1140 */ 150, 437, 437, 150, 437, 437, 437, 120, 159, 119, |
| 832 | /* 1150 */ 105, 437, 437, 95, 437, 437, 437, 150, 437, 120, |
| 833 | /* 1160 */ 159, 119, 120, 159, 119, 96, 437, 437, 97, 150, |
| 834 | /* 1170 */ 437, 437, 437, 437, 120, 159, 119, 120, 159, 119, |
| 835 | /* 1180 */ 538, 150, 437, 437, 150, 437, 437, 437, 437, 120, |
| 836 | /* 1190 */ 159, 119, 437, 537, 437, 437, 150, 536, 437, 150, |
| 837 | /* 1200 */ 437, 437, 120, 159, 119, 535, 120, 159, 119, 115, |
| 838 | /* 1210 */ 437, 150, 116, 437, 120, 159, 119, 437, 120, 159, |
| 839 | /* 1220 */ 119, 120, 159, 119, 150, 437, 437, 437, 150, 437, |
| 840 | /* 1230 */ 437, 437, 437, 437, 437, 437, 150, 437, 437, 437, |
| 841 | /* 1240 */ 150, 437, 437, 150, |
| 842 | }; |
| 843 | static const YYCODETYPE yy_lookahead[] = { |
| 844 | /* 0 */ 0, 0, 129, 97, 98, 99, 101, 101, 4, 5, |
| 845 | /* 10 */ 10, 10, 106, 107, 108, 109, 110, 101, 18, 19, |
| 846 | /* 20 */ 20, 100, 22, 101, 103, 104, 26, 4, 5, 6, |
| 847 | /* 30 */ 7, 31, 32, 33, 34, 35, 130, 37, 38, 39, |
| 848 | /* 40 */ 40, 102, 42, 43, 128, 23, 23, 47, 48, 49, |
| 849 | /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, |
| 850 | /* 60 */ 60, 0, 4, 5, 6, 7, 95, 96, 97, 98, |
| 851 | /* 70 */ 10, 10, 121, 102, 12, 17, 108, 109, 110, 18, |
| 852 | /* 80 */ 19, 20, 123, 22, 113, 17, 26, 26, 117, 118, |
| 853 | /* 90 */ 2, 23, 31, 32, 33, 34, 35, 3, 37, 38, |
| 854 | /* 100 */ 39, 40, 111, 42, 43, 108, 109, 110, 47, 48, |
| 855 | /* 110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, |
| 856 | /* 120 */ 59, 60, 1, 2, 36, 4, 5, 4, 5, 6, |
| 857 | /* 130 */ 7, 8, 111, 12, 2, 124, 15, 17, 1, 2, |
| 858 | /* 140 */ 78, 4, 5, 22, 15, 24, 25, 16, 86, 12, |
| 859 | /* 150 */ 29, 30, 15, 6, 7, 18, 19, 20, 1, 92, |
| 860 | /* 160 */ 93, 4, 5, 108, 109, 110, 29, 30, 36, 12, |
| 861 | /* 170 */ 100, 41, 15, 103, 104, 18, 19, 20, 84, 22, |
| 862 | /* 180 */ 24, 25, 61, 61, 62, 63, 64, 65, 66, 67, |
| 863 | /* 190 */ 68, 69, 70, 24, 25, 125, 126, 127, 61, 78, |
| 864 | /* 200 */ 46, 80, 81, 82, 83, 38, 38, 86, 87, 88, |
| 865 | /* 210 */ 89, 90, 108, 109, 110, 78, 39, 80, 81, 82, |
| 866 | /* 220 */ 83, 39, 2, 86, 87, 88, 89, 90, 1, 2, |
| 867 | /* 230 */ 45, 4, 5, 17, 13, 78, 108, 109, 110, 12, |
| 868 | /* 240 */ 23, 71, 15, 86, 87, 88, 89, 90, 94, 29, |
| 869 | /* 250 */ 30, 4, 5, 6, 7, 17, 29, 30, 75, 2, |
| 870 | /* 260 */ 3, 4, 5, 6, 7, 1, 46, 2, 4, 5, |
| 871 | /* 270 */ 23, 76, 76, 16, 77, 3, 12, 3, 3, 15, |
| 872 | /* 280 */ 23, 61, 18, 19, 20, 36, 29, 30, 61, 4, |
| 873 | /* 290 */ 5, 6, 7, 36, 29, 30, 4, 5, 6, 7, |
| 874 | /* 300 */ 80, 81, 82, 83, 3, 78, 91, 80, 81, 82, |
| 875 | /* 310 */ 83, 3, 3, 86, 87, 88, 89, 90, 33, 73, |
| 876 | /* 320 */ 23, 64, 65, 17, 26, 33, 61, 24, 25, 72, |
| 877 | /* 330 */ 15, 74, 75, 76, 2, 3, 4, 5, 6, 7, |
| 878 | /* 340 */ 26, 15, 78, 15, 26, 80, 81, 82, 83, 17, |
| 879 | /* 350 */ 86, 87, 88, 89, 90, 23, 4, 5, 6, 7, |
| 880 | /* 360 */ 12, 29, 30, 27, 28, 29, 30, 85, 36, 17, |
| 881 | /* 370 */ 3, 2, 3, 4, 5, 6, 7, 1, 2, 11, |
| 882 | /* 380 */ 4, 5, 4, 5, 6, 7, 131, 131, 12, 86, |
| 883 | /* 390 */ 131, 15, 23, 131, 131, 17, 64, 65, 29, 30, |
| 884 | /* 400 */ 1, 23, 131, 46, 72, 36, 74, 75, 76, 131, |
| 885 | /* 410 */ 131, 12, 36, 14, 131, 131, 131, 18, 19, 20, |
| 886 | /* 420 */ 21, 22, 131, 24, 25, 131, 27, 28, 29, 30, |
| 887 | /* 430 */ 96, 97, 98, 64, 65, 1, 102, 131, 4, 5, |
| 888 | /* 440 */ 131, 72, 85, 74, 75, 76, 12, 113, 91, 15, |
| 889 | /* 450 */ 131, 94, 118, 131, 78, 131, 1, 2, 131, 4, |
| 890 | /* 460 */ 5, 131, 86, 87, 88, 89, 90, 12, 131, 131, |
| 891 | /* 470 */ 15, 131, 1, 2, 131, 4, 5, 1, 44, 45, |
| 892 | /* 480 */ 4, 5, 131, 12, 24, 25, 15, 131, 12, 131, |
| 893 | /* 490 */ 1, 15, 131, 4, 5, 1, 131, 131, 4, 5, |
| 894 | /* 500 */ 131, 12, 131, 131, 15, 131, 12, 131, 131, 15, |
| 895 | /* 510 */ 131, 131, 78, 131, 1, 131, 131, 4, 5, 131, |
| 896 | /* 520 */ 86, 87, 88, 89, 90, 12, 131, 131, 15, 4, |
| 897 | /* 530 */ 5, 6, 7, 78, 4, 5, 6, 7, 131, 79, |
| 898 | /* 540 */ 131, 86, 87, 88, 89, 90, 86, 17, 23, 78, |
| 899 | /* 550 */ 131, 131, 131, 131, 78, 131, 131, 86, 87, 88, |
| 900 | /* 560 */ 89, 90, 86, 87, 88, 89, 90, 78, 4, 5, |
| 901 | /* 570 */ 6, 7, 78, 131, 131, 86, 87, 88, 89, 90, |
| 902 | /* 580 */ 86, 87, 88, 89, 90, 18, 19, 20, 131, 131, |
| 903 | /* 590 */ 131, 78, 131, 131, 131, 99, 131, 131, 131, 86, |
| 904 | /* 600 */ 87, 88, 89, 90, 108, 109, 110, 131, 131, 131, |
| 905 | /* 610 */ 114, 115, 116, 131, 47, 48, 49, 50, 51, 52, |
| 906 | /* 620 */ 99, 131, 101, 131, 131, 131, 130, 106, 107, 108, |
| 907 | /* 630 */ 109, 110, 131, 99, 131, 101, 4, 5, 6, 7, |
| 908 | /* 640 */ 106, 107, 108, 109, 110, 99, 131, 101, 131, 17, |
| 909 | /* 650 */ 131, 130, 106, 107, 108, 109, 110, 131, 99, 131, |
| 910 | /* 660 */ 101, 131, 131, 131, 130, 106, 107, 108, 109, 110, |
| 911 | /* 670 */ 131, 131, 99, 131, 101, 131, 130, 131, 131, 106, |
| 912 | /* 680 */ 107, 108, 109, 110, 99, 131, 101, 131, 131, 130, |
| 913 | /* 690 */ 131, 106, 107, 108, 109, 110, 131, 131, 131, 99, |
| 914 | /* 700 */ 131, 101, 99, 130, 131, 131, 106, 107, 108, 109, |
| 915 | /* 710 */ 110, 108, 109, 110, 99, 130, 101, 131, 115, 116, |
| 916 | /* 720 */ 131, 106, 107, 108, 109, 110, 131, 99, 131, 101, |
| 917 | /* 730 */ 130, 131, 131, 130, 106, 107, 108, 109, 110, 131, |
| 918 | /* 740 */ 99, 131, 101, 131, 131, 130, 131, 106, 107, 108, |
| 919 | /* 750 */ 109, 110, 99, 131, 101, 131, 131, 131, 130, 106, |
| 920 | /* 760 */ 107, 108, 109, 110, 131, 99, 131, 101, 131, 131, |
| 921 | /* 770 */ 131, 130, 106, 107, 108, 109, 110, 131, 131, 99, |
| 922 | /* 780 */ 131, 101, 131, 130, 131, 131, 106, 107, 108, 109, |
| 923 | /* 790 */ 110, 99, 131, 101, 131, 131, 130, 131, 106, 107, |
| 924 | /* 800 */ 108, 109, 110, 131, 131, 131, 99, 131, 101, 99, |
| 925 | /* 810 */ 130, 131, 131, 106, 107, 108, 109, 110, 108, 109, |
| 926 | /* 820 */ 110, 99, 130, 101, 131, 115, 116, 131, 106, 107, |
| 927 | /* 830 */ 108, 109, 110, 131, 99, 131, 101, 130, 131, 131, |
| 928 | /* 840 */ 130, 106, 107, 108, 109, 110, 131, 99, 131, 101, |
| 929 | /* 850 */ 131, 131, 130, 131, 106, 107, 108, 109, 110, 99, |
| 930 | /* 860 */ 131, 101, 131, 131, 131, 130, 106, 107, 108, 109, |
| 931 | /* 870 */ 110, 131, 99, 131, 101, 131, 131, 131, 130, 106, |
| 932 | /* 880 */ 107, 108, 109, 110, 131, 131, 99, 131, 101, 131, |
| 933 | /* 890 */ 130, 131, 131, 106, 107, 108, 109, 110, 99, 131, |
| 934 | /* 900 */ 101, 99, 131, 130, 131, 106, 107, 108, 109, 110, |
| 935 | /* 910 */ 108, 109, 110, 99, 112, 101, 99, 130, 131, 131, |
| 936 | /* 920 */ 106, 107, 108, 109, 110, 108, 109, 110, 99, 130, |
| 937 | /* 930 */ 101, 131, 130, 131, 131, 106, 107, 108, 109, 110, |
| 938 | /* 940 */ 131, 99, 131, 101, 130, 99, 131, 130, 106, 107, |
| 939 | /* 950 */ 108, 109, 110, 131, 108, 109, 110, 131, 112, 130, |
| 940 | /* 960 */ 131, 4, 5, 6, 7, 119, 120, 131, 99, 131, |
| 941 | /* 970 */ 131, 131, 130, 131, 17, 131, 130, 108, 109, 110, |
| 942 | /* 980 */ 23, 131, 131, 131, 115, 131, 99, 131, 131, 131, |
| 943 | /* 990 */ 131, 122, 131, 124, 99, 108, 109, 110, 131, 130, |
| 944 | /* 1000 */ 131, 131, 115, 108, 109, 110, 131, 112, 131, 95, |
| 945 | /* 1010 */ 96, 97, 98, 131, 131, 120, 102, 130, 131, 131, |
| 946 | /* 1020 */ 99, 4, 5, 6, 7, 130, 99, 113, 131, 108, |
| 947 | /* 1030 */ 109, 110, 118, 112, 17, 108, 109, 110, 99, 131, |
| 948 | /* 1040 */ 131, 131, 131, 99, 131, 131, 131, 108, 109, 110, |
| 949 | /* 1050 */ 99, 130, 108, 109, 110, 99, 131, 130, 131, 108, |
| 950 | /* 1060 */ 109, 110, 99, 131, 108, 109, 110, 131, 99, 130, |
| 951 | /* 1070 */ 131, 108, 109, 110, 130, 131, 131, 108, 109, 110, |
| 952 | /* 1080 */ 99, 130, 4, 5, 6, 7, 130, 131, 131, 108, |
| 953 | /* 1090 */ 109, 110, 131, 130, 99, 17, 131, 99, 131, 130, |
| 954 | /* 1100 */ 131, 131, 131, 108, 109, 110, 108, 109, 110, 99, |
| 955 | /* 1110 */ 131, 130, 99, 131, 131, 131, 131, 131, 108, 109, |
| 956 | /* 1120 */ 110, 108, 109, 110, 131, 130, 99, 131, 130, 131, |
| 957 | /* 1130 */ 131, 131, 131, 131, 131, 108, 109, 110, 99, 131, |
| 958 | /* 1140 */ 130, 131, 131, 130, 131, 131, 131, 108, 109, 110, |
| 959 | /* 1150 */ 99, 131, 131, 99, 131, 131, 131, 130, 131, 108, |
| 960 | /* 1160 */ 109, 110, 108, 109, 110, 99, 131, 131, 99, 130, |
| 961 | /* 1170 */ 131, 131, 131, 131, 108, 109, 110, 108, 109, 110, |
| 962 | /* 1180 */ 99, 130, 131, 131, 130, 131, 131, 131, 131, 108, |
| 963 | /* 1190 */ 109, 110, 131, 99, 131, 131, 130, 99, 131, 130, |
| 964 | /* 1200 */ 131, 131, 108, 109, 110, 99, 108, 109, 110, 99, |
| 965 | /* 1210 */ 131, 130, 99, 131, 108, 109, 110, 131, 108, 109, |
| 966 | /* 1220 */ 110, 108, 109, 110, 130, 131, 131, 131, 130, 131, |
| 967 | /* 1230 */ 131, 131, 131, 131, 131, 131, 130, 131, 131, 131, |
| 968 | /* 1240 */ 130, 131, 131, 130, 95, 95, 95, 95, 95, 95, |
| 969 | /* 1250 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 970 | /* 1260 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 971 | /* 1270 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 972 | /* 1280 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 973 | /* 1290 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 974 | /* 1300 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 975 | /* 1310 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 976 | /* 1320 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 977 | /* 1330 */ 95, 95, 95, 95, 95, 95, 95, 95, 95, |
| 978 | }; |
| 979 | #define YY_SHIFT_COUNT (161) |
| 980 | #define YY_SHIFT_MIN (0) |
| 981 | #define YY_SHIFT_MAX (1078) |
| 982 | static const unsigned short int yy_shift_ofst[] = { |
| 983 | /* 0 */ 399, 121, 137, 227, 227, 227, 227, 227, 227, 227, |
| 984 | /* 10 */ 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, |
| 985 | /* 20 */ 227, 227, 227, 227, 227, 227, 227, 157, 434, 476, |
| 986 | /* 30 */ 157, 399, 376, 376, 0, 61, 399, 489, 476, 489, |
| 987 | /* 40 */ 264, 264, 264, 455, 471, 476, 476, 476, 476, 476, |
| 988 | /* 50 */ 476, 494, 476, 476, 513, 476, 476, 476, 476, 476, |
| 989 | /* 60 */ 476, 476, 476, 476, 476, 567, 62, 62, 62, 62, |
| 990 | /* 70 */ 62, 220, 257, 332, 369, 265, 265, 336, 22, 1244, |
| 991 | /* 80 */ 1244, 1244, 1244, 122, 122, 378, 957, 58, 123, 285, |
| 992 | /* 90 */ 292, 352, 23, 632, 247, 1017, 525, 530, 1078, 564, |
| 993 | /* 100 */ 564, 564, 357, 564, 564, 564, 460, 564, 303, 60, |
| 994 | /* 110 */ 88, 132, 68, 4, 67, 147, 147, 156, 169, 94, |
| 995 | /* 120 */ 154, 1, 120, 131, 129, 130, 167, 168, 177, 182, |
| 996 | /* 130 */ 185, 221, 216, 217, 170, 238, 195, 183, 197, 196, |
| 997 | /* 140 */ 272, 274, 275, 249, 301, 308, 309, 215, 246, 297, |
| 998 | /* 150 */ 215, 315, 326, 328, 306, 298, 314, 318, 348, 282, |
| 999 | /* 160 */ 367, 368, |
| 1000 | }; |
| 1001 | #define YY_REDUCE_COUNT (82) |
| 1002 | #define YY_REDUCE_MIN (-127) |
| 1003 | #define YY_REDUCE_MAX (1113) |
| 1004 | static const short yy_reduce_ofst[] = { |
| 1005 | /* 0 */ -29, -94, 521, 534, 546, 559, 573, 585, 600, 615, |
| 1006 | /* 10 */ 628, 641, 653, 666, 680, 692, 707, 722, 735, 748, |
| 1007 | /* 20 */ 760, 773, 787, 799, 814, 829, 842, 846, 496, 869, |
| 1008 | /* 30 */ 895, 914, 603, 710, 70, 70, 334, 802, 887, 921, |
| 1009 | /* 40 */ 817, 927, 939, 944, 951, 956, 963, 969, 981, 995, |
| 1010 | /* 50 */ 998, 1010, 1013, 1027, 1039, 1051, 1054, 1066, 1069, 1081, |
| 1011 | /* 60 */ 1094, 1098, 1106, 1110, 1113, -79, -32, -3, 55, 104, |
| 1012 | /* 70 */ 128, -84, -127, -127, -127, -95, -78, -61, -49, -41, |
| 1013 | /* 80 */ -9, 21, 11, |
| 1014 | }; |
| 1015 | static const YYACTIONTYPE yy_default[] = { |
| 1016 | /* 0 */ 441, 435, 435, 435, 435, 435, 435, 435, 435, 435, |
| 1017 | /* 10 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, |
| 1018 | /* 20 */ 435, 435, 435, 435, 435, 435, 435, 435, 464, 565, |
| 1019 | /* 30 */ 435, 441, 569, 476, 570, 570, 441, 435, 435, 435, |
| 1020 | /* 40 */ 435, 435, 435, 435, 435, 435, 435, 435, 468, 435, |
| 1021 | /* 50 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, |
| 1022 | /* 60 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, |
| 1023 | /* 70 */ 435, 435, 435, 435, 435, 435, 435, 435, 447, 461, |
| 1024 | /* 80 */ 498, 498, 565, 459, 484, 435, 435, 435, 462, 435, |
| 1025 | /* 90 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 479, |
| 1026 | /* 100 */ 477, 467, 450, 502, 501, 500, 435, 555, 435, 435, |
| 1027 | /* 110 */ 435, 435, 435, 577, 435, 534, 533, 529, 435, 522, |
| 1028 | /* 120 */ 519, 435, 435, 435, 435, 482, 435, 435, 435, 435, |
| 1029 | /* 130 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, |
| 1030 | /* 140 */ 435, 435, 435, 435, 435, 435, 435, 581, 435, 435, |
| 1031 | /* 150 */ 435, 435, 435, 435, 435, 435, 435, 435, 435, 590, |
| 1032 | /* 160 */ 435, 435, |
| 1033 | }; |
| 1034 | /********** End of lemon-generated parsing tables *****************************/ |
| 1035 | |
| 1036 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 1037 | ** If a construct like the following: |
| @@ -1372,11 +1379,11 @@ | |
| 1379 | /* 6 */ "element ::= PLACENAME COLON unnamed_element", |
| 1380 | /* 7 */ "element ::= PLACENAME COLON position", |
| 1381 | /* 8 */ "element ::= unnamed_element", |
| 1382 | /* 9 */ "element ::= print prlist", |
| 1383 | /* 10 */ "element ::= ASSERT LP expr EQ expr RP", |
| 1384 | /* 11 */ "element ::= ASSERT LP position EQ position RP", |
| 1385 | /* 12 */ "rvalue ::= PLACENAME", |
| 1386 | /* 13 */ "pritem ::= FILL", |
| 1387 | /* 14 */ "pritem ::= COLOR", |
| 1388 | /* 15 */ "pritem ::= THICKNESS", |
| 1389 | /* 16 */ "pritem ::= rvalue", |
| @@ -1463,60 +1470,61 @@ | |
| 1470 | /* 97 */ "expr ::= expr STAR expr", |
| 1471 | /* 98 */ "expr ::= expr SLASH expr", |
| 1472 | /* 99 */ "expr ::= MINUS expr", |
| 1473 | /* 100 */ "expr ::= PLUS expr", |
| 1474 | /* 101 */ "expr ::= LP expr RP", |
| 1475 | /* 102 */ "expr ::= LP FILL|COLOR|THICKNESS RP", |
| 1476 | /* 103 */ "expr ::= NUMBER", |
| 1477 | /* 104 */ "expr ::= ID", |
| 1478 | /* 105 */ "expr ::= FUNC1 LP expr RP", |
| 1479 | /* 106 */ "expr ::= FUNC2 LP expr COMMA expr RP", |
| 1480 | /* 107 */ "expr ::= DIST LP position COMMA position RP", |
| 1481 | /* 108 */ "expr ::= place2 DOT_XY X", |
| 1482 | /* 109 */ "expr ::= place2 DOT_XY Y", |
| 1483 | /* 110 */ "expr ::= object DOT_L numproperty", |
| 1484 | /* 111 */ "expr ::= object DOT_L dashproperty", |
| 1485 | /* 112 */ "expr ::= object DOT_L colorproperty", |
| 1486 | /* 113 */ "lvalue ::= ID", |
| 1487 | /* 114 */ "lvalue ::= FILL", |
| 1488 | /* 115 */ "lvalue ::= COLOR", |
| 1489 | /* 116 */ "lvalue ::= THICKNESS", |
| 1490 | /* 117 */ "rvalue ::= expr", |
| 1491 | /* 118 */ "print ::= PRINT", |
| 1492 | /* 119 */ "prlist ::= pritem", |
| 1493 | /* 120 */ "prlist ::= prlist prsep pritem", |
| 1494 | /* 121 */ "direction ::= UP", |
| 1495 | /* 122 */ "direction ::= DOWN", |
| 1496 | /* 123 */ "direction ::= LEFT", |
| 1497 | /* 124 */ "direction ::= RIGHT", |
| 1498 | /* 125 */ "optrelexpr ::= relexpr", |
| 1499 | /* 126 */ "attribute_list ::= alist", |
| 1500 | /* 127 */ "alist ::=", |
| 1501 | /* 128 */ "alist ::= alist attribute", |
| 1502 | /* 129 */ "attribute ::= boolproperty", |
| 1503 | /* 130 */ "attribute ::= WITH withclause", |
| 1504 | /* 131 */ "go ::= GO", |
| 1505 | /* 132 */ "go ::=", |
| 1506 | /* 133 */ "even ::= UNTIL EVEN WITH", |
| 1507 | /* 134 */ "even ::= EVEN WITH", |
| 1508 | /* 135 */ "dashproperty ::= DOTTED", |
| 1509 | /* 136 */ "dashproperty ::= DASHED", |
| 1510 | /* 137 */ "colorproperty ::= FILL", |
| 1511 | /* 138 */ "colorproperty ::= COLOR", |
| 1512 | /* 139 */ "position ::= place", |
| 1513 | /* 140 */ "between ::= WAY BETWEEN", |
| 1514 | /* 141 */ "between ::= BETWEEN", |
| 1515 | /* 142 */ "between ::= OF THE WAY BETWEEN", |
| 1516 | /* 143 */ "place ::= place2", |
| 1517 | /* 144 */ "edge ::= CENTER", |
| 1518 | /* 145 */ "edge ::= EDGEPT", |
| 1519 | /* 146 */ "edge ::= TOP", |
| 1520 | /* 147 */ "edge ::= BOTTOM", |
| 1521 | /* 148 */ "edge ::= START", |
| 1522 | /* 149 */ "edge ::= END", |
| 1523 | /* 150 */ "edge ::= RIGHT", |
| 1524 | /* 151 */ "edge ::= LEFT", |
| 1525 | /* 152 */ "object ::= objectname", |
| 1526 | }; |
| 1527 | #endif /* NDEBUG */ |
| 1528 | |
| 1529 | |
| 1530 | #if YYSTACKDEPTH<=0 |
| @@ -1642,20 +1650,20 @@ | |
| 1650 | /********* Begin destructor definitions ***************************************/ |
| 1651 | case 95: /* element_list */ |
| 1652 | { |
| 1653 | #line 467 "pikchr.y" |
| 1654 | pik_elist_free(p,(yypminor->yy56)); |
| 1655 | #line 1680 "pikchr.c" |
| 1656 | } |
| 1657 | break; |
| 1658 | case 96: /* element */ |
| 1659 | case 97: /* unnamed_element */ |
| 1660 | case 98: /* basetype */ |
| 1661 | { |
| 1662 | #line 469 "pikchr.y" |
| 1663 | pik_elem_free(p,(yypminor->yy226)); |
| 1664 | #line 1689 "pikchr.c" |
| 1665 | } |
| 1666 | break; |
| 1667 | /********* End destructor definitions *****************************************/ |
| 1668 | default: break; /* If no destructor action specified: do nothing */ |
| 1669 | } |
| @@ -1872,11 +1880,11 @@ | |
| 1880 | ** stack every overflows */ |
| 1881 | /******** Begin %stack_overflow code ******************************************/ |
| 1882 | #line 501 "pikchr.y" |
| 1883 | |
| 1884 | pik_error(p, 0, "parser stack overflow"); |
| 1885 | #line 1910 "pikchr.c" |
| 1886 | /******** End %stack_overflow code ********************************************/ |
| 1887 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 1888 | pik_parserCTX_STORE |
| 1889 | } |
| 1890 | |
| @@ -1955,11 +1963,11 @@ | |
| 1963 | 96, /* (6) element ::= PLACENAME COLON unnamed_element */ |
| 1964 | 96, /* (7) element ::= PLACENAME COLON position */ |
| 1965 | 96, /* (8) element ::= unnamed_element */ |
| 1966 | 96, /* (9) element ::= print prlist */ |
| 1967 | 96, /* (10) element ::= ASSERT LP expr EQ expr RP */ |
| 1968 | 96, /* (11) element ::= ASSERT LP position EQ position RP */ |
| 1969 | 112, /* (12) rvalue ::= PLACENAME */ |
| 1970 | 120, /* (13) pritem ::= FILL */ |
| 1971 | 120, /* (14) pritem ::= COLOR */ |
| 1972 | 120, /* (15) pritem ::= THICKNESS */ |
| 1973 | 120, /* (16) pritem ::= rvalue */ |
| @@ -2046,60 +2054,61 @@ | |
| 2054 | 99, /* (97) expr ::= expr STAR expr */ |
| 2055 | 99, /* (98) expr ::= expr SLASH expr */ |
| 2056 | 99, /* (99) expr ::= MINUS expr */ |
| 2057 | 99, /* (100) expr ::= PLUS expr */ |
| 2058 | 99, /* (101) expr ::= LP expr RP */ |
| 2059 | 99, /* (102) expr ::= LP FILL|COLOR|THICKNESS RP */ |
| 2060 | 99, /* (103) expr ::= NUMBER */ |
| 2061 | 99, /* (104) expr ::= ID */ |
| 2062 | 99, /* (105) expr ::= FUNC1 LP expr RP */ |
| 2063 | 99, /* (106) expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2064 | 99, /* (107) expr ::= DIST LP position COMMA position RP */ |
| 2065 | 99, /* (108) expr ::= place2 DOT_XY X */ |
| 2066 | 99, /* (109) expr ::= place2 DOT_XY Y */ |
| 2067 | 99, /* (110) expr ::= object DOT_L numproperty */ |
| 2068 | 99, /* (111) expr ::= object DOT_L dashproperty */ |
| 2069 | 99, /* (112) expr ::= object DOT_L colorproperty */ |
| 2070 | 113, /* (113) lvalue ::= ID */ |
| 2071 | 113, /* (114) lvalue ::= FILL */ |
| 2072 | 113, /* (115) lvalue ::= COLOR */ |
| 2073 | 113, /* (116) lvalue ::= THICKNESS */ |
| 2074 | 112, /* (117) rvalue ::= expr */ |
| 2075 | 118, /* (118) print ::= PRINT */ |
| 2076 | 119, /* (119) prlist ::= pritem */ |
| 2077 | 119, /* (120) prlist ::= prlist prsep pritem */ |
| 2078 | 102, /* (121) direction ::= UP */ |
| 2079 | 102, /* (122) direction ::= DOWN */ |
| 2080 | 102, /* (123) direction ::= LEFT */ |
| 2081 | 102, /* (124) direction ::= RIGHT */ |
| 2082 | 116, /* (125) optrelexpr ::= relexpr */ |
| 2083 | 122, /* (126) attribute_list ::= alist */ |
| 2084 | 124, /* (127) alist ::= */ |
| 2085 | 124, /* (128) alist ::= alist attribute */ |
| 2086 | 125, /* (129) attribute ::= boolproperty */ |
| 2087 | 125, /* (130) attribute ::= WITH withclause */ |
| 2088 | 126, /* (131) go ::= GO */ |
| 2089 | 126, /* (132) go ::= */ |
| 2090 | 114, /* (133) even ::= UNTIL EVEN WITH */ |
| 2091 | 114, /* (134) even ::= EVEN WITH */ |
| 2092 | 103, /* (135) dashproperty ::= DOTTED */ |
| 2093 | 103, /* (136) dashproperty ::= DASHED */ |
| 2094 | 104, /* (137) colorproperty ::= FILL */ |
| 2095 | 104, /* (138) colorproperty ::= COLOR */ |
| 2096 | 106, /* (139) position ::= place */ |
| 2097 | 129, /* (140) between ::= WAY BETWEEN */ |
| 2098 | 129, /* (141) between ::= BETWEEN */ |
| 2099 | 129, /* (142) between ::= OF THE WAY BETWEEN */ |
| 2100 | 107, /* (143) place ::= place2 */ |
| 2101 | 101, /* (144) edge ::= CENTER */ |
| 2102 | 101, /* (145) edge ::= EDGEPT */ |
| 2103 | 101, /* (146) edge ::= TOP */ |
| 2104 | 101, /* (147) edge ::= BOTTOM */ |
| 2105 | 101, /* (148) edge ::= START */ |
| 2106 | 101, /* (149) edge ::= END */ |
| 2107 | 101, /* (150) edge ::= RIGHT */ |
| 2108 | 101, /* (151) edge ::= LEFT */ |
| 2109 | 108, /* (152) object ::= objectname */ |
| 2110 | }; |
| 2111 | |
| 2112 | /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number |
| 2113 | ** of symbols on the right-hand side of that rule. */ |
| 2114 | static const signed char yyRuleInfoNRhs[] = { |
| @@ -2112,11 +2121,11 @@ | |
| 2121 | -3, /* (6) element ::= PLACENAME COLON unnamed_element */ |
| 2122 | -3, /* (7) element ::= PLACENAME COLON position */ |
| 2123 | -1, /* (8) element ::= unnamed_element */ |
| 2124 | -2, /* (9) element ::= print prlist */ |
| 2125 | -6, /* (10) element ::= ASSERT LP expr EQ expr RP */ |
| 2126 | -6, /* (11) element ::= ASSERT LP position EQ position RP */ |
| 2127 | -1, /* (12) rvalue ::= PLACENAME */ |
| 2128 | -1, /* (13) pritem ::= FILL */ |
| 2129 | -1, /* (14) pritem ::= COLOR */ |
| 2130 | -1, /* (15) pritem ::= THICKNESS */ |
| 2131 | -1, /* (16) pritem ::= rvalue */ |
| @@ -2203,60 +2212,61 @@ | |
| 2212 | -3, /* (97) expr ::= expr STAR expr */ |
| 2213 | -3, /* (98) expr ::= expr SLASH expr */ |
| 2214 | -2, /* (99) expr ::= MINUS expr */ |
| 2215 | -2, /* (100) expr ::= PLUS expr */ |
| 2216 | -3, /* (101) expr ::= LP expr RP */ |
| 2217 | -3, /* (102) expr ::= LP FILL|COLOR|THICKNESS RP */ |
| 2218 | -1, /* (103) expr ::= NUMBER */ |
| 2219 | -1, /* (104) expr ::= ID */ |
| 2220 | -4, /* (105) expr ::= FUNC1 LP expr RP */ |
| 2221 | -6, /* (106) expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2222 | -6, /* (107) expr ::= DIST LP position COMMA position RP */ |
| 2223 | -3, /* (108) expr ::= place2 DOT_XY X */ |
| 2224 | -3, /* (109) expr ::= place2 DOT_XY Y */ |
| 2225 | -3, /* (110) expr ::= object DOT_L numproperty */ |
| 2226 | -3, /* (111) expr ::= object DOT_L dashproperty */ |
| 2227 | -3, /* (112) expr ::= object DOT_L colorproperty */ |
| 2228 | -1, /* (113) lvalue ::= ID */ |
| 2229 | -1, /* (114) lvalue ::= FILL */ |
| 2230 | -1, /* (115) lvalue ::= COLOR */ |
| 2231 | -1, /* (116) lvalue ::= THICKNESS */ |
| 2232 | -1, /* (117) rvalue ::= expr */ |
| 2233 | -1, /* (118) print ::= PRINT */ |
| 2234 | -1, /* (119) prlist ::= pritem */ |
| 2235 | -3, /* (120) prlist ::= prlist prsep pritem */ |
| 2236 | -1, /* (121) direction ::= UP */ |
| 2237 | -1, /* (122) direction ::= DOWN */ |
| 2238 | -1, /* (123) direction ::= LEFT */ |
| 2239 | -1, /* (124) direction ::= RIGHT */ |
| 2240 | -1, /* (125) optrelexpr ::= relexpr */ |
| 2241 | -1, /* (126) attribute_list ::= alist */ |
| 2242 | 0, /* (127) alist ::= */ |
| 2243 | -2, /* (128) alist ::= alist attribute */ |
| 2244 | -1, /* (129) attribute ::= boolproperty */ |
| 2245 | -2, /* (130) attribute ::= WITH withclause */ |
| 2246 | -1, /* (131) go ::= GO */ |
| 2247 | 0, /* (132) go ::= */ |
| 2248 | -3, /* (133) even ::= UNTIL EVEN WITH */ |
| 2249 | -2, /* (134) even ::= EVEN WITH */ |
| 2250 | -1, /* (135) dashproperty ::= DOTTED */ |
| 2251 | -1, /* (136) dashproperty ::= DASHED */ |
| 2252 | -1, /* (137) colorproperty ::= FILL */ |
| 2253 | -1, /* (138) colorproperty ::= COLOR */ |
| 2254 | -1, /* (139) position ::= place */ |
| 2255 | -2, /* (140) between ::= WAY BETWEEN */ |
| 2256 | -1, /* (141) between ::= BETWEEN */ |
| 2257 | -4, /* (142) between ::= OF THE WAY BETWEEN */ |
| 2258 | -1, /* (143) place ::= place2 */ |
| 2259 | -1, /* (144) edge ::= CENTER */ |
| 2260 | -1, /* (145) edge ::= EDGEPT */ |
| 2261 | -1, /* (146) edge ::= TOP */ |
| 2262 | -1, /* (147) edge ::= BOTTOM */ |
| 2263 | -1, /* (148) edge ::= START */ |
| 2264 | -1, /* (149) edge ::= END */ |
| 2265 | -1, /* (150) edge ::= RIGHT */ |
| 2266 | -1, /* (151) edge ::= LEFT */ |
| 2267 | -1, /* (152) object ::= objectname */ |
| 2268 | }; |
| 2269 | |
| 2270 | static void yy_accept(yyParser*); /* Forward Declaration */ |
| 2271 | |
| 2272 | /* |
| @@ -2282,12 +2292,13 @@ | |
| 2292 | int yysize; /* Amount to pop the stack */ |
| 2293 | pik_parserARG_FETCH |
| 2294 | (void)yyLookahead; |
| 2295 | (void)yyLookaheadToken; |
| 2296 | yymsp = yypParser->yytos; |
| 2297 | assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ); |
| 2298 | #ifndef NDEBUG |
| 2299 | if( yyTraceFILE ){ |
| 2300 | yysize = yyRuleInfoNRhs[yyruleno]; |
| 2301 | if( yysize ){ |
| 2302 | fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", |
| 2303 | yyTracePrompt, |
| 2304 | yyruleno, yyRuleName[yyruleno], |
| @@ -2345,639 +2356,644 @@ | |
| 2356 | /********** Begin reduce actions **********************************************/ |
| 2357 | YYMINORTYPE yylhsminor; |
| 2358 | case 0: /* document ::= element_list */ |
| 2359 | #line 505 "pikchr.y" |
| 2360 | {pik_render(p,yymsp[0].minor.yy56);} |
| 2361 | #line 2386 "pikchr.c" |
| 2362 | break; |
| 2363 | case 1: /* element_list ::= element */ |
| 2364 | #line 508 "pikchr.y" |
| 2365 | { yylhsminor.yy56 = pik_elist_append(p,0,yymsp[0].minor.yy226); } |
| 2366 | #line 2391 "pikchr.c" |
| 2367 | yymsp[0].minor.yy56 = yylhsminor.yy56; |
| 2368 | break; |
| 2369 | case 2: /* element_list ::= element_list EOL element */ |
| 2370 | #line 510 "pikchr.y" |
| 2371 | { yylhsminor.yy56 = pik_elist_append(p,yymsp[-2].minor.yy56,yymsp[0].minor.yy226); } |
| 2372 | #line 2397 "pikchr.c" |
| 2373 | yymsp[-2].minor.yy56 = yylhsminor.yy56; |
| 2374 | break; |
| 2375 | case 3: /* element ::= */ |
| 2376 | #line 513 "pikchr.y" |
| 2377 | { yymsp[1].minor.yy226 = 0; } |
| 2378 | #line 2403 "pikchr.c" |
| 2379 | break; |
| 2380 | case 4: /* element ::= direction */ |
| 2381 | #line 514 "pikchr.y" |
| 2382 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy226=0; } |
| 2383 | #line 2408 "pikchr.c" |
| 2384 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2385 | break; |
| 2386 | case 5: /* element ::= lvalue ASSIGN rvalue */ |
| 2387 | #line 515 "pikchr.y" |
| 2388 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy257,&yymsp[-1].minor.yy0); yylhsminor.yy226=0;} |
| 2389 | #line 2414 "pikchr.c" |
| 2390 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2391 | break; |
| 2392 | case 6: /* element ::= PLACENAME COLON unnamed_element */ |
| 2393 | #line 517 "pikchr.y" |
| 2394 | { yylhsminor.yy226 = yymsp[0].minor.yy226; pik_elem_setname(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0); } |
| 2395 | #line 2420 "pikchr.c" |
| 2396 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2397 | break; |
| 2398 | case 7: /* element ::= PLACENAME COLON position */ |
| 2399 | #line 519 "pikchr.y" |
| 2400 | { yylhsminor.yy226 = pik_elem_new(p,0,0,0); |
| 2401 | if(yylhsminor.yy226){ yylhsminor.yy226->ptAt = yymsp[0].minor.yy175; pik_elem_setname(p,yylhsminor.yy226,&yymsp[-2].minor.yy0); }} |
| 2402 | #line 2427 "pikchr.c" |
| 2403 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2404 | break; |
| 2405 | case 8: /* element ::= unnamed_element */ |
| 2406 | #line 521 "pikchr.y" |
| 2407 | {yylhsminor.yy226 = yymsp[0].minor.yy226;} |
| 2408 | #line 2433 "pikchr.c" |
| 2409 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2410 | break; |
| 2411 | case 9: /* element ::= print prlist */ |
| 2412 | #line 522 "pikchr.y" |
| 2413 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy226=0;} |
| 2414 | #line 2439 "pikchr.c" |
| 2415 | break; |
| 2416 | case 10: /* element ::= ASSERT LP expr EQ expr RP */ |
| 2417 | #line 527 "pikchr.y" |
| 2418 | {yymsp[-5].minor.yy226=pik_assert(p,yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy257);} |
| 2419 | #line 2444 "pikchr.c" |
| 2420 | break; |
| 2421 | case 11: /* element ::= ASSERT LP position EQ position RP */ |
| 2422 | #line 529 "pikchr.y" |
| 2423 | {yymsp[-5].minor.yy226=pik_position_assert(p,&yymsp[-3].minor.yy175,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy175);} |
| 2424 | #line 2449 "pikchr.c" |
| 2425 | break; |
| 2426 | case 12: /* rvalue ::= PLACENAME */ |
| 2427 | #line 540 "pikchr.y" |
| 2428 | {yylhsminor.yy257 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2429 | #line 2454 "pikchr.c" |
| 2430 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2431 | break; |
| 2432 | case 13: /* pritem ::= FILL */ |
| 2433 | case 14: /* pritem ::= COLOR */ yytestcase(yyruleno==14); |
| 2434 | case 15: /* pritem ::= THICKNESS */ yytestcase(yyruleno==15); |
| 2435 | #line 545 "pikchr.y" |
| 2436 | {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));} |
| 2437 | #line 2462 "pikchr.c" |
| 2438 | break; |
| 2439 | case 16: /* pritem ::= rvalue */ |
| 2440 | #line 548 "pikchr.y" |
| 2441 | {pik_append_num(p,"",yymsp[0].minor.yy257);} |
| 2442 | #line 2467 "pikchr.c" |
| 2443 | break; |
| 2444 | case 17: /* pritem ::= STRING */ |
| 2445 | #line 549 "pikchr.y" |
| 2446 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2447 | #line 2472 "pikchr.c" |
| 2448 | break; |
| 2449 | case 18: /* prsep ::= COMMA */ |
| 2450 | #line 550 "pikchr.y" |
| 2451 | {pik_append(p, " ", 1);} |
| 2452 | #line 2477 "pikchr.c" |
| 2453 | break; |
| 2454 | case 19: /* unnamed_element ::= basetype attribute_list */ |
| 2455 | #line 553 "pikchr.y" |
| 2456 | {yylhsminor.yy226 = yymsp[-1].minor.yy226; pik_after_adding_attributes(p,yylhsminor.yy226);} |
| 2457 | #line 2482 "pikchr.c" |
| 2458 | yymsp[-1].minor.yy226 = yylhsminor.yy226; |
| 2459 | break; |
| 2460 | case 20: /* basetype ::= CLASSNAME */ |
| 2461 | #line 555 "pikchr.y" |
| 2462 | {yylhsminor.yy226 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2463 | #line 2488 "pikchr.c" |
| 2464 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2465 | break; |
| 2466 | case 21: /* basetype ::= STRING textposition */ |
| 2467 | #line 557 "pikchr.y" |
| 2468 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy116; yylhsminor.yy226 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2469 | #line 2494 "pikchr.c" |
| 2470 | yymsp[-1].minor.yy226 = yylhsminor.yy226; |
| 2471 | break; |
| 2472 | case 22: /* basetype ::= LB savelist element_list RB */ |
| 2473 | #line 559 "pikchr.y" |
| 2474 | { p->list = yymsp[-2].minor.yy56; yymsp[-3].minor.yy226 = pik_elem_new(p,0,0,yymsp[-1].minor.yy56); if(yymsp[-3].minor.yy226) yymsp[-3].minor.yy226->errTok = yymsp[0].minor.yy0; } |
| 2475 | #line 2500 "pikchr.c" |
| 2476 | break; |
| 2477 | case 23: /* savelist ::= */ |
| 2478 | #line 564 "pikchr.y" |
| 2479 | {yymsp[1].minor.yy56 = p->list; p->list = 0;} |
| 2480 | #line 2505 "pikchr.c" |
| 2481 | break; |
| 2482 | case 24: /* relexpr ::= expr */ |
| 2483 | #line 571 "pikchr.y" |
| 2484 | {yylhsminor.yy164.rAbs = yymsp[0].minor.yy257; yylhsminor.yy164.rRel = 0;} |
| 2485 | #line 2510 "pikchr.c" |
| 2486 | yymsp[0].minor.yy164 = yylhsminor.yy164; |
| 2487 | break; |
| 2488 | case 25: /* relexpr ::= expr PERCENT */ |
| 2489 | #line 572 "pikchr.y" |
| 2490 | {yylhsminor.yy164.rAbs = 0; yylhsminor.yy164.rRel = yymsp[-1].minor.yy257/100;} |
| 2491 | #line 2516 "pikchr.c" |
| 2492 | yymsp[-1].minor.yy164 = yylhsminor.yy164; |
| 2493 | break; |
| 2494 | case 26: /* optrelexpr ::= */ |
| 2495 | #line 574 "pikchr.y" |
| 2496 | {yymsp[1].minor.yy164.rAbs = 0; yymsp[1].minor.yy164.rRel = 1.0;} |
| 2497 | #line 2522 "pikchr.c" |
| 2498 | break; |
| 2499 | case 27: /* attribute_list ::= relexpr alist */ |
| 2500 | #line 576 "pikchr.y" |
| 2501 | {pik_add_direction(p,0,&yymsp[-1].minor.yy164);} |
| 2502 | #line 2527 "pikchr.c" |
| 2503 | break; |
| 2504 | case 28: /* attribute ::= numproperty relexpr */ |
| 2505 | #line 580 "pikchr.y" |
| 2506 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164); } |
| 2507 | #line 2532 "pikchr.c" |
| 2508 | break; |
| 2509 | case 29: /* attribute ::= dashproperty expr */ |
| 2510 | #line 581 "pikchr.y" |
| 2511 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy257); } |
| 2512 | #line 2537 "pikchr.c" |
| 2513 | break; |
| 2514 | case 30: /* attribute ::= dashproperty */ |
| 2515 | #line 582 "pikchr.y" |
| 2516 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2517 | #line 2542 "pikchr.c" |
| 2518 | break; |
| 2519 | case 31: /* attribute ::= colorproperty rvalue */ |
| 2520 | #line 583 "pikchr.y" |
| 2521 | { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257); } |
| 2522 | #line 2547 "pikchr.c" |
| 2523 | break; |
| 2524 | case 32: /* attribute ::= go direction optrelexpr */ |
| 2525 | #line 584 "pikchr.y" |
| 2526 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy164);} |
| 2527 | #line 2552 "pikchr.c" |
| 2528 | break; |
| 2529 | case 33: /* attribute ::= go direction even position */ |
| 2530 | #line 585 "pikchr.y" |
| 2531 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175);} |
| 2532 | #line 2557 "pikchr.c" |
| 2533 | break; |
| 2534 | case 34: /* attribute ::= CLOSE */ |
| 2535 | #line 586 "pikchr.y" |
| 2536 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2537 | #line 2562 "pikchr.c" |
| 2538 | break; |
| 2539 | case 35: /* attribute ::= CHOP */ |
| 2540 | #line 587 "pikchr.y" |
| 2541 | { p->cur->bChop = 1; } |
| 2542 | #line 2567 "pikchr.c" |
| 2543 | break; |
| 2544 | case 36: /* attribute ::= FROM position */ |
| 2545 | #line 588 "pikchr.y" |
| 2546 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); } |
| 2547 | #line 2572 "pikchr.c" |
| 2548 | break; |
| 2549 | case 37: /* attribute ::= TO position */ |
| 2550 | #line 589 "pikchr.y" |
| 2551 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy175); } |
| 2552 | #line 2577 "pikchr.c" |
| 2553 | break; |
| 2554 | case 38: /* attribute ::= THEN */ |
| 2555 | #line 590 "pikchr.y" |
| 2556 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2557 | #line 2582 "pikchr.c" |
| 2558 | break; |
| 2559 | case 39: /* attribute ::= THEN optrelexpr HEADING expr */ |
| 2560 | case 41: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==41); |
| 2561 | #line 592 "pikchr.y" |
| 2562 | {pik_move_hdg(p,&yymsp[-2].minor.yy164,&yymsp[-1].minor.yy0,yymsp[0].minor.yy257,0,&yymsp[-3].minor.yy0);} |
| 2563 | #line 2588 "pikchr.c" |
| 2564 | break; |
| 2565 | case 40: /* attribute ::= THEN optrelexpr EDGEPT */ |
| 2566 | case 42: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==42); |
| 2567 | #line 593 "pikchr.y" |
| 2568 | {pik_move_hdg(p,&yymsp[-1].minor.yy164,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);} |
| 2569 | #line 2594 "pikchr.c" |
| 2570 | break; |
| 2571 | case 43: /* attribute ::= AT position */ |
| 2572 | #line 598 "pikchr.y" |
| 2573 | { pik_set_at(p,0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); } |
| 2574 | #line 2599 "pikchr.c" |
| 2575 | break; |
| 2576 | case 44: /* attribute ::= SAME */ |
| 2577 | #line 600 "pikchr.y" |
| 2578 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2579 | #line 2604 "pikchr.c" |
| 2580 | break; |
| 2581 | case 45: /* attribute ::= SAME AS object */ |
| 2582 | #line 601 "pikchr.y" |
| 2583 | {pik_same(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2584 | #line 2609 "pikchr.c" |
| 2585 | break; |
| 2586 | case 46: /* attribute ::= STRING textposition */ |
| 2587 | #line 602 "pikchr.y" |
| 2588 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy116);} |
| 2589 | #line 2614 "pikchr.c" |
| 2590 | break; |
| 2591 | case 47: /* attribute ::= FIT */ |
| 2592 | #line 603 "pikchr.y" |
| 2593 | {pik_size_to_fit(p,&yymsp[0].minor.yy0); } |
| 2594 | #line 2619 "pikchr.c" |
| 2595 | break; |
| 2596 | case 48: /* attribute ::= BEHIND object */ |
| 2597 | #line 604 "pikchr.y" |
| 2598 | {pik_behind(p,yymsp[0].minor.yy226);} |
| 2599 | #line 2624 "pikchr.c" |
| 2600 | break; |
| 2601 | case 49: /* withclause ::= DOT_E edge AT position */ |
| 2602 | case 50: /* withclause ::= edge AT position */ yytestcase(yyruleno==50); |
| 2603 | #line 612 "pikchr.y" |
| 2604 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy175,&yymsp[-1].minor.yy0); } |
| 2605 | #line 2630 "pikchr.c" |
| 2606 | break; |
| 2607 | case 51: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2608 | #line 616 "pikchr.y" |
| 2609 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2610 | #line 2635 "pikchr.c" |
| 2611 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2612 | break; |
| 2613 | case 52: /* boolproperty ::= CW */ |
| 2614 | #line 627 "pikchr.y" |
| 2615 | {p->cur->cw = 1;} |
| 2616 | #line 2641 "pikchr.c" |
| 2617 | break; |
| 2618 | case 53: /* boolproperty ::= CCW */ |
| 2619 | #line 628 "pikchr.y" |
| 2620 | {p->cur->cw = 0;} |
| 2621 | #line 2646 "pikchr.c" |
| 2622 | break; |
| 2623 | case 54: /* boolproperty ::= LARROW */ |
| 2624 | #line 629 "pikchr.y" |
| 2625 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2626 | #line 2651 "pikchr.c" |
| 2627 | break; |
| 2628 | case 55: /* boolproperty ::= RARROW */ |
| 2629 | #line 630 "pikchr.y" |
| 2630 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2631 | #line 2656 "pikchr.c" |
| 2632 | break; |
| 2633 | case 56: /* boolproperty ::= LRARROW */ |
| 2634 | #line 631 "pikchr.y" |
| 2635 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2636 | #line 2661 "pikchr.c" |
| 2637 | break; |
| 2638 | case 57: /* boolproperty ::= INVIS */ |
| 2639 | #line 632 "pikchr.y" |
| 2640 | {p->cur->sw = 0.0;} |
| 2641 | #line 2666 "pikchr.c" |
| 2642 | break; |
| 2643 | case 58: /* boolproperty ::= THICK */ |
| 2644 | #line 633 "pikchr.y" |
| 2645 | {p->cur->sw *= 1.5;} |
| 2646 | #line 2671 "pikchr.c" |
| 2647 | break; |
| 2648 | case 59: /* boolproperty ::= THIN */ |
| 2649 | #line 634 "pikchr.y" |
| 2650 | {p->cur->sw *= 0.67;} |
| 2651 | #line 2676 "pikchr.c" |
| 2652 | break; |
| 2653 | case 60: /* textposition ::= */ |
| 2654 | #line 636 "pikchr.y" |
| 2655 | {yymsp[1].minor.yy116 = 0;} |
| 2656 | #line 2681 "pikchr.c" |
| 2657 | break; |
| 2658 | case 61: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */ |
| 2659 | #line 639 "pikchr.y" |
| 2660 | {yylhsminor.yy116 = pik_text_position(yymsp[-1].minor.yy116,&yymsp[0].minor.yy0);} |
| 2661 | #line 2686 "pikchr.c" |
| 2662 | yymsp[-1].minor.yy116 = yylhsminor.yy116; |
| 2663 | break; |
| 2664 | case 62: /* position ::= expr COMMA expr */ |
| 2665 | #line 642 "pikchr.y" |
| 2666 | {yylhsminor.yy175.x=yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[0].minor.yy257;} |
| 2667 | #line 2692 "pikchr.c" |
| 2668 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2669 | break; |
| 2670 | case 63: /* position ::= place PLUS expr COMMA expr */ |
| 2671 | #line 644 "pikchr.y" |
| 2672 | {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x+yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y+yymsp[0].minor.yy257;} |
| 2673 | #line 2698 "pikchr.c" |
| 2674 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2675 | break; |
| 2676 | case 64: /* position ::= place MINUS expr COMMA expr */ |
| 2677 | #line 645 "pikchr.y" |
| 2678 | {yylhsminor.yy175.x=yymsp[-4].minor.yy175.x-yymsp[-2].minor.yy257; yylhsminor.yy175.y=yymsp[-4].minor.yy175.y-yymsp[0].minor.yy257;} |
| 2679 | #line 2704 "pikchr.c" |
| 2680 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2681 | break; |
| 2682 | case 65: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2683 | #line 647 "pikchr.y" |
| 2684 | {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x+yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y+yymsp[-1].minor.yy257;} |
| 2685 | #line 2710 "pikchr.c" |
| 2686 | yymsp[-6].minor.yy175 = yylhsminor.yy175; |
| 2687 | break; |
| 2688 | case 66: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2689 | #line 649 "pikchr.y" |
| 2690 | {yylhsminor.yy175.x=yymsp[-6].minor.yy175.x-yymsp[-3].minor.yy257; yylhsminor.yy175.y=yymsp[-6].minor.yy175.y-yymsp[-1].minor.yy257;} |
| 2691 | #line 2716 "pikchr.c" |
| 2692 | yymsp[-6].minor.yy175 = yylhsminor.yy175; |
| 2693 | break; |
| 2694 | case 67: /* position ::= LP position COMMA position RP */ |
| 2695 | #line 650 "pikchr.y" |
| 2696 | {yymsp[-4].minor.yy175.x=yymsp[-3].minor.yy175.x; yymsp[-4].minor.yy175.y=yymsp[-1].minor.yy175.y;} |
| 2697 | #line 2722 "pikchr.c" |
| 2698 | break; |
| 2699 | case 68: /* position ::= LP position RP */ |
| 2700 | #line 651 "pikchr.y" |
| 2701 | {yymsp[-2].minor.yy175=yymsp[-1].minor.yy175;} |
| 2702 | #line 2727 "pikchr.c" |
| 2703 | break; |
| 2704 | case 69: /* position ::= expr between position AND position */ |
| 2705 | #line 653 "pikchr.y" |
| 2706 | {yylhsminor.yy175 = pik_position_between(yymsp[-4].minor.yy257,yymsp[-2].minor.yy175,yymsp[0].minor.yy175);} |
| 2707 | #line 2732 "pikchr.c" |
| 2708 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2709 | break; |
| 2710 | case 70: /* position ::= expr LT position COMMA position GT */ |
| 2711 | #line 655 "pikchr.y" |
| 2712 | {yylhsminor.yy175 = pik_position_between(yymsp[-5].minor.yy257,yymsp[-3].minor.yy175,yymsp[-1].minor.yy175);} |
| 2713 | #line 2738 "pikchr.c" |
| 2714 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2715 | break; |
| 2716 | case 71: /* position ::= expr ABOVE position */ |
| 2717 | #line 656 "pikchr.y" |
| 2718 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y += yymsp[-2].minor.yy257;} |
| 2719 | #line 2744 "pikchr.c" |
| 2720 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2721 | break; |
| 2722 | case 72: /* position ::= expr BELOW position */ |
| 2723 | #line 657 "pikchr.y" |
| 2724 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.y -= yymsp[-2].minor.yy257;} |
| 2725 | #line 2750 "pikchr.c" |
| 2726 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2727 | break; |
| 2728 | case 73: /* position ::= expr LEFT OF position */ |
| 2729 | #line 658 "pikchr.y" |
| 2730 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x -= yymsp[-3].minor.yy257;} |
| 2731 | #line 2756 "pikchr.c" |
| 2732 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2733 | break; |
| 2734 | case 74: /* position ::= expr RIGHT OF position */ |
| 2735 | #line 659 "pikchr.y" |
| 2736 | {yylhsminor.yy175=yymsp[0].minor.yy175; yylhsminor.yy175.x += yymsp[-3].minor.yy257;} |
| 2737 | #line 2762 "pikchr.c" |
| 2738 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2739 | break; |
| 2740 | case 75: /* position ::= expr ON HEADING EDGEPT OF position */ |
| 2741 | #line 661 "pikchr.y" |
| 2742 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-5].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2743 | #line 2768 "pikchr.c" |
| 2744 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2745 | break; |
| 2746 | case 76: /* position ::= expr HEADING EDGEPT OF position */ |
| 2747 | #line 663 "pikchr.y" |
| 2748 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-4].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2749 | #line 2774 "pikchr.c" |
| 2750 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2751 | break; |
| 2752 | case 77: /* position ::= expr EDGEPT OF position */ |
| 2753 | #line 665 "pikchr.y" |
| 2754 | {yylhsminor.yy175 = pik_position_at_hdg(yymsp[-3].minor.yy257,&yymsp[-2].minor.yy0,yymsp[0].minor.yy175);} |
| 2755 | #line 2780 "pikchr.c" |
| 2756 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2757 | break; |
| 2758 | case 78: /* position ::= expr ON HEADING expr FROM position */ |
| 2759 | #line 667 "pikchr.y" |
| 2760 | {yylhsminor.yy175 = pik_position_at_angle(yymsp[-5].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);} |
| 2761 | #line 2786 "pikchr.c" |
| 2762 | yymsp[-5].minor.yy175 = yylhsminor.yy175; |
| 2763 | break; |
| 2764 | case 79: /* position ::= expr HEADING expr FROM position */ |
| 2765 | #line 669 "pikchr.y" |
| 2766 | {yylhsminor.yy175 = pik_position_at_angle(yymsp[-4].minor.yy257,yymsp[-2].minor.yy257,yymsp[0].minor.yy175);} |
| 2767 | #line 2792 "pikchr.c" |
| 2768 | yymsp[-4].minor.yy175 = yylhsminor.yy175; |
| 2769 | break; |
| 2770 | case 80: /* place ::= edge OF object */ |
| 2771 | #line 681 "pikchr.y" |
| 2772 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2773 | #line 2798 "pikchr.c" |
| 2774 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2775 | break; |
| 2776 | case 81: /* place2 ::= object */ |
| 2777 | #line 682 "pikchr.y" |
| 2778 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[0].minor.yy226,0);} |
| 2779 | #line 2804 "pikchr.c" |
| 2780 | yymsp[0].minor.yy175 = yylhsminor.yy175; |
| 2781 | break; |
| 2782 | case 82: /* place2 ::= object DOT_E edge */ |
| 2783 | #line 683 "pikchr.y" |
| 2784 | {yylhsminor.yy175 = pik_place_of_elem(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2785 | #line 2810 "pikchr.c" |
| 2786 | yymsp[-2].minor.yy175 = yylhsminor.yy175; |
| 2787 | break; |
| 2788 | case 83: /* place2 ::= NTH VERTEX OF object */ |
| 2789 | #line 684 "pikchr.y" |
| 2790 | {yylhsminor.yy175 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy226);} |
| 2791 | #line 2816 "pikchr.c" |
| 2792 | yymsp[-3].minor.yy175 = yylhsminor.yy175; |
| 2793 | break; |
| 2794 | case 84: /* object ::= nth */ |
| 2795 | #line 696 "pikchr.y" |
| 2796 | {yylhsminor.yy226 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2797 | #line 2822 "pikchr.c" |
| 2798 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2799 | break; |
| 2800 | case 85: /* object ::= nth OF|IN object */ |
| 2801 | #line 697 "pikchr.y" |
| 2802 | {yylhsminor.yy226 = pik_find_nth(p,yymsp[0].minor.yy226,&yymsp[-2].minor.yy0);} |
| 2803 | #line 2828 "pikchr.c" |
| 2804 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2805 | break; |
| 2806 | case 86: /* objectname ::= PLACENAME */ |
| 2807 | #line 699 "pikchr.y" |
| 2808 | {yylhsminor.yy226 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2809 | #line 2834 "pikchr.c" |
| 2810 | yymsp[0].minor.yy226 = yylhsminor.yy226; |
| 2811 | break; |
| 2812 | case 87: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2813 | #line 701 "pikchr.y" |
| 2814 | {yylhsminor.yy226 = pik_find_byname(p,yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2815 | #line 2840 "pikchr.c" |
| 2816 | yymsp[-2].minor.yy226 = yylhsminor.yy226; |
| 2817 | break; |
| 2818 | case 88: /* nth ::= NTH CLASSNAME */ |
| 2819 | #line 703 "pikchr.y" |
| 2820 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2821 | #line 2846 "pikchr.c" |
| 2822 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2823 | break; |
| 2824 | case 89: /* nth ::= NTH LAST CLASSNAME */ |
| 2825 | #line 704 "pikchr.y" |
| 2826 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2827 | #line 2852 "pikchr.c" |
| 2828 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2829 | break; |
| 2830 | case 90: /* nth ::= LAST CLASSNAME */ |
| 2831 | #line 705 "pikchr.y" |
| 2832 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2833 | #line 2858 "pikchr.c" |
| 2834 | break; |
| 2835 | case 91: /* nth ::= LAST */ |
| 2836 | #line 706 "pikchr.y" |
| 2837 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2838 | #line 2863 "pikchr.c" |
| 2839 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2840 | break; |
| 2841 | case 92: /* nth ::= NTH LB RB */ |
| 2842 | #line 707 "pikchr.y" |
| 2843 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2844 | #line 2869 "pikchr.c" |
| 2845 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2846 | break; |
| 2847 | case 93: /* nth ::= NTH LAST LB RB */ |
| 2848 | #line 708 "pikchr.y" |
| 2849 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2850 | #line 2875 "pikchr.c" |
| 2851 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2852 | break; |
| 2853 | case 94: /* nth ::= LAST LB RB */ |
| 2854 | #line 709 "pikchr.y" |
| 2855 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2856 | #line 2881 "pikchr.c" |
| 2857 | break; |
| 2858 | case 95: /* expr ::= expr PLUS expr */ |
| 2859 | #line 711 "pikchr.y" |
| 2860 | {yylhsminor.yy257=yymsp[-2].minor.yy257+yymsp[0].minor.yy257;} |
| 2861 | #line 2886 "pikchr.c" |
| 2862 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2863 | break; |
| 2864 | case 96: /* expr ::= expr MINUS expr */ |
| 2865 | #line 712 "pikchr.y" |
| 2866 | {yylhsminor.yy257=yymsp[-2].minor.yy257-yymsp[0].minor.yy257;} |
| 2867 | #line 2892 "pikchr.c" |
| 2868 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2869 | break; |
| 2870 | case 97: /* expr ::= expr STAR expr */ |
| 2871 | #line 713 "pikchr.y" |
| 2872 | {yylhsminor.yy257=yymsp[-2].minor.yy257*yymsp[0].minor.yy257;} |
| 2873 | #line 2898 "pikchr.c" |
| 2874 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2875 | break; |
| 2876 | case 98: /* expr ::= expr SLASH expr */ |
| 2877 | #line 714 "pikchr.y" |
| 2878 | { |
| 2879 | if( yymsp[0].minor.yy257==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy257 = 0.0; } |
| 2880 | else{ yylhsminor.yy257 = yymsp[-2].minor.yy257/yymsp[0].minor.yy257; } |
| 2881 | } |
| 2882 | #line 2907 "pikchr.c" |
| 2883 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2884 | break; |
| 2885 | case 99: /* expr ::= MINUS expr */ |
| 2886 | #line 718 "pikchr.y" |
| 2887 | {yymsp[-1].minor.yy257=-yymsp[0].minor.yy257;} |
| 2888 | #line 2913 "pikchr.c" |
| 2889 | break; |
| 2890 | case 100: /* expr ::= PLUS expr */ |
| 2891 | #line 719 "pikchr.y" |
| 2892 | {yymsp[-1].minor.yy257=yymsp[0].minor.yy257;} |
| 2893 | #line 2918 "pikchr.c" |
| 2894 | break; |
| 2895 | case 101: /* expr ::= LP expr RP */ |
| 2896 | #line 720 "pikchr.y" |
| 2897 | {yymsp[-2].minor.yy257=yymsp[-1].minor.yy257;} |
| 2898 | #line 2923 "pikchr.c" |
| 2899 | break; |
| 2900 | case 102: /* expr ::= LP FILL|COLOR|THICKNESS RP */ |
| 2901 | #line 721 "pikchr.y" |
| 2902 | {yymsp[-2].minor.yy257=pik_get_var(p,&yymsp[-1].minor.yy0);} |
| 2903 | #line 2928 "pikchr.c" |
| 2904 | break; |
| 2905 | case 103: /* expr ::= NUMBER */ |
| 2906 | #line 722 "pikchr.y" |
| 2907 | {yylhsminor.yy257=pik_atof(&yymsp[0].minor.yy0);} |
| 2908 | #line 2933 "pikchr.c" |
| 2909 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2910 | break; |
| 2911 | case 104: /* expr ::= ID */ |
| 2912 | #line 723 "pikchr.y" |
| 2913 | {yylhsminor.yy257=pik_get_var(p,&yymsp[0].minor.yy0);} |
| 2914 | #line 2939 "pikchr.c" |
| 2915 | yymsp[0].minor.yy257 = yylhsminor.yy257; |
| 2916 | break; |
| 2917 | case 105: /* expr ::= FUNC1 LP expr RP */ |
| 2918 | #line 724 "pikchr.y" |
| 2919 | {yylhsminor.yy257 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy257,0.0);} |
| 2920 | #line 2945 "pikchr.c" |
| 2921 | yymsp[-3].minor.yy257 = yylhsminor.yy257; |
| 2922 | break; |
| 2923 | case 106: /* expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2924 | #line 725 "pikchr.y" |
| 2925 | {yylhsminor.yy257 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy257,yymsp[-1].minor.yy257);} |
| 2926 | #line 2951 "pikchr.c" |
| 2927 | yymsp[-5].minor.yy257 = yylhsminor.yy257; |
| 2928 | break; |
| 2929 | case 107: /* expr ::= DIST LP position COMMA position RP */ |
| 2930 | #line 726 "pikchr.y" |
| 2931 | {yymsp[-5].minor.yy257 = pik_dist(&yymsp[-3].minor.yy175,&yymsp[-1].minor.yy175);} |
| 2932 | #line 2957 "pikchr.c" |
| 2933 | break; |
| 2934 | case 108: /* expr ::= place2 DOT_XY X */ |
| 2935 | #line 727 "pikchr.y" |
| 2936 | {yylhsminor.yy257 = yymsp[-2].minor.yy175.x;} |
| 2937 | #line 2962 "pikchr.c" |
| 2938 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2939 | break; |
| 2940 | case 109: /* expr ::= place2 DOT_XY Y */ |
| 2941 | #line 728 "pikchr.y" |
| 2942 | {yylhsminor.yy257 = yymsp[-2].minor.yy175.y;} |
| 2943 | #line 2968 "pikchr.c" |
| 2944 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2945 | break; |
| 2946 | case 110: /* expr ::= object DOT_L numproperty */ |
| 2947 | case 111: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==111); |
| 2948 | case 112: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==112); |
| 2949 | #line 729 "pikchr.y" |
| 2950 | {yylhsminor.yy257=pik_property_of(yymsp[-2].minor.yy226,&yymsp[0].minor.yy0);} |
| 2951 | #line 2976 "pikchr.c" |
| 2952 | yymsp[-2].minor.yy257 = yylhsminor.yy257; |
| 2953 | break; |
| 2954 | default: |
| 2955 | /* (113) lvalue ::= ID */ yytestcase(yyruleno==113); |
| 2956 | /* (114) lvalue ::= FILL */ yytestcase(yyruleno==114); |
| 2957 | /* (115) lvalue ::= COLOR */ yytestcase(yyruleno==115); |
| 2958 | /* (116) lvalue ::= THICKNESS */ yytestcase(yyruleno==116); |
| 2959 | /* (117) rvalue ::= expr */ yytestcase(yyruleno==117); |
| 2960 | /* (118) print ::= PRINT */ yytestcase(yyruleno==118); |
| 2961 | /* (119) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=119); |
| 2962 | /* (120) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==120); |
| 2963 | /* (121) direction ::= UP */ yytestcase(yyruleno==121); |
| 2964 | /* (122) direction ::= DOWN */ yytestcase(yyruleno==122); |
| 2965 | /* (123) direction ::= LEFT */ yytestcase(yyruleno==123); |
| 2966 | /* (124) direction ::= RIGHT */ yytestcase(yyruleno==124); |
| 2967 | /* (125) optrelexpr ::= relexpr (OPTIMIZED OUT) */ assert(yyruleno!=125); |
| 2968 | /* (126) attribute_list ::= alist */ yytestcase(yyruleno==126); |
| 2969 | /* (127) alist ::= */ yytestcase(yyruleno==127); |
| 2970 | /* (128) alist ::= alist attribute */ yytestcase(yyruleno==128); |
| 2971 | /* (129) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=129); |
| 2972 | /* (130) attribute ::= WITH withclause */ yytestcase(yyruleno==130); |
| 2973 | /* (131) go ::= GO */ yytestcase(yyruleno==131); |
| 2974 | /* (132) go ::= */ yytestcase(yyruleno==132); |
| 2975 | /* (133) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==133); |
| 2976 | /* (134) even ::= EVEN WITH */ yytestcase(yyruleno==134); |
| 2977 | /* (135) dashproperty ::= DOTTED */ yytestcase(yyruleno==135); |
| 2978 | /* (136) dashproperty ::= DASHED */ yytestcase(yyruleno==136); |
| 2979 | /* (137) colorproperty ::= FILL */ yytestcase(yyruleno==137); |
| 2980 | /* (138) colorproperty ::= COLOR */ yytestcase(yyruleno==138); |
| 2981 | /* (139) position ::= place */ yytestcase(yyruleno==139); |
| 2982 | /* (140) between ::= WAY BETWEEN */ yytestcase(yyruleno==140); |
| 2983 | /* (141) between ::= BETWEEN */ yytestcase(yyruleno==141); |
| 2984 | /* (142) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==142); |
| 2985 | /* (143) place ::= place2 */ yytestcase(yyruleno==143); |
| 2986 | /* (144) edge ::= CENTER */ yytestcase(yyruleno==144); |
| 2987 | /* (145) edge ::= EDGEPT */ yytestcase(yyruleno==145); |
| 2988 | /* (146) edge ::= TOP */ yytestcase(yyruleno==146); |
| 2989 | /* (147) edge ::= BOTTOM */ yytestcase(yyruleno==147); |
| 2990 | /* (148) edge ::= START */ yytestcase(yyruleno==148); |
| 2991 | /* (149) edge ::= END */ yytestcase(yyruleno==149); |
| 2992 | /* (150) edge ::= RIGHT */ yytestcase(yyruleno==150); |
| 2993 | /* (151) edge ::= LEFT */ yytestcase(yyruleno==151); |
| 2994 | /* (152) object ::= objectname */ yytestcase(yyruleno==152); |
| 2995 | break; |
| 2996 | /********** End reduce actions ************************************************/ |
| 2997 | }; |
| 2998 | assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) ); |
| 2999 | yygoto = yyRuleInfoLhs[yyruleno]; |
| @@ -3041,11 +3057,11 @@ | |
| 3057 | pik_error(p, &TOKEN, "syntax error"); |
| 3058 | }else{ |
| 3059 | pik_error(p, 0, "syntax error"); |
| 3060 | } |
| 3061 | UNUSED_PARAMETER(yymajor); |
| 3062 | #line 3087 "pikchr.c" |
| 3063 | /************ End %syntax_error code ******************************************/ |
| 3064 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 3065 | pik_parserCTX_STORE |
| 3066 | } |
| 3067 | |
| @@ -3274,11 +3290,11 @@ | |
| 3290 | #else |
| 3291 | (void)iToken; |
| 3292 | return 0; |
| 3293 | #endif |
| 3294 | } |
| 3295 | #line 734 "pikchr.y" |
| 3296 | |
| 3297 | |
| 3298 | |
| 3299 | /* Chart of the 140 official HTML color names with their |
| 3300 | ** corresponding RGB value. |
| @@ -4845,11 +4861,11 @@ | |
| 4861 | } |
| 4862 | |
| 4863 | /* |
| 4864 | ** Process an "assert( place1 == place2 )" statement. Always return NULL. |
| 4865 | */ |
| 4866 | static PElem *pik_position_assert(Pik *p, PPoint *e1, PToken *pEq, PPoint *e2){ |
| 4867 | char zE1[100], zE2[100], zMsg[210]; |
| 4868 | |
| 4869 | /* Convert the numbers to strings using %g for comparison. This |
| 4870 | ** limits the precision of the comparison to account for rounding error. */ |
| 4871 | snprintf(zE1, sizeof(zE1), "(%g,%g)", e1->x, e1->y); zE1[sizeof(zE1)-1] = 0; |
| @@ -6369,11 +6385,15 @@ | |
| 6385 | |
| 6386 | pElem->ptEnter = pElem->aPath[0]; |
| 6387 | pElem->ptExit = pElem->aPath[pElem->nPath-1]; |
| 6388 | |
| 6389 | /* Compute the center of the line based on the bounding box over |
| 6390 | ** the vertexes. This is a difference from PIC. In Pikchr, the |
| 6391 | ** center of a line is the center of its bounding box. In PIC, the |
| 6392 | ** center of a line is halfway between its .start and .end. For |
| 6393 | ** straight lines, this is the same point, but for multi-segment |
| 6394 | ** lines the result is usually diferent */ |
| 6395 | for(i=0; i<pElem->nPath; i++){ |
| 6396 | pik_bbox_add_xy(&pElem->bbox, pElem->aPath[i].x, pElem->aPath[i].y); |
| 6397 | } |
| 6398 | pElem->ptAt.x = (pElem->bbox.ne.x + pElem->bbox.sw.x)/2.0; |
| 6399 | pElem->ptAt.y = (pElem->bbox.ne.y + pElem->bbox.sw.y)/2.0; |
| @@ -6384,15 +6404,13 @@ | |
| 6404 | pElem->h = pElem->bbox.ne.y - pElem->bbox.sw.y; |
| 6405 | |
| 6406 | /* If this is a polygon (if it has the "close" attribute), then |
| 6407 | ** adjust the exit point */ |
| 6408 | if( pElem->bClose ){ |
| 6409 | /* For "closed" lines, the .end is one of the .e, .s, .w, or .n |
| 6410 | ** points of the bounding box, as with block objects. */ |
| 6411 | pik_elem_set_exit(pElem, pElem->inDir); |
| 6412 | } |
| 6413 | }else{ |
| 6414 | PNum w2 = pElem->w/2.0; |
| 6415 | PNum h2 = pElem->h/2.0; |
| 6416 | pElem->ptEnter = pElem->ptAt; |
| @@ -6535,11 +6553,10 @@ | |
| 6553 | static void pik_render(Pik *p, PEList *pEList){ |
| 6554 | if( pEList==0 ) return; |
| 6555 | if( p->nErr==0 ){ |
| 6556 | PNum thickness; /* Stroke width */ |
| 6557 | PNum margin; /* Extra bounding box margin */ |
| 6558 | PNum w, h; /* Drawing width and height */ |
| 6559 | PNum wArrow; |
| 6560 | PNum pikScale; /* Value of the "scale" variable */ |
| 6561 | |
| 6562 | /* Set up rendering parameters */ |
| @@ -6546,24 +6563,23 @@ | |
| 6563 | pik_compute_layout_settings(p); |
| 6564 | thickness = pik_value(p,"thickness",9,0); |
| 6565 | if( thickness<=0.01 ) thickness = 0.01; |
| 6566 | margin = pik_value(p,"margin",6,0); |
| 6567 | margin += thickness; |
| 6568 | wArrow = p->wArrow*thickness; |
| 6569 | |
| 6570 | /* Compute a bounding box over all objects so that we can know |
| 6571 | ** how big to declare the SVG canvas */ |
| 6572 | pik_bbox_init(&p->bbox); |
| 6573 | pik_bbox_add_elist(p, pEList, wArrow); |
| 6574 | |
| 6575 | /* Expand the bounding box slightly to account for line thickness |
| 6576 | ** and the optional "margin = EXPR" setting. */ |
| 6577 | p->bbox.ne.x += margin + pik_value(p,"rightmargin",11,0); |
| 6578 | p->bbox.ne.y += margin + pik_value(p,"topmargin",9,0); |
| 6579 | p->bbox.sw.x -= margin + pik_value(p,"leftmargin",10,0); |
| 6580 | p->bbox.sw.y -= margin + pik_value(p,"bottommargin",12,0); |
| 6581 | |
| 6582 | /* Output the SVG */ |
| 6583 | pik_append(p, "<svg",4); |
| 6584 | if( p->zClass ){ |
| 6585 | pik_append(p, " class=\"", -1); |
| @@ -7131,10 +7147,11 @@ | |
| 7147 | static void usage(const char *argv0){ |
| 7148 | fprintf(stderr, "usage: %s [OPTIONS] FILE ...\n", argv0); |
| 7149 | fprintf(stderr, |
| 7150 | "Convert Pikchr input files into SVG.\n" |
| 7151 | "Options:\n" |
| 7152 | " --dont-stop Process all files even if earlier files have errors\n" |
| 7153 | " --svg-only Omit raw SVG without the HTML wrapper\n" |
| 7154 | ); |
| 7155 | exit(1); |
| 7156 | } |
| 7157 | |
| @@ -7166,10 +7183,11 @@ | |
| 7183 | ** line. |
| 7184 | */ |
| 7185 | int main(int argc, char **argv){ |
| 7186 | int i; |
| 7187 | int bSvgOnly = 0; /* Output SVG only. No HTML wrapper */ |
| 7188 | int bDontStop = 0; /* Continue in spite of errors */ |
| 7189 | const char *zHtmlHdr = |
| 7190 | "<!DOCTYPE html>\n" |
| 7191 | "<html lang=\"en-US\">\n" |
| 7192 | "<head>\n<title>PIKCHR Test</title>\n" |
| 7193 | "<style>\n" |
| @@ -7201,10 +7219,13 @@ | |
| 7219 | |
| 7220 | if( argv[i][0]=='-' ){ |
| 7221 | char *z = argv[i]; |
| 7222 | z++; |
| 7223 | if( z[0]=='-' ) z++; |
| 7224 | if( strcmp(z,"dont-stop")==0 ){ |
| 7225 | bDontStop = 1; |
| 7226 | }else |
| 7227 | if( strcmp(z,"svg-only")==0 ){ |
| 7228 | if( zHtmlHdr==0 ){ |
| 7229 | fprintf(stderr, "the \"%s\" option must come first\n",argv[i]); |
| 7230 | exit(1); |
| 7231 | } |
| @@ -7234,13 +7255,12 @@ | |
| 7255 | fclose(in); |
| 7256 | zIn[sz] = 0; |
| 7257 | zOut = pikchr(zIn, "pikchr", 0, &w, &h); |
| 7258 | if( zOut==0 ){ |
| 7259 | fprintf(stderr, "pikchr() returns NULL. Out of memory?\n"); |
| 7260 | if( !bDontStop ) exit(1); |
| 7261 | }else if( bSvgOnly ){ |
| 7262 | printf("%s\n", zOut); |
| 7263 | }else{ |
| 7264 | if( zHtmlHdr ){ |
| 7265 | printf("%s", zHtmlHdr); |
| 7266 | zHtmlHdr = 0; |
| @@ -7265,6 +7285,6 @@ | |
| 7285 | } |
| 7286 | return 0; |
| 7287 | } |
| 7288 | #endif /* PIKCHR_SHELL */ |
| 7289 | |
| 7290 | #line 7315 "pikchr.c" |
| 7291 |