Fossil SCM

Update the built-in Pikchr to the version that supports "mono". There is an issue with the WASM module yet to be resolved.

drh 2023-05-18 16:49 trunk
Commit 43eefe66ed97acaf844bfe8227851a9886994e7185e4a4619a920cb98dc92072
+959 -940
--- extsrc/pikchr.c
+++ extsrc/pikchr.c
@@ -59,11 +59,11 @@
5959
** cc pikchr.c -o pikchr.o
6060
**
6161
** Add -DPIKCHR_SHELL to add a main() routine that reads input files
6262
** and sends them through Pikchr, for testing. Add -DPIKCHR_FUZZ for
6363
** -fsanitizer=fuzzer testing.
64
-**
64
+**
6565
****************************************************************************
6666
** IMPLEMENTATION NOTES (for people who want to understand the internal
6767
** operation of this software, perhaps to extend the code or to fix bugs):
6868
**
6969
** Each call to pikchr() uses a single instance of the Pik structure to
@@ -203,12 +203,13 @@
203203
#define TP_SMALL 0x0200 /* Smaller font */
204204
#define TP_XTRA 0x0400 /* Amplify TP_BIG or TP_SMALL */
205205
#define TP_SZMASK 0x0700 /* Font size mask */
206206
#define TP_ITALIC 0x1000 /* Italic font */
207207
#define TP_BOLD 0x2000 /* Bold font */
208
-#define TP_FMASK 0x3000 /* Mask for font style */
209
-#define TP_ALIGN 0x4000 /* Rotate to align with the line */
208
+#define TP_MONO 0x4000 /* Monospace font family */
209
+#define TP_FMASK 0x7000 /* Mask for font style */
210
+#define TP_ALIGN 0x8000 /* Rotate to align with the line */
210211
211212
/* An object to hold a position in 2-D space */
212213
struct PPoint {
213214
PNum x, y; /* X and Y coordinates */
214215
};
@@ -470,11 +471,11 @@
470471
static void pik_bbox_init(PBox*);
471472
static void pik_bbox_addbox(PBox*,PBox*);
472473
static void pik_bbox_add_xy(PBox*,PNum,PNum);
473474
static void pik_bbox_addellipse(PBox*,PNum x,PNum y,PNum rx,PNum ry);
474475
static void pik_add_txt(Pik*,PToken*,int);
475
-static int pik_text_length(const PToken *pToken);
476
+static int pik_text_length(const PToken *pToken, const int isMonospace);
476477
static void pik_size_to_fit(Pik*,PToken*,int);
477478
static int pik_text_position(int,PToken*);
478479
static PNum pik_property_of(PObj*,PToken*);
479480
static PNum pik_func(Pik*,PToken*,PNum,PNum);
480481
static PPoint pik_position_between(PNum x, PPoint p1, PPoint p2);
@@ -489,11 +490,11 @@
489490
static PObj *pik_position_assert(Pik*,PPoint*,PToken*,PPoint*);
490491
static PNum pik_dist(PPoint*,PPoint*);
491492
static void pik_add_macro(Pik*,PToken *pId,PToken *pCode);
492493
493494
494
-#line 520 "pikchr.c"
495
+#line 521 "pikchr.c"
495496
/**************** End of %include directives **********************************/
496497
/* These constants specify the various numeric values for terminal symbols.
497498
***************** Begin token definitions *************************************/
498499
#ifndef T_ID
499500
#define T_ID 1
@@ -564,38 +565,39 @@
564565
#define T_RJUST 66
565566
#define T_ABOVE 67
566567
#define T_BELOW 68
567568
#define T_ITALIC 69
568569
#define T_BOLD 70
569
-#define T_ALIGNED 71
570
-#define T_BIG 72
571
-#define T_SMALL 73
572
-#define T_AND 74
573
-#define T_LT 75
574
-#define T_GT 76
575
-#define T_ON 77
576
-#define T_WAY 78
577
-#define T_BETWEEN 79
578
-#define T_THE 80
579
-#define T_NTH 81
580
-#define T_VERTEX 82
581
-#define T_TOP 83
582
-#define T_BOTTOM 84
583
-#define T_START 85
584
-#define T_END 86
585
-#define T_IN 87
586
-#define T_THIS 88
587
-#define T_DOT_U 89
588
-#define T_LAST 90
589
-#define T_NUMBER 91
590
-#define T_FUNC1 92
591
-#define T_FUNC2 93
592
-#define T_DIST 94
593
-#define T_DOT_XY 95
594
-#define T_X 96
595
-#define T_Y 97
596
-#define T_DOT_L 98
570
+#define T_MONO 71
571
+#define T_ALIGNED 72
572
+#define T_BIG 73
573
+#define T_SMALL 74
574
+#define T_AND 75
575
+#define T_LT 76
576
+#define T_GT 77
577
+#define T_ON 78
578
+#define T_WAY 79
579
+#define T_BETWEEN 80
580
+#define T_THE 81
581
+#define T_NTH 82
582
+#define T_VERTEX 83
583
+#define T_TOP 84
584
+#define T_BOTTOM 85
585
+#define T_START 86
586
+#define T_END 87
587
+#define T_IN 88
588
+#define T_THIS 89
589
+#define T_DOT_U 90
590
+#define T_LAST 91
591
+#define T_NUMBER 92
592
+#define T_FUNC1 93
593
+#define T_FUNC2 94
594
+#define T_DIST 95
595
+#define T_DOT_XY 96
596
+#define T_X 97
597
+#define T_Y 98
598
+#define T_DOT_L 99
597599
#endif
598600
/**************** End token definitions ***************************************/
599601
600602
/* The next sections is a series of control #defines.
601603
** various aspects of the generated parser.
@@ -651,22 +653,22 @@
651653
#ifndef INTERFACE
652654
# define INTERFACE 1
653655
#endif
654656
/************* Begin control #defines *****************************************/
655657
#define YYCODETYPE unsigned char
656
-#define YYNOCODE 135
658
+#define YYNOCODE 136
657659
#define YYACTIONTYPE unsigned short int
658660
#define pik_parserTOKENTYPE PToken
659661
typedef union {
660662
int yyinit;
661663
pik_parserTOKENTYPE yy0;
662
- PRel yy10;
663
- PObj* yy36;
664
- PPoint yy79;
665
- PNum yy153;
666
- short int yy164;
667
- PList* yy227;
664
+ PNum yy21;
665
+ PPoint yy63;
666
+ PRel yy72;
667
+ PObj* yy162;
668
+ short int yy188;
669
+ PList* yy235;
668670
} YYMINORTYPE;
669671
#ifndef YYSTACKDEPTH
670672
#define YYSTACKDEPTH 100
671673
#endif
672674
#define pik_parserARG_SDECL
@@ -681,11 +683,11 @@
681683
#define pik_parserCTX_STORE yypParser->p=p;
682684
#define YYFALLBACK 1
683685
#define YYNSTATE 164
684686
#define YYNRULE 156
685687
#define YYNRULE_WITH_ACTION 116
686
-#define YYNTOKEN 99
688
+#define YYNTOKEN 100
687689
#define YY_MAX_SHIFT 163
688690
#define YY_MIN_SHIFTREDUCE 287
689691
#define YY_MAX_SHIFTREDUCE 442
690692
#define YY_ERROR_ACTION 443
691693
#define YY_ACCEPT_ACTION 444
@@ -756,322 +758,324 @@
756758
** yy_reduce_ofst[] For each state, the offset into yy_action for
757759
** shifting non-terminals after a reduce.
758760
** yy_default[] Default action for each state.
759761
**
760762
*********** Begin parsing tables **********************************************/
761
-#define YY_ACTTAB_COUNT (1303)
763
+#define YY_ACTTAB_COUNT (1313)
762764
static const YYACTIONTYPE yy_action[] = {
763765
/* 0 */ 575, 495, 161, 119, 25, 452, 29, 74, 129, 148,
764766
/* 10 */ 575, 492, 161, 119, 453, 113, 120, 161, 119, 530,
765767
/* 20 */ 427, 428, 339, 559, 81, 30, 560, 561, 575, 64,
766768
/* 30 */ 63, 62, 61, 322, 323, 9, 8, 33, 149, 32,
767769
/* 40 */ 7, 71, 127, 38, 335, 66, 48, 37, 28, 339,
768770
/* 50 */ 339, 339, 339, 425, 426, 340, 341, 342, 343, 344,
769771
/* 60 */ 345, 346, 347, 348, 474, 528, 161, 119, 577, 77,
770
- /* 70 */ 577, 73, 376, 148, 474, 533, 161, 119, 112, 113,
771
- /* 80 */ 120, 161, 119, 128, 427, 428, 339, 357, 81, 531,
772
- /* 90 */ 161, 119, 474, 36, 330, 13, 306, 322, 323, 9,
772
+ /* 70 */ 577, 73, 306, 148, 474, 533, 161, 119, 112, 113,
773
+ /* 80 */ 120, 161, 119, 128, 427, 428, 339, 31, 81, 531,
774
+ /* 90 */ 161, 119, 474, 35, 330, 378, 158, 322, 323, 9,
773775
/* 100 */ 8, 33, 149, 32, 7, 71, 127, 328, 335, 66,
774
- /* 110 */ 579, 310, 31, 339, 339, 339, 339, 425, 426, 340,
776
+ /* 110 */ 579, 378, 158, 339, 339, 339, 339, 425, 426, 340,
775777
/* 120 */ 341, 342, 343, 344, 345, 346, 347, 348, 394, 435,
776
- /* 130 */ 46, 59, 60, 64, 63, 62, 61, 54, 51, 376,
777
- /* 140 */ 69, 108, 2, 47, 403, 83, 297, 435, 375, 84,
778
- /* 150 */ 117, 80, 35, 308, 79, 133, 122, 126, 441, 440,
779
- /* 160 */ 299, 123, 3, 404, 405, 406, 408, 80, 298, 308,
780
- /* 170 */ 79, 4, 411, 412, 413, 414, 441, 440, 350, 350,
781
- /* 180 */ 350, 350, 350, 350, 350, 350, 350, 350, 62, 61,
782
- /* 190 */ 67, 434, 1, 75, 378, 158, 74, 76, 148, 411,
783
- /* 200 */ 412, 413, 414, 124, 113, 120, 161, 119, 106, 434,
784
- /* 210 */ 436, 437, 438, 439, 5, 375, 6, 117, 393, 155,
785
- /* 220 */ 154, 153, 394, 435, 69, 59, 60, 149, 436, 437,
786
- /* 230 */ 438, 439, 535, 376, 398, 399, 2, 424, 427, 428,
787
- /* 240 */ 339, 156, 156, 156, 423, 394, 435, 65, 59, 60,
788
- /* 250 */ 162, 131, 441, 440, 397, 72, 376, 148, 118, 2,
789
- /* 260 */ 380, 157, 125, 113, 120, 161, 119, 339, 339, 339,
790
- /* 270 */ 339, 425, 426, 535, 11, 441, 440, 394, 356, 535,
791
- /* 280 */ 59, 60, 535, 379, 159, 434, 149, 12, 102, 446,
792
- /* 290 */ 432, 42, 138, 14, 435, 139, 301, 302, 303, 36,
793
- /* 300 */ 305, 430, 106, 16, 436, 437, 438, 439, 434, 375,
794
- /* 310 */ 18, 117, 393, 155, 154, 153, 44, 142, 140, 64,
795
- /* 320 */ 63, 62, 61, 441, 440, 106, 19, 436, 437, 438,
796
- /* 330 */ 439, 45, 375, 20, 117, 393, 155, 154, 153, 68,
797
- /* 340 */ 55, 114, 64, 63, 62, 61, 147, 146, 394, 473,
798
- /* 350 */ 359, 59, 60, 43, 23, 391, 434, 106, 26, 376,
799
- /* 360 */ 57, 58, 42, 49, 375, 392, 117, 393, 155, 154,
800
- /* 370 */ 153, 64, 63, 62, 61, 436, 437, 438, 439, 384,
801
- /* 380 */ 382, 383, 22, 21, 377, 473, 160, 70, 39, 445,
802
- /* 390 */ 24, 445, 145, 141, 431, 142, 140, 64, 63, 62,
803
- /* 400 */ 61, 394, 15, 445, 59, 60, 64, 63, 62, 61,
804
- /* 410 */ 391, 445, 376, 445, 445, 42, 445, 445, 55, 391,
805
- /* 420 */ 156, 156, 156, 445, 147, 146, 445, 52, 106, 445,
806
- /* 430 */ 445, 43, 445, 445, 445, 375, 445, 117, 393, 155,
807
- /* 440 */ 154, 153, 445, 394, 143, 445, 59, 60, 64, 63,
808
- /* 450 */ 62, 61, 313, 445, 376, 378, 158, 42, 445, 445,
809
- /* 460 */ 22, 21, 121, 447, 454, 29, 445, 445, 24, 450,
810
- /* 470 */ 145, 141, 431, 142, 140, 64, 63, 62, 61, 445,
811
- /* 480 */ 163, 106, 445, 445, 444, 27, 445, 445, 375, 445,
812
- /* 490 */ 117, 393, 155, 154, 153, 445, 55, 74, 445, 148,
813
- /* 500 */ 445, 445, 147, 146, 497, 113, 120, 161, 119, 43,
814
- /* 510 */ 445, 394, 445, 445, 59, 60, 445, 445, 445, 118,
815
- /* 520 */ 445, 445, 376, 106, 445, 42, 445, 445, 149, 445,
816
- /* 530 */ 375, 445, 117, 393, 155, 154, 153, 445, 22, 21,
817
- /* 540 */ 394, 144, 445, 59, 60, 445, 24, 445, 145, 141,
818
- /* 550 */ 431, 376, 445, 445, 42, 445, 132, 130, 394, 445,
819
- /* 560 */ 445, 59, 60, 109, 447, 454, 29, 445, 445, 376,
820
- /* 570 */ 450, 445, 42, 445, 394, 445, 445, 59, 60, 445,
821
- /* 580 */ 445, 163, 445, 445, 445, 102, 27, 445, 42, 445,
822
- /* 590 */ 445, 106, 445, 64, 63, 62, 61, 445, 375, 445,
823
- /* 600 */ 117, 393, 155, 154, 153, 394, 355, 445, 59, 60,
824
- /* 610 */ 445, 445, 445, 445, 445, 74, 376, 148, 445, 40,
825
- /* 620 */ 106, 445, 496, 113, 120, 161, 119, 375, 445, 117,
826
- /* 630 */ 393, 155, 154, 153, 445, 448, 454, 29, 106, 445,
827
- /* 640 */ 445, 450, 445, 445, 445, 375, 149, 117, 393, 155,
828
- /* 650 */ 154, 153, 163, 445, 106, 445, 445, 27, 445, 445,
829
- /* 660 */ 445, 375, 445, 117, 393, 155, 154, 153, 394, 445,
830
- /* 670 */ 445, 59, 60, 64, 63, 62, 61, 445, 445, 376,
831
- /* 680 */ 445, 445, 41, 445, 445, 106, 354, 64, 63, 62,
832
- /* 690 */ 61, 445, 375, 445, 117, 393, 155, 154, 153, 445,
833
- /* 700 */ 445, 445, 74, 445, 148, 445, 88, 445, 445, 490,
834
- /* 710 */ 113, 120, 161, 119, 445, 120, 161, 119, 17, 74,
835
- /* 720 */ 445, 148, 110, 110, 445, 445, 484, 113, 120, 161,
836
- /* 730 */ 119, 445, 445, 149, 74, 445, 148, 152, 445, 445,
837
- /* 740 */ 445, 483, 113, 120, 161, 119, 445, 445, 106, 445,
838
- /* 750 */ 149, 445, 445, 107, 445, 375, 445, 117, 393, 155,
839
- /* 760 */ 154, 153, 120, 161, 119, 149, 478, 74, 445, 148,
840
- /* 770 */ 445, 88, 445, 445, 480, 113, 120, 161, 119, 445,
841
- /* 780 */ 120, 161, 119, 74, 152, 148, 10, 479, 479, 445,
842
- /* 790 */ 134, 113, 120, 161, 119, 445, 445, 445, 149, 74,
843
- /* 800 */ 445, 148, 152, 445, 445, 445, 517, 113, 120, 161,
844
- /* 810 */ 119, 445, 445, 74, 149, 148, 445, 445, 445, 445,
845
- /* 820 */ 137, 113, 120, 161, 119, 74, 445, 148, 445, 445,
846
- /* 830 */ 149, 445, 525, 113, 120, 161, 119, 445, 74, 445,
847
- /* 840 */ 148, 445, 445, 445, 149, 527, 113, 120, 161, 119,
848
- /* 850 */ 445, 445, 74, 445, 148, 445, 149, 445, 445, 524,
849
- /* 860 */ 113, 120, 161, 119, 74, 445, 148, 445, 445, 149,
850
- /* 870 */ 445, 526, 113, 120, 161, 119, 445, 445, 74, 445,
851
- /* 880 */ 148, 445, 88, 149, 445, 523, 113, 120, 161, 119,
852
- /* 890 */ 445, 120, 161, 119, 74, 149, 148, 85, 111, 111,
853
- /* 900 */ 445, 522, 113, 120, 161, 119, 120, 161, 119, 149,
854
- /* 910 */ 74, 445, 148, 152, 445, 445, 445, 521, 113, 120,
855
- /* 920 */ 161, 119, 445, 445, 74, 149, 148, 445, 152, 445,
856
- /* 930 */ 445, 520, 113, 120, 161, 119, 74, 445, 148, 445,
857
- /* 940 */ 445, 149, 445, 519, 113, 120, 161, 119, 445, 74,
858
- /* 950 */ 445, 148, 445, 445, 445, 149, 150, 113, 120, 161,
859
- /* 960 */ 119, 445, 445, 74, 445, 148, 445, 149, 445, 445,
860
- /* 970 */ 151, 113, 120, 161, 119, 74, 445, 148, 445, 445,
861
- /* 980 */ 149, 445, 136, 113, 120, 161, 119, 445, 445, 74,
862
- /* 990 */ 445, 148, 107, 445, 149, 445, 135, 113, 120, 161,
863
- /* 1000 */ 119, 120, 161, 119, 445, 463, 149, 445, 88, 445,
864
- /* 1010 */ 445, 445, 78, 78, 445, 445, 107, 120, 161, 119,
865
- /* 1020 */ 149, 445, 445, 152, 82, 120, 161, 119, 445, 463,
866
- /* 1030 */ 445, 466, 86, 34, 445, 88, 445, 569, 445, 152,
867
- /* 1040 */ 445, 120, 161, 119, 120, 161, 119, 152, 107, 445,
868
- /* 1050 */ 445, 475, 64, 63, 62, 61, 445, 120, 161, 119,
869
- /* 1060 */ 98, 451, 445, 152, 89, 396, 152, 90, 445, 120,
870
- /* 1070 */ 161, 119, 445, 120, 161, 119, 120, 161, 119, 152,
871
- /* 1080 */ 445, 64, 63, 62, 61, 445, 445, 445, 445, 445,
872
- /* 1090 */ 87, 152, 445, 99, 395, 152, 100, 445, 152, 120,
873
- /* 1100 */ 161, 119, 120, 161, 119, 120, 161, 119, 445, 101,
874
- /* 1110 */ 64, 63, 62, 61, 445, 445, 445, 445, 120, 161,
875
- /* 1120 */ 119, 152, 91, 391, 152, 445, 445, 152, 103, 445,
876
- /* 1130 */ 445, 120, 161, 119, 445, 92, 445, 120, 161, 119,
877
- /* 1140 */ 152, 93, 445, 445, 120, 161, 119, 104, 445, 445,
878
- /* 1150 */ 120, 161, 119, 152, 445, 445, 120, 161, 119, 152,
879
- /* 1160 */ 445, 445, 445, 445, 94, 445, 152, 445, 445, 445,
880
- /* 1170 */ 105, 445, 152, 120, 161, 119, 445, 95, 152, 120,
881
- /* 1180 */ 161, 119, 96, 445, 445, 445, 120, 161, 119, 445,
882
- /* 1190 */ 445, 120, 161, 119, 97, 152, 445, 445, 445, 445,
883
- /* 1200 */ 549, 152, 445, 120, 161, 119, 548, 445, 152, 120,
884
- /* 1210 */ 161, 119, 445, 152, 445, 120, 161, 119, 445, 445,
885
- /* 1220 */ 445, 445, 445, 547, 445, 152, 445, 445, 445, 445,
886
- /* 1230 */ 445, 152, 120, 161, 119, 546, 445, 152, 445, 115,
887
- /* 1240 */ 445, 445, 116, 445, 120, 161, 119, 445, 120, 161,
888
- /* 1250 */ 119, 120, 161, 119, 152, 64, 63, 62, 61, 64,
889
- /* 1260 */ 63, 62, 61, 445, 445, 445, 152, 445, 445, 445,
890
- /* 1270 */ 152, 445, 445, 152, 445, 445, 50, 445, 445, 445,
891
- /* 1280 */ 53, 64, 63, 62, 61, 445, 445, 445, 445, 445,
892
- /* 1290 */ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
893
- /* 1300 */ 445, 445, 56,
778
+ /* 130 */ 46, 59, 60, 64, 63, 62, 61, 357, 36, 376,
779
+ /* 140 */ 54, 51, 2, 47, 403, 13, 297, 411, 412, 413,
780
+ /* 150 */ 414, 80, 162, 308, 79, 133, 310, 126, 441, 440,
781
+ /* 160 */ 118, 123, 83, 404, 405, 406, 408, 80, 84, 308,
782
+ /* 170 */ 79, 299, 411, 412, 413, 414, 118, 69, 350, 350,
783
+ /* 180 */ 350, 350, 350, 350, 350, 350, 350, 350, 350, 62,
784
+ /* 190 */ 61, 434, 64, 63, 62, 61, 313, 398, 399, 427,
785
+ /* 200 */ 428, 339, 380, 157, 64, 63, 62, 61, 122, 106,
786
+ /* 210 */ 535, 436, 437, 438, 439, 298, 375, 391, 117, 393,
787
+ /* 220 */ 155, 154, 153, 394, 435, 49, 59, 60, 339, 339,
788
+ /* 230 */ 339, 339, 425, 426, 376, 3, 4, 2, 64, 63,
789
+ /* 240 */ 62, 61, 156, 156, 156, 394, 379, 159, 59, 60,
790
+ /* 250 */ 76, 67, 535, 441, 440, 5, 102, 6, 535, 42,
791
+ /* 260 */ 131, 535, 69, 107, 301, 302, 303, 394, 305, 15,
792
+ /* 270 */ 59, 60, 120, 161, 119, 446, 463, 424, 376, 423,
793
+ /* 280 */ 1, 42, 397, 78, 78, 36, 434, 11, 394, 435,
794
+ /* 290 */ 356, 59, 60, 12, 152, 139, 432, 14, 16, 376,
795
+ /* 300 */ 18, 65, 2, 138, 106, 430, 436, 437, 438, 439,
796
+ /* 310 */ 44, 375, 19, 117, 393, 155, 154, 153, 441, 440,
797
+ /* 320 */ 142, 140, 64, 63, 62, 61, 106, 20, 68, 376,
798
+ /* 330 */ 359, 107, 23, 375, 45, 117, 393, 155, 154, 153,
799
+ /* 340 */ 120, 161, 119, 55, 463, 114, 26, 57, 106, 147,
800
+ /* 350 */ 146, 434, 569, 58, 392, 375, 43, 117, 393, 155,
801
+ /* 360 */ 154, 153, 152, 384, 64, 63, 62, 61, 382, 106,
802
+ /* 370 */ 383, 436, 437, 438, 439, 377, 375, 70, 117, 393,
803
+ /* 380 */ 155, 154, 153, 160, 39, 22, 21, 445, 142, 140,
804
+ /* 390 */ 64, 63, 62, 61, 24, 17, 145, 141, 431, 108,
805
+ /* 400 */ 445, 445, 445, 391, 445, 445, 375, 445, 117, 445,
806
+ /* 410 */ 445, 55, 74, 445, 148, 445, 445, 147, 146, 124,
807
+ /* 420 */ 113, 120, 161, 119, 43, 445, 445, 142, 140, 64,
808
+ /* 430 */ 63, 62, 61, 445, 394, 445, 445, 59, 60, 64,
809
+ /* 440 */ 63, 62, 61, 149, 445, 376, 445, 445, 42, 445,
810
+ /* 450 */ 55, 445, 391, 22, 21, 445, 147, 146, 445, 445,
811
+ /* 460 */ 52, 445, 24, 43, 145, 141, 431, 394, 445, 445,
812
+ /* 470 */ 59, 60, 64, 63, 62, 61, 445, 445, 376, 132,
813
+ /* 480 */ 130, 42, 445, 445, 445, 355, 156, 156, 156, 445,
814
+ /* 490 */ 445, 445, 22, 21, 445, 394, 473, 445, 59, 60,
815
+ /* 500 */ 445, 24, 445, 145, 141, 431, 376, 445, 107, 42,
816
+ /* 510 */ 64, 63, 62, 61, 445, 106, 445, 120, 161, 119,
817
+ /* 520 */ 445, 478, 375, 354, 117, 393, 155, 154, 153, 445,
818
+ /* 530 */ 394, 143, 473, 59, 60, 64, 63, 62, 61, 152,
819
+ /* 540 */ 445, 376, 445, 445, 42, 445, 445, 445, 106, 64,
820
+ /* 550 */ 63, 62, 61, 445, 445, 375, 50, 117, 393, 155,
821
+ /* 560 */ 154, 153, 445, 394, 144, 445, 59, 60, 445, 445,
822
+ /* 570 */ 53, 72, 445, 148, 376, 445, 106, 42, 125, 113,
823
+ /* 580 */ 120, 161, 119, 375, 445, 117, 393, 155, 154, 153,
824
+ /* 590 */ 394, 445, 445, 59, 60, 445, 445, 445, 445, 445,
825
+ /* 600 */ 445, 102, 149, 445, 42, 445, 74, 445, 148, 445,
826
+ /* 610 */ 445, 106, 445, 497, 113, 120, 161, 119, 375, 445,
827
+ /* 620 */ 117, 393, 155, 154, 153, 394, 445, 445, 59, 60,
828
+ /* 630 */ 445, 445, 88, 445, 445, 445, 376, 149, 445, 40,
829
+ /* 640 */ 445, 120, 161, 119, 106, 445, 445, 435, 110, 110,
830
+ /* 650 */ 445, 375, 445, 117, 393, 155, 154, 153, 394, 445,
831
+ /* 660 */ 445, 59, 60, 152, 85, 445, 445, 445, 445, 376,
832
+ /* 670 */ 445, 106, 41, 120, 161, 119, 441, 440, 375, 445,
833
+ /* 680 */ 117, 393, 155, 154, 153, 448, 454, 29, 445, 445,
834
+ /* 690 */ 74, 450, 148, 75, 88, 152, 445, 496, 113, 120,
835
+ /* 700 */ 161, 119, 163, 120, 161, 119, 106, 27, 445, 434,
836
+ /* 710 */ 111, 111, 445, 375, 445, 117, 393, 155, 154, 153,
837
+ /* 720 */ 445, 149, 445, 445, 445, 152, 74, 445, 148, 436,
838
+ /* 730 */ 437, 438, 439, 490, 113, 120, 161, 119, 445, 106,
839
+ /* 740 */ 121, 447, 454, 29, 445, 445, 375, 450, 117, 393,
840
+ /* 750 */ 155, 154, 153, 445, 445, 445, 445, 149, 163, 74,
841
+ /* 760 */ 445, 148, 444, 27, 445, 445, 484, 113, 120, 161,
842
+ /* 770 */ 119, 445, 445, 445, 74, 445, 148, 445, 445, 445,
843
+ /* 780 */ 445, 483, 113, 120, 161, 119, 74, 445, 148, 86,
844
+ /* 790 */ 149, 445, 445, 480, 113, 120, 161, 119, 120, 161,
845
+ /* 800 */ 119, 445, 74, 445, 148, 149, 445, 445, 445, 134,
846
+ /* 810 */ 113, 120, 161, 119, 74, 445, 148, 149, 445, 445,
847
+ /* 820 */ 152, 517, 113, 120, 161, 119, 88, 64, 63, 62,
848
+ /* 830 */ 61, 445, 445, 149, 445, 120, 161, 119, 445, 74,
849
+ /* 840 */ 396, 148, 475, 445, 445, 149, 137, 113, 120, 161,
850
+ /* 850 */ 119, 74, 445, 148, 445, 445, 445, 152, 525, 113,
851
+ /* 860 */ 120, 161, 119, 445, 74, 445, 148, 445, 445, 445,
852
+ /* 870 */ 149, 527, 113, 120, 161, 119, 445, 445, 445, 74,
853
+ /* 880 */ 445, 148, 149, 445, 445, 445, 524, 113, 120, 161,
854
+ /* 890 */ 119, 74, 445, 148, 98, 149, 445, 445, 526, 113,
855
+ /* 900 */ 120, 161, 119, 120, 161, 119, 445, 74, 445, 148,
856
+ /* 910 */ 149, 445, 445, 445, 523, 113, 120, 161, 119, 74,
857
+ /* 920 */ 445, 148, 149, 445, 445, 152, 522, 113, 120, 161,
858
+ /* 930 */ 119, 89, 64, 63, 62, 61, 445, 445, 149, 445,
859
+ /* 940 */ 120, 161, 119, 445, 74, 395, 148, 445, 445, 445,
860
+ /* 950 */ 149, 521, 113, 120, 161, 119, 74, 445, 148, 445,
861
+ /* 960 */ 445, 445, 152, 520, 113, 120, 161, 119, 445, 74,
862
+ /* 970 */ 445, 148, 445, 445, 445, 149, 519, 113, 120, 161,
863
+ /* 980 */ 119, 445, 445, 445, 74, 445, 148, 149, 445, 445,
864
+ /* 990 */ 445, 150, 113, 120, 161, 119, 74, 445, 148, 90,
865
+ /* 1000 */ 149, 445, 445, 151, 113, 120, 161, 119, 120, 161,
866
+ /* 1010 */ 119, 445, 74, 445, 148, 149, 445, 435, 445, 136,
867
+ /* 1020 */ 113, 120, 161, 119, 74, 445, 148, 149, 445, 445,
868
+ /* 1030 */ 152, 135, 113, 120, 161, 119, 64, 63, 62, 61,
869
+ /* 1040 */ 445, 445, 445, 149, 445, 445, 441, 440, 445, 88,
870
+ /* 1050 */ 445, 445, 445, 445, 445, 149, 445, 56, 120, 161,
871
+ /* 1060 */ 119, 88, 445, 445, 10, 479, 479, 445, 445, 445,
872
+ /* 1070 */ 120, 161, 119, 445, 445, 445, 445, 82, 445, 434,
873
+ /* 1080 */ 152, 445, 445, 445, 466, 445, 34, 109, 447, 454,
874
+ /* 1090 */ 29, 445, 152, 445, 450, 445, 445, 445, 107, 436,
875
+ /* 1100 */ 437, 438, 439, 87, 445, 163, 445, 120, 161, 119,
876
+ /* 1110 */ 27, 451, 120, 161, 119, 99, 445, 64, 63, 62,
877
+ /* 1120 */ 61, 445, 100, 445, 120, 161, 119, 101, 445, 152,
878
+ /* 1130 */ 391, 120, 161, 119, 152, 445, 120, 161, 119, 91,
879
+ /* 1140 */ 445, 445, 445, 445, 445, 445, 152, 445, 120, 161,
880
+ /* 1150 */ 119, 103, 445, 152, 92, 445, 445, 445, 152, 445,
881
+ /* 1160 */ 120, 161, 119, 120, 161, 119, 93, 445, 445, 104,
882
+ /* 1170 */ 152, 445, 445, 445, 445, 120, 161, 119, 120, 161,
883
+ /* 1180 */ 119, 445, 152, 445, 94, 152, 445, 445, 445, 445,
884
+ /* 1190 */ 445, 445, 105, 120, 161, 119, 445, 152, 445, 95,
885
+ /* 1200 */ 152, 120, 161, 119, 445, 445, 445, 96, 120, 161,
886
+ /* 1210 */ 119, 445, 445, 445, 445, 152, 120, 161, 119, 445,
887
+ /* 1220 */ 445, 445, 445, 152, 445, 445, 445, 445, 445, 445,
888
+ /* 1230 */ 152, 97, 445, 445, 549, 445, 445, 548, 152, 445,
889
+ /* 1240 */ 120, 161, 119, 120, 161, 119, 120, 161, 119, 445,
890
+ /* 1250 */ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
891
+ /* 1260 */ 445, 445, 152, 547, 445, 152, 546, 445, 152, 115,
892
+ /* 1270 */ 445, 445, 120, 161, 119, 120, 161, 119, 120, 161,
893
+ /* 1280 */ 119, 116, 445, 445, 445, 445, 445, 445, 445, 445,
894
+ /* 1290 */ 120, 161, 119, 445, 152, 445, 445, 152, 445, 445,
895
+ /* 1300 */ 152, 445, 445, 445, 445, 445, 445, 445, 445, 445,
896
+ /* 1310 */ 445, 445, 152,
894897
};
895898
static const YYCODETYPE yy_lookahead[] = {
896
- /* 0 */ 0, 112, 113, 114, 133, 101, 102, 103, 105, 105,
897
- /* 10 */ 10, 112, 113, 114, 110, 111, 112, 113, 114, 105,
898
- /* 20 */ 20, 21, 22, 104, 24, 125, 107, 108, 28, 4,
899
- /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 134, 39,
900
- /* 40 */ 40, 41, 42, 104, 44, 45, 107, 108, 106, 49,
899
+ /* 0 */ 0, 113, 114, 115, 134, 102, 103, 104, 106, 106,
900
+ /* 10 */ 10, 113, 114, 115, 111, 112, 113, 114, 115, 106,
901
+ /* 20 */ 20, 21, 22, 105, 24, 126, 108, 109, 28, 4,
902
+ /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 135, 39,
903
+ /* 40 */ 40, 41, 42, 105, 44, 45, 108, 109, 107, 49,
901904
/* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
902
- /* 60 */ 60, 61, 62, 63, 0, 112, 113, 114, 129, 130,
903
- /* 70 */ 131, 103, 12, 105, 10, 112, 113, 114, 110, 111,
904
- /* 80 */ 112, 113, 114, 105, 20, 21, 22, 17, 24, 112,
905
- /* 90 */ 113, 114, 28, 10, 2, 25, 25, 33, 34, 35,
906
- /* 100 */ 36, 37, 134, 39, 40, 41, 42, 2, 44, 45,
907
- /* 110 */ 132, 28, 127, 49, 50, 51, 52, 53, 54, 55,
905
+ /* 60 */ 60, 61, 62, 63, 0, 113, 114, 115, 130, 131,
906
+ /* 70 */ 132, 104, 25, 106, 10, 113, 114, 115, 111, 112,
907
+ /* 80 */ 113, 114, 115, 106, 20, 21, 22, 128, 24, 113,
908
+ /* 90 */ 114, 115, 28, 129, 2, 26, 27, 33, 34, 35,
909
+ /* 100 */ 36, 37, 135, 39, 40, 41, 42, 2, 44, 45,
910
+ /* 110 */ 133, 26, 27, 49, 50, 51, 52, 53, 54, 55,
908911
/* 120 */ 56, 57, 58, 59, 60, 61, 62, 63, 1, 2,
909
- /* 130 */ 38, 4, 5, 4, 5, 6, 7, 4, 5, 12,
910
- /* 140 */ 3, 81, 15, 38, 1, 115, 17, 2, 88, 115,
911
- /* 150 */ 90, 24, 128, 26, 27, 12, 1, 14, 31, 32,
912
- /* 160 */ 19, 18, 16, 20, 21, 22, 23, 24, 17, 26,
913
- /* 170 */ 27, 15, 29, 30, 31, 32, 31, 32, 64, 65,
914
- /* 180 */ 66, 67, 68, 69, 70, 71, 72, 73, 6, 7,
915
- /* 190 */ 43, 64, 13, 48, 26, 27, 103, 48, 105, 29,
916
- /* 200 */ 30, 31, 32, 110, 111, 112, 113, 114, 81, 64,
917
- /* 210 */ 83, 84, 85, 86, 40, 88, 40, 90, 91, 92,
918
- /* 220 */ 93, 94, 1, 2, 87, 4, 5, 134, 83, 84,
919
- /* 230 */ 85, 86, 48, 12, 96, 97, 15, 41, 20, 21,
920
- /* 240 */ 22, 20, 21, 22, 41, 1, 2, 98, 4, 5,
921
- /* 250 */ 82, 47, 31, 32, 17, 103, 12, 105, 90, 15,
922
- /* 260 */ 26, 27, 110, 111, 112, 113, 114, 49, 50, 51,
923
- /* 270 */ 52, 53, 54, 89, 25, 31, 32, 1, 17, 95,
924
- /* 280 */ 4, 5, 98, 26, 27, 64, 134, 74, 12, 0,
925
- /* 290 */ 79, 15, 78, 3, 2, 80, 20, 21, 22, 10,
926
- /* 300 */ 24, 79, 81, 3, 83, 84, 85, 86, 64, 88,
927
- /* 310 */ 3, 90, 91, 92, 93, 94, 38, 2, 3, 4,
928
- /* 320 */ 5, 6, 7, 31, 32, 81, 3, 83, 84, 85,
929
- /* 330 */ 86, 16, 88, 3, 90, 91, 92, 93, 94, 3,
930
- /* 340 */ 25, 95, 4, 5, 6, 7, 31, 32, 1, 2,
931
- /* 350 */ 76, 4, 5, 38, 25, 17, 64, 81, 15, 12,
932
- /* 360 */ 15, 15, 15, 25, 88, 17, 90, 91, 92, 93,
933
- /* 370 */ 94, 4, 5, 6, 7, 83, 84, 85, 86, 28,
934
- /* 380 */ 28, 28, 67, 68, 12, 38, 89, 3, 11, 135,
935
- /* 390 */ 75, 135, 77, 78, 79, 2, 3, 4, 5, 6,
936
- /* 400 */ 7, 1, 35, 135, 4, 5, 4, 5, 6, 7,
937
- /* 410 */ 17, 135, 12, 135, 135, 15, 135, 135, 25, 17,
938
- /* 420 */ 20, 21, 22, 135, 31, 32, 135, 25, 81, 135,
939
- /* 430 */ 135, 38, 135, 135, 135, 88, 135, 90, 91, 92,
940
- /* 440 */ 93, 94, 135, 1, 2, 135, 4, 5, 4, 5,
941
- /* 450 */ 6, 7, 8, 135, 12, 26, 27, 15, 135, 135,
942
- /* 460 */ 67, 68, 99, 100, 101, 102, 135, 135, 75, 106,
943
- /* 470 */ 77, 78, 79, 2, 3, 4, 5, 6, 7, 135,
944
- /* 480 */ 117, 81, 135, 135, 121, 122, 135, 135, 88, 135,
945
- /* 490 */ 90, 91, 92, 93, 94, 135, 25, 103, 135, 105,
946
- /* 500 */ 135, 135, 31, 32, 110, 111, 112, 113, 114, 38,
947
- /* 510 */ 135, 1, 135, 135, 4, 5, 135, 135, 135, 90,
948
- /* 520 */ 135, 135, 12, 81, 135, 15, 135, 135, 134, 135,
949
- /* 530 */ 88, 135, 90, 91, 92, 93, 94, 135, 67, 68,
950
- /* 540 */ 1, 2, 135, 4, 5, 135, 75, 135, 77, 78,
951
- /* 550 */ 79, 12, 135, 135, 15, 135, 46, 47, 1, 135,
952
- /* 560 */ 135, 4, 5, 99, 100, 101, 102, 135, 135, 12,
953
- /* 570 */ 106, 135, 15, 135, 1, 135, 135, 4, 5, 135,
954
- /* 580 */ 135, 117, 135, 135, 135, 12, 122, 135, 15, 135,
955
- /* 590 */ 135, 81, 135, 4, 5, 6, 7, 135, 88, 135,
956
- /* 600 */ 90, 91, 92, 93, 94, 1, 17, 135, 4, 5,
957
- /* 610 */ 135, 135, 135, 135, 135, 103, 12, 105, 135, 15,
958
- /* 620 */ 81, 135, 110, 111, 112, 113, 114, 88, 135, 90,
959
- /* 630 */ 91, 92, 93, 94, 135, 100, 101, 102, 81, 135,
960
- /* 640 */ 135, 106, 135, 135, 135, 88, 134, 90, 91, 92,
961
- /* 650 */ 93, 94, 117, 135, 81, 135, 135, 122, 135, 135,
962
- /* 660 */ 135, 88, 135, 90, 91, 92, 93, 94, 1, 135,
963
- /* 670 */ 135, 4, 5, 4, 5, 6, 7, 135, 135, 12,
964
- /* 680 */ 135, 135, 15, 135, 135, 81, 17, 4, 5, 6,
965
- /* 690 */ 7, 135, 88, 135, 90, 91, 92, 93, 94, 135,
966
- /* 700 */ 135, 135, 103, 135, 105, 135, 103, 135, 135, 110,
967
- /* 710 */ 111, 112, 113, 114, 135, 112, 113, 114, 35, 103,
968
- /* 720 */ 135, 105, 119, 120, 135, 135, 110, 111, 112, 113,
969
- /* 730 */ 114, 135, 135, 134, 103, 135, 105, 134, 135, 135,
970
- /* 740 */ 135, 110, 111, 112, 113, 114, 135, 135, 81, 135,
971
- /* 750 */ 134, 135, 135, 103, 135, 88, 135, 90, 91, 92,
972
- /* 760 */ 93, 94, 112, 113, 114, 134, 116, 103, 135, 105,
973
- /* 770 */ 135, 103, 135, 135, 110, 111, 112, 113, 114, 135,
974
- /* 780 */ 112, 113, 114, 103, 134, 105, 118, 119, 120, 135,
975
- /* 790 */ 110, 111, 112, 113, 114, 135, 135, 135, 134, 103,
976
- /* 800 */ 135, 105, 134, 135, 135, 135, 110, 111, 112, 113,
977
- /* 810 */ 114, 135, 135, 103, 134, 105, 135, 135, 135, 135,
978
- /* 820 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
979
- /* 830 */ 134, 135, 110, 111, 112, 113, 114, 135, 103, 135,
980
- /* 840 */ 105, 135, 135, 135, 134, 110, 111, 112, 113, 114,
981
- /* 850 */ 135, 135, 103, 135, 105, 135, 134, 135, 135, 110,
982
- /* 860 */ 111, 112, 113, 114, 103, 135, 105, 135, 135, 134,
983
- /* 870 */ 135, 110, 111, 112, 113, 114, 135, 135, 103, 135,
984
- /* 880 */ 105, 135, 103, 134, 135, 110, 111, 112, 113, 114,
985
- /* 890 */ 135, 112, 113, 114, 103, 134, 105, 103, 119, 120,
986
- /* 900 */ 135, 110, 111, 112, 113, 114, 112, 113, 114, 134,
987
- /* 910 */ 103, 135, 105, 134, 135, 135, 135, 110, 111, 112,
988
- /* 920 */ 113, 114, 135, 135, 103, 134, 105, 135, 134, 135,
989
- /* 930 */ 135, 110, 111, 112, 113, 114, 103, 135, 105, 135,
990
- /* 940 */ 135, 134, 135, 110, 111, 112, 113, 114, 135, 103,
991
- /* 950 */ 135, 105, 135, 135, 135, 134, 110, 111, 112, 113,
992
- /* 960 */ 114, 135, 135, 103, 135, 105, 135, 134, 135, 135,
993
- /* 970 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
994
- /* 980 */ 134, 135, 110, 111, 112, 113, 114, 135, 135, 103,
995
- /* 990 */ 135, 105, 103, 135, 134, 135, 110, 111, 112, 113,
996
- /* 1000 */ 114, 112, 113, 114, 135, 116, 134, 135, 103, 135,
997
- /* 1010 */ 135, 135, 123, 124, 135, 135, 103, 112, 113, 114,
998
- /* 1020 */ 134, 135, 135, 134, 119, 112, 113, 114, 135, 116,
999
- /* 1030 */ 135, 126, 103, 128, 135, 103, 135, 124, 135, 134,
1000
- /* 1040 */ 135, 112, 113, 114, 112, 113, 114, 134, 103, 135,
1001
- /* 1050 */ 135, 119, 4, 5, 6, 7, 135, 112, 113, 114,
1002
- /* 1060 */ 103, 116, 135, 134, 103, 17, 134, 103, 135, 112,
1003
- /* 1070 */ 113, 114, 135, 112, 113, 114, 112, 113, 114, 134,
1004
- /* 1080 */ 135, 4, 5, 6, 7, 135, 135, 135, 135, 135,
1005
- /* 1090 */ 103, 134, 135, 103, 17, 134, 103, 135, 134, 112,
1006
- /* 1100 */ 113, 114, 112, 113, 114, 112, 113, 114, 135, 103,
1007
- /* 1110 */ 4, 5, 6, 7, 135, 135, 135, 135, 112, 113,
1008
- /* 1120 */ 114, 134, 103, 17, 134, 135, 135, 134, 103, 135,
1009
- /* 1130 */ 135, 112, 113, 114, 135, 103, 135, 112, 113, 114,
1010
- /* 1140 */ 134, 103, 135, 135, 112, 113, 114, 103, 135, 135,
1011
- /* 1150 */ 112, 113, 114, 134, 135, 135, 112, 113, 114, 134,
1012
- /* 1160 */ 135, 135, 135, 135, 103, 135, 134, 135, 135, 135,
1013
- /* 1170 */ 103, 135, 134, 112, 113, 114, 135, 103, 134, 112,
1014
- /* 1180 */ 113, 114, 103, 135, 135, 135, 112, 113, 114, 135,
1015
- /* 1190 */ 135, 112, 113, 114, 103, 134, 135, 135, 135, 135,
1016
- /* 1200 */ 103, 134, 135, 112, 113, 114, 103, 135, 134, 112,
1017
- /* 1210 */ 113, 114, 135, 134, 135, 112, 113, 114, 135, 135,
1018
- /* 1220 */ 135, 135, 135, 103, 135, 134, 135, 135, 135, 135,
1019
- /* 1230 */ 135, 134, 112, 113, 114, 103, 135, 134, 135, 103,
1020
- /* 1240 */ 135, 135, 103, 135, 112, 113, 114, 135, 112, 113,
1021
- /* 1250 */ 114, 112, 113, 114, 134, 4, 5, 6, 7, 4,
1022
- /* 1260 */ 5, 6, 7, 135, 135, 135, 134, 135, 135, 135,
1023
- /* 1270 */ 134, 135, 135, 134, 135, 135, 25, 135, 135, 135,
1024
- /* 1280 */ 25, 4, 5, 6, 7, 135, 135, 135, 135, 135,
1025
- /* 1290 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1026
- /* 1300 */ 135, 135, 25, 135, 135, 135, 135, 135, 135, 135,
1027
- /* 1310 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1028
- /* 1320 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1029
- /* 1330 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1030
- /* 1340 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1031
- /* 1350 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1032
- /* 1360 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1033
- /* 1370 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1034
- /* 1380 */ 135, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1035
- /* 1390 */ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1036
- /* 1400 */ 99, 99,
912
+ /* 130 */ 38, 4, 5, 4, 5, 6, 7, 17, 10, 12,
913
+ /* 140 */ 4, 5, 15, 38, 1, 25, 17, 29, 30, 31,
914
+ /* 150 */ 32, 24, 83, 26, 27, 12, 28, 14, 31, 32,
915
+ /* 160 */ 91, 18, 116, 20, 21, 22, 23, 24, 116, 26,
916
+ /* 170 */ 27, 19, 29, 30, 31, 32, 91, 3, 64, 65,
917
+ /* 180 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 6,
918
+ /* 190 */ 7, 64, 4, 5, 6, 7, 8, 97, 98, 20,
919
+ /* 200 */ 21, 22, 26, 27, 4, 5, 6, 7, 1, 82,
920
+ /* 210 */ 48, 84, 85, 86, 87, 17, 89, 17, 91, 92,
921
+ /* 220 */ 93, 94, 95, 1, 2, 25, 4, 5, 49, 50,
922
+ /* 230 */ 51, 52, 53, 54, 12, 16, 15, 15, 4, 5,
923
+ /* 240 */ 6, 7, 20, 21, 22, 1, 26, 27, 4, 5,
924
+ /* 250 */ 48, 43, 90, 31, 32, 40, 12, 40, 96, 15,
925
+ /* 260 */ 47, 99, 88, 104, 20, 21, 22, 1, 24, 35,
926
+ /* 270 */ 4, 5, 113, 114, 115, 0, 117, 41, 12, 41,
927
+ /* 280 */ 13, 15, 17, 124, 125, 10, 64, 25, 1, 2,
928
+ /* 290 */ 17, 4, 5, 75, 135, 81, 80, 3, 3, 12,
929
+ /* 300 */ 3, 99, 15, 79, 82, 80, 84, 85, 86, 87,
930
+ /* 310 */ 38, 89, 3, 91, 92, 93, 94, 95, 31, 32,
931
+ /* 320 */ 2, 3, 4, 5, 6, 7, 82, 3, 3, 12,
932
+ /* 330 */ 77, 104, 25, 89, 16, 91, 92, 93, 94, 95,
933
+ /* 340 */ 113, 114, 115, 25, 117, 96, 15, 15, 82, 31,
934
+ /* 350 */ 32, 64, 125, 15, 17, 89, 38, 91, 92, 93,
935
+ /* 360 */ 94, 95, 135, 28, 4, 5, 6, 7, 28, 82,
936
+ /* 370 */ 28, 84, 85, 86, 87, 12, 89, 3, 91, 92,
937
+ /* 380 */ 93, 94, 95, 90, 11, 67, 68, 136, 2, 3,
938
+ /* 390 */ 4, 5, 6, 7, 76, 35, 78, 79, 80, 82,
939
+ /* 400 */ 136, 136, 136, 17, 136, 136, 89, 136, 91, 136,
940
+ /* 410 */ 136, 25, 104, 136, 106, 136, 136, 31, 32, 111,
941
+ /* 420 */ 112, 113, 114, 115, 38, 136, 136, 2, 3, 4,
942
+ /* 430 */ 5, 6, 7, 136, 1, 136, 136, 4, 5, 4,
943
+ /* 440 */ 5, 6, 7, 135, 136, 12, 136, 136, 15, 136,
944
+ /* 450 */ 25, 136, 17, 67, 68, 136, 31, 32, 136, 136,
945
+ /* 460 */ 25, 136, 76, 38, 78, 79, 80, 1, 136, 136,
946
+ /* 470 */ 4, 5, 4, 5, 6, 7, 136, 136, 12, 46,
947
+ /* 480 */ 47, 15, 136, 136, 136, 17, 20, 21, 22, 136,
948
+ /* 490 */ 136, 136, 67, 68, 136, 1, 2, 136, 4, 5,
949
+ /* 500 */ 136, 76, 136, 78, 79, 80, 12, 136, 104, 15,
950
+ /* 510 */ 4, 5, 6, 7, 136, 82, 136, 113, 114, 115,
951
+ /* 520 */ 136, 117, 89, 17, 91, 92, 93, 94, 95, 136,
952
+ /* 530 */ 1, 2, 38, 4, 5, 4, 5, 6, 7, 135,
953
+ /* 540 */ 136, 12, 136, 136, 15, 136, 136, 136, 82, 4,
954
+ /* 550 */ 5, 6, 7, 136, 136, 89, 25, 91, 92, 93,
955
+ /* 560 */ 94, 95, 136, 1, 2, 136, 4, 5, 136, 136,
956
+ /* 570 */ 25, 104, 136, 106, 12, 136, 82, 15, 111, 112,
957
+ /* 580 */ 113, 114, 115, 89, 136, 91, 92, 93, 94, 95,
958
+ /* 590 */ 1, 136, 136, 4, 5, 136, 136, 136, 136, 136,
959
+ /* 600 */ 136, 12, 135, 136, 15, 136, 104, 136, 106, 136,
960
+ /* 610 */ 136, 82, 136, 111, 112, 113, 114, 115, 89, 136,
961
+ /* 620 */ 91, 92, 93, 94, 95, 1, 136, 136, 4, 5,
962
+ /* 630 */ 136, 136, 104, 136, 136, 136, 12, 135, 136, 15,
963
+ /* 640 */ 136, 113, 114, 115, 82, 136, 136, 2, 120, 121,
964
+ /* 650 */ 136, 89, 136, 91, 92, 93, 94, 95, 1, 136,
965
+ /* 660 */ 136, 4, 5, 135, 104, 136, 136, 136, 136, 12,
966
+ /* 670 */ 136, 82, 15, 113, 114, 115, 31, 32, 89, 136,
967
+ /* 680 */ 91, 92, 93, 94, 95, 101, 102, 103, 136, 136,
968
+ /* 690 */ 104, 107, 106, 48, 104, 135, 136, 111, 112, 113,
969
+ /* 700 */ 114, 115, 118, 113, 114, 115, 82, 123, 136, 64,
970
+ /* 710 */ 120, 121, 136, 89, 136, 91, 92, 93, 94, 95,
971
+ /* 720 */ 136, 135, 136, 136, 136, 135, 104, 136, 106, 84,
972
+ /* 730 */ 85, 86, 87, 111, 112, 113, 114, 115, 136, 82,
973
+ /* 740 */ 100, 101, 102, 103, 136, 136, 89, 107, 91, 92,
974
+ /* 750 */ 93, 94, 95, 136, 136, 136, 136, 135, 118, 104,
975
+ /* 760 */ 136, 106, 122, 123, 136, 136, 111, 112, 113, 114,
976
+ /* 770 */ 115, 136, 136, 136, 104, 136, 106, 136, 136, 136,
977
+ /* 780 */ 136, 111, 112, 113, 114, 115, 104, 136, 106, 104,
978
+ /* 790 */ 135, 136, 136, 111, 112, 113, 114, 115, 113, 114,
979
+ /* 800 */ 115, 136, 104, 136, 106, 135, 136, 136, 136, 111,
980
+ /* 810 */ 112, 113, 114, 115, 104, 136, 106, 135, 136, 136,
981
+ /* 820 */ 135, 111, 112, 113, 114, 115, 104, 4, 5, 6,
982
+ /* 830 */ 7, 136, 136, 135, 136, 113, 114, 115, 136, 104,
983
+ /* 840 */ 17, 106, 120, 136, 136, 135, 111, 112, 113, 114,
984
+ /* 850 */ 115, 104, 136, 106, 136, 136, 136, 135, 111, 112,
985
+ /* 860 */ 113, 114, 115, 136, 104, 136, 106, 136, 136, 136,
986
+ /* 870 */ 135, 111, 112, 113, 114, 115, 136, 136, 136, 104,
987
+ /* 880 */ 136, 106, 135, 136, 136, 136, 111, 112, 113, 114,
988
+ /* 890 */ 115, 104, 136, 106, 104, 135, 136, 136, 111, 112,
989
+ /* 900 */ 113, 114, 115, 113, 114, 115, 136, 104, 136, 106,
990
+ /* 910 */ 135, 136, 136, 136, 111, 112, 113, 114, 115, 104,
991
+ /* 920 */ 136, 106, 135, 136, 136, 135, 111, 112, 113, 114,
992
+ /* 930 */ 115, 104, 4, 5, 6, 7, 136, 136, 135, 136,
993
+ /* 940 */ 113, 114, 115, 136, 104, 17, 106, 136, 136, 136,
994
+ /* 950 */ 135, 111, 112, 113, 114, 115, 104, 136, 106, 136,
995
+ /* 960 */ 136, 136, 135, 111, 112, 113, 114, 115, 136, 104,
996
+ /* 970 */ 136, 106, 136, 136, 136, 135, 111, 112, 113, 114,
997
+ /* 980 */ 115, 136, 136, 136, 104, 136, 106, 135, 136, 136,
998
+ /* 990 */ 136, 111, 112, 113, 114, 115, 104, 136, 106, 104,
999
+ /* 1000 */ 135, 136, 136, 111, 112, 113, 114, 115, 113, 114,
1000
+ /* 1010 */ 115, 136, 104, 136, 106, 135, 136, 2, 136, 111,
1001
+ /* 1020 */ 112, 113, 114, 115, 104, 136, 106, 135, 136, 136,
1002
+ /* 1030 */ 135, 111, 112, 113, 114, 115, 4, 5, 6, 7,
1003
+ /* 1040 */ 136, 136, 136, 135, 136, 136, 31, 32, 136, 104,
1004
+ /* 1050 */ 136, 136, 136, 136, 136, 135, 136, 25, 113, 114,
1005
+ /* 1060 */ 115, 104, 136, 136, 119, 120, 121, 136, 136, 136,
1006
+ /* 1070 */ 113, 114, 115, 136, 136, 136, 136, 120, 136, 64,
1007
+ /* 1080 */ 135, 136, 136, 136, 127, 136, 129, 100, 101, 102,
1008
+ /* 1090 */ 103, 136, 135, 136, 107, 136, 136, 136, 104, 84,
1009
+ /* 1100 */ 85, 86, 87, 104, 136, 118, 136, 113, 114, 115,
1010
+ /* 1110 */ 123, 117, 113, 114, 115, 104, 136, 4, 5, 6,
1011
+ /* 1120 */ 7, 136, 104, 136, 113, 114, 115, 104, 136, 135,
1012
+ /* 1130 */ 17, 113, 114, 115, 135, 136, 113, 114, 115, 104,
1013
+ /* 1140 */ 136, 136, 136, 136, 136, 136, 135, 136, 113, 114,
1014
+ /* 1150 */ 115, 104, 136, 135, 104, 136, 136, 136, 135, 136,
1015
+ /* 1160 */ 113, 114, 115, 113, 114, 115, 104, 136, 136, 104,
1016
+ /* 1170 */ 135, 136, 136, 136, 136, 113, 114, 115, 113, 114,
1017
+ /* 1180 */ 115, 136, 135, 136, 104, 135, 136, 136, 136, 136,
1018
+ /* 1190 */ 136, 136, 104, 113, 114, 115, 136, 135, 136, 104,
1019
+ /* 1200 */ 135, 113, 114, 115, 136, 136, 136, 104, 113, 114,
1020
+ /* 1210 */ 115, 136, 136, 136, 136, 135, 113, 114, 115, 136,
1021
+ /* 1220 */ 136, 136, 136, 135, 136, 136, 136, 136, 136, 136,
1022
+ /* 1230 */ 135, 104, 136, 136, 104, 136, 136, 104, 135, 136,
1023
+ /* 1240 */ 113, 114, 115, 113, 114, 115, 113, 114, 115, 136,
1024
+ /* 1250 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1025
+ /* 1260 */ 136, 136, 135, 104, 136, 135, 104, 136, 135, 104,
1026
+ /* 1270 */ 136, 136, 113, 114, 115, 113, 114, 115, 113, 114,
1027
+ /* 1280 */ 115, 104, 136, 136, 136, 136, 136, 136, 136, 136,
1028
+ /* 1290 */ 113, 114, 115, 136, 135, 136, 136, 135, 136, 136,
1029
+ /* 1300 */ 135, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1030
+ /* 1310 */ 136, 136, 135, 100, 100, 100, 100, 100, 100, 100,
1031
+ /* 1320 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1032
+ /* 1330 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1033
+ /* 1340 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1034
+ /* 1350 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1035
+ /* 1360 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1036
+ /* 1370 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1037
+ /* 1380 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1038
+ /* 1390 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1039
+ /* 1400 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1040
+ /* 1410 */ 100, 100, 100,
10371041
};
10381042
#define YY_SHIFT_COUNT (163)
10391043
#define YY_SHIFT_MIN (0)
1040
-#define YY_SHIFT_MAX (1277)
1044
+#define YY_SHIFT_MAX (1113)
10411045
static const unsigned short int yy_shift_ofst[] = {
1042
- /* 0 */ 143, 127, 221, 244, 244, 244, 244, 244, 244, 244,
1043
- /* 10 */ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1044
- /* 20 */ 244, 244, 244, 244, 244, 244, 244, 276, 510, 557,
1045
- /* 30 */ 276, 143, 347, 347, 0, 64, 143, 573, 557, 573,
1046
- /* 40 */ 400, 400, 400, 442, 539, 557, 557, 557, 557, 557,
1047
- /* 50 */ 557, 604, 557, 557, 667, 557, 557, 557, 557, 557,
1048
- /* 60 */ 557, 557, 557, 557, 557, 218, 60, 60, 60, 60,
1049
- /* 70 */ 60, 145, 315, 393, 471, 292, 292, 170, 71, 1303,
1050
- /* 80 */ 1303, 1303, 1303, 114, 114, 338, 402, 129, 444, 367,
1051
- /* 90 */ 683, 589, 1251, 669, 1255, 1048, 1277, 1077, 1106, 25,
1052
- /* 100 */ 25, 25, 184, 25, 25, 25, 168, 25, 429, 83,
1053
- /* 110 */ 92, 105, 70, 133, 138, 182, 182, 234, 257, 137,
1054
- /* 120 */ 149, 289, 141, 155, 151, 146, 156, 147, 174, 176,
1055
- /* 130 */ 196, 203, 204, 179, 237, 249, 213, 261, 211, 214,
1056
- /* 140 */ 215, 222, 290, 300, 307, 278, 323, 330, 336, 246,
1057
- /* 150 */ 274, 329, 246, 343, 345, 346, 348, 351, 352, 353,
1058
- /* 160 */ 372, 297, 384, 377,
1046
+ /* 0 */ 143, 127, 222, 287, 287, 287, 287, 287, 287, 287,
1047
+ /* 10 */ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1048
+ /* 20 */ 287, 287, 287, 287, 287, 287, 287, 244, 433, 266,
1049
+ /* 30 */ 244, 143, 494, 494, 0, 64, 143, 589, 266, 589,
1050
+ /* 40 */ 466, 466, 466, 529, 562, 266, 266, 266, 266, 266,
1051
+ /* 50 */ 266, 624, 266, 266, 657, 266, 266, 266, 266, 266,
1052
+ /* 60 */ 266, 266, 266, 266, 266, 179, 317, 317, 317, 317,
1053
+ /* 70 */ 317, 645, 318, 386, 425, 1015, 1015, 118, 47, 1313,
1054
+ /* 80 */ 1313, 1313, 1313, 114, 114, 200, 435, 129, 188, 234,
1055
+ /* 90 */ 360, 468, 531, 506, 545, 823, 1032, 928, 1113, 25,
1056
+ /* 100 */ 25, 25, 162, 25, 25, 25, 69, 25, 85, 128,
1057
+ /* 110 */ 92, 105, 120, 136, 100, 183, 183, 176, 220, 174,
1058
+ /* 120 */ 202, 275, 152, 207, 198, 219, 221, 208, 215, 217,
1059
+ /* 130 */ 236, 238, 213, 267, 265, 262, 218, 273, 216, 224,
1060
+ /* 140 */ 214, 225, 294, 295, 297, 272, 309, 324, 325, 249,
1061
+ /* 150 */ 253, 307, 249, 331, 332, 338, 337, 335, 340, 342,
1062
+ /* 160 */ 363, 293, 374, 373,
10591063
};
10601064
#define YY_REDUCE_COUNT (82)
1061
-#define YY_REDUCE_MIN (-129)
1062
-#define YY_REDUCE_MAX (1139)
1065
+#define YY_REDUCE_MIN (-130)
1066
+#define YY_REDUCE_MAX (1177)
10631067
static const short yy_reduce_ofst[] = {
1064
- /* 0 */ 363, -96, -32, 93, 152, 394, 512, 599, 616, 631,
1065
- /* 10 */ 664, 680, 696, 710, 722, 735, 749, 761, 775, 791,
1066
- /* 20 */ 807, 821, 833, 846, 860, 872, 886, 889, 668, 905,
1067
- /* 30 */ 913, 464, 603, 779, -61, -61, 535, 650, 932, 945,
1068
- /* 40 */ 794, 929, 957, 961, 964, 987, 990, 993, 1006, 1019,
1069
- /* 50 */ 1025, 1032, 1038, 1044, 1061, 1067, 1074, 1079, 1091, 1097,
1070
- /* 60 */ 1103, 1120, 1132, 1136, 1139, -81, -111, -101, -47, -37,
1071
- /* 70 */ -23, -22, -129, -129, -129, -97, -86, -58, -100, -15,
1072
- /* 80 */ 30, 34, 24,
1068
+ /* 0 */ 640, -97, -33, 308, 467, 502, 586, 622, 655, 670,
1069
+ /* 10 */ 682, 698, 710, 735, 747, 760, 775, 787, 803, 815,
1070
+ /* 20 */ 840, 852, 865, 880, 892, 908, 920, 159, 945, 957,
1071
+ /* 30 */ 227, 987, 528, 590, -62, -62, 584, 404, 722, 994,
1072
+ /* 40 */ 560, 685, 790, 827, 895, 999, 1011, 1018, 1023, 1035,
1073
+ /* 50 */ 1047, 1050, 1062, 1065, 1080, 1088, 1095, 1103, 1127, 1130,
1074
+ /* 60 */ 1133, 1159, 1162, 1165, 1177, -82, -112, -102, -48, -38,
1075
+ /* 70 */ -24, -23, -130, -130, -130, -98, -87, -59, -101, -41,
1076
+ /* 80 */ 46, 52, -36,
10731077
};
10741078
static const YYACTIONTYPE yy_default[] = {
10751079
/* 0 */ 449, 443, 443, 443, 443, 443, 443, 443, 443, 443,
10761080
/* 10 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
10771081
/* 20 */ 443, 443, 443, 443, 443, 443, 443, 443, 473, 576,
@@ -1177,10 +1181,11 @@
11771181
0, /* RJUST => nothing */
11781182
0, /* ABOVE => nothing */
11791183
0, /* BELOW => nothing */
11801184
0, /* ITALIC => nothing */
11811185
0, /* BOLD => nothing */
1186
+ 0, /* MONO => nothing */
11821187
0, /* ALIGNED => nothing */
11831188
0, /* BIG => nothing */
11841189
0, /* SMALL => nothing */
11851190
0, /* AND => nothing */
11861191
0, /* LT => nothing */
@@ -1364,74 +1369,75 @@
13641369
/* 66 */ "RJUST",
13651370
/* 67 */ "ABOVE",
13661371
/* 68 */ "BELOW",
13671372
/* 69 */ "ITALIC",
13681373
/* 70 */ "BOLD",
1369
- /* 71 */ "ALIGNED",
1370
- /* 72 */ "BIG",
1371
- /* 73 */ "SMALL",
1372
- /* 74 */ "AND",
1373
- /* 75 */ "LT",
1374
- /* 76 */ "GT",
1375
- /* 77 */ "ON",
1376
- /* 78 */ "WAY",
1377
- /* 79 */ "BETWEEN",
1378
- /* 80 */ "THE",
1379
- /* 81 */ "NTH",
1380
- /* 82 */ "VERTEX",
1381
- /* 83 */ "TOP",
1382
- /* 84 */ "BOTTOM",
1383
- /* 85 */ "START",
1384
- /* 86 */ "END",
1385
- /* 87 */ "IN",
1386
- /* 88 */ "THIS",
1387
- /* 89 */ "DOT_U",
1388
- /* 90 */ "LAST",
1389
- /* 91 */ "NUMBER",
1390
- /* 92 */ "FUNC1",
1391
- /* 93 */ "FUNC2",
1392
- /* 94 */ "DIST",
1393
- /* 95 */ "DOT_XY",
1394
- /* 96 */ "X",
1395
- /* 97 */ "Y",
1396
- /* 98 */ "DOT_L",
1397
- /* 99 */ "statement_list",
1398
- /* 100 */ "statement",
1399
- /* 101 */ "unnamed_statement",
1400
- /* 102 */ "basetype",
1401
- /* 103 */ "expr",
1402
- /* 104 */ "numproperty",
1403
- /* 105 */ "edge",
1404
- /* 106 */ "direction",
1405
- /* 107 */ "dashproperty",
1406
- /* 108 */ "colorproperty",
1407
- /* 109 */ "locproperty",
1408
- /* 110 */ "position",
1409
- /* 111 */ "place",
1410
- /* 112 */ "object",
1411
- /* 113 */ "objectname",
1412
- /* 114 */ "nth",
1413
- /* 115 */ "textposition",
1414
- /* 116 */ "rvalue",
1415
- /* 117 */ "lvalue",
1416
- /* 118 */ "even",
1417
- /* 119 */ "relexpr",
1418
- /* 120 */ "optrelexpr",
1419
- /* 121 */ "document",
1420
- /* 122 */ "print",
1421
- /* 123 */ "prlist",
1422
- /* 124 */ "pritem",
1423
- /* 125 */ "prsep",
1424
- /* 126 */ "attribute_list",
1425
- /* 127 */ "savelist",
1426
- /* 128 */ "alist",
1427
- /* 129 */ "attribute",
1428
- /* 130 */ "go",
1429
- /* 131 */ "boolproperty",
1430
- /* 132 */ "withclause",
1431
- /* 133 */ "between",
1432
- /* 134 */ "place2",
1374
+ /* 71 */ "MONO",
1375
+ /* 72 */ "ALIGNED",
1376
+ /* 73 */ "BIG",
1377
+ /* 74 */ "SMALL",
1378
+ /* 75 */ "AND",
1379
+ /* 76 */ "LT",
1380
+ /* 77 */ "GT",
1381
+ /* 78 */ "ON",
1382
+ /* 79 */ "WAY",
1383
+ /* 80 */ "BETWEEN",
1384
+ /* 81 */ "THE",
1385
+ /* 82 */ "NTH",
1386
+ /* 83 */ "VERTEX",
1387
+ /* 84 */ "TOP",
1388
+ /* 85 */ "BOTTOM",
1389
+ /* 86 */ "START",
1390
+ /* 87 */ "END",
1391
+ /* 88 */ "IN",
1392
+ /* 89 */ "THIS",
1393
+ /* 90 */ "DOT_U",
1394
+ /* 91 */ "LAST",
1395
+ /* 92 */ "NUMBER",
1396
+ /* 93 */ "FUNC1",
1397
+ /* 94 */ "FUNC2",
1398
+ /* 95 */ "DIST",
1399
+ /* 96 */ "DOT_XY",
1400
+ /* 97 */ "X",
1401
+ /* 98 */ "Y",
1402
+ /* 99 */ "DOT_L",
1403
+ /* 100 */ "statement_list",
1404
+ /* 101 */ "statement",
1405
+ /* 102 */ "unnamed_statement",
1406
+ /* 103 */ "basetype",
1407
+ /* 104 */ "expr",
1408
+ /* 105 */ "numproperty",
1409
+ /* 106 */ "edge",
1410
+ /* 107 */ "direction",
1411
+ /* 108 */ "dashproperty",
1412
+ /* 109 */ "colorproperty",
1413
+ /* 110 */ "locproperty",
1414
+ /* 111 */ "position",
1415
+ /* 112 */ "place",
1416
+ /* 113 */ "object",
1417
+ /* 114 */ "objectname",
1418
+ /* 115 */ "nth",
1419
+ /* 116 */ "textposition",
1420
+ /* 117 */ "rvalue",
1421
+ /* 118 */ "lvalue",
1422
+ /* 119 */ "even",
1423
+ /* 120 */ "relexpr",
1424
+ /* 121 */ "optrelexpr",
1425
+ /* 122 */ "document",
1426
+ /* 123 */ "print",
1427
+ /* 124 */ "prlist",
1428
+ /* 125 */ "pritem",
1429
+ /* 126 */ "prsep",
1430
+ /* 127 */ "attribute_list",
1431
+ /* 128 */ "savelist",
1432
+ /* 129 */ "alist",
1433
+ /* 130 */ "attribute",
1434
+ /* 131 */ "go",
1435
+ /* 132 */ "boolproperty",
1436
+ /* 133 */ "withclause",
1437
+ /* 134 */ "between",
1438
+ /* 135 */ "place2",
14331439
};
14341440
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
14351441
14361442
#ifndef NDEBUG
14371443
/* For tracing reduce actions, the names of all rules are required.
@@ -1498,11 +1504,11 @@
14981504
/* 58 */ "boolproperty ::= INVIS",
14991505
/* 59 */ "boolproperty ::= THICK",
15001506
/* 60 */ "boolproperty ::= THIN",
15011507
/* 61 */ "boolproperty ::= SOLID",
15021508
/* 62 */ "textposition ::=",
1503
- /* 63 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1509
+ /* 63 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL",
15041510
/* 64 */ "position ::= expr COMMA expr",
15051511
/* 65 */ "position ::= place PLUS expr COMMA expr",
15061512
/* 66 */ "position ::= place MINUS expr COMMA expr",
15071513
/* 67 */ "position ::= place PLUS LP expr COMMA expr RP",
15081514
/* 68 */ "position ::= place MINUS LP expr COMMA expr RP",
@@ -1716,24 +1722,24 @@
17161722
** Note: during a reduce, the only symbols destroyed are those
17171723
** which appear on the RHS of the rule, but which are *not* used
17181724
** inside the C code.
17191725
*/
17201726
/********* Begin destructor definitions ***************************************/
1721
- case 99: /* statement_list */
1722
-{
1723
-#line 509 "pikchr.y"
1724
-pik_elist_free(p,(yypminor->yy227));
1725
-#line 1750 "pikchr.c"
1726
-}
1727
- break;
1728
- case 100: /* statement */
1729
- case 101: /* unnamed_statement */
1730
- case 102: /* basetype */
1731
-{
1732
-#line 511 "pikchr.y"
1733
-pik_elem_free(p,(yypminor->yy36));
1734
-#line 1759 "pikchr.c"
1727
+ case 100: /* statement_list */
1728
+{
1729
+#line 510 "pikchr.y"
1730
+pik_elist_free(p,(yypminor->yy235));
1731
+#line 1756 "pikchr.c"
1732
+}
1733
+ break;
1734
+ case 101: /* statement */
1735
+ case 102: /* unnamed_statement */
1736
+ case 103: /* basetype */
1737
+{
1738
+#line 512 "pikchr.y"
1739
+pik_elem_free(p,(yypminor->yy162));
1740
+#line 1765 "pikchr.c"
17351741
}
17361742
break;
17371743
/********* End destructor definitions *****************************************/
17381744
default: break; /* If no destructor action specified: do nothing */
17391745
}
@@ -1947,14 +1953,14 @@
19471953
#endif
19481954
while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
19491955
/* Here code is inserted which will execute if the parser
19501956
** stack every overflows */
19511957
/******** Begin %stack_overflow code ******************************************/
1952
-#line 543 "pikchr.y"
1958
+#line 544 "pikchr.y"
19531959
19541960
pik_error(p, 0, "parser stack overflow");
1955
-#line 1980 "pikchr.c"
1961
+#line 1986 "pikchr.c"
19561962
/******** End %stack_overflow code ********************************************/
19571963
pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
19581964
pik_parserCTX_STORE
19591965
}
19601966
@@ -2022,166 +2028,166 @@
20222028
}
20232029
20242030
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
20252031
** of that rule */
20262032
static const YYCODETYPE yyRuleInfoLhs[] = {
2027
- 121, /* (0) document ::= statement_list */
2028
- 99, /* (1) statement_list ::= statement */
2029
- 99, /* (2) statement_list ::= statement_list EOL statement */
2030
- 100, /* (3) statement ::= */
2031
- 100, /* (4) statement ::= direction */
2032
- 100, /* (5) statement ::= lvalue ASSIGN rvalue */
2033
- 100, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2034
- 100, /* (7) statement ::= PLACENAME COLON position */
2035
- 100, /* (8) statement ::= unnamed_statement */
2036
- 100, /* (9) statement ::= print prlist */
2037
- 100, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2038
- 100, /* (11) statement ::= ASSERT LP position EQ position RP */
2039
- 100, /* (12) statement ::= DEFINE ID CODEBLOCK */
2040
- 116, /* (13) rvalue ::= PLACENAME */
2041
- 124, /* (14) pritem ::= FILL */
2042
- 124, /* (15) pritem ::= COLOR */
2043
- 124, /* (16) pritem ::= THICKNESS */
2044
- 124, /* (17) pritem ::= rvalue */
2045
- 124, /* (18) pritem ::= STRING */
2046
- 125, /* (19) prsep ::= COMMA */
2047
- 101, /* (20) unnamed_statement ::= basetype attribute_list */
2048
- 102, /* (21) basetype ::= CLASSNAME */
2049
- 102, /* (22) basetype ::= STRING textposition */
2050
- 102, /* (23) basetype ::= LB savelist statement_list RB */
2051
- 127, /* (24) savelist ::= */
2052
- 119, /* (25) relexpr ::= expr */
2053
- 119, /* (26) relexpr ::= expr PERCENT */
2054
- 120, /* (27) optrelexpr ::= */
2055
- 126, /* (28) attribute_list ::= relexpr alist */
2056
- 129, /* (29) attribute ::= numproperty relexpr */
2057
- 129, /* (30) attribute ::= dashproperty expr */
2058
- 129, /* (31) attribute ::= dashproperty */
2059
- 129, /* (32) attribute ::= colorproperty rvalue */
2060
- 129, /* (33) attribute ::= go direction optrelexpr */
2061
- 129, /* (34) attribute ::= go direction even position */
2062
- 129, /* (35) attribute ::= CLOSE */
2063
- 129, /* (36) attribute ::= CHOP */
2064
- 129, /* (37) attribute ::= FROM position */
2065
- 129, /* (38) attribute ::= TO position */
2066
- 129, /* (39) attribute ::= THEN */
2067
- 129, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2068
- 129, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2069
- 129, /* (42) attribute ::= GO optrelexpr HEADING expr */
2070
- 129, /* (43) attribute ::= GO optrelexpr EDGEPT */
2071
- 129, /* (44) attribute ::= AT position */
2072
- 129, /* (45) attribute ::= SAME */
2073
- 129, /* (46) attribute ::= SAME AS object */
2074
- 129, /* (47) attribute ::= STRING textposition */
2075
- 129, /* (48) attribute ::= FIT */
2076
- 129, /* (49) attribute ::= BEHIND object */
2077
- 132, /* (50) withclause ::= DOT_E edge AT position */
2078
- 132, /* (51) withclause ::= edge AT position */
2079
- 104, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2080
- 131, /* (53) boolproperty ::= CW */
2081
- 131, /* (54) boolproperty ::= CCW */
2082
- 131, /* (55) boolproperty ::= LARROW */
2083
- 131, /* (56) boolproperty ::= RARROW */
2084
- 131, /* (57) boolproperty ::= LRARROW */
2085
- 131, /* (58) boolproperty ::= INVIS */
2086
- 131, /* (59) boolproperty ::= THICK */
2087
- 131, /* (60) boolproperty ::= THIN */
2088
- 131, /* (61) boolproperty ::= SOLID */
2089
- 115, /* (62) textposition ::= */
2090
- 115, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2091
- 110, /* (64) position ::= expr COMMA expr */
2092
- 110, /* (65) position ::= place PLUS expr COMMA expr */
2093
- 110, /* (66) position ::= place MINUS expr COMMA expr */
2094
- 110, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2095
- 110, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2096
- 110, /* (69) position ::= LP position COMMA position RP */
2097
- 110, /* (70) position ::= LP position RP */
2098
- 110, /* (71) position ::= expr between position AND position */
2099
- 110, /* (72) position ::= expr LT position COMMA position GT */
2100
- 110, /* (73) position ::= expr ABOVE position */
2101
- 110, /* (74) position ::= expr BELOW position */
2102
- 110, /* (75) position ::= expr LEFT OF position */
2103
- 110, /* (76) position ::= expr RIGHT OF position */
2104
- 110, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2105
- 110, /* (78) position ::= expr HEADING EDGEPT OF position */
2106
- 110, /* (79) position ::= expr EDGEPT OF position */
2107
- 110, /* (80) position ::= expr ON HEADING expr FROM position */
2108
- 110, /* (81) position ::= expr HEADING expr FROM position */
2109
- 111, /* (82) place ::= edge OF object */
2110
- 134, /* (83) place2 ::= object */
2111
- 134, /* (84) place2 ::= object DOT_E edge */
2112
- 134, /* (85) place2 ::= NTH VERTEX OF object */
2113
- 112, /* (86) object ::= nth */
2114
- 112, /* (87) object ::= nth OF|IN object */
2115
- 113, /* (88) objectname ::= THIS */
2116
- 113, /* (89) objectname ::= PLACENAME */
2117
- 113, /* (90) objectname ::= objectname DOT_U PLACENAME */
2118
- 114, /* (91) nth ::= NTH CLASSNAME */
2119
- 114, /* (92) nth ::= NTH LAST CLASSNAME */
2120
- 114, /* (93) nth ::= LAST CLASSNAME */
2121
- 114, /* (94) nth ::= LAST */
2122
- 114, /* (95) nth ::= NTH LB RB */
2123
- 114, /* (96) nth ::= NTH LAST LB RB */
2124
- 114, /* (97) nth ::= LAST LB RB */
2125
- 103, /* (98) expr ::= expr PLUS expr */
2126
- 103, /* (99) expr ::= expr MINUS expr */
2127
- 103, /* (100) expr ::= expr STAR expr */
2128
- 103, /* (101) expr ::= expr SLASH expr */
2129
- 103, /* (102) expr ::= MINUS expr */
2130
- 103, /* (103) expr ::= PLUS expr */
2131
- 103, /* (104) expr ::= LP expr RP */
2132
- 103, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2133
- 103, /* (106) expr ::= NUMBER */
2134
- 103, /* (107) expr ::= ID */
2135
- 103, /* (108) expr ::= FUNC1 LP expr RP */
2136
- 103, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2137
- 103, /* (110) expr ::= DIST LP position COMMA position RP */
2138
- 103, /* (111) expr ::= place2 DOT_XY X */
2139
- 103, /* (112) expr ::= place2 DOT_XY Y */
2140
- 103, /* (113) expr ::= object DOT_L numproperty */
2141
- 103, /* (114) expr ::= object DOT_L dashproperty */
2142
- 103, /* (115) expr ::= object DOT_L colorproperty */
2143
- 117, /* (116) lvalue ::= ID */
2144
- 117, /* (117) lvalue ::= FILL */
2145
- 117, /* (118) lvalue ::= COLOR */
2146
- 117, /* (119) lvalue ::= THICKNESS */
2147
- 116, /* (120) rvalue ::= expr */
2148
- 122, /* (121) print ::= PRINT */
2149
- 123, /* (122) prlist ::= pritem */
2150
- 123, /* (123) prlist ::= prlist prsep pritem */
2151
- 106, /* (124) direction ::= UP */
2152
- 106, /* (125) direction ::= DOWN */
2153
- 106, /* (126) direction ::= LEFT */
2154
- 106, /* (127) direction ::= RIGHT */
2155
- 120, /* (128) optrelexpr ::= relexpr */
2156
- 126, /* (129) attribute_list ::= alist */
2157
- 128, /* (130) alist ::= */
2158
- 128, /* (131) alist ::= alist attribute */
2159
- 129, /* (132) attribute ::= boolproperty */
2160
- 129, /* (133) attribute ::= WITH withclause */
2161
- 130, /* (134) go ::= GO */
2162
- 130, /* (135) go ::= */
2163
- 118, /* (136) even ::= UNTIL EVEN WITH */
2164
- 118, /* (137) even ::= EVEN WITH */
2165
- 107, /* (138) dashproperty ::= DOTTED */
2166
- 107, /* (139) dashproperty ::= DASHED */
2167
- 108, /* (140) colorproperty ::= FILL */
2168
- 108, /* (141) colorproperty ::= COLOR */
2169
- 110, /* (142) position ::= place */
2170
- 133, /* (143) between ::= WAY BETWEEN */
2171
- 133, /* (144) between ::= BETWEEN */
2172
- 133, /* (145) between ::= OF THE WAY BETWEEN */
2173
- 111, /* (146) place ::= place2 */
2174
- 105, /* (147) edge ::= CENTER */
2175
- 105, /* (148) edge ::= EDGEPT */
2176
- 105, /* (149) edge ::= TOP */
2177
- 105, /* (150) edge ::= BOTTOM */
2178
- 105, /* (151) edge ::= START */
2179
- 105, /* (152) edge ::= END */
2180
- 105, /* (153) edge ::= RIGHT */
2181
- 105, /* (154) edge ::= LEFT */
2182
- 112, /* (155) object ::= objectname */
2033
+ 122, /* (0) document ::= statement_list */
2034
+ 100, /* (1) statement_list ::= statement */
2035
+ 100, /* (2) statement_list ::= statement_list EOL statement */
2036
+ 101, /* (3) statement ::= */
2037
+ 101, /* (4) statement ::= direction */
2038
+ 101, /* (5) statement ::= lvalue ASSIGN rvalue */
2039
+ 101, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2040
+ 101, /* (7) statement ::= PLACENAME COLON position */
2041
+ 101, /* (8) statement ::= unnamed_statement */
2042
+ 101, /* (9) statement ::= print prlist */
2043
+ 101, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2044
+ 101, /* (11) statement ::= ASSERT LP position EQ position RP */
2045
+ 101, /* (12) statement ::= DEFINE ID CODEBLOCK */
2046
+ 117, /* (13) rvalue ::= PLACENAME */
2047
+ 125, /* (14) pritem ::= FILL */
2048
+ 125, /* (15) pritem ::= COLOR */
2049
+ 125, /* (16) pritem ::= THICKNESS */
2050
+ 125, /* (17) pritem ::= rvalue */
2051
+ 125, /* (18) pritem ::= STRING */
2052
+ 126, /* (19) prsep ::= COMMA */
2053
+ 102, /* (20) unnamed_statement ::= basetype attribute_list */
2054
+ 103, /* (21) basetype ::= CLASSNAME */
2055
+ 103, /* (22) basetype ::= STRING textposition */
2056
+ 103, /* (23) basetype ::= LB savelist statement_list RB */
2057
+ 128, /* (24) savelist ::= */
2058
+ 120, /* (25) relexpr ::= expr */
2059
+ 120, /* (26) relexpr ::= expr PERCENT */
2060
+ 121, /* (27) optrelexpr ::= */
2061
+ 127, /* (28) attribute_list ::= relexpr alist */
2062
+ 130, /* (29) attribute ::= numproperty relexpr */
2063
+ 130, /* (30) attribute ::= dashproperty expr */
2064
+ 130, /* (31) attribute ::= dashproperty */
2065
+ 130, /* (32) attribute ::= colorproperty rvalue */
2066
+ 130, /* (33) attribute ::= go direction optrelexpr */
2067
+ 130, /* (34) attribute ::= go direction even position */
2068
+ 130, /* (35) attribute ::= CLOSE */
2069
+ 130, /* (36) attribute ::= CHOP */
2070
+ 130, /* (37) attribute ::= FROM position */
2071
+ 130, /* (38) attribute ::= TO position */
2072
+ 130, /* (39) attribute ::= THEN */
2073
+ 130, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2074
+ 130, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2075
+ 130, /* (42) attribute ::= GO optrelexpr HEADING expr */
2076
+ 130, /* (43) attribute ::= GO optrelexpr EDGEPT */
2077
+ 130, /* (44) attribute ::= AT position */
2078
+ 130, /* (45) attribute ::= SAME */
2079
+ 130, /* (46) attribute ::= SAME AS object */
2080
+ 130, /* (47) attribute ::= STRING textposition */
2081
+ 130, /* (48) attribute ::= FIT */
2082
+ 130, /* (49) attribute ::= BEHIND object */
2083
+ 133, /* (50) withclause ::= DOT_E edge AT position */
2084
+ 133, /* (51) withclause ::= edge AT position */
2085
+ 105, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2086
+ 132, /* (53) boolproperty ::= CW */
2087
+ 132, /* (54) boolproperty ::= CCW */
2088
+ 132, /* (55) boolproperty ::= LARROW */
2089
+ 132, /* (56) boolproperty ::= RARROW */
2090
+ 132, /* (57) boolproperty ::= LRARROW */
2091
+ 132, /* (58) boolproperty ::= INVIS */
2092
+ 132, /* (59) boolproperty ::= THICK */
2093
+ 132, /* (60) boolproperty ::= THIN */
2094
+ 132, /* (61) boolproperty ::= SOLID */
2095
+ 116, /* (62) textposition ::= */
2096
+ 116, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */
2097
+ 111, /* (64) position ::= expr COMMA expr */
2098
+ 111, /* (65) position ::= place PLUS expr COMMA expr */
2099
+ 111, /* (66) position ::= place MINUS expr COMMA expr */
2100
+ 111, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2101
+ 111, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2102
+ 111, /* (69) position ::= LP position COMMA position RP */
2103
+ 111, /* (70) position ::= LP position RP */
2104
+ 111, /* (71) position ::= expr between position AND position */
2105
+ 111, /* (72) position ::= expr LT position COMMA position GT */
2106
+ 111, /* (73) position ::= expr ABOVE position */
2107
+ 111, /* (74) position ::= expr BELOW position */
2108
+ 111, /* (75) position ::= expr LEFT OF position */
2109
+ 111, /* (76) position ::= expr RIGHT OF position */
2110
+ 111, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2111
+ 111, /* (78) position ::= expr HEADING EDGEPT OF position */
2112
+ 111, /* (79) position ::= expr EDGEPT OF position */
2113
+ 111, /* (80) position ::= expr ON HEADING expr FROM position */
2114
+ 111, /* (81) position ::= expr HEADING expr FROM position */
2115
+ 112, /* (82) place ::= edge OF object */
2116
+ 135, /* (83) place2 ::= object */
2117
+ 135, /* (84) place2 ::= object DOT_E edge */
2118
+ 135, /* (85) place2 ::= NTH VERTEX OF object */
2119
+ 113, /* (86) object ::= nth */
2120
+ 113, /* (87) object ::= nth OF|IN object */
2121
+ 114, /* (88) objectname ::= THIS */
2122
+ 114, /* (89) objectname ::= PLACENAME */
2123
+ 114, /* (90) objectname ::= objectname DOT_U PLACENAME */
2124
+ 115, /* (91) nth ::= NTH CLASSNAME */
2125
+ 115, /* (92) nth ::= NTH LAST CLASSNAME */
2126
+ 115, /* (93) nth ::= LAST CLASSNAME */
2127
+ 115, /* (94) nth ::= LAST */
2128
+ 115, /* (95) nth ::= NTH LB RB */
2129
+ 115, /* (96) nth ::= NTH LAST LB RB */
2130
+ 115, /* (97) nth ::= LAST LB RB */
2131
+ 104, /* (98) expr ::= expr PLUS expr */
2132
+ 104, /* (99) expr ::= expr MINUS expr */
2133
+ 104, /* (100) expr ::= expr STAR expr */
2134
+ 104, /* (101) expr ::= expr SLASH expr */
2135
+ 104, /* (102) expr ::= MINUS expr */
2136
+ 104, /* (103) expr ::= PLUS expr */
2137
+ 104, /* (104) expr ::= LP expr RP */
2138
+ 104, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2139
+ 104, /* (106) expr ::= NUMBER */
2140
+ 104, /* (107) expr ::= ID */
2141
+ 104, /* (108) expr ::= FUNC1 LP expr RP */
2142
+ 104, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2143
+ 104, /* (110) expr ::= DIST LP position COMMA position RP */
2144
+ 104, /* (111) expr ::= place2 DOT_XY X */
2145
+ 104, /* (112) expr ::= place2 DOT_XY Y */
2146
+ 104, /* (113) expr ::= object DOT_L numproperty */
2147
+ 104, /* (114) expr ::= object DOT_L dashproperty */
2148
+ 104, /* (115) expr ::= object DOT_L colorproperty */
2149
+ 118, /* (116) lvalue ::= ID */
2150
+ 118, /* (117) lvalue ::= FILL */
2151
+ 118, /* (118) lvalue ::= COLOR */
2152
+ 118, /* (119) lvalue ::= THICKNESS */
2153
+ 117, /* (120) rvalue ::= expr */
2154
+ 123, /* (121) print ::= PRINT */
2155
+ 124, /* (122) prlist ::= pritem */
2156
+ 124, /* (123) prlist ::= prlist prsep pritem */
2157
+ 107, /* (124) direction ::= UP */
2158
+ 107, /* (125) direction ::= DOWN */
2159
+ 107, /* (126) direction ::= LEFT */
2160
+ 107, /* (127) direction ::= RIGHT */
2161
+ 121, /* (128) optrelexpr ::= relexpr */
2162
+ 127, /* (129) attribute_list ::= alist */
2163
+ 129, /* (130) alist ::= */
2164
+ 129, /* (131) alist ::= alist attribute */
2165
+ 130, /* (132) attribute ::= boolproperty */
2166
+ 130, /* (133) attribute ::= WITH withclause */
2167
+ 131, /* (134) go ::= GO */
2168
+ 131, /* (135) go ::= */
2169
+ 119, /* (136) even ::= UNTIL EVEN WITH */
2170
+ 119, /* (137) even ::= EVEN WITH */
2171
+ 108, /* (138) dashproperty ::= DOTTED */
2172
+ 108, /* (139) dashproperty ::= DASHED */
2173
+ 109, /* (140) colorproperty ::= FILL */
2174
+ 109, /* (141) colorproperty ::= COLOR */
2175
+ 111, /* (142) position ::= place */
2176
+ 134, /* (143) between ::= WAY BETWEEN */
2177
+ 134, /* (144) between ::= BETWEEN */
2178
+ 134, /* (145) between ::= OF THE WAY BETWEEN */
2179
+ 112, /* (146) place ::= place2 */
2180
+ 106, /* (147) edge ::= CENTER */
2181
+ 106, /* (148) edge ::= EDGEPT */
2182
+ 106, /* (149) edge ::= TOP */
2183
+ 106, /* (150) edge ::= BOTTOM */
2184
+ 106, /* (151) edge ::= START */
2185
+ 106, /* (152) edge ::= END */
2186
+ 106, /* (153) edge ::= RIGHT */
2187
+ 106, /* (154) edge ::= LEFT */
2188
+ 113, /* (155) object ::= objectname */
21832189
};
21842190
21852191
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
21862192
** of symbols on the right-hand side of that rule. */
21872193
static const signed char yyRuleInfoNRhs[] = {
@@ -2246,11 +2252,11 @@
22462252
-1, /* (58) boolproperty ::= INVIS */
22472253
-1, /* (59) boolproperty ::= THICK */
22482254
-1, /* (60) boolproperty ::= THIN */
22492255
-1, /* (61) boolproperty ::= SOLID */
22502256
0, /* (62) textposition ::= */
2251
- -2, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2257
+ -2, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */
22522258
-3, /* (64) position ::= expr COMMA expr */
22532259
-5, /* (65) position ::= place PLUS expr COMMA expr */
22542260
-5, /* (66) position ::= place MINUS expr COMMA expr */
22552261
-7, /* (67) position ::= place PLUS LP expr COMMA expr RP */
22562262
-7, /* (68) position ::= place MINUS LP expr COMMA expr RP */
@@ -2381,620 +2387,620 @@
23812387
** break;
23822388
*/
23832389
/********** Begin reduce actions **********************************************/
23842390
YYMINORTYPE yylhsminor;
23852391
case 0: /* document ::= statement_list */
2386
-#line 547 "pikchr.y"
2387
-{pik_render(p,yymsp[0].minor.yy227);}
2388
-#line 2413 "pikchr.c"
2392
+#line 548 "pikchr.y"
2393
+{pik_render(p,yymsp[0].minor.yy235);}
2394
+#line 2419 "pikchr.c"
23892395
break;
23902396
case 1: /* statement_list ::= statement */
2391
-#line 550 "pikchr.y"
2392
-{ yylhsminor.yy227 = pik_elist_append(p,0,yymsp[0].minor.yy36); }
2393
-#line 2418 "pikchr.c"
2394
- yymsp[0].minor.yy227 = yylhsminor.yy227;
2397
+#line 551 "pikchr.y"
2398
+{ yylhsminor.yy235 = pik_elist_append(p,0,yymsp[0].minor.yy162); }
2399
+#line 2424 "pikchr.c"
2400
+ yymsp[0].minor.yy235 = yylhsminor.yy235;
23952401
break;
23962402
case 2: /* statement_list ::= statement_list EOL statement */
2397
-#line 552 "pikchr.y"
2398
-{ yylhsminor.yy227 = pik_elist_append(p,yymsp[-2].minor.yy227,yymsp[0].minor.yy36); }
2399
-#line 2424 "pikchr.c"
2400
- yymsp[-2].minor.yy227 = yylhsminor.yy227;
2403
+#line 553 "pikchr.y"
2404
+{ yylhsminor.yy235 = pik_elist_append(p,yymsp[-2].minor.yy235,yymsp[0].minor.yy162); }
2405
+#line 2430 "pikchr.c"
2406
+ yymsp[-2].minor.yy235 = yylhsminor.yy235;
24012407
break;
24022408
case 3: /* statement ::= */
2403
-#line 555 "pikchr.y"
2404
-{ yymsp[1].minor.yy36 = 0; }
2405
-#line 2430 "pikchr.c"
2409
+#line 556 "pikchr.y"
2410
+{ yymsp[1].minor.yy162 = 0; }
2411
+#line 2436 "pikchr.c"
24062412
break;
24072413
case 4: /* statement ::= direction */
2408
-#line 556 "pikchr.y"
2409
-{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy36=0; }
2410
-#line 2435 "pikchr.c"
2411
- yymsp[0].minor.yy36 = yylhsminor.yy36;
2414
+#line 557 "pikchr.y"
2415
+{ pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy162=0; }
2416
+#line 2441 "pikchr.c"
2417
+ yymsp[0].minor.yy162 = yylhsminor.yy162;
24122418
break;
24132419
case 5: /* statement ::= lvalue ASSIGN rvalue */
2414
-#line 557 "pikchr.y"
2415
-{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy153,&yymsp[-1].minor.yy0); yylhsminor.yy36=0;}
2416
-#line 2441 "pikchr.c"
2417
- yymsp[-2].minor.yy36 = yylhsminor.yy36;
2420
+#line 558 "pikchr.y"
2421
+{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy21,&yymsp[-1].minor.yy0); yylhsminor.yy162=0;}
2422
+#line 2447 "pikchr.c"
2423
+ yymsp[-2].minor.yy162 = yylhsminor.yy162;
24182424
break;
24192425
case 6: /* statement ::= PLACENAME COLON unnamed_statement */
2420
-#line 559 "pikchr.y"
2421
-{ yylhsminor.yy36 = yymsp[0].minor.yy36; pik_elem_setname(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0); }
2422
-#line 2447 "pikchr.c"
2423
- yymsp[-2].minor.yy36 = yylhsminor.yy36;
2426
+#line 560 "pikchr.y"
2427
+{ yylhsminor.yy162 = yymsp[0].minor.yy162; pik_elem_setname(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0); }
2428
+#line 2453 "pikchr.c"
2429
+ yymsp[-2].minor.yy162 = yylhsminor.yy162;
24242430
break;
24252431
case 7: /* statement ::= PLACENAME COLON position */
2426
-#line 561 "pikchr.y"
2427
-{ yylhsminor.yy36 = pik_elem_new(p,0,0,0);
2428
- if(yylhsminor.yy36){ yylhsminor.yy36->ptAt = yymsp[0].minor.yy79; pik_elem_setname(p,yylhsminor.yy36,&yymsp[-2].minor.yy0); }}
2429
-#line 2454 "pikchr.c"
2430
- yymsp[-2].minor.yy36 = yylhsminor.yy36;
2432
+#line 562 "pikchr.y"
2433
+{ yylhsminor.yy162 = pik_elem_new(p,0,0,0);
2434
+ if(yylhsminor.yy162){ yylhsminor.yy162->ptAt = yymsp[0].minor.yy63; pik_elem_setname(p,yylhsminor.yy162,&yymsp[-2].minor.yy0); }}
2435
+#line 2460 "pikchr.c"
2436
+ yymsp[-2].minor.yy162 = yylhsminor.yy162;
24312437
break;
24322438
case 8: /* statement ::= unnamed_statement */
2433
-#line 563 "pikchr.y"
2434
-{yylhsminor.yy36 = yymsp[0].minor.yy36;}
2435
-#line 2460 "pikchr.c"
2436
- yymsp[0].minor.yy36 = yylhsminor.yy36;
2439
+#line 564 "pikchr.y"
2440
+{yylhsminor.yy162 = yymsp[0].minor.yy162;}
2441
+#line 2466 "pikchr.c"
2442
+ yymsp[0].minor.yy162 = yylhsminor.yy162;
24372443
break;
24382444
case 9: /* statement ::= print prlist */
2439
-#line 564 "pikchr.y"
2440
-{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy36=0;}
2441
-#line 2466 "pikchr.c"
2445
+#line 565 "pikchr.y"
2446
+{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy162=0;}
2447
+#line 2472 "pikchr.c"
24422448
break;
24432449
case 10: /* statement ::= ASSERT LP expr EQ expr RP */
2444
-#line 569 "pikchr.y"
2445
-{yymsp[-5].minor.yy36=pik_assert(p,yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy153);}
2446
-#line 2471 "pikchr.c"
2450
+#line 570 "pikchr.y"
2451
+{yymsp[-5].minor.yy162=pik_assert(p,yymsp[-3].minor.yy21,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy21);}
2452
+#line 2477 "pikchr.c"
24472453
break;
24482454
case 11: /* statement ::= ASSERT LP position EQ position RP */
2449
-#line 571 "pikchr.y"
2450
-{yymsp[-5].minor.yy36=pik_position_assert(p,&yymsp[-3].minor.yy79,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy79);}
2451
-#line 2476 "pikchr.c"
2452
- break;
2453
- case 12: /* statement ::= DEFINE ID CODEBLOCK */
24542455
#line 572 "pikchr.y"
2455
-{yymsp[-2].minor.yy36=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2456
-#line 2481 "pikchr.c"
2456
+{yymsp[-5].minor.yy162=pik_position_assert(p,&yymsp[-3].minor.yy63,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy63);}
2457
+#line 2482 "pikchr.c"
2458
+ break;
2459
+ case 12: /* statement ::= DEFINE ID CODEBLOCK */
2460
+#line 573 "pikchr.y"
2461
+{yymsp[-2].minor.yy162=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2462
+#line 2487 "pikchr.c"
24572463
break;
24582464
case 13: /* rvalue ::= PLACENAME */
2459
-#line 583 "pikchr.y"
2460
-{yylhsminor.yy153 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2461
-#line 2486 "pikchr.c"
2462
- yymsp[0].minor.yy153 = yylhsminor.yy153;
2465
+#line 584 "pikchr.y"
2466
+{yylhsminor.yy21 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2467
+#line 2492 "pikchr.c"
2468
+ yymsp[0].minor.yy21 = yylhsminor.yy21;
24632469
break;
24642470
case 14: /* pritem ::= FILL */
24652471
case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15);
24662472
case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16);
2467
-#line 588 "pikchr.y"
2473
+#line 589 "pikchr.y"
24682474
{pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2469
-#line 2494 "pikchr.c"
2475
+#line 2500 "pikchr.c"
24702476
break;
24712477
case 17: /* pritem ::= rvalue */
2472
-#line 591 "pikchr.y"
2473
-{pik_append_num(p,"",yymsp[0].minor.yy153);}
2474
-#line 2499 "pikchr.c"
2478
+#line 592 "pikchr.y"
2479
+{pik_append_num(p,"",yymsp[0].minor.yy21);}
2480
+#line 2505 "pikchr.c"
24752481
break;
24762482
case 18: /* pritem ::= STRING */
2477
-#line 592 "pikchr.y"
2483
+#line 593 "pikchr.y"
24782484
{pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2479
-#line 2504 "pikchr.c"
2485
+#line 2510 "pikchr.c"
24802486
break;
24812487
case 19: /* prsep ::= COMMA */
2482
-#line 593 "pikchr.y"
2488
+#line 594 "pikchr.y"
24832489
{pik_append(p, " ", 1);}
2484
-#line 2509 "pikchr.c"
2490
+#line 2515 "pikchr.c"
24852491
break;
24862492
case 20: /* unnamed_statement ::= basetype attribute_list */
2487
-#line 596 "pikchr.y"
2488
-{yylhsminor.yy36 = yymsp[-1].minor.yy36; pik_after_adding_attributes(p,yylhsminor.yy36);}
2489
-#line 2514 "pikchr.c"
2490
- yymsp[-1].minor.yy36 = yylhsminor.yy36;
2493
+#line 597 "pikchr.y"
2494
+{yylhsminor.yy162 = yymsp[-1].minor.yy162; pik_after_adding_attributes(p,yylhsminor.yy162);}
2495
+#line 2520 "pikchr.c"
2496
+ yymsp[-1].minor.yy162 = yylhsminor.yy162;
24912497
break;
24922498
case 21: /* basetype ::= CLASSNAME */
2493
-#line 598 "pikchr.y"
2494
-{yylhsminor.yy36 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2495
-#line 2520 "pikchr.c"
2496
- yymsp[0].minor.yy36 = yylhsminor.yy36;
2499
+#line 599 "pikchr.y"
2500
+{yylhsminor.yy162 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2501
+#line 2526 "pikchr.c"
2502
+ yymsp[0].minor.yy162 = yylhsminor.yy162;
24972503
break;
24982504
case 22: /* basetype ::= STRING textposition */
2499
-#line 600 "pikchr.y"
2500
-{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy164; yylhsminor.yy36 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2501
-#line 2526 "pikchr.c"
2502
- yymsp[-1].minor.yy36 = yylhsminor.yy36;
2505
+#line 601 "pikchr.y"
2506
+{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy188; yylhsminor.yy162 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2507
+#line 2532 "pikchr.c"
2508
+ yymsp[-1].minor.yy162 = yylhsminor.yy162;
25032509
break;
25042510
case 23: /* basetype ::= LB savelist statement_list RB */
2505
-#line 602 "pikchr.y"
2506
-{ p->list = yymsp[-2].minor.yy227; yymsp[-3].minor.yy36 = pik_elem_new(p,0,0,yymsp[-1].minor.yy227); if(yymsp[-3].minor.yy36) yymsp[-3].minor.yy36->errTok = yymsp[0].minor.yy0; }
2507
-#line 2532 "pikchr.c"
2511
+#line 603 "pikchr.y"
2512
+{ p->list = yymsp[-2].minor.yy235; yymsp[-3].minor.yy162 = pik_elem_new(p,0,0,yymsp[-1].minor.yy235); if(yymsp[-3].minor.yy162) yymsp[-3].minor.yy162->errTok = yymsp[0].minor.yy0; }
2513
+#line 2538 "pikchr.c"
25082514
break;
25092515
case 24: /* savelist ::= */
2510
-#line 607 "pikchr.y"
2511
-{yymsp[1].minor.yy227 = p->list; p->list = 0;}
2512
-#line 2537 "pikchr.c"
2516
+#line 608 "pikchr.y"
2517
+{yymsp[1].minor.yy235 = p->list; p->list = 0;}
2518
+#line 2543 "pikchr.c"
25132519
break;
25142520
case 25: /* relexpr ::= expr */
2515
-#line 614 "pikchr.y"
2516
-{yylhsminor.yy10.rAbs = yymsp[0].minor.yy153; yylhsminor.yy10.rRel = 0;}
2517
-#line 2542 "pikchr.c"
2518
- yymsp[0].minor.yy10 = yylhsminor.yy10;
2521
+#line 615 "pikchr.y"
2522
+{yylhsminor.yy72.rAbs = yymsp[0].minor.yy21; yylhsminor.yy72.rRel = 0;}
2523
+#line 2548 "pikchr.c"
2524
+ yymsp[0].minor.yy72 = yylhsminor.yy72;
25192525
break;
25202526
case 26: /* relexpr ::= expr PERCENT */
2521
-#line 615 "pikchr.y"
2522
-{yylhsminor.yy10.rAbs = 0; yylhsminor.yy10.rRel = yymsp[-1].minor.yy153/100;}
2523
-#line 2548 "pikchr.c"
2524
- yymsp[-1].minor.yy10 = yylhsminor.yy10;
2527
+#line 616 "pikchr.y"
2528
+{yylhsminor.yy72.rAbs = 0; yylhsminor.yy72.rRel = yymsp[-1].minor.yy21/100;}
2529
+#line 2554 "pikchr.c"
2530
+ yymsp[-1].minor.yy72 = yylhsminor.yy72;
25252531
break;
25262532
case 27: /* optrelexpr ::= */
2527
-#line 617 "pikchr.y"
2528
-{yymsp[1].minor.yy10.rAbs = 0; yymsp[1].minor.yy10.rRel = 1.0;}
2529
-#line 2554 "pikchr.c"
2533
+#line 618 "pikchr.y"
2534
+{yymsp[1].minor.yy72.rAbs = 0; yymsp[1].minor.yy72.rRel = 1.0;}
2535
+#line 2560 "pikchr.c"
25302536
break;
25312537
case 28: /* attribute_list ::= relexpr alist */
2532
-#line 619 "pikchr.y"
2533
-{pik_add_direction(p,0,&yymsp[-1].minor.yy10);}
2534
-#line 2559 "pikchr.c"
2538
+#line 620 "pikchr.y"
2539
+{pik_add_direction(p,0,&yymsp[-1].minor.yy72);}
2540
+#line 2565 "pikchr.c"
25352541
break;
25362542
case 29: /* attribute ::= numproperty relexpr */
2537
-#line 623 "pikchr.y"
2538
-{ pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10); }
2539
-#line 2564 "pikchr.c"
2543
+#line 624 "pikchr.y"
2544
+{ pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy72); }
2545
+#line 2570 "pikchr.c"
25402546
break;
25412547
case 30: /* attribute ::= dashproperty expr */
2542
-#line 624 "pikchr.y"
2543
-{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy153); }
2544
-#line 2569 "pikchr.c"
2548
+#line 625 "pikchr.y"
2549
+{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy21); }
2550
+#line 2575 "pikchr.c"
25452551
break;
25462552
case 31: /* attribute ::= dashproperty */
2547
-#line 625 "pikchr.y"
2553
+#line 626 "pikchr.y"
25482554
{ pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2549
-#line 2574 "pikchr.c"
2555
+#line 2580 "pikchr.c"
25502556
break;
25512557
case 32: /* attribute ::= colorproperty rvalue */
2552
-#line 626 "pikchr.y"
2553
-{ pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153); }
2554
-#line 2579 "pikchr.c"
2558
+#line 627 "pikchr.y"
2559
+{ pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy21); }
2560
+#line 2585 "pikchr.c"
25552561
break;
25562562
case 33: /* attribute ::= go direction optrelexpr */
2557
-#line 627 "pikchr.y"
2558
-{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10);}
2559
-#line 2584 "pikchr.c"
2563
+#line 628 "pikchr.y"
2564
+{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy72);}
2565
+#line 2590 "pikchr.c"
25602566
break;
25612567
case 34: /* attribute ::= go direction even position */
2562
-#line 628 "pikchr.y"
2563
-{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79);}
2564
-#line 2589 "pikchr.c"
2568
+#line 629 "pikchr.y"
2569
+{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy63);}
2570
+#line 2595 "pikchr.c"
25652571
break;
25662572
case 35: /* attribute ::= CLOSE */
2567
-#line 629 "pikchr.y"
2573
+#line 630 "pikchr.y"
25682574
{ pik_close_path(p,&yymsp[0].minor.yy0); }
2569
-#line 2594 "pikchr.c"
2575
+#line 2600 "pikchr.c"
25702576
break;
25712577
case 36: /* attribute ::= CHOP */
2572
-#line 630 "pikchr.y"
2578
+#line 631 "pikchr.y"
25732579
{ p->cur->bChop = 1; }
2574
-#line 2599 "pikchr.c"
2580
+#line 2605 "pikchr.c"
25752581
break;
25762582
case 37: /* attribute ::= FROM position */
2577
-#line 631 "pikchr.y"
2578
-{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2579
-#line 2604 "pikchr.c"
2583
+#line 632 "pikchr.y"
2584
+{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy63); }
2585
+#line 2610 "pikchr.c"
25802586
break;
25812587
case 38: /* attribute ::= TO position */
2582
-#line 632 "pikchr.y"
2583
-{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2584
-#line 2609 "pikchr.c"
2588
+#line 633 "pikchr.y"
2589
+{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy63); }
2590
+#line 2615 "pikchr.c"
25852591
break;
25862592
case 39: /* attribute ::= THEN */
2587
-#line 633 "pikchr.y"
2593
+#line 634 "pikchr.y"
25882594
{ pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2589
-#line 2614 "pikchr.c"
2595
+#line 2620 "pikchr.c"
25902596
break;
25912597
case 40: /* attribute ::= THEN optrelexpr HEADING expr */
25922598
case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42);
2593
-#line 635 "pikchr.y"
2594
-{pik_move_hdg(p,&yymsp[-2].minor.yy10,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153,0,&yymsp[-3].minor.yy0);}
2595
-#line 2620 "pikchr.c"
2599
+#line 636 "pikchr.y"
2600
+{pik_move_hdg(p,&yymsp[-2].minor.yy72,&yymsp[-1].minor.yy0,yymsp[0].minor.yy21,0,&yymsp[-3].minor.yy0);}
2601
+#line 2626 "pikchr.c"
25962602
break;
25972603
case 41: /* attribute ::= THEN optrelexpr EDGEPT */
25982604
case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43);
2599
-#line 636 "pikchr.y"
2600
-{pik_move_hdg(p,&yymsp[-1].minor.yy10,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2601
-#line 2626 "pikchr.c"
2605
+#line 637 "pikchr.y"
2606
+{pik_move_hdg(p,&yymsp[-1].minor.yy72,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2607
+#line 2632 "pikchr.c"
26022608
break;
26032609
case 44: /* attribute ::= AT position */
2604
-#line 641 "pikchr.y"
2605
-{ pik_set_at(p,0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2606
-#line 2631 "pikchr.c"
2610
+#line 642 "pikchr.y"
2611
+{ pik_set_at(p,0,&yymsp[0].minor.yy63,&yymsp[-1].minor.yy0); }
2612
+#line 2637 "pikchr.c"
26072613
break;
26082614
case 45: /* attribute ::= SAME */
2609
-#line 643 "pikchr.y"
2615
+#line 644 "pikchr.y"
26102616
{pik_same(p,0,&yymsp[0].minor.yy0);}
2611
-#line 2636 "pikchr.c"
2617
+#line 2642 "pikchr.c"
26122618
break;
26132619
case 46: /* attribute ::= SAME AS object */
2614
-#line 644 "pikchr.y"
2615
-{pik_same(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2616
-#line 2641 "pikchr.c"
2620
+#line 645 "pikchr.y"
2621
+{pik_same(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);}
2622
+#line 2647 "pikchr.c"
26172623
break;
26182624
case 47: /* attribute ::= STRING textposition */
2619
-#line 645 "pikchr.y"
2620
-{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy164);}
2621
-#line 2646 "pikchr.c"
2625
+#line 646 "pikchr.y"
2626
+{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy188);}
2627
+#line 2652 "pikchr.c"
26222628
break;
26232629
case 48: /* attribute ::= FIT */
2624
-#line 646 "pikchr.y"
2630
+#line 647 "pikchr.y"
26252631
{pik_size_to_fit(p,&yymsp[0].minor.yy0,3); }
2626
-#line 2651 "pikchr.c"
2632
+#line 2657 "pikchr.c"
26272633
break;
26282634
case 49: /* attribute ::= BEHIND object */
2629
-#line 647 "pikchr.y"
2630
-{pik_behind(p,yymsp[0].minor.yy36);}
2631
-#line 2656 "pikchr.c"
2635
+#line 648 "pikchr.y"
2636
+{pik_behind(p,yymsp[0].minor.yy162);}
2637
+#line 2662 "pikchr.c"
26322638
break;
26332639
case 50: /* withclause ::= DOT_E edge AT position */
26342640
case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51);
2635
-#line 655 "pikchr.y"
2636
-{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2637
-#line 2662 "pikchr.c"
2641
+#line 656 "pikchr.y"
2642
+{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy63,&yymsp[-1].minor.yy0); }
2643
+#line 2668 "pikchr.c"
26382644
break;
26392645
case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2640
-#line 659 "pikchr.y"
2646
+#line 660 "pikchr.y"
26412647
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
2642
-#line 2667 "pikchr.c"
2648
+#line 2673 "pikchr.c"
26432649
yymsp[0].minor.yy0 = yylhsminor.yy0;
26442650
break;
26452651
case 53: /* boolproperty ::= CW */
2646
-#line 670 "pikchr.y"
2652
+#line 671 "pikchr.y"
26472653
{p->cur->cw = 1;}
2648
-#line 2673 "pikchr.c"
2654
+#line 2679 "pikchr.c"
26492655
break;
26502656
case 54: /* boolproperty ::= CCW */
2651
-#line 671 "pikchr.y"
2657
+#line 672 "pikchr.y"
26522658
{p->cur->cw = 0;}
2653
-#line 2678 "pikchr.c"
2659
+#line 2684 "pikchr.c"
26542660
break;
26552661
case 55: /* boolproperty ::= LARROW */
2656
-#line 672 "pikchr.y"
2662
+#line 673 "pikchr.y"
26572663
{p->cur->larrow=1; p->cur->rarrow=0; }
2658
-#line 2683 "pikchr.c"
2664
+#line 2689 "pikchr.c"
26592665
break;
26602666
case 56: /* boolproperty ::= RARROW */
2661
-#line 673 "pikchr.y"
2667
+#line 674 "pikchr.y"
26622668
{p->cur->larrow=0; p->cur->rarrow=1; }
2663
-#line 2688 "pikchr.c"
2669
+#line 2694 "pikchr.c"
26642670
break;
26652671
case 57: /* boolproperty ::= LRARROW */
2666
-#line 674 "pikchr.y"
2672
+#line 675 "pikchr.y"
26672673
{p->cur->larrow=1; p->cur->rarrow=1; }
2668
-#line 2693 "pikchr.c"
2674
+#line 2699 "pikchr.c"
26692675
break;
26702676
case 58: /* boolproperty ::= INVIS */
2671
-#line 675 "pikchr.y"
2677
+#line 676 "pikchr.y"
26722678
{p->cur->sw = 0.0;}
2673
-#line 2698 "pikchr.c"
2679
+#line 2704 "pikchr.c"
26742680
break;
26752681
case 59: /* boolproperty ::= THICK */
2676
-#line 676 "pikchr.y"
2682
+#line 677 "pikchr.y"
26772683
{p->cur->sw *= 1.5;}
2678
-#line 2703 "pikchr.c"
2684
+#line 2709 "pikchr.c"
26792685
break;
26802686
case 60: /* boolproperty ::= THIN */
2681
-#line 677 "pikchr.y"
2687
+#line 678 "pikchr.y"
26822688
{p->cur->sw *= 0.67;}
2683
-#line 2708 "pikchr.c"
2689
+#line 2714 "pikchr.c"
26842690
break;
26852691
case 61: /* boolproperty ::= SOLID */
2686
-#line 678 "pikchr.y"
2692
+#line 679 "pikchr.y"
26872693
{p->cur->sw = pik_value(p,"thickness",9,0);
26882694
p->cur->dotted = p->cur->dashed = 0.0;}
2689
-#line 2714 "pikchr.c"
2695
+#line 2720 "pikchr.c"
26902696
break;
26912697
case 62: /* textposition ::= */
2692
-#line 681 "pikchr.y"
2693
-{yymsp[1].minor.yy164 = 0;}
2694
-#line 2719 "pikchr.c"
2698
+#line 682 "pikchr.y"
2699
+{yymsp[1].minor.yy188 = 0;}
2700
+#line 2725 "pikchr.c"
26952701
break;
2696
- case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2697
-#line 684 "pikchr.y"
2698
-{yylhsminor.yy164 = (short int)pik_text_position(yymsp[-1].minor.yy164,&yymsp[0].minor.yy0);}
2699
-#line 2724 "pikchr.c"
2700
- yymsp[-1].minor.yy164 = yylhsminor.yy164;
2702
+ case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */
2703
+#line 685 "pikchr.y"
2704
+{yylhsminor.yy188 = (short int)pik_text_position(yymsp[-1].minor.yy188,&yymsp[0].minor.yy0);}
2705
+#line 2730 "pikchr.c"
2706
+ yymsp[-1].minor.yy188 = yylhsminor.yy188;
27012707
break;
27022708
case 64: /* position ::= expr COMMA expr */
2703
-#line 687 "pikchr.y"
2704
-{yylhsminor.yy79.x=yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[0].minor.yy153;}
2705
-#line 2730 "pikchr.c"
2706
- yymsp[-2].minor.yy79 = yylhsminor.yy79;
2709
+#line 688 "pikchr.y"
2710
+{yylhsminor.yy63.x=yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[0].minor.yy21;}
2711
+#line 2736 "pikchr.c"
2712
+ yymsp[-2].minor.yy63 = yylhsminor.yy63;
27072713
break;
27082714
case 65: /* position ::= place PLUS expr COMMA expr */
2709
-#line 689 "pikchr.y"
2710
-{yylhsminor.yy79.x=yymsp[-4].minor.yy79.x+yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y+yymsp[0].minor.yy153;}
2711
-#line 2736 "pikchr.c"
2712
- yymsp[-4].minor.yy79 = yylhsminor.yy79;
2715
+#line 690 "pikchr.y"
2716
+{yylhsminor.yy63.x=yymsp[-4].minor.yy63.x+yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[-4].minor.yy63.y+yymsp[0].minor.yy21;}
2717
+#line 2742 "pikchr.c"
2718
+ yymsp[-4].minor.yy63 = yylhsminor.yy63;
27132719
break;
27142720
case 66: /* position ::= place MINUS expr COMMA expr */
2715
-#line 690 "pikchr.y"
2716
-{yylhsminor.yy79.x=yymsp[-4].minor.yy79.x-yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y-yymsp[0].minor.yy153;}
2717
-#line 2742 "pikchr.c"
2718
- yymsp[-4].minor.yy79 = yylhsminor.yy79;
2721
+#line 691 "pikchr.y"
2722
+{yylhsminor.yy63.x=yymsp[-4].minor.yy63.x-yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[-4].minor.yy63.y-yymsp[0].minor.yy21;}
2723
+#line 2748 "pikchr.c"
2724
+ yymsp[-4].minor.yy63 = yylhsminor.yy63;
27192725
break;
27202726
case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2721
-#line 692 "pikchr.y"
2722
-{yylhsminor.yy79.x=yymsp[-6].minor.yy79.x+yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y+yymsp[-1].minor.yy153;}
2723
-#line 2748 "pikchr.c"
2724
- yymsp[-6].minor.yy79 = yylhsminor.yy79;
2727
+#line 693 "pikchr.y"
2728
+{yylhsminor.yy63.x=yymsp[-6].minor.yy63.x+yymsp[-3].minor.yy21; yylhsminor.yy63.y=yymsp[-6].minor.yy63.y+yymsp[-1].minor.yy21;}
2729
+#line 2754 "pikchr.c"
2730
+ yymsp[-6].minor.yy63 = yylhsminor.yy63;
27252731
break;
27262732
case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2727
-#line 694 "pikchr.y"
2728
-{yylhsminor.yy79.x=yymsp[-6].minor.yy79.x-yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y-yymsp[-1].minor.yy153;}
2729
-#line 2754 "pikchr.c"
2730
- yymsp[-6].minor.yy79 = yylhsminor.yy79;
2733
+#line 695 "pikchr.y"
2734
+{yylhsminor.yy63.x=yymsp[-6].minor.yy63.x-yymsp[-3].minor.yy21; yylhsminor.yy63.y=yymsp[-6].minor.yy63.y-yymsp[-1].minor.yy21;}
2735
+#line 2760 "pikchr.c"
2736
+ yymsp[-6].minor.yy63 = yylhsminor.yy63;
27312737
break;
27322738
case 69: /* position ::= LP position COMMA position RP */
2733
-#line 695 "pikchr.y"
2734
-{yymsp[-4].minor.yy79.x=yymsp[-3].minor.yy79.x; yymsp[-4].minor.yy79.y=yymsp[-1].minor.yy79.y;}
2735
-#line 2760 "pikchr.c"
2739
+#line 696 "pikchr.y"
2740
+{yymsp[-4].minor.yy63.x=yymsp[-3].minor.yy63.x; yymsp[-4].minor.yy63.y=yymsp[-1].minor.yy63.y;}
2741
+#line 2766 "pikchr.c"
27362742
break;
27372743
case 70: /* position ::= LP position RP */
2738
-#line 696 "pikchr.y"
2739
-{yymsp[-2].minor.yy79=yymsp[-1].minor.yy79;}
2740
-#line 2765 "pikchr.c"
2744
+#line 697 "pikchr.y"
2745
+{yymsp[-2].minor.yy63=yymsp[-1].minor.yy63;}
2746
+#line 2771 "pikchr.c"
27412747
break;
27422748
case 71: /* position ::= expr between position AND position */
2743
-#line 698 "pikchr.y"
2744
-{yylhsminor.yy79 = pik_position_between(yymsp[-4].minor.yy153,yymsp[-2].minor.yy79,yymsp[0].minor.yy79);}
2745
-#line 2770 "pikchr.c"
2746
- yymsp[-4].minor.yy79 = yylhsminor.yy79;
2749
+#line 699 "pikchr.y"
2750
+{yylhsminor.yy63 = pik_position_between(yymsp[-4].minor.yy21,yymsp[-2].minor.yy63,yymsp[0].minor.yy63);}
2751
+#line 2776 "pikchr.c"
2752
+ yymsp[-4].minor.yy63 = yylhsminor.yy63;
27472753
break;
27482754
case 72: /* position ::= expr LT position COMMA position GT */
2749
-#line 700 "pikchr.y"
2750
-{yylhsminor.yy79 = pik_position_between(yymsp[-5].minor.yy153,yymsp[-3].minor.yy79,yymsp[-1].minor.yy79);}
2751
-#line 2776 "pikchr.c"
2752
- yymsp[-5].minor.yy79 = yylhsminor.yy79;
2755
+#line 701 "pikchr.y"
2756
+{yylhsminor.yy63 = pik_position_between(yymsp[-5].minor.yy21,yymsp[-3].minor.yy63,yymsp[-1].minor.yy63);}
2757
+#line 2782 "pikchr.c"
2758
+ yymsp[-5].minor.yy63 = yylhsminor.yy63;
27532759
break;
27542760
case 73: /* position ::= expr ABOVE position */
2755
-#line 701 "pikchr.y"
2756
-{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y += yymsp[-2].minor.yy153;}
2757
-#line 2782 "pikchr.c"
2758
- yymsp[-2].minor.yy79 = yylhsminor.yy79;
2761
+#line 702 "pikchr.y"
2762
+{yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.y += yymsp[-2].minor.yy21;}
2763
+#line 2788 "pikchr.c"
2764
+ yymsp[-2].minor.yy63 = yylhsminor.yy63;
27592765
break;
27602766
case 74: /* position ::= expr BELOW position */
2761
-#line 702 "pikchr.y"
2762
-{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y -= yymsp[-2].minor.yy153;}
2763
-#line 2788 "pikchr.c"
2764
- yymsp[-2].minor.yy79 = yylhsminor.yy79;
2767
+#line 703 "pikchr.y"
2768
+{yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.y -= yymsp[-2].minor.yy21;}
2769
+#line 2794 "pikchr.c"
2770
+ yymsp[-2].minor.yy63 = yylhsminor.yy63;
27652771
break;
27662772
case 75: /* position ::= expr LEFT OF position */
2767
-#line 703 "pikchr.y"
2768
-{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x -= yymsp[-3].minor.yy153;}
2769
-#line 2794 "pikchr.c"
2770
- yymsp[-3].minor.yy79 = yylhsminor.yy79;
2773
+#line 704 "pikchr.y"
2774
+{yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.x -= yymsp[-3].minor.yy21;}
2775
+#line 2800 "pikchr.c"
2776
+ yymsp[-3].minor.yy63 = yylhsminor.yy63;
27712777
break;
27722778
case 76: /* position ::= expr RIGHT OF position */
2773
-#line 704 "pikchr.y"
2774
-{yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x += yymsp[-3].minor.yy153;}
2775
-#line 2800 "pikchr.c"
2776
- yymsp[-3].minor.yy79 = yylhsminor.yy79;
2779
+#line 705 "pikchr.y"
2780
+{yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.x += yymsp[-3].minor.yy21;}
2781
+#line 2806 "pikchr.c"
2782
+ yymsp[-3].minor.yy63 = yylhsminor.yy63;
27772783
break;
27782784
case 77: /* position ::= expr ON HEADING EDGEPT OF position */
2779
-#line 706 "pikchr.y"
2780
-{yylhsminor.yy79 = pik_position_at_hdg(yymsp[-5].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2781
-#line 2806 "pikchr.c"
2782
- yymsp[-5].minor.yy79 = yylhsminor.yy79;
2785
+#line 707 "pikchr.y"
2786
+{yylhsminor.yy63 = pik_position_at_hdg(yymsp[-5].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);}
2787
+#line 2812 "pikchr.c"
2788
+ yymsp[-5].minor.yy63 = yylhsminor.yy63;
27832789
break;
27842790
case 78: /* position ::= expr HEADING EDGEPT OF position */
2785
-#line 708 "pikchr.y"
2786
-{yylhsminor.yy79 = pik_position_at_hdg(yymsp[-4].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2787
-#line 2812 "pikchr.c"
2788
- yymsp[-4].minor.yy79 = yylhsminor.yy79;
2791
+#line 709 "pikchr.y"
2792
+{yylhsminor.yy63 = pik_position_at_hdg(yymsp[-4].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);}
2793
+#line 2818 "pikchr.c"
2794
+ yymsp[-4].minor.yy63 = yylhsminor.yy63;
27892795
break;
27902796
case 79: /* position ::= expr EDGEPT OF position */
2791
-#line 710 "pikchr.y"
2792
-{yylhsminor.yy79 = pik_position_at_hdg(yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2793
-#line 2818 "pikchr.c"
2794
- yymsp[-3].minor.yy79 = yylhsminor.yy79;
2797
+#line 711 "pikchr.y"
2798
+{yylhsminor.yy63 = pik_position_at_hdg(yymsp[-3].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);}
2799
+#line 2824 "pikchr.c"
2800
+ yymsp[-3].minor.yy63 = yylhsminor.yy63;
27952801
break;
27962802
case 80: /* position ::= expr ON HEADING expr FROM position */
2797
-#line 712 "pikchr.y"
2798
-{yylhsminor.yy79 = pik_position_at_angle(yymsp[-5].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2799
-#line 2824 "pikchr.c"
2800
- yymsp[-5].minor.yy79 = yylhsminor.yy79;
2803
+#line 713 "pikchr.y"
2804
+{yylhsminor.yy63 = pik_position_at_angle(yymsp[-5].minor.yy21,yymsp[-2].minor.yy21,yymsp[0].minor.yy63);}
2805
+#line 2830 "pikchr.c"
2806
+ yymsp[-5].minor.yy63 = yylhsminor.yy63;
28012807
break;
28022808
case 81: /* position ::= expr HEADING expr FROM position */
2803
-#line 714 "pikchr.y"
2804
-{yylhsminor.yy79 = pik_position_at_angle(yymsp[-4].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2805
-#line 2830 "pikchr.c"
2806
- yymsp[-4].minor.yy79 = yylhsminor.yy79;
2809
+#line 715 "pikchr.y"
2810
+{yylhsminor.yy63 = pik_position_at_angle(yymsp[-4].minor.yy21,yymsp[-2].minor.yy21,yymsp[0].minor.yy63);}
2811
+#line 2836 "pikchr.c"
2812
+ yymsp[-4].minor.yy63 = yylhsminor.yy63;
28072813
break;
28082814
case 82: /* place ::= edge OF object */
2809
-#line 726 "pikchr.y"
2810
-{yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2811
-#line 2836 "pikchr.c"
2812
- yymsp[-2].minor.yy79 = yylhsminor.yy79;
2815
+#line 727 "pikchr.y"
2816
+{yylhsminor.yy63 = pik_place_of_elem(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);}
2817
+#line 2842 "pikchr.c"
2818
+ yymsp[-2].minor.yy63 = yylhsminor.yy63;
28132819
break;
28142820
case 83: /* place2 ::= object */
2815
-#line 727 "pikchr.y"
2816
-{yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,0);}
2817
-#line 2842 "pikchr.c"
2818
- yymsp[0].minor.yy79 = yylhsminor.yy79;
2821
+#line 728 "pikchr.y"
2822
+{yylhsminor.yy63 = pik_place_of_elem(p,yymsp[0].minor.yy162,0);}
2823
+#line 2848 "pikchr.c"
2824
+ yymsp[0].minor.yy63 = yylhsminor.yy63;
28192825
break;
28202826
case 84: /* place2 ::= object DOT_E edge */
2821
-#line 728 "pikchr.y"
2822
-{yylhsminor.yy79 = pik_place_of_elem(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2823
-#line 2848 "pikchr.c"
2824
- yymsp[-2].minor.yy79 = yylhsminor.yy79;
2827
+#line 729 "pikchr.y"
2828
+{yylhsminor.yy63 = pik_place_of_elem(p,yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);}
2829
+#line 2854 "pikchr.c"
2830
+ yymsp[-2].minor.yy63 = yylhsminor.yy63;
28252831
break;
28262832
case 85: /* place2 ::= NTH VERTEX OF object */
2827
-#line 729 "pikchr.y"
2828
-{yylhsminor.yy79 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy36);}
2829
-#line 2854 "pikchr.c"
2830
- yymsp[-3].minor.yy79 = yylhsminor.yy79;
2833
+#line 730 "pikchr.y"
2834
+{yylhsminor.yy63 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy162);}
2835
+#line 2860 "pikchr.c"
2836
+ yymsp[-3].minor.yy63 = yylhsminor.yy63;
28312837
break;
28322838
case 86: /* object ::= nth */
2833
-#line 741 "pikchr.y"
2834
-{yylhsminor.yy36 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2835
-#line 2860 "pikchr.c"
2836
- yymsp[0].minor.yy36 = yylhsminor.yy36;
2839
+#line 742 "pikchr.y"
2840
+{yylhsminor.yy162 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2841
+#line 2866 "pikchr.c"
2842
+ yymsp[0].minor.yy162 = yylhsminor.yy162;
28372843
break;
28382844
case 87: /* object ::= nth OF|IN object */
2839
-#line 742 "pikchr.y"
2840
-{yylhsminor.yy36 = pik_find_nth(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2841
-#line 2866 "pikchr.c"
2842
- yymsp[-2].minor.yy36 = yylhsminor.yy36;
2845
+#line 743 "pikchr.y"
2846
+{yylhsminor.yy162 = pik_find_nth(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);}
2847
+#line 2872 "pikchr.c"
2848
+ yymsp[-2].minor.yy162 = yylhsminor.yy162;
28432849
break;
28442850
case 88: /* objectname ::= THIS */
2845
-#line 744 "pikchr.y"
2846
-{yymsp[0].minor.yy36 = p->cur;}
2847
-#line 2872 "pikchr.c"
2851
+#line 745 "pikchr.y"
2852
+{yymsp[0].minor.yy162 = p->cur;}
2853
+#line 2878 "pikchr.c"
28482854
break;
28492855
case 89: /* objectname ::= PLACENAME */
2850
-#line 745 "pikchr.y"
2851
-{yylhsminor.yy36 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2852
-#line 2877 "pikchr.c"
2853
- yymsp[0].minor.yy36 = yylhsminor.yy36;
2856
+#line 746 "pikchr.y"
2857
+{yylhsminor.yy162 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2858
+#line 2883 "pikchr.c"
2859
+ yymsp[0].minor.yy162 = yylhsminor.yy162;
28542860
break;
28552861
case 90: /* objectname ::= objectname DOT_U PLACENAME */
2856
-#line 747 "pikchr.y"
2857
-{yylhsminor.yy36 = pik_find_byname(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2858
-#line 2883 "pikchr.c"
2859
- yymsp[-2].minor.yy36 = yylhsminor.yy36;
2862
+#line 748 "pikchr.y"
2863
+{yylhsminor.yy162 = pik_find_byname(p,yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);}
2864
+#line 2889 "pikchr.c"
2865
+ yymsp[-2].minor.yy162 = yylhsminor.yy162;
28602866
break;
28612867
case 91: /* nth ::= NTH CLASSNAME */
2862
-#line 749 "pikchr.y"
2868
+#line 750 "pikchr.y"
28632869
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2864
-#line 2889 "pikchr.c"
2870
+#line 2895 "pikchr.c"
28652871
yymsp[-1].minor.yy0 = yylhsminor.yy0;
28662872
break;
28672873
case 92: /* nth ::= NTH LAST CLASSNAME */
2868
-#line 750 "pikchr.y"
2874
+#line 751 "pikchr.y"
28692875
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2870
-#line 2895 "pikchr.c"
2876
+#line 2901 "pikchr.c"
28712877
yymsp[-2].minor.yy0 = yylhsminor.yy0;
28722878
break;
28732879
case 93: /* nth ::= LAST CLASSNAME */
2874
-#line 751 "pikchr.y"
2880
+#line 752 "pikchr.y"
28752881
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2876
-#line 2901 "pikchr.c"
2882
+#line 2907 "pikchr.c"
28772883
break;
28782884
case 94: /* nth ::= LAST */
2879
-#line 752 "pikchr.y"
2885
+#line 753 "pikchr.y"
28802886
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2881
-#line 2906 "pikchr.c"
2887
+#line 2912 "pikchr.c"
28822888
yymsp[0].minor.yy0 = yylhsminor.yy0;
28832889
break;
28842890
case 95: /* nth ::= NTH LB RB */
2885
-#line 753 "pikchr.y"
2891
+#line 754 "pikchr.y"
28862892
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2887
-#line 2912 "pikchr.c"
2893
+#line 2918 "pikchr.c"
28882894
yymsp[-2].minor.yy0 = yylhsminor.yy0;
28892895
break;
28902896
case 96: /* nth ::= NTH LAST LB RB */
2891
-#line 754 "pikchr.y"
2897
+#line 755 "pikchr.y"
28922898
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2893
-#line 2918 "pikchr.c"
2899
+#line 2924 "pikchr.c"
28942900
yymsp[-3].minor.yy0 = yylhsminor.yy0;
28952901
break;
28962902
case 97: /* nth ::= LAST LB RB */
2897
-#line 755 "pikchr.y"
2903
+#line 756 "pikchr.y"
28982904
{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2899
-#line 2924 "pikchr.c"
2905
+#line 2930 "pikchr.c"
29002906
break;
29012907
case 98: /* expr ::= expr PLUS expr */
2902
-#line 757 "pikchr.y"
2903
-{yylhsminor.yy153=yymsp[-2].minor.yy153+yymsp[0].minor.yy153;}
2904
-#line 2929 "pikchr.c"
2905
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2908
+#line 758 "pikchr.y"
2909
+{yylhsminor.yy21=yymsp[-2].minor.yy21+yymsp[0].minor.yy21;}
2910
+#line 2935 "pikchr.c"
2911
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29062912
break;
29072913
case 99: /* expr ::= expr MINUS expr */
2908
-#line 758 "pikchr.y"
2909
-{yylhsminor.yy153=yymsp[-2].minor.yy153-yymsp[0].minor.yy153;}
2910
-#line 2935 "pikchr.c"
2911
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2914
+#line 759 "pikchr.y"
2915
+{yylhsminor.yy21=yymsp[-2].minor.yy21-yymsp[0].minor.yy21;}
2916
+#line 2941 "pikchr.c"
2917
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29122918
break;
29132919
case 100: /* expr ::= expr STAR expr */
2914
-#line 759 "pikchr.y"
2915
-{yylhsminor.yy153=yymsp[-2].minor.yy153*yymsp[0].minor.yy153;}
2916
-#line 2941 "pikchr.c"
2917
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2920
+#line 760 "pikchr.y"
2921
+{yylhsminor.yy21=yymsp[-2].minor.yy21*yymsp[0].minor.yy21;}
2922
+#line 2947 "pikchr.c"
2923
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29182924
break;
29192925
case 101: /* expr ::= expr SLASH expr */
2920
-#line 760 "pikchr.y"
2926
+#line 761 "pikchr.y"
29212927
{
2922
- if( yymsp[0].minor.yy153==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy153 = 0.0; }
2923
- else{ yylhsminor.yy153 = yymsp[-2].minor.yy153/yymsp[0].minor.yy153; }
2928
+ if( yymsp[0].minor.yy21==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy21 = 0.0; }
2929
+ else{ yylhsminor.yy21 = yymsp[-2].minor.yy21/yymsp[0].minor.yy21; }
29242930
}
2925
-#line 2950 "pikchr.c"
2926
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2931
+#line 2956 "pikchr.c"
2932
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29272933
break;
29282934
case 102: /* expr ::= MINUS expr */
2929
-#line 764 "pikchr.y"
2930
-{yymsp[-1].minor.yy153=-yymsp[0].minor.yy153;}
2931
-#line 2956 "pikchr.c"
2935
+#line 765 "pikchr.y"
2936
+{yymsp[-1].minor.yy21=-yymsp[0].minor.yy21;}
2937
+#line 2962 "pikchr.c"
29322938
break;
29332939
case 103: /* expr ::= PLUS expr */
2934
-#line 765 "pikchr.y"
2935
-{yymsp[-1].minor.yy153=yymsp[0].minor.yy153;}
2936
-#line 2961 "pikchr.c"
2940
+#line 766 "pikchr.y"
2941
+{yymsp[-1].minor.yy21=yymsp[0].minor.yy21;}
2942
+#line 2967 "pikchr.c"
29372943
break;
29382944
case 104: /* expr ::= LP expr RP */
2939
-#line 766 "pikchr.y"
2940
-{yymsp[-2].minor.yy153=yymsp[-1].minor.yy153;}
2941
-#line 2966 "pikchr.c"
2945
+#line 767 "pikchr.y"
2946
+{yymsp[-2].minor.yy21=yymsp[-1].minor.yy21;}
2947
+#line 2972 "pikchr.c"
29422948
break;
29432949
case 105: /* expr ::= LP FILL|COLOR|THICKNESS RP */
2944
-#line 767 "pikchr.y"
2945
-{yymsp[-2].minor.yy153=pik_get_var(p,&yymsp[-1].minor.yy0);}
2946
-#line 2971 "pikchr.c"
2950
+#line 768 "pikchr.y"
2951
+{yymsp[-2].minor.yy21=pik_get_var(p,&yymsp[-1].minor.yy0);}
2952
+#line 2977 "pikchr.c"
29472953
break;
29482954
case 106: /* expr ::= NUMBER */
2949
-#line 768 "pikchr.y"
2950
-{yylhsminor.yy153=pik_atof(&yymsp[0].minor.yy0);}
2951
-#line 2976 "pikchr.c"
2952
- yymsp[0].minor.yy153 = yylhsminor.yy153;
2955
+#line 769 "pikchr.y"
2956
+{yylhsminor.yy21=pik_atof(&yymsp[0].minor.yy0);}
2957
+#line 2982 "pikchr.c"
2958
+ yymsp[0].minor.yy21 = yylhsminor.yy21;
29532959
break;
29542960
case 107: /* expr ::= ID */
2955
-#line 769 "pikchr.y"
2956
-{yylhsminor.yy153=pik_get_var(p,&yymsp[0].minor.yy0);}
2957
-#line 2982 "pikchr.c"
2958
- yymsp[0].minor.yy153 = yylhsminor.yy153;
2961
+#line 770 "pikchr.y"
2962
+{yylhsminor.yy21=pik_get_var(p,&yymsp[0].minor.yy0);}
2963
+#line 2988 "pikchr.c"
2964
+ yymsp[0].minor.yy21 = yylhsminor.yy21;
29592965
break;
29602966
case 108: /* expr ::= FUNC1 LP expr RP */
2961
-#line 770 "pikchr.y"
2962
-{yylhsminor.yy153 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy153,0.0);}
2963
-#line 2988 "pikchr.c"
2964
- yymsp[-3].minor.yy153 = yylhsminor.yy153;
2967
+#line 771 "pikchr.y"
2968
+{yylhsminor.yy21 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy21,0.0);}
2969
+#line 2994 "pikchr.c"
2970
+ yymsp[-3].minor.yy21 = yylhsminor.yy21;
29652971
break;
29662972
case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
2967
-#line 771 "pikchr.y"
2968
-{yylhsminor.yy153 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy153,yymsp[-1].minor.yy153);}
2969
-#line 2994 "pikchr.c"
2970
- yymsp[-5].minor.yy153 = yylhsminor.yy153;
2973
+#line 772 "pikchr.y"
2974
+{yylhsminor.yy21 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy21,yymsp[-1].minor.yy21);}
2975
+#line 3000 "pikchr.c"
2976
+ yymsp[-5].minor.yy21 = yylhsminor.yy21;
29712977
break;
29722978
case 110: /* expr ::= DIST LP position COMMA position RP */
2973
-#line 772 "pikchr.y"
2974
-{yymsp[-5].minor.yy153 = pik_dist(&yymsp[-3].minor.yy79,&yymsp[-1].minor.yy79);}
2975
-#line 3000 "pikchr.c"
2979
+#line 773 "pikchr.y"
2980
+{yymsp[-5].minor.yy21 = pik_dist(&yymsp[-3].minor.yy63,&yymsp[-1].minor.yy63);}
2981
+#line 3006 "pikchr.c"
29762982
break;
29772983
case 111: /* expr ::= place2 DOT_XY X */
2978
-#line 773 "pikchr.y"
2979
-{yylhsminor.yy153 = yymsp[-2].minor.yy79.x;}
2980
-#line 3005 "pikchr.c"
2981
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2984
+#line 774 "pikchr.y"
2985
+{yylhsminor.yy21 = yymsp[-2].minor.yy63.x;}
2986
+#line 3011 "pikchr.c"
2987
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29822988
break;
29832989
case 112: /* expr ::= place2 DOT_XY Y */
2984
-#line 774 "pikchr.y"
2985
-{yylhsminor.yy153 = yymsp[-2].minor.yy79.y;}
2986
-#line 3011 "pikchr.c"
2987
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2990
+#line 775 "pikchr.y"
2991
+{yylhsminor.yy21 = yymsp[-2].minor.yy63.y;}
2992
+#line 3017 "pikchr.c"
2993
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29882994
break;
29892995
case 113: /* expr ::= object DOT_L numproperty */
29902996
case 114: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==114);
29912997
case 115: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==115);
2992
-#line 775 "pikchr.y"
2993
-{yylhsminor.yy153=pik_property_of(yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2994
-#line 3019 "pikchr.c"
2995
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
2998
+#line 776 "pikchr.y"
2999
+{yylhsminor.yy21=pik_property_of(yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);}
3000
+#line 3025 "pikchr.c"
3001
+ yymsp[-2].minor.yy21 = yylhsminor.yy21;
29963002
break;
29973003
default:
29983004
/* (116) lvalue ::= ID */ yytestcase(yyruleno==116);
29993005
/* (117) lvalue ::= FILL */ yytestcase(yyruleno==117);
30003006
/* (118) lvalue ::= COLOR */ yytestcase(yyruleno==118);
@@ -3092,19 +3098,19 @@
30923098
){
30933099
pik_parserARG_FETCH
30943100
pik_parserCTX_FETCH
30953101
#define TOKEN yyminor
30963102
/************ Begin %syntax_error code ****************************************/
3097
-#line 535 "pikchr.y"
3103
+#line 536 "pikchr.y"
30983104
30993105
if( TOKEN.z && TOKEN.z[0] ){
31003106
pik_error(p, &TOKEN, "syntax error");
31013107
}else{
31023108
pik_error(p, 0, "syntax error");
31033109
}
31043110
UNUSED_PARAMETER(yymajor);
3105
-#line 3130 "pikchr.c"
3111
+#line 3136 "pikchr.c"
31063112
/************ End %syntax_error code ******************************************/
31073113
pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
31083114
pik_parserCTX_STORE
31093115
}
31103116
@@ -3376,11 +3382,11 @@
33763382
#else
33773383
(void)iToken;
33783384
return 0;
33793385
#endif
33803386
}
3381
-#line 780 "pikchr.y"
3387
+#line 781 "pikchr.y"
33823388
33833389
33843390
33853391
/* Chart of the 148 official CSS color names with their
33863392
** corresponding RGB values thru Color Module Level 4:
@@ -4978,14 +4984,16 @@
49784984
if( t->eCode & TP_RJUST ) nx += jw;
49794985
49804986
if( pBox!=0 ){
49814987
/* If pBox is not NULL, do not draw any <text>. Instead, just expand
49824988
** pBox to include the text */
4983
- PNum cw = pik_text_length(t)*p->charWidth*xtraFontScale*0.01;
4989
+ PNum cw = pik_text_length(t, t->eCode & TP_MONO)*p->charWidth*xtraFontScale*0.01;
49844990
PNum ch = p->charHeight*0.5*xtraFontScale;
49854991
PNum x0, y0, x1, y1; /* Boundary of text relative to pObj->ptAt */
4986
- if( t->eCode & TP_BOLD ) cw *= 1.1;
4992
+ if( (t->eCode & (TP_BOLD|TP_MONO))==TP_BOLD ){
4993
+ cw *= 1.1;
4994
+ }
49874995
if( t->eCode & TP_RJUST ){
49884996
x0 = nx;
49894997
y0 = y-ch;
49904998
x1 = nx-cw;
49914999
y1 = y+ch;
@@ -5036,10 +5044,14 @@
50365044
if( t->eCode & TP_ITALIC ){
50375045
pik_append(p, " font-style=\"italic\"", -1);
50385046
}
50395047
if( t->eCode & TP_BOLD ){
50405048
pik_append(p, " font-weight=\"bold\"", -1);
5049
+ }
5050
+ if( t->eCode & TP_MONO ){
5051
+ pik_append(p, " font-family=\"monospace\"", -1);
5052
+ xtraFontScale *= 1.28;
50415053
}
50425054
if( pObj->color>=0.0 ){
50435055
pik_append_clr(p, " fill=\"", pObj->color, "\"",0);
50445056
}
50455057
xtraFontScale *= p->fontScale;
@@ -6044,12 +6056,13 @@
60446056
case T_LJUST: iRes = (iRes&~TP_JMASK) | TP_LJUST; break;
60456057
case T_RJUST: iRes = (iRes&~TP_JMASK) | TP_RJUST; break;
60466058
case T_ABOVE: iRes = (iRes&~TP_VMASK) | TP_ABOVE; break;
60476059
case T_CENTER: iRes = (iRes&~TP_VMASK) | TP_CENTER; break;
60486060
case T_BELOW: iRes = (iRes&~TP_VMASK) | TP_BELOW; break;
6049
- case T_ITALIC: iRes |= TP_ITALIC; break;
6050
- case T_BOLD: iRes |= TP_BOLD; break;
6061
+ case T_ITALIC: iRes |= TP_ITALIC; break;
6062
+ case T_BOLD: iRes |= TP_BOLD; break;
6063
+ case T_MONO: iRes |= TP_MONO; break;
60516064
case T_ALIGNED: iRes |= TP_ALIGN; break;
60526065
case T_BIG: if( iRes & TP_BIG ) iRes |= TP_XTRA;
60536066
else iRes = (iRes &~TP_SZMASK)|TP_BIG; break;
60546067
case T_SMALL: if( iRes & TP_SMALL ) iRes |= TP_XTRA;
60556068
else iRes = (iRes &~TP_SZMASK)|TP_SMALL; break;
@@ -6180,15 +6193,17 @@
61806193
**
61816194
** Omit "\" used to escape characters. And count entities like
61826195
** "&lt;" as a single character. Multi-byte UTF8 characters count
61836196
** as a single character.
61846197
**
6185
-** Attempt to scale the answer by the actual characters seen. Wide
6186
-** characters count more than narrow characters. But the widths are
6187
-** only guesses.
6198
+** Unless using a monospaced font, attempt to scale the answer by
6199
+** the actual characters seen. Wide characters count more than
6200
+** narrow characters. But the widths are only guesses.
6201
+**
61886202
*/
6189
-static int pik_text_length(const PToken *pToken){
6203
+static int pik_text_length(const PToken *pToken, const int isMonospace){
6204
+ const int stdAvg=100, monoAvg=82;
61906205
int n = pToken->n;
61916206
const char *z = pToken->z;
61926207
int cnt, j;
61936208
for(j=1, cnt=0; j<n-1; j++){
61946209
char c = z[j];
@@ -6196,22 +6211,24 @@
61966211
c = z[++j];
61976212
}else if( c=='&' ){
61986213
int k;
61996214
for(k=j+1; k<j+7 && z[k]!=0 && z[k]!=';'; k++){}
62006215
if( z[k]==';' ) j = k;
6201
- cnt += 150;
6216
+ cnt += (isMonospace ? monoAvg : stdAvg) * 3 / 2;
62026217
continue;
62036218
}
62046219
if( (c & 0xc0)==0xc0 ){
62056220
while( j+1<n-1 && (z[j+1]&0xc0)==0x80 ){ j++; }
6206
- cnt += 100;
6221
+ cnt += isMonospace ? monoAvg : stdAvg;
62076222
continue;
62086223
}
6209
- if( c>=0x20 && c<=0x7e ){
6224
+ if( isMonospace ){
6225
+ cnt += monoAvg;
6226
+ }else if( c >= 0x20 && c <= 0x7e ){
62106227
cnt += awChar[c-0x20];
62116228
}else{
6212
- cnt += 100;
6229
+ cnt += stdAvg;
62136230
}
62146231
}
62156232
return cnt;
62166233
}
62176234
@@ -7195,10 +7212,12 @@
71957212
{ "last", 4, T_LAST, 0, 0 },
71967213
{ "left", 4, T_LEFT, DIR_LEFT, CP_W },
71977214
{ "ljust", 5, T_LJUST, 0, 0 },
71987215
{ "max", 3, T_FUNC2, FN_MAX, 0 },
71997216
{ "min", 3, T_FUNC2, FN_MIN, 0 },
7217
+ { "mono", 4, T_MONO, 0, 0 },
7218
+ { "monospace", 9, T_MONO, 0, 0 },
72007219
{ "n", 1, T_EDGEPT, 0, CP_N },
72017220
{ "ne", 2, T_EDGEPT, 0, CP_NE },
72027221
{ "north", 5, T_EDGEPT, 0, CP_N },
72037222
{ "nw", 2, T_EDGEPT, 0, CP_NW },
72047223
{ "of", 2, T_OF, 0, 0 },
@@ -8122,6 +8141,6 @@
81228141
81238142
81248143
#endif /* PIKCHR_TCL */
81258144
81268145
8127
-#line 8152 "pikchr.c"
8146
+#line 8171 "pikchr.c"
81288147
--- extsrc/pikchr.c
+++ extsrc/pikchr.c
@@ -59,11 +59,11 @@
59 ** cc pikchr.c -o pikchr.o
60 **
61 ** Add -DPIKCHR_SHELL to add a main() routine that reads input files
62 ** and sends them through Pikchr, for testing. Add -DPIKCHR_FUZZ for
63 ** -fsanitizer=fuzzer testing.
64 **
65 ****************************************************************************
66 ** IMPLEMENTATION NOTES (for people who want to understand the internal
67 ** operation of this software, perhaps to extend the code or to fix bugs):
68 **
69 ** Each call to pikchr() uses a single instance of the Pik structure to
@@ -203,12 +203,13 @@
203 #define TP_SMALL 0x0200 /* Smaller font */
204 #define TP_XTRA 0x0400 /* Amplify TP_BIG or TP_SMALL */
205 #define TP_SZMASK 0x0700 /* Font size mask */
206 #define TP_ITALIC 0x1000 /* Italic font */
207 #define TP_BOLD 0x2000 /* Bold font */
208 #define TP_FMASK 0x3000 /* Mask for font style */
209 #define TP_ALIGN 0x4000 /* Rotate to align with the line */
 
210
211 /* An object to hold a position in 2-D space */
212 struct PPoint {
213 PNum x, y; /* X and Y coordinates */
214 };
@@ -470,11 +471,11 @@
470 static void pik_bbox_init(PBox*);
471 static void pik_bbox_addbox(PBox*,PBox*);
472 static void pik_bbox_add_xy(PBox*,PNum,PNum);
473 static void pik_bbox_addellipse(PBox*,PNum x,PNum y,PNum rx,PNum ry);
474 static void pik_add_txt(Pik*,PToken*,int);
475 static int pik_text_length(const PToken *pToken);
476 static void pik_size_to_fit(Pik*,PToken*,int);
477 static int pik_text_position(int,PToken*);
478 static PNum pik_property_of(PObj*,PToken*);
479 static PNum pik_func(Pik*,PToken*,PNum,PNum);
480 static PPoint pik_position_between(PNum x, PPoint p1, PPoint p2);
@@ -489,11 +490,11 @@
489 static PObj *pik_position_assert(Pik*,PPoint*,PToken*,PPoint*);
490 static PNum pik_dist(PPoint*,PPoint*);
491 static void pik_add_macro(Pik*,PToken *pId,PToken *pCode);
492
493
494 #line 520 "pikchr.c"
495 /**************** End of %include directives **********************************/
496 /* These constants specify the various numeric values for terminal symbols.
497 ***************** Begin token definitions *************************************/
498 #ifndef T_ID
499 #define T_ID 1
@@ -564,38 +565,39 @@
564 #define T_RJUST 66
565 #define T_ABOVE 67
566 #define T_BELOW 68
567 #define T_ITALIC 69
568 #define T_BOLD 70
569 #define T_ALIGNED 71
570 #define T_BIG 72
571 #define T_SMALL 73
572 #define T_AND 74
573 #define T_LT 75
574 #define T_GT 76
575 #define T_ON 77
576 #define T_WAY 78
577 #define T_BETWEEN 79
578 #define T_THE 80
579 #define T_NTH 81
580 #define T_VERTEX 82
581 #define T_TOP 83
582 #define T_BOTTOM 84
583 #define T_START 85
584 #define T_END 86
585 #define T_IN 87
586 #define T_THIS 88
587 #define T_DOT_U 89
588 #define T_LAST 90
589 #define T_NUMBER 91
590 #define T_FUNC1 92
591 #define T_FUNC2 93
592 #define T_DIST 94
593 #define T_DOT_XY 95
594 #define T_X 96
595 #define T_Y 97
596 #define T_DOT_L 98
 
597 #endif
598 /**************** End token definitions ***************************************/
599
600 /* The next sections is a series of control #defines.
601 ** various aspects of the generated parser.
@@ -651,22 +653,22 @@
651 #ifndef INTERFACE
652 # define INTERFACE 1
653 #endif
654 /************* Begin control #defines *****************************************/
655 #define YYCODETYPE unsigned char
656 #define YYNOCODE 135
657 #define YYACTIONTYPE unsigned short int
658 #define pik_parserTOKENTYPE PToken
659 typedef union {
660 int yyinit;
661 pik_parserTOKENTYPE yy0;
662 PRel yy10;
663 PObj* yy36;
664 PPoint yy79;
665 PNum yy153;
666 short int yy164;
667 PList* yy227;
668 } YYMINORTYPE;
669 #ifndef YYSTACKDEPTH
670 #define YYSTACKDEPTH 100
671 #endif
672 #define pik_parserARG_SDECL
@@ -681,11 +683,11 @@
681 #define pik_parserCTX_STORE yypParser->p=p;
682 #define YYFALLBACK 1
683 #define YYNSTATE 164
684 #define YYNRULE 156
685 #define YYNRULE_WITH_ACTION 116
686 #define YYNTOKEN 99
687 #define YY_MAX_SHIFT 163
688 #define YY_MIN_SHIFTREDUCE 287
689 #define YY_MAX_SHIFTREDUCE 442
690 #define YY_ERROR_ACTION 443
691 #define YY_ACCEPT_ACTION 444
@@ -756,322 +758,324 @@
756 ** yy_reduce_ofst[] For each state, the offset into yy_action for
757 ** shifting non-terminals after a reduce.
758 ** yy_default[] Default action for each state.
759 **
760 *********** Begin parsing tables **********************************************/
761 #define YY_ACTTAB_COUNT (1303)
762 static const YYACTIONTYPE yy_action[] = {
763 /* 0 */ 575, 495, 161, 119, 25, 452, 29, 74, 129, 148,
764 /* 10 */ 575, 492, 161, 119, 453, 113, 120, 161, 119, 530,
765 /* 20 */ 427, 428, 339, 559, 81, 30, 560, 561, 575, 64,
766 /* 30 */ 63, 62, 61, 322, 323, 9, 8, 33, 149, 32,
767 /* 40 */ 7, 71, 127, 38, 335, 66, 48, 37, 28, 339,
768 /* 50 */ 339, 339, 339, 425, 426, 340, 341, 342, 343, 344,
769 /* 60 */ 345, 346, 347, 348, 474, 528, 161, 119, 577, 77,
770 /* 70 */ 577, 73, 376, 148, 474, 533, 161, 119, 112, 113,
771 /* 80 */ 120, 161, 119, 128, 427, 428, 339, 357, 81, 531,
772 /* 90 */ 161, 119, 474, 36, 330, 13, 306, 322, 323, 9,
773 /* 100 */ 8, 33, 149, 32, 7, 71, 127, 328, 335, 66,
774 /* 110 */ 579, 310, 31, 339, 339, 339, 339, 425, 426, 340,
775 /* 120 */ 341, 342, 343, 344, 345, 346, 347, 348, 394, 435,
776 /* 130 */ 46, 59, 60, 64, 63, 62, 61, 54, 51, 376,
777 /* 140 */ 69, 108, 2, 47, 403, 83, 297, 435, 375, 84,
778 /* 150 */ 117, 80, 35, 308, 79, 133, 122, 126, 441, 440,
779 /* 160 */ 299, 123, 3, 404, 405, 406, 408, 80, 298, 308,
780 /* 170 */ 79, 4, 411, 412, 413, 414, 441, 440, 350, 350,
781 /* 180 */ 350, 350, 350, 350, 350, 350, 350, 350, 62, 61,
782 /* 190 */ 67, 434, 1, 75, 378, 158, 74, 76, 148, 411,
783 /* 200 */ 412, 413, 414, 124, 113, 120, 161, 119, 106, 434,
784 /* 210 */ 436, 437, 438, 439, 5, 375, 6, 117, 393, 155,
785 /* 220 */ 154, 153, 394, 435, 69, 59, 60, 149, 436, 437,
786 /* 230 */ 438, 439, 535, 376, 398, 399, 2, 424, 427, 428,
787 /* 240 */ 339, 156, 156, 156, 423, 394, 435, 65, 59, 60,
788 /* 250 */ 162, 131, 441, 440, 397, 72, 376, 148, 118, 2,
789 /* 260 */ 380, 157, 125, 113, 120, 161, 119, 339, 339, 339,
790 /* 270 */ 339, 425, 426, 535, 11, 441, 440, 394, 356, 535,
791 /* 280 */ 59, 60, 535, 379, 159, 434, 149, 12, 102, 446,
792 /* 290 */ 432, 42, 138, 14, 435, 139, 301, 302, 303, 36,
793 /* 300 */ 305, 430, 106, 16, 436, 437, 438, 439, 434, 375,
794 /* 310 */ 18, 117, 393, 155, 154, 153, 44, 142, 140, 64,
795 /* 320 */ 63, 62, 61, 441, 440, 106, 19, 436, 437, 438,
796 /* 330 */ 439, 45, 375, 20, 117, 393, 155, 154, 153, 68,
797 /* 340 */ 55, 114, 64, 63, 62, 61, 147, 146, 394, 473,
798 /* 350 */ 359, 59, 60, 43, 23, 391, 434, 106, 26, 376,
799 /* 360 */ 57, 58, 42, 49, 375, 392, 117, 393, 155, 154,
800 /* 370 */ 153, 64, 63, 62, 61, 436, 437, 438, 439, 384,
801 /* 380 */ 382, 383, 22, 21, 377, 473, 160, 70, 39, 445,
802 /* 390 */ 24, 445, 145, 141, 431, 142, 140, 64, 63, 62,
803 /* 400 */ 61, 394, 15, 445, 59, 60, 64, 63, 62, 61,
804 /* 410 */ 391, 445, 376, 445, 445, 42, 445, 445, 55, 391,
805 /* 420 */ 156, 156, 156, 445, 147, 146, 445, 52, 106, 445,
806 /* 430 */ 445, 43, 445, 445, 445, 375, 445, 117, 393, 155,
807 /* 440 */ 154, 153, 445, 394, 143, 445, 59, 60, 64, 63,
808 /* 450 */ 62, 61, 313, 445, 376, 378, 158, 42, 445, 445,
809 /* 460 */ 22, 21, 121, 447, 454, 29, 445, 445, 24, 450,
810 /* 470 */ 145, 141, 431, 142, 140, 64, 63, 62, 61, 445,
811 /* 480 */ 163, 106, 445, 445, 444, 27, 445, 445, 375, 445,
812 /* 490 */ 117, 393, 155, 154, 153, 445, 55, 74, 445, 148,
813 /* 500 */ 445, 445, 147, 146, 497, 113, 120, 161, 119, 43,
814 /* 510 */ 445, 394, 445, 445, 59, 60, 445, 445, 445, 118,
815 /* 520 */ 445, 445, 376, 106, 445, 42, 445, 445, 149, 445,
816 /* 530 */ 375, 445, 117, 393, 155, 154, 153, 445, 22, 21,
817 /* 540 */ 394, 144, 445, 59, 60, 445, 24, 445, 145, 141,
818 /* 550 */ 431, 376, 445, 445, 42, 445, 132, 130, 394, 445,
819 /* 560 */ 445, 59, 60, 109, 447, 454, 29, 445, 445, 376,
820 /* 570 */ 450, 445, 42, 445, 394, 445, 445, 59, 60, 445,
821 /* 580 */ 445, 163, 445, 445, 445, 102, 27, 445, 42, 445,
822 /* 590 */ 445, 106, 445, 64, 63, 62, 61, 445, 375, 445,
823 /* 600 */ 117, 393, 155, 154, 153, 394, 355, 445, 59, 60,
824 /* 610 */ 445, 445, 445, 445, 445, 74, 376, 148, 445, 40,
825 /* 620 */ 106, 445, 496, 113, 120, 161, 119, 375, 445, 117,
826 /* 630 */ 393, 155, 154, 153, 445, 448, 454, 29, 106, 445,
827 /* 640 */ 445, 450, 445, 445, 445, 375, 149, 117, 393, 155,
828 /* 650 */ 154, 153, 163, 445, 106, 445, 445, 27, 445, 445,
829 /* 660 */ 445, 375, 445, 117, 393, 155, 154, 153, 394, 445,
830 /* 670 */ 445, 59, 60, 64, 63, 62, 61, 445, 445, 376,
831 /* 680 */ 445, 445, 41, 445, 445, 106, 354, 64, 63, 62,
832 /* 690 */ 61, 445, 375, 445, 117, 393, 155, 154, 153, 445,
833 /* 700 */ 445, 445, 74, 445, 148, 445, 88, 445, 445, 490,
834 /* 710 */ 113, 120, 161, 119, 445, 120, 161, 119, 17, 74,
835 /* 720 */ 445, 148, 110, 110, 445, 445, 484, 113, 120, 161,
836 /* 730 */ 119, 445, 445, 149, 74, 445, 148, 152, 445, 445,
837 /* 740 */ 445, 483, 113, 120, 161, 119, 445, 445, 106, 445,
838 /* 750 */ 149, 445, 445, 107, 445, 375, 445, 117, 393, 155,
839 /* 760 */ 154, 153, 120, 161, 119, 149, 478, 74, 445, 148,
840 /* 770 */ 445, 88, 445, 445, 480, 113, 120, 161, 119, 445,
841 /* 780 */ 120, 161, 119, 74, 152, 148, 10, 479, 479, 445,
842 /* 790 */ 134, 113, 120, 161, 119, 445, 445, 445, 149, 74,
843 /* 800 */ 445, 148, 152, 445, 445, 445, 517, 113, 120, 161,
844 /* 810 */ 119, 445, 445, 74, 149, 148, 445, 445, 445, 445,
845 /* 820 */ 137, 113, 120, 161, 119, 74, 445, 148, 445, 445,
846 /* 830 */ 149, 445, 525, 113, 120, 161, 119, 445, 74, 445,
847 /* 840 */ 148, 445, 445, 445, 149, 527, 113, 120, 161, 119,
848 /* 850 */ 445, 445, 74, 445, 148, 445, 149, 445, 445, 524,
849 /* 860 */ 113, 120, 161, 119, 74, 445, 148, 445, 445, 149,
850 /* 870 */ 445, 526, 113, 120, 161, 119, 445, 445, 74, 445,
851 /* 880 */ 148, 445, 88, 149, 445, 523, 113, 120, 161, 119,
852 /* 890 */ 445, 120, 161, 119, 74, 149, 148, 85, 111, 111,
853 /* 900 */ 445, 522, 113, 120, 161, 119, 120, 161, 119, 149,
854 /* 910 */ 74, 445, 148, 152, 445, 445, 445, 521, 113, 120,
855 /* 920 */ 161, 119, 445, 445, 74, 149, 148, 445, 152, 445,
856 /* 930 */ 445, 520, 113, 120, 161, 119, 74, 445, 148, 445,
857 /* 940 */ 445, 149, 445, 519, 113, 120, 161, 119, 445, 74,
858 /* 950 */ 445, 148, 445, 445, 445, 149, 150, 113, 120, 161,
859 /* 960 */ 119, 445, 445, 74, 445, 148, 445, 149, 445, 445,
860 /* 970 */ 151, 113, 120, 161, 119, 74, 445, 148, 445, 445,
861 /* 980 */ 149, 445, 136, 113, 120, 161, 119, 445, 445, 74,
862 /* 990 */ 445, 148, 107, 445, 149, 445, 135, 113, 120, 161,
863 /* 1000 */ 119, 120, 161, 119, 445, 463, 149, 445, 88, 445,
864 /* 1010 */ 445, 445, 78, 78, 445, 445, 107, 120, 161, 119,
865 /* 1020 */ 149, 445, 445, 152, 82, 120, 161, 119, 445, 463,
866 /* 1030 */ 445, 466, 86, 34, 445, 88, 445, 569, 445, 152,
867 /* 1040 */ 445, 120, 161, 119, 120, 161, 119, 152, 107, 445,
868 /* 1050 */ 445, 475, 64, 63, 62, 61, 445, 120, 161, 119,
869 /* 1060 */ 98, 451, 445, 152, 89, 396, 152, 90, 445, 120,
870 /* 1070 */ 161, 119, 445, 120, 161, 119, 120, 161, 119, 152,
871 /* 1080 */ 445, 64, 63, 62, 61, 445, 445, 445, 445, 445,
872 /* 1090 */ 87, 152, 445, 99, 395, 152, 100, 445, 152, 120,
873 /* 1100 */ 161, 119, 120, 161, 119, 120, 161, 119, 445, 101,
874 /* 1110 */ 64, 63, 62, 61, 445, 445, 445, 445, 120, 161,
875 /* 1120 */ 119, 152, 91, 391, 152, 445, 445, 152, 103, 445,
876 /* 1130 */ 445, 120, 161, 119, 445, 92, 445, 120, 161, 119,
877 /* 1140 */ 152, 93, 445, 445, 120, 161, 119, 104, 445, 445,
878 /* 1150 */ 120, 161, 119, 152, 445, 445, 120, 161, 119, 152,
879 /* 1160 */ 445, 445, 445, 445, 94, 445, 152, 445, 445, 445,
880 /* 1170 */ 105, 445, 152, 120, 161, 119, 445, 95, 152, 120,
881 /* 1180 */ 161, 119, 96, 445, 445, 445, 120, 161, 119, 445,
882 /* 1190 */ 445, 120, 161, 119, 97, 152, 445, 445, 445, 445,
883 /* 1200 */ 549, 152, 445, 120, 161, 119, 548, 445, 152, 120,
884 /* 1210 */ 161, 119, 445, 152, 445, 120, 161, 119, 445, 445,
885 /* 1220 */ 445, 445, 445, 547, 445, 152, 445, 445, 445, 445,
886 /* 1230 */ 445, 152, 120, 161, 119, 546, 445, 152, 445, 115,
887 /* 1240 */ 445, 445, 116, 445, 120, 161, 119, 445, 120, 161,
888 /* 1250 */ 119, 120, 161, 119, 152, 64, 63, 62, 61, 64,
889 /* 1260 */ 63, 62, 61, 445, 445, 445, 152, 445, 445, 445,
890 /* 1270 */ 152, 445, 445, 152, 445, 445, 50, 445, 445, 445,
891 /* 1280 */ 53, 64, 63, 62, 61, 445, 445, 445, 445, 445,
892 /* 1290 */ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
893 /* 1300 */ 445, 445, 56,
 
894 };
895 static const YYCODETYPE yy_lookahead[] = {
896 /* 0 */ 0, 112, 113, 114, 133, 101, 102, 103, 105, 105,
897 /* 10 */ 10, 112, 113, 114, 110, 111, 112, 113, 114, 105,
898 /* 20 */ 20, 21, 22, 104, 24, 125, 107, 108, 28, 4,
899 /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 134, 39,
900 /* 40 */ 40, 41, 42, 104, 44, 45, 107, 108, 106, 49,
901 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
902 /* 60 */ 60, 61, 62, 63, 0, 112, 113, 114, 129, 130,
903 /* 70 */ 131, 103, 12, 105, 10, 112, 113, 114, 110, 111,
904 /* 80 */ 112, 113, 114, 105, 20, 21, 22, 17, 24, 112,
905 /* 90 */ 113, 114, 28, 10, 2, 25, 25, 33, 34, 35,
906 /* 100 */ 36, 37, 134, 39, 40, 41, 42, 2, 44, 45,
907 /* 110 */ 132, 28, 127, 49, 50, 51, 52, 53, 54, 55,
908 /* 120 */ 56, 57, 58, 59, 60, 61, 62, 63, 1, 2,
909 /* 130 */ 38, 4, 5, 4, 5, 6, 7, 4, 5, 12,
910 /* 140 */ 3, 81, 15, 38, 1, 115, 17, 2, 88, 115,
911 /* 150 */ 90, 24, 128, 26, 27, 12, 1, 14, 31, 32,
912 /* 160 */ 19, 18, 16, 20, 21, 22, 23, 24, 17, 26,
913 /* 170 */ 27, 15, 29, 30, 31, 32, 31, 32, 64, 65,
914 /* 180 */ 66, 67, 68, 69, 70, 71, 72, 73, 6, 7,
915 /* 190 */ 43, 64, 13, 48, 26, 27, 103, 48, 105, 29,
916 /* 200 */ 30, 31, 32, 110, 111, 112, 113, 114, 81, 64,
917 /* 210 */ 83, 84, 85, 86, 40, 88, 40, 90, 91, 92,
918 /* 220 */ 93, 94, 1, 2, 87, 4, 5, 134, 83, 84,
919 /* 230 */ 85, 86, 48, 12, 96, 97, 15, 41, 20, 21,
920 /* 240 */ 22, 20, 21, 22, 41, 1, 2, 98, 4, 5,
921 /* 250 */ 82, 47, 31, 32, 17, 103, 12, 105, 90, 15,
922 /* 260 */ 26, 27, 110, 111, 112, 113, 114, 49, 50, 51,
923 /* 270 */ 52, 53, 54, 89, 25, 31, 32, 1, 17, 95,
924 /* 280 */ 4, 5, 98, 26, 27, 64, 134, 74, 12, 0,
925 /* 290 */ 79, 15, 78, 3, 2, 80, 20, 21, 22, 10,
926 /* 300 */ 24, 79, 81, 3, 83, 84, 85, 86, 64, 88,
927 /* 310 */ 3, 90, 91, 92, 93, 94, 38, 2, 3, 4,
928 /* 320 */ 5, 6, 7, 31, 32, 81, 3, 83, 84, 85,
929 /* 330 */ 86, 16, 88, 3, 90, 91, 92, 93, 94, 3,
930 /* 340 */ 25, 95, 4, 5, 6, 7, 31, 32, 1, 2,
931 /* 350 */ 76, 4, 5, 38, 25, 17, 64, 81, 15, 12,
932 /* 360 */ 15, 15, 15, 25, 88, 17, 90, 91, 92, 93,
933 /* 370 */ 94, 4, 5, 6, 7, 83, 84, 85, 86, 28,
934 /* 380 */ 28, 28, 67, 68, 12, 38, 89, 3, 11, 135,
935 /* 390 */ 75, 135, 77, 78, 79, 2, 3, 4, 5, 6,
936 /* 400 */ 7, 1, 35, 135, 4, 5, 4, 5, 6, 7,
937 /* 410 */ 17, 135, 12, 135, 135, 15, 135, 135, 25, 17,
938 /* 420 */ 20, 21, 22, 135, 31, 32, 135, 25, 81, 135,
939 /* 430 */ 135, 38, 135, 135, 135, 88, 135, 90, 91, 92,
940 /* 440 */ 93, 94, 135, 1, 2, 135, 4, 5, 4, 5,
941 /* 450 */ 6, 7, 8, 135, 12, 26, 27, 15, 135, 135,
942 /* 460 */ 67, 68, 99, 100, 101, 102, 135, 135, 75, 106,
943 /* 470 */ 77, 78, 79, 2, 3, 4, 5, 6, 7, 135,
944 /* 480 */ 117, 81, 135, 135, 121, 122, 135, 135, 88, 135,
945 /* 490 */ 90, 91, 92, 93, 94, 135, 25, 103, 135, 105,
946 /* 500 */ 135, 135, 31, 32, 110, 111, 112, 113, 114, 38,
947 /* 510 */ 135, 1, 135, 135, 4, 5, 135, 135, 135, 90,
948 /* 520 */ 135, 135, 12, 81, 135, 15, 135, 135, 134, 135,
949 /* 530 */ 88, 135, 90, 91, 92, 93, 94, 135, 67, 68,
950 /* 540 */ 1, 2, 135, 4, 5, 135, 75, 135, 77, 78,
951 /* 550 */ 79, 12, 135, 135, 15, 135, 46, 47, 1, 135,
952 /* 560 */ 135, 4, 5, 99, 100, 101, 102, 135, 135, 12,
953 /* 570 */ 106, 135, 15, 135, 1, 135, 135, 4, 5, 135,
954 /* 580 */ 135, 117, 135, 135, 135, 12, 122, 135, 15, 135,
955 /* 590 */ 135, 81, 135, 4, 5, 6, 7, 135, 88, 135,
956 /* 600 */ 90, 91, 92, 93, 94, 1, 17, 135, 4, 5,
957 /* 610 */ 135, 135, 135, 135, 135, 103, 12, 105, 135, 15,
958 /* 620 */ 81, 135, 110, 111, 112, 113, 114, 88, 135, 90,
959 /* 630 */ 91, 92, 93, 94, 135, 100, 101, 102, 81, 135,
960 /* 640 */ 135, 106, 135, 135, 135, 88, 134, 90, 91, 92,
961 /* 650 */ 93, 94, 117, 135, 81, 135, 135, 122, 135, 135,
962 /* 660 */ 135, 88, 135, 90, 91, 92, 93, 94, 1, 135,
963 /* 670 */ 135, 4, 5, 4, 5, 6, 7, 135, 135, 12,
964 /* 680 */ 135, 135, 15, 135, 135, 81, 17, 4, 5, 6,
965 /* 690 */ 7, 135, 88, 135, 90, 91, 92, 93, 94, 135,
966 /* 700 */ 135, 135, 103, 135, 105, 135, 103, 135, 135, 110,
967 /* 710 */ 111, 112, 113, 114, 135, 112, 113, 114, 35, 103,
968 /* 720 */ 135, 105, 119, 120, 135, 135, 110, 111, 112, 113,
969 /* 730 */ 114, 135, 135, 134, 103, 135, 105, 134, 135, 135,
970 /* 740 */ 135, 110, 111, 112, 113, 114, 135, 135, 81, 135,
971 /* 750 */ 134, 135, 135, 103, 135, 88, 135, 90, 91, 92,
972 /* 760 */ 93, 94, 112, 113, 114, 134, 116, 103, 135, 105,
973 /* 770 */ 135, 103, 135, 135, 110, 111, 112, 113, 114, 135,
974 /* 780 */ 112, 113, 114, 103, 134, 105, 118, 119, 120, 135,
975 /* 790 */ 110, 111, 112, 113, 114, 135, 135, 135, 134, 103,
976 /* 800 */ 135, 105, 134, 135, 135, 135, 110, 111, 112, 113,
977 /* 810 */ 114, 135, 135, 103, 134, 105, 135, 135, 135, 135,
978 /* 820 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
979 /* 830 */ 134, 135, 110, 111, 112, 113, 114, 135, 103, 135,
980 /* 840 */ 105, 135, 135, 135, 134, 110, 111, 112, 113, 114,
981 /* 850 */ 135, 135, 103, 135, 105, 135, 134, 135, 135, 110,
982 /* 860 */ 111, 112, 113, 114, 103, 135, 105, 135, 135, 134,
983 /* 870 */ 135, 110, 111, 112, 113, 114, 135, 135, 103, 135,
984 /* 880 */ 105, 135, 103, 134, 135, 110, 111, 112, 113, 114,
985 /* 890 */ 135, 112, 113, 114, 103, 134, 105, 103, 119, 120,
986 /* 900 */ 135, 110, 111, 112, 113, 114, 112, 113, 114, 134,
987 /* 910 */ 103, 135, 105, 134, 135, 135, 135, 110, 111, 112,
988 /* 920 */ 113, 114, 135, 135, 103, 134, 105, 135, 134, 135,
989 /* 930 */ 135, 110, 111, 112, 113, 114, 103, 135, 105, 135,
990 /* 940 */ 135, 134, 135, 110, 111, 112, 113, 114, 135, 103,
991 /* 950 */ 135, 105, 135, 135, 135, 134, 110, 111, 112, 113,
992 /* 960 */ 114, 135, 135, 103, 135, 105, 135, 134, 135, 135,
993 /* 970 */ 110, 111, 112, 113, 114, 103, 135, 105, 135, 135,
994 /* 980 */ 134, 135, 110, 111, 112, 113, 114, 135, 135, 103,
995 /* 990 */ 135, 105, 103, 135, 134, 135, 110, 111, 112, 113,
996 /* 1000 */ 114, 112, 113, 114, 135, 116, 134, 135, 103, 135,
997 /* 1010 */ 135, 135, 123, 124, 135, 135, 103, 112, 113, 114,
998 /* 1020 */ 134, 135, 135, 134, 119, 112, 113, 114, 135, 116,
999 /* 1030 */ 135, 126, 103, 128, 135, 103, 135, 124, 135, 134,
1000 /* 1040 */ 135, 112, 113, 114, 112, 113, 114, 134, 103, 135,
1001 /* 1050 */ 135, 119, 4, 5, 6, 7, 135, 112, 113, 114,
1002 /* 1060 */ 103, 116, 135, 134, 103, 17, 134, 103, 135, 112,
1003 /* 1070 */ 113, 114, 135, 112, 113, 114, 112, 113, 114, 134,
1004 /* 1080 */ 135, 4, 5, 6, 7, 135, 135, 135, 135, 135,
1005 /* 1090 */ 103, 134, 135, 103, 17, 134, 103, 135, 134, 112,
1006 /* 1100 */ 113, 114, 112, 113, 114, 112, 113, 114, 135, 103,
1007 /* 1110 */ 4, 5, 6, 7, 135, 135, 135, 135, 112, 113,
1008 /* 1120 */ 114, 134, 103, 17, 134, 135, 135, 134, 103, 135,
1009 /* 1130 */ 135, 112, 113, 114, 135, 103, 135, 112, 113, 114,
1010 /* 1140 */ 134, 103, 135, 135, 112, 113, 114, 103, 135, 135,
1011 /* 1150 */ 112, 113, 114, 134, 135, 135, 112, 113, 114, 134,
1012 /* 1160 */ 135, 135, 135, 135, 103, 135, 134, 135, 135, 135,
1013 /* 1170 */ 103, 135, 134, 112, 113, 114, 135, 103, 134, 112,
1014 /* 1180 */ 113, 114, 103, 135, 135, 135, 112, 113, 114, 135,
1015 /* 1190 */ 135, 112, 113, 114, 103, 134, 135, 135, 135, 135,
1016 /* 1200 */ 103, 134, 135, 112, 113, 114, 103, 135, 134, 112,
1017 /* 1210 */ 113, 114, 135, 134, 135, 112, 113, 114, 135, 135,
1018 /* 1220 */ 135, 135, 135, 103, 135, 134, 135, 135, 135, 135,
1019 /* 1230 */ 135, 134, 112, 113, 114, 103, 135, 134, 135, 103,
1020 /* 1240 */ 135, 135, 103, 135, 112, 113, 114, 135, 112, 113,
1021 /* 1250 */ 114, 112, 113, 114, 134, 4, 5, 6, 7, 4,
1022 /* 1260 */ 5, 6, 7, 135, 135, 135, 134, 135, 135, 135,
1023 /* 1270 */ 134, 135, 135, 134, 135, 135, 25, 135, 135, 135,
1024 /* 1280 */ 25, 4, 5, 6, 7, 135, 135, 135, 135, 135,
1025 /* 1290 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1026 /* 1300 */ 135, 135, 25, 135, 135, 135, 135, 135, 135, 135,
1027 /* 1310 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1028 /* 1320 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1029 /* 1330 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1030 /* 1340 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1031 /* 1350 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1032 /* 1360 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1033 /* 1370 */ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1034 /* 1380 */ 135, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1035 /* 1390 */ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1036 /* 1400 */ 99, 99,
 
1037 };
1038 #define YY_SHIFT_COUNT (163)
1039 #define YY_SHIFT_MIN (0)
1040 #define YY_SHIFT_MAX (1277)
1041 static const unsigned short int yy_shift_ofst[] = {
1042 /* 0 */ 143, 127, 221, 244, 244, 244, 244, 244, 244, 244,
1043 /* 10 */ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1044 /* 20 */ 244, 244, 244, 244, 244, 244, 244, 276, 510, 557,
1045 /* 30 */ 276, 143, 347, 347, 0, 64, 143, 573, 557, 573,
1046 /* 40 */ 400, 400, 400, 442, 539, 557, 557, 557, 557, 557,
1047 /* 50 */ 557, 604, 557, 557, 667, 557, 557, 557, 557, 557,
1048 /* 60 */ 557, 557, 557, 557, 557, 218, 60, 60, 60, 60,
1049 /* 70 */ 60, 145, 315, 393, 471, 292, 292, 170, 71, 1303,
1050 /* 80 */ 1303, 1303, 1303, 114, 114, 338, 402, 129, 444, 367,
1051 /* 90 */ 683, 589, 1251, 669, 1255, 1048, 1277, 1077, 1106, 25,
1052 /* 100 */ 25, 25, 184, 25, 25, 25, 168, 25, 429, 83,
1053 /* 110 */ 92, 105, 70, 133, 138, 182, 182, 234, 257, 137,
1054 /* 120 */ 149, 289, 141, 155, 151, 146, 156, 147, 174, 176,
1055 /* 130 */ 196, 203, 204, 179, 237, 249, 213, 261, 211, 214,
1056 /* 140 */ 215, 222, 290, 300, 307, 278, 323, 330, 336, 246,
1057 /* 150 */ 274, 329, 246, 343, 345, 346, 348, 351, 352, 353,
1058 /* 160 */ 372, 297, 384, 377,
1059 };
1060 #define YY_REDUCE_COUNT (82)
1061 #define YY_REDUCE_MIN (-129)
1062 #define YY_REDUCE_MAX (1139)
1063 static const short yy_reduce_ofst[] = {
1064 /* 0 */ 363, -96, -32, 93, 152, 394, 512, 599, 616, 631,
1065 /* 10 */ 664, 680, 696, 710, 722, 735, 749, 761, 775, 791,
1066 /* 20 */ 807, 821, 833, 846, 860, 872, 886, 889, 668, 905,
1067 /* 30 */ 913, 464, 603, 779, -61, -61, 535, 650, 932, 945,
1068 /* 40 */ 794, 929, 957, 961, 964, 987, 990, 993, 1006, 1019,
1069 /* 50 */ 1025, 1032, 1038, 1044, 1061, 1067, 1074, 1079, 1091, 1097,
1070 /* 60 */ 1103, 1120, 1132, 1136, 1139, -81, -111, -101, -47, -37,
1071 /* 70 */ -23, -22, -129, -129, -129, -97, -86, -58, -100, -15,
1072 /* 80 */ 30, 34, 24,
1073 };
1074 static const YYACTIONTYPE yy_default[] = {
1075 /* 0 */ 449, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1076 /* 10 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1077 /* 20 */ 443, 443, 443, 443, 443, 443, 443, 443, 473, 576,
@@ -1177,10 +1181,11 @@
1177 0, /* RJUST => nothing */
1178 0, /* ABOVE => nothing */
1179 0, /* BELOW => nothing */
1180 0, /* ITALIC => nothing */
1181 0, /* BOLD => nothing */
 
1182 0, /* ALIGNED => nothing */
1183 0, /* BIG => nothing */
1184 0, /* SMALL => nothing */
1185 0, /* AND => nothing */
1186 0, /* LT => nothing */
@@ -1364,74 +1369,75 @@
1364 /* 66 */ "RJUST",
1365 /* 67 */ "ABOVE",
1366 /* 68 */ "BELOW",
1367 /* 69 */ "ITALIC",
1368 /* 70 */ "BOLD",
1369 /* 71 */ "ALIGNED",
1370 /* 72 */ "BIG",
1371 /* 73 */ "SMALL",
1372 /* 74 */ "AND",
1373 /* 75 */ "LT",
1374 /* 76 */ "GT",
1375 /* 77 */ "ON",
1376 /* 78 */ "WAY",
1377 /* 79 */ "BETWEEN",
1378 /* 80 */ "THE",
1379 /* 81 */ "NTH",
1380 /* 82 */ "VERTEX",
1381 /* 83 */ "TOP",
1382 /* 84 */ "BOTTOM",
1383 /* 85 */ "START",
1384 /* 86 */ "END",
1385 /* 87 */ "IN",
1386 /* 88 */ "THIS",
1387 /* 89 */ "DOT_U",
1388 /* 90 */ "LAST",
1389 /* 91 */ "NUMBER",
1390 /* 92 */ "FUNC1",
1391 /* 93 */ "FUNC2",
1392 /* 94 */ "DIST",
1393 /* 95 */ "DOT_XY",
1394 /* 96 */ "X",
1395 /* 97 */ "Y",
1396 /* 98 */ "DOT_L",
1397 /* 99 */ "statement_list",
1398 /* 100 */ "statement",
1399 /* 101 */ "unnamed_statement",
1400 /* 102 */ "basetype",
1401 /* 103 */ "expr",
1402 /* 104 */ "numproperty",
1403 /* 105 */ "edge",
1404 /* 106 */ "direction",
1405 /* 107 */ "dashproperty",
1406 /* 108 */ "colorproperty",
1407 /* 109 */ "locproperty",
1408 /* 110 */ "position",
1409 /* 111 */ "place",
1410 /* 112 */ "object",
1411 /* 113 */ "objectname",
1412 /* 114 */ "nth",
1413 /* 115 */ "textposition",
1414 /* 116 */ "rvalue",
1415 /* 117 */ "lvalue",
1416 /* 118 */ "even",
1417 /* 119 */ "relexpr",
1418 /* 120 */ "optrelexpr",
1419 /* 121 */ "document",
1420 /* 122 */ "print",
1421 /* 123 */ "prlist",
1422 /* 124 */ "pritem",
1423 /* 125 */ "prsep",
1424 /* 126 */ "attribute_list",
1425 /* 127 */ "savelist",
1426 /* 128 */ "alist",
1427 /* 129 */ "attribute",
1428 /* 130 */ "go",
1429 /* 131 */ "boolproperty",
1430 /* 132 */ "withclause",
1431 /* 133 */ "between",
1432 /* 134 */ "place2",
 
1433 };
1434 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1435
1436 #ifndef NDEBUG
1437 /* For tracing reduce actions, the names of all rules are required.
@@ -1498,11 +1504,11 @@
1498 /* 58 */ "boolproperty ::= INVIS",
1499 /* 59 */ "boolproperty ::= THICK",
1500 /* 60 */ "boolproperty ::= THIN",
1501 /* 61 */ "boolproperty ::= SOLID",
1502 /* 62 */ "textposition ::=",
1503 /* 63 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
1504 /* 64 */ "position ::= expr COMMA expr",
1505 /* 65 */ "position ::= place PLUS expr COMMA expr",
1506 /* 66 */ "position ::= place MINUS expr COMMA expr",
1507 /* 67 */ "position ::= place PLUS LP expr COMMA expr RP",
1508 /* 68 */ "position ::= place MINUS LP expr COMMA expr RP",
@@ -1716,24 +1722,24 @@
1716 ** Note: during a reduce, the only symbols destroyed are those
1717 ** which appear on the RHS of the rule, but which are *not* used
1718 ** inside the C code.
1719 */
1720 /********* Begin destructor definitions ***************************************/
1721 case 99: /* statement_list */
1722 {
1723 #line 509 "pikchr.y"
1724 pik_elist_free(p,(yypminor->yy227));
1725 #line 1750 "pikchr.c"
1726 }
1727 break;
1728 case 100: /* statement */
1729 case 101: /* unnamed_statement */
1730 case 102: /* basetype */
1731 {
1732 #line 511 "pikchr.y"
1733 pik_elem_free(p,(yypminor->yy36));
1734 #line 1759 "pikchr.c"
1735 }
1736 break;
1737 /********* End destructor definitions *****************************************/
1738 default: break; /* If no destructor action specified: do nothing */
1739 }
@@ -1947,14 +1953,14 @@
1947 #endif
1948 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1949 /* Here code is inserted which will execute if the parser
1950 ** stack every overflows */
1951 /******** Begin %stack_overflow code ******************************************/
1952 #line 543 "pikchr.y"
1953
1954 pik_error(p, 0, "parser stack overflow");
1955 #line 1980 "pikchr.c"
1956 /******** End %stack_overflow code ********************************************/
1957 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1958 pik_parserCTX_STORE
1959 }
1960
@@ -2022,166 +2028,166 @@
2022 }
2023
2024 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
2025 ** of that rule */
2026 static const YYCODETYPE yyRuleInfoLhs[] = {
2027 121, /* (0) document ::= statement_list */
2028 99, /* (1) statement_list ::= statement */
2029 99, /* (2) statement_list ::= statement_list EOL statement */
2030 100, /* (3) statement ::= */
2031 100, /* (4) statement ::= direction */
2032 100, /* (5) statement ::= lvalue ASSIGN rvalue */
2033 100, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2034 100, /* (7) statement ::= PLACENAME COLON position */
2035 100, /* (8) statement ::= unnamed_statement */
2036 100, /* (9) statement ::= print prlist */
2037 100, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2038 100, /* (11) statement ::= ASSERT LP position EQ position RP */
2039 100, /* (12) statement ::= DEFINE ID CODEBLOCK */
2040 116, /* (13) rvalue ::= PLACENAME */
2041 124, /* (14) pritem ::= FILL */
2042 124, /* (15) pritem ::= COLOR */
2043 124, /* (16) pritem ::= THICKNESS */
2044 124, /* (17) pritem ::= rvalue */
2045 124, /* (18) pritem ::= STRING */
2046 125, /* (19) prsep ::= COMMA */
2047 101, /* (20) unnamed_statement ::= basetype attribute_list */
2048 102, /* (21) basetype ::= CLASSNAME */
2049 102, /* (22) basetype ::= STRING textposition */
2050 102, /* (23) basetype ::= LB savelist statement_list RB */
2051 127, /* (24) savelist ::= */
2052 119, /* (25) relexpr ::= expr */
2053 119, /* (26) relexpr ::= expr PERCENT */
2054 120, /* (27) optrelexpr ::= */
2055 126, /* (28) attribute_list ::= relexpr alist */
2056 129, /* (29) attribute ::= numproperty relexpr */
2057 129, /* (30) attribute ::= dashproperty expr */
2058 129, /* (31) attribute ::= dashproperty */
2059 129, /* (32) attribute ::= colorproperty rvalue */
2060 129, /* (33) attribute ::= go direction optrelexpr */
2061 129, /* (34) attribute ::= go direction even position */
2062 129, /* (35) attribute ::= CLOSE */
2063 129, /* (36) attribute ::= CHOP */
2064 129, /* (37) attribute ::= FROM position */
2065 129, /* (38) attribute ::= TO position */
2066 129, /* (39) attribute ::= THEN */
2067 129, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2068 129, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2069 129, /* (42) attribute ::= GO optrelexpr HEADING expr */
2070 129, /* (43) attribute ::= GO optrelexpr EDGEPT */
2071 129, /* (44) attribute ::= AT position */
2072 129, /* (45) attribute ::= SAME */
2073 129, /* (46) attribute ::= SAME AS object */
2074 129, /* (47) attribute ::= STRING textposition */
2075 129, /* (48) attribute ::= FIT */
2076 129, /* (49) attribute ::= BEHIND object */
2077 132, /* (50) withclause ::= DOT_E edge AT position */
2078 132, /* (51) withclause ::= edge AT position */
2079 104, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2080 131, /* (53) boolproperty ::= CW */
2081 131, /* (54) boolproperty ::= CCW */
2082 131, /* (55) boolproperty ::= LARROW */
2083 131, /* (56) boolproperty ::= RARROW */
2084 131, /* (57) boolproperty ::= LRARROW */
2085 131, /* (58) boolproperty ::= INVIS */
2086 131, /* (59) boolproperty ::= THICK */
2087 131, /* (60) boolproperty ::= THIN */
2088 131, /* (61) boolproperty ::= SOLID */
2089 115, /* (62) textposition ::= */
2090 115, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2091 110, /* (64) position ::= expr COMMA expr */
2092 110, /* (65) position ::= place PLUS expr COMMA expr */
2093 110, /* (66) position ::= place MINUS expr COMMA expr */
2094 110, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2095 110, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2096 110, /* (69) position ::= LP position COMMA position RP */
2097 110, /* (70) position ::= LP position RP */
2098 110, /* (71) position ::= expr between position AND position */
2099 110, /* (72) position ::= expr LT position COMMA position GT */
2100 110, /* (73) position ::= expr ABOVE position */
2101 110, /* (74) position ::= expr BELOW position */
2102 110, /* (75) position ::= expr LEFT OF position */
2103 110, /* (76) position ::= expr RIGHT OF position */
2104 110, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2105 110, /* (78) position ::= expr HEADING EDGEPT OF position */
2106 110, /* (79) position ::= expr EDGEPT OF position */
2107 110, /* (80) position ::= expr ON HEADING expr FROM position */
2108 110, /* (81) position ::= expr HEADING expr FROM position */
2109 111, /* (82) place ::= edge OF object */
2110 134, /* (83) place2 ::= object */
2111 134, /* (84) place2 ::= object DOT_E edge */
2112 134, /* (85) place2 ::= NTH VERTEX OF object */
2113 112, /* (86) object ::= nth */
2114 112, /* (87) object ::= nth OF|IN object */
2115 113, /* (88) objectname ::= THIS */
2116 113, /* (89) objectname ::= PLACENAME */
2117 113, /* (90) objectname ::= objectname DOT_U PLACENAME */
2118 114, /* (91) nth ::= NTH CLASSNAME */
2119 114, /* (92) nth ::= NTH LAST CLASSNAME */
2120 114, /* (93) nth ::= LAST CLASSNAME */
2121 114, /* (94) nth ::= LAST */
2122 114, /* (95) nth ::= NTH LB RB */
2123 114, /* (96) nth ::= NTH LAST LB RB */
2124 114, /* (97) nth ::= LAST LB RB */
2125 103, /* (98) expr ::= expr PLUS expr */
2126 103, /* (99) expr ::= expr MINUS expr */
2127 103, /* (100) expr ::= expr STAR expr */
2128 103, /* (101) expr ::= expr SLASH expr */
2129 103, /* (102) expr ::= MINUS expr */
2130 103, /* (103) expr ::= PLUS expr */
2131 103, /* (104) expr ::= LP expr RP */
2132 103, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2133 103, /* (106) expr ::= NUMBER */
2134 103, /* (107) expr ::= ID */
2135 103, /* (108) expr ::= FUNC1 LP expr RP */
2136 103, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2137 103, /* (110) expr ::= DIST LP position COMMA position RP */
2138 103, /* (111) expr ::= place2 DOT_XY X */
2139 103, /* (112) expr ::= place2 DOT_XY Y */
2140 103, /* (113) expr ::= object DOT_L numproperty */
2141 103, /* (114) expr ::= object DOT_L dashproperty */
2142 103, /* (115) expr ::= object DOT_L colorproperty */
2143 117, /* (116) lvalue ::= ID */
2144 117, /* (117) lvalue ::= FILL */
2145 117, /* (118) lvalue ::= COLOR */
2146 117, /* (119) lvalue ::= THICKNESS */
2147 116, /* (120) rvalue ::= expr */
2148 122, /* (121) print ::= PRINT */
2149 123, /* (122) prlist ::= pritem */
2150 123, /* (123) prlist ::= prlist prsep pritem */
2151 106, /* (124) direction ::= UP */
2152 106, /* (125) direction ::= DOWN */
2153 106, /* (126) direction ::= LEFT */
2154 106, /* (127) direction ::= RIGHT */
2155 120, /* (128) optrelexpr ::= relexpr */
2156 126, /* (129) attribute_list ::= alist */
2157 128, /* (130) alist ::= */
2158 128, /* (131) alist ::= alist attribute */
2159 129, /* (132) attribute ::= boolproperty */
2160 129, /* (133) attribute ::= WITH withclause */
2161 130, /* (134) go ::= GO */
2162 130, /* (135) go ::= */
2163 118, /* (136) even ::= UNTIL EVEN WITH */
2164 118, /* (137) even ::= EVEN WITH */
2165 107, /* (138) dashproperty ::= DOTTED */
2166 107, /* (139) dashproperty ::= DASHED */
2167 108, /* (140) colorproperty ::= FILL */
2168 108, /* (141) colorproperty ::= COLOR */
2169 110, /* (142) position ::= place */
2170 133, /* (143) between ::= WAY BETWEEN */
2171 133, /* (144) between ::= BETWEEN */
2172 133, /* (145) between ::= OF THE WAY BETWEEN */
2173 111, /* (146) place ::= place2 */
2174 105, /* (147) edge ::= CENTER */
2175 105, /* (148) edge ::= EDGEPT */
2176 105, /* (149) edge ::= TOP */
2177 105, /* (150) edge ::= BOTTOM */
2178 105, /* (151) edge ::= START */
2179 105, /* (152) edge ::= END */
2180 105, /* (153) edge ::= RIGHT */
2181 105, /* (154) edge ::= LEFT */
2182 112, /* (155) object ::= objectname */
2183 };
2184
2185 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2186 ** of symbols on the right-hand side of that rule. */
2187 static const signed char yyRuleInfoNRhs[] = {
@@ -2246,11 +2252,11 @@
2246 -1, /* (58) boolproperty ::= INVIS */
2247 -1, /* (59) boolproperty ::= THICK */
2248 -1, /* (60) boolproperty ::= THIN */
2249 -1, /* (61) boolproperty ::= SOLID */
2250 0, /* (62) textposition ::= */
2251 -2, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2252 -3, /* (64) position ::= expr COMMA expr */
2253 -5, /* (65) position ::= place PLUS expr COMMA expr */
2254 -5, /* (66) position ::= place MINUS expr COMMA expr */
2255 -7, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2256 -7, /* (68) position ::= place MINUS LP expr COMMA expr RP */
@@ -2381,620 +2387,620 @@
2381 ** break;
2382 */
2383 /********** Begin reduce actions **********************************************/
2384 YYMINORTYPE yylhsminor;
2385 case 0: /* document ::= statement_list */
2386 #line 547 "pikchr.y"
2387 {pik_render(p,yymsp[0].minor.yy227);}
2388 #line 2413 "pikchr.c"
2389 break;
2390 case 1: /* statement_list ::= statement */
2391 #line 550 "pikchr.y"
2392 { yylhsminor.yy227 = pik_elist_append(p,0,yymsp[0].minor.yy36); }
2393 #line 2418 "pikchr.c"
2394 yymsp[0].minor.yy227 = yylhsminor.yy227;
2395 break;
2396 case 2: /* statement_list ::= statement_list EOL statement */
2397 #line 552 "pikchr.y"
2398 { yylhsminor.yy227 = pik_elist_append(p,yymsp[-2].minor.yy227,yymsp[0].minor.yy36); }
2399 #line 2424 "pikchr.c"
2400 yymsp[-2].minor.yy227 = yylhsminor.yy227;
2401 break;
2402 case 3: /* statement ::= */
2403 #line 555 "pikchr.y"
2404 { yymsp[1].minor.yy36 = 0; }
2405 #line 2430 "pikchr.c"
2406 break;
2407 case 4: /* statement ::= direction */
2408 #line 556 "pikchr.y"
2409 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy36=0; }
2410 #line 2435 "pikchr.c"
2411 yymsp[0].minor.yy36 = yylhsminor.yy36;
2412 break;
2413 case 5: /* statement ::= lvalue ASSIGN rvalue */
2414 #line 557 "pikchr.y"
2415 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy153,&yymsp[-1].minor.yy0); yylhsminor.yy36=0;}
2416 #line 2441 "pikchr.c"
2417 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2418 break;
2419 case 6: /* statement ::= PLACENAME COLON unnamed_statement */
2420 #line 559 "pikchr.y"
2421 { yylhsminor.yy36 = yymsp[0].minor.yy36; pik_elem_setname(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0); }
2422 #line 2447 "pikchr.c"
2423 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2424 break;
2425 case 7: /* statement ::= PLACENAME COLON position */
2426 #line 561 "pikchr.y"
2427 { yylhsminor.yy36 = pik_elem_new(p,0,0,0);
2428 if(yylhsminor.yy36){ yylhsminor.yy36->ptAt = yymsp[0].minor.yy79; pik_elem_setname(p,yylhsminor.yy36,&yymsp[-2].minor.yy0); }}
2429 #line 2454 "pikchr.c"
2430 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2431 break;
2432 case 8: /* statement ::= unnamed_statement */
2433 #line 563 "pikchr.y"
2434 {yylhsminor.yy36 = yymsp[0].minor.yy36;}
2435 #line 2460 "pikchr.c"
2436 yymsp[0].minor.yy36 = yylhsminor.yy36;
2437 break;
2438 case 9: /* statement ::= print prlist */
2439 #line 564 "pikchr.y"
2440 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy36=0;}
2441 #line 2466 "pikchr.c"
2442 break;
2443 case 10: /* statement ::= ASSERT LP expr EQ expr RP */
2444 #line 569 "pikchr.y"
2445 {yymsp[-5].minor.yy36=pik_assert(p,yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy153);}
2446 #line 2471 "pikchr.c"
2447 break;
2448 case 11: /* statement ::= ASSERT LP position EQ position RP */
2449 #line 571 "pikchr.y"
2450 {yymsp[-5].minor.yy36=pik_position_assert(p,&yymsp[-3].minor.yy79,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy79);}
2451 #line 2476 "pikchr.c"
2452 break;
2453 case 12: /* statement ::= DEFINE ID CODEBLOCK */
2454 #line 572 "pikchr.y"
2455 {yymsp[-2].minor.yy36=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2456 #line 2481 "pikchr.c"
 
 
 
 
 
2457 break;
2458 case 13: /* rvalue ::= PLACENAME */
2459 #line 583 "pikchr.y"
2460 {yylhsminor.yy153 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2461 #line 2486 "pikchr.c"
2462 yymsp[0].minor.yy153 = yylhsminor.yy153;
2463 break;
2464 case 14: /* pritem ::= FILL */
2465 case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15);
2466 case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16);
2467 #line 588 "pikchr.y"
2468 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2469 #line 2494 "pikchr.c"
2470 break;
2471 case 17: /* pritem ::= rvalue */
2472 #line 591 "pikchr.y"
2473 {pik_append_num(p,"",yymsp[0].minor.yy153);}
2474 #line 2499 "pikchr.c"
2475 break;
2476 case 18: /* pritem ::= STRING */
2477 #line 592 "pikchr.y"
2478 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2479 #line 2504 "pikchr.c"
2480 break;
2481 case 19: /* prsep ::= COMMA */
2482 #line 593 "pikchr.y"
2483 {pik_append(p, " ", 1);}
2484 #line 2509 "pikchr.c"
2485 break;
2486 case 20: /* unnamed_statement ::= basetype attribute_list */
2487 #line 596 "pikchr.y"
2488 {yylhsminor.yy36 = yymsp[-1].minor.yy36; pik_after_adding_attributes(p,yylhsminor.yy36);}
2489 #line 2514 "pikchr.c"
2490 yymsp[-1].minor.yy36 = yylhsminor.yy36;
2491 break;
2492 case 21: /* basetype ::= CLASSNAME */
2493 #line 598 "pikchr.y"
2494 {yylhsminor.yy36 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2495 #line 2520 "pikchr.c"
2496 yymsp[0].minor.yy36 = yylhsminor.yy36;
2497 break;
2498 case 22: /* basetype ::= STRING textposition */
2499 #line 600 "pikchr.y"
2500 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy164; yylhsminor.yy36 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2501 #line 2526 "pikchr.c"
2502 yymsp[-1].minor.yy36 = yylhsminor.yy36;
2503 break;
2504 case 23: /* basetype ::= LB savelist statement_list RB */
2505 #line 602 "pikchr.y"
2506 { p->list = yymsp[-2].minor.yy227; yymsp[-3].minor.yy36 = pik_elem_new(p,0,0,yymsp[-1].minor.yy227); if(yymsp[-3].minor.yy36) yymsp[-3].minor.yy36->errTok = yymsp[0].minor.yy0; }
2507 #line 2532 "pikchr.c"
2508 break;
2509 case 24: /* savelist ::= */
2510 #line 607 "pikchr.y"
2511 {yymsp[1].minor.yy227 = p->list; p->list = 0;}
2512 #line 2537 "pikchr.c"
2513 break;
2514 case 25: /* relexpr ::= expr */
2515 #line 614 "pikchr.y"
2516 {yylhsminor.yy10.rAbs = yymsp[0].minor.yy153; yylhsminor.yy10.rRel = 0;}
2517 #line 2542 "pikchr.c"
2518 yymsp[0].minor.yy10 = yylhsminor.yy10;
2519 break;
2520 case 26: /* relexpr ::= expr PERCENT */
2521 #line 615 "pikchr.y"
2522 {yylhsminor.yy10.rAbs = 0; yylhsminor.yy10.rRel = yymsp[-1].minor.yy153/100;}
2523 #line 2548 "pikchr.c"
2524 yymsp[-1].minor.yy10 = yylhsminor.yy10;
2525 break;
2526 case 27: /* optrelexpr ::= */
2527 #line 617 "pikchr.y"
2528 {yymsp[1].minor.yy10.rAbs = 0; yymsp[1].minor.yy10.rRel = 1.0;}
2529 #line 2554 "pikchr.c"
2530 break;
2531 case 28: /* attribute_list ::= relexpr alist */
2532 #line 619 "pikchr.y"
2533 {pik_add_direction(p,0,&yymsp[-1].minor.yy10);}
2534 #line 2559 "pikchr.c"
2535 break;
2536 case 29: /* attribute ::= numproperty relexpr */
2537 #line 623 "pikchr.y"
2538 { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10); }
2539 #line 2564 "pikchr.c"
2540 break;
2541 case 30: /* attribute ::= dashproperty expr */
2542 #line 624 "pikchr.y"
2543 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy153); }
2544 #line 2569 "pikchr.c"
2545 break;
2546 case 31: /* attribute ::= dashproperty */
2547 #line 625 "pikchr.y"
2548 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2549 #line 2574 "pikchr.c"
2550 break;
2551 case 32: /* attribute ::= colorproperty rvalue */
2552 #line 626 "pikchr.y"
2553 { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153); }
2554 #line 2579 "pikchr.c"
2555 break;
2556 case 33: /* attribute ::= go direction optrelexpr */
2557 #line 627 "pikchr.y"
2558 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy10);}
2559 #line 2584 "pikchr.c"
2560 break;
2561 case 34: /* attribute ::= go direction even position */
2562 #line 628 "pikchr.y"
2563 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79);}
2564 #line 2589 "pikchr.c"
2565 break;
2566 case 35: /* attribute ::= CLOSE */
2567 #line 629 "pikchr.y"
2568 { pik_close_path(p,&yymsp[0].minor.yy0); }
2569 #line 2594 "pikchr.c"
2570 break;
2571 case 36: /* attribute ::= CHOP */
2572 #line 630 "pikchr.y"
2573 { p->cur->bChop = 1; }
2574 #line 2599 "pikchr.c"
2575 break;
2576 case 37: /* attribute ::= FROM position */
2577 #line 631 "pikchr.y"
2578 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2579 #line 2604 "pikchr.c"
2580 break;
2581 case 38: /* attribute ::= TO position */
2582 #line 632 "pikchr.y"
2583 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy79); }
2584 #line 2609 "pikchr.c"
2585 break;
2586 case 39: /* attribute ::= THEN */
2587 #line 633 "pikchr.y"
2588 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2589 #line 2614 "pikchr.c"
2590 break;
2591 case 40: /* attribute ::= THEN optrelexpr HEADING expr */
2592 case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42);
2593 #line 635 "pikchr.y"
2594 {pik_move_hdg(p,&yymsp[-2].minor.yy10,&yymsp[-1].minor.yy0,yymsp[0].minor.yy153,0,&yymsp[-3].minor.yy0);}
2595 #line 2620 "pikchr.c"
2596 break;
2597 case 41: /* attribute ::= THEN optrelexpr EDGEPT */
2598 case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43);
2599 #line 636 "pikchr.y"
2600 {pik_move_hdg(p,&yymsp[-1].minor.yy10,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2601 #line 2626 "pikchr.c"
2602 break;
2603 case 44: /* attribute ::= AT position */
2604 #line 641 "pikchr.y"
2605 { pik_set_at(p,0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2606 #line 2631 "pikchr.c"
2607 break;
2608 case 45: /* attribute ::= SAME */
2609 #line 643 "pikchr.y"
2610 {pik_same(p,0,&yymsp[0].minor.yy0);}
2611 #line 2636 "pikchr.c"
2612 break;
2613 case 46: /* attribute ::= SAME AS object */
2614 #line 644 "pikchr.y"
2615 {pik_same(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2616 #line 2641 "pikchr.c"
2617 break;
2618 case 47: /* attribute ::= STRING textposition */
2619 #line 645 "pikchr.y"
2620 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy164);}
2621 #line 2646 "pikchr.c"
2622 break;
2623 case 48: /* attribute ::= FIT */
2624 #line 646 "pikchr.y"
2625 {pik_size_to_fit(p,&yymsp[0].minor.yy0,3); }
2626 #line 2651 "pikchr.c"
2627 break;
2628 case 49: /* attribute ::= BEHIND object */
2629 #line 647 "pikchr.y"
2630 {pik_behind(p,yymsp[0].minor.yy36);}
2631 #line 2656 "pikchr.c"
2632 break;
2633 case 50: /* withclause ::= DOT_E edge AT position */
2634 case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51);
2635 #line 655 "pikchr.y"
2636 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy79,&yymsp[-1].minor.yy0); }
2637 #line 2662 "pikchr.c"
2638 break;
2639 case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2640 #line 659 "pikchr.y"
2641 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2642 #line 2667 "pikchr.c"
2643 yymsp[0].minor.yy0 = yylhsminor.yy0;
2644 break;
2645 case 53: /* boolproperty ::= CW */
2646 #line 670 "pikchr.y"
2647 {p->cur->cw = 1;}
2648 #line 2673 "pikchr.c"
2649 break;
2650 case 54: /* boolproperty ::= CCW */
2651 #line 671 "pikchr.y"
2652 {p->cur->cw = 0;}
2653 #line 2678 "pikchr.c"
2654 break;
2655 case 55: /* boolproperty ::= LARROW */
2656 #line 672 "pikchr.y"
2657 {p->cur->larrow=1; p->cur->rarrow=0; }
2658 #line 2683 "pikchr.c"
2659 break;
2660 case 56: /* boolproperty ::= RARROW */
2661 #line 673 "pikchr.y"
2662 {p->cur->larrow=0; p->cur->rarrow=1; }
2663 #line 2688 "pikchr.c"
2664 break;
2665 case 57: /* boolproperty ::= LRARROW */
2666 #line 674 "pikchr.y"
2667 {p->cur->larrow=1; p->cur->rarrow=1; }
2668 #line 2693 "pikchr.c"
2669 break;
2670 case 58: /* boolproperty ::= INVIS */
2671 #line 675 "pikchr.y"
2672 {p->cur->sw = 0.0;}
2673 #line 2698 "pikchr.c"
2674 break;
2675 case 59: /* boolproperty ::= THICK */
2676 #line 676 "pikchr.y"
2677 {p->cur->sw *= 1.5;}
2678 #line 2703 "pikchr.c"
2679 break;
2680 case 60: /* boolproperty ::= THIN */
2681 #line 677 "pikchr.y"
2682 {p->cur->sw *= 0.67;}
2683 #line 2708 "pikchr.c"
2684 break;
2685 case 61: /* boolproperty ::= SOLID */
2686 #line 678 "pikchr.y"
2687 {p->cur->sw = pik_value(p,"thickness",9,0);
2688 p->cur->dotted = p->cur->dashed = 0.0;}
2689 #line 2714 "pikchr.c"
2690 break;
2691 case 62: /* textposition ::= */
2692 #line 681 "pikchr.y"
2693 {yymsp[1].minor.yy164 = 0;}
2694 #line 2719 "pikchr.c"
2695 break;
2696 case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
2697 #line 684 "pikchr.y"
2698 {yylhsminor.yy164 = (short int)pik_text_position(yymsp[-1].minor.yy164,&yymsp[0].minor.yy0);}
2699 #line 2724 "pikchr.c"
2700 yymsp[-1].minor.yy164 = yylhsminor.yy164;
2701 break;
2702 case 64: /* position ::= expr COMMA expr */
2703 #line 687 "pikchr.y"
2704 {yylhsminor.yy79.x=yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[0].minor.yy153;}
2705 #line 2730 "pikchr.c"
2706 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2707 break;
2708 case 65: /* position ::= place PLUS expr COMMA expr */
2709 #line 689 "pikchr.y"
2710 {yylhsminor.yy79.x=yymsp[-4].minor.yy79.x+yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y+yymsp[0].minor.yy153;}
2711 #line 2736 "pikchr.c"
2712 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2713 break;
2714 case 66: /* position ::= place MINUS expr COMMA expr */
2715 #line 690 "pikchr.y"
2716 {yylhsminor.yy79.x=yymsp[-4].minor.yy79.x-yymsp[-2].minor.yy153; yylhsminor.yy79.y=yymsp[-4].minor.yy79.y-yymsp[0].minor.yy153;}
2717 #line 2742 "pikchr.c"
2718 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2719 break;
2720 case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2721 #line 692 "pikchr.y"
2722 {yylhsminor.yy79.x=yymsp[-6].minor.yy79.x+yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y+yymsp[-1].minor.yy153;}
2723 #line 2748 "pikchr.c"
2724 yymsp[-6].minor.yy79 = yylhsminor.yy79;
2725 break;
2726 case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2727 #line 694 "pikchr.y"
2728 {yylhsminor.yy79.x=yymsp[-6].minor.yy79.x-yymsp[-3].minor.yy153; yylhsminor.yy79.y=yymsp[-6].minor.yy79.y-yymsp[-1].minor.yy153;}
2729 #line 2754 "pikchr.c"
2730 yymsp[-6].minor.yy79 = yylhsminor.yy79;
2731 break;
2732 case 69: /* position ::= LP position COMMA position RP */
2733 #line 695 "pikchr.y"
2734 {yymsp[-4].minor.yy79.x=yymsp[-3].minor.yy79.x; yymsp[-4].minor.yy79.y=yymsp[-1].minor.yy79.y;}
2735 #line 2760 "pikchr.c"
2736 break;
2737 case 70: /* position ::= LP position RP */
2738 #line 696 "pikchr.y"
2739 {yymsp[-2].minor.yy79=yymsp[-1].minor.yy79;}
2740 #line 2765 "pikchr.c"
2741 break;
2742 case 71: /* position ::= expr between position AND position */
2743 #line 698 "pikchr.y"
2744 {yylhsminor.yy79 = pik_position_between(yymsp[-4].minor.yy153,yymsp[-2].minor.yy79,yymsp[0].minor.yy79);}
2745 #line 2770 "pikchr.c"
2746 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2747 break;
2748 case 72: /* position ::= expr LT position COMMA position GT */
2749 #line 700 "pikchr.y"
2750 {yylhsminor.yy79 = pik_position_between(yymsp[-5].minor.yy153,yymsp[-3].minor.yy79,yymsp[-1].minor.yy79);}
2751 #line 2776 "pikchr.c"
2752 yymsp[-5].minor.yy79 = yylhsminor.yy79;
2753 break;
2754 case 73: /* position ::= expr ABOVE position */
2755 #line 701 "pikchr.y"
2756 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y += yymsp[-2].minor.yy153;}
2757 #line 2782 "pikchr.c"
2758 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2759 break;
2760 case 74: /* position ::= expr BELOW position */
2761 #line 702 "pikchr.y"
2762 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.y -= yymsp[-2].minor.yy153;}
2763 #line 2788 "pikchr.c"
2764 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2765 break;
2766 case 75: /* position ::= expr LEFT OF position */
2767 #line 703 "pikchr.y"
2768 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x -= yymsp[-3].minor.yy153;}
2769 #line 2794 "pikchr.c"
2770 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2771 break;
2772 case 76: /* position ::= expr RIGHT OF position */
2773 #line 704 "pikchr.y"
2774 {yylhsminor.yy79=yymsp[0].minor.yy79; yylhsminor.yy79.x += yymsp[-3].minor.yy153;}
2775 #line 2800 "pikchr.c"
2776 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2777 break;
2778 case 77: /* position ::= expr ON HEADING EDGEPT OF position */
2779 #line 706 "pikchr.y"
2780 {yylhsminor.yy79 = pik_position_at_hdg(yymsp[-5].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2781 #line 2806 "pikchr.c"
2782 yymsp[-5].minor.yy79 = yylhsminor.yy79;
2783 break;
2784 case 78: /* position ::= expr HEADING EDGEPT OF position */
2785 #line 708 "pikchr.y"
2786 {yylhsminor.yy79 = pik_position_at_hdg(yymsp[-4].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2787 #line 2812 "pikchr.c"
2788 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2789 break;
2790 case 79: /* position ::= expr EDGEPT OF position */
2791 #line 710 "pikchr.y"
2792 {yylhsminor.yy79 = pik_position_at_hdg(yymsp[-3].minor.yy153,&yymsp[-2].minor.yy0,yymsp[0].minor.yy79);}
2793 #line 2818 "pikchr.c"
2794 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2795 break;
2796 case 80: /* position ::= expr ON HEADING expr FROM position */
2797 #line 712 "pikchr.y"
2798 {yylhsminor.yy79 = pik_position_at_angle(yymsp[-5].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2799 #line 2824 "pikchr.c"
2800 yymsp[-5].minor.yy79 = yylhsminor.yy79;
2801 break;
2802 case 81: /* position ::= expr HEADING expr FROM position */
2803 #line 714 "pikchr.y"
2804 {yylhsminor.yy79 = pik_position_at_angle(yymsp[-4].minor.yy153,yymsp[-2].minor.yy153,yymsp[0].minor.yy79);}
2805 #line 2830 "pikchr.c"
2806 yymsp[-4].minor.yy79 = yylhsminor.yy79;
2807 break;
2808 case 82: /* place ::= edge OF object */
2809 #line 726 "pikchr.y"
2810 {yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2811 #line 2836 "pikchr.c"
2812 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2813 break;
2814 case 83: /* place2 ::= object */
2815 #line 727 "pikchr.y"
2816 {yylhsminor.yy79 = pik_place_of_elem(p,yymsp[0].minor.yy36,0);}
2817 #line 2842 "pikchr.c"
2818 yymsp[0].minor.yy79 = yylhsminor.yy79;
2819 break;
2820 case 84: /* place2 ::= object DOT_E edge */
2821 #line 728 "pikchr.y"
2822 {yylhsminor.yy79 = pik_place_of_elem(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2823 #line 2848 "pikchr.c"
2824 yymsp[-2].minor.yy79 = yylhsminor.yy79;
2825 break;
2826 case 85: /* place2 ::= NTH VERTEX OF object */
2827 #line 729 "pikchr.y"
2828 {yylhsminor.yy79 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy36);}
2829 #line 2854 "pikchr.c"
2830 yymsp[-3].minor.yy79 = yylhsminor.yy79;
2831 break;
2832 case 86: /* object ::= nth */
2833 #line 741 "pikchr.y"
2834 {yylhsminor.yy36 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2835 #line 2860 "pikchr.c"
2836 yymsp[0].minor.yy36 = yylhsminor.yy36;
2837 break;
2838 case 87: /* object ::= nth OF|IN object */
2839 #line 742 "pikchr.y"
2840 {yylhsminor.yy36 = pik_find_nth(p,yymsp[0].minor.yy36,&yymsp[-2].minor.yy0);}
2841 #line 2866 "pikchr.c"
2842 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2843 break;
2844 case 88: /* objectname ::= THIS */
2845 #line 744 "pikchr.y"
2846 {yymsp[0].minor.yy36 = p->cur;}
2847 #line 2872 "pikchr.c"
2848 break;
2849 case 89: /* objectname ::= PLACENAME */
2850 #line 745 "pikchr.y"
2851 {yylhsminor.yy36 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2852 #line 2877 "pikchr.c"
2853 yymsp[0].minor.yy36 = yylhsminor.yy36;
2854 break;
2855 case 90: /* objectname ::= objectname DOT_U PLACENAME */
2856 #line 747 "pikchr.y"
2857 {yylhsminor.yy36 = pik_find_byname(p,yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2858 #line 2883 "pikchr.c"
2859 yymsp[-2].minor.yy36 = yylhsminor.yy36;
2860 break;
2861 case 91: /* nth ::= NTH CLASSNAME */
2862 #line 749 "pikchr.y"
2863 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2864 #line 2889 "pikchr.c"
2865 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2866 break;
2867 case 92: /* nth ::= NTH LAST CLASSNAME */
2868 #line 750 "pikchr.y"
2869 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2870 #line 2895 "pikchr.c"
2871 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2872 break;
2873 case 93: /* nth ::= LAST CLASSNAME */
2874 #line 751 "pikchr.y"
2875 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2876 #line 2901 "pikchr.c"
2877 break;
2878 case 94: /* nth ::= LAST */
2879 #line 752 "pikchr.y"
2880 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2881 #line 2906 "pikchr.c"
2882 yymsp[0].minor.yy0 = yylhsminor.yy0;
2883 break;
2884 case 95: /* nth ::= NTH LB RB */
2885 #line 753 "pikchr.y"
2886 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2887 #line 2912 "pikchr.c"
2888 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2889 break;
2890 case 96: /* nth ::= NTH LAST LB RB */
2891 #line 754 "pikchr.y"
2892 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2893 #line 2918 "pikchr.c"
2894 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2895 break;
2896 case 97: /* nth ::= LAST LB RB */
2897 #line 755 "pikchr.y"
2898 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2899 #line 2924 "pikchr.c"
2900 break;
2901 case 98: /* expr ::= expr PLUS expr */
2902 #line 757 "pikchr.y"
2903 {yylhsminor.yy153=yymsp[-2].minor.yy153+yymsp[0].minor.yy153;}
2904 #line 2929 "pikchr.c"
2905 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2906 break;
2907 case 99: /* expr ::= expr MINUS expr */
2908 #line 758 "pikchr.y"
2909 {yylhsminor.yy153=yymsp[-2].minor.yy153-yymsp[0].minor.yy153;}
2910 #line 2935 "pikchr.c"
2911 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2912 break;
2913 case 100: /* expr ::= expr STAR expr */
2914 #line 759 "pikchr.y"
2915 {yylhsminor.yy153=yymsp[-2].minor.yy153*yymsp[0].minor.yy153;}
2916 #line 2941 "pikchr.c"
2917 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2918 break;
2919 case 101: /* expr ::= expr SLASH expr */
2920 #line 760 "pikchr.y"
2921 {
2922 if( yymsp[0].minor.yy153==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy153 = 0.0; }
2923 else{ yylhsminor.yy153 = yymsp[-2].minor.yy153/yymsp[0].minor.yy153; }
2924 }
2925 #line 2950 "pikchr.c"
2926 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2927 break;
2928 case 102: /* expr ::= MINUS expr */
2929 #line 764 "pikchr.y"
2930 {yymsp[-1].minor.yy153=-yymsp[0].minor.yy153;}
2931 #line 2956 "pikchr.c"
2932 break;
2933 case 103: /* expr ::= PLUS expr */
2934 #line 765 "pikchr.y"
2935 {yymsp[-1].minor.yy153=yymsp[0].minor.yy153;}
2936 #line 2961 "pikchr.c"
2937 break;
2938 case 104: /* expr ::= LP expr RP */
2939 #line 766 "pikchr.y"
2940 {yymsp[-2].minor.yy153=yymsp[-1].minor.yy153;}
2941 #line 2966 "pikchr.c"
2942 break;
2943 case 105: /* expr ::= LP FILL|COLOR|THICKNESS RP */
2944 #line 767 "pikchr.y"
2945 {yymsp[-2].minor.yy153=pik_get_var(p,&yymsp[-1].minor.yy0);}
2946 #line 2971 "pikchr.c"
2947 break;
2948 case 106: /* expr ::= NUMBER */
2949 #line 768 "pikchr.y"
2950 {yylhsminor.yy153=pik_atof(&yymsp[0].minor.yy0);}
2951 #line 2976 "pikchr.c"
2952 yymsp[0].minor.yy153 = yylhsminor.yy153;
2953 break;
2954 case 107: /* expr ::= ID */
2955 #line 769 "pikchr.y"
2956 {yylhsminor.yy153=pik_get_var(p,&yymsp[0].minor.yy0);}
2957 #line 2982 "pikchr.c"
2958 yymsp[0].minor.yy153 = yylhsminor.yy153;
2959 break;
2960 case 108: /* expr ::= FUNC1 LP expr RP */
2961 #line 770 "pikchr.y"
2962 {yylhsminor.yy153 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy153,0.0);}
2963 #line 2988 "pikchr.c"
2964 yymsp[-3].minor.yy153 = yylhsminor.yy153;
2965 break;
2966 case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
2967 #line 771 "pikchr.y"
2968 {yylhsminor.yy153 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy153,yymsp[-1].minor.yy153);}
2969 #line 2994 "pikchr.c"
2970 yymsp[-5].minor.yy153 = yylhsminor.yy153;
2971 break;
2972 case 110: /* expr ::= DIST LP position COMMA position RP */
2973 #line 772 "pikchr.y"
2974 {yymsp[-5].minor.yy153 = pik_dist(&yymsp[-3].minor.yy79,&yymsp[-1].minor.yy79);}
2975 #line 3000 "pikchr.c"
2976 break;
2977 case 111: /* expr ::= place2 DOT_XY X */
2978 #line 773 "pikchr.y"
2979 {yylhsminor.yy153 = yymsp[-2].minor.yy79.x;}
2980 #line 3005 "pikchr.c"
2981 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2982 break;
2983 case 112: /* expr ::= place2 DOT_XY Y */
2984 #line 774 "pikchr.y"
2985 {yylhsminor.yy153 = yymsp[-2].minor.yy79.y;}
2986 #line 3011 "pikchr.c"
2987 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2988 break;
2989 case 113: /* expr ::= object DOT_L numproperty */
2990 case 114: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==114);
2991 case 115: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==115);
2992 #line 775 "pikchr.y"
2993 {yylhsminor.yy153=pik_property_of(yymsp[-2].minor.yy36,&yymsp[0].minor.yy0);}
2994 #line 3019 "pikchr.c"
2995 yymsp[-2].minor.yy153 = yylhsminor.yy153;
2996 break;
2997 default:
2998 /* (116) lvalue ::= ID */ yytestcase(yyruleno==116);
2999 /* (117) lvalue ::= FILL */ yytestcase(yyruleno==117);
3000 /* (118) lvalue ::= COLOR */ yytestcase(yyruleno==118);
@@ -3092,19 +3098,19 @@
3092 ){
3093 pik_parserARG_FETCH
3094 pik_parserCTX_FETCH
3095 #define TOKEN yyminor
3096 /************ Begin %syntax_error code ****************************************/
3097 #line 535 "pikchr.y"
3098
3099 if( TOKEN.z && TOKEN.z[0] ){
3100 pik_error(p, &TOKEN, "syntax error");
3101 }else{
3102 pik_error(p, 0, "syntax error");
3103 }
3104 UNUSED_PARAMETER(yymajor);
3105 #line 3130 "pikchr.c"
3106 /************ End %syntax_error code ******************************************/
3107 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
3108 pik_parserCTX_STORE
3109 }
3110
@@ -3376,11 +3382,11 @@
3376 #else
3377 (void)iToken;
3378 return 0;
3379 #endif
3380 }
3381 #line 780 "pikchr.y"
3382
3383
3384
3385 /* Chart of the 148 official CSS color names with their
3386 ** corresponding RGB values thru Color Module Level 4:
@@ -4978,14 +4984,16 @@
4978 if( t->eCode & TP_RJUST ) nx += jw;
4979
4980 if( pBox!=0 ){
4981 /* If pBox is not NULL, do not draw any <text>. Instead, just expand
4982 ** pBox to include the text */
4983 PNum cw = pik_text_length(t)*p->charWidth*xtraFontScale*0.01;
4984 PNum ch = p->charHeight*0.5*xtraFontScale;
4985 PNum x0, y0, x1, y1; /* Boundary of text relative to pObj->ptAt */
4986 if( t->eCode & TP_BOLD ) cw *= 1.1;
 
 
4987 if( t->eCode & TP_RJUST ){
4988 x0 = nx;
4989 y0 = y-ch;
4990 x1 = nx-cw;
4991 y1 = y+ch;
@@ -5036,10 +5044,14 @@
5036 if( t->eCode & TP_ITALIC ){
5037 pik_append(p, " font-style=\"italic\"", -1);
5038 }
5039 if( t->eCode & TP_BOLD ){
5040 pik_append(p, " font-weight=\"bold\"", -1);
 
 
 
 
5041 }
5042 if( pObj->color>=0.0 ){
5043 pik_append_clr(p, " fill=\"", pObj->color, "\"",0);
5044 }
5045 xtraFontScale *= p->fontScale;
@@ -6044,12 +6056,13 @@
6044 case T_LJUST: iRes = (iRes&~TP_JMASK) | TP_LJUST; break;
6045 case T_RJUST: iRes = (iRes&~TP_JMASK) | TP_RJUST; break;
6046 case T_ABOVE: iRes = (iRes&~TP_VMASK) | TP_ABOVE; break;
6047 case T_CENTER: iRes = (iRes&~TP_VMASK) | TP_CENTER; break;
6048 case T_BELOW: iRes = (iRes&~TP_VMASK) | TP_BELOW; break;
6049 case T_ITALIC: iRes |= TP_ITALIC; break;
6050 case T_BOLD: iRes |= TP_BOLD; break;
 
6051 case T_ALIGNED: iRes |= TP_ALIGN; break;
6052 case T_BIG: if( iRes & TP_BIG ) iRes |= TP_XTRA;
6053 else iRes = (iRes &~TP_SZMASK)|TP_BIG; break;
6054 case T_SMALL: if( iRes & TP_SMALL ) iRes |= TP_XTRA;
6055 else iRes = (iRes &~TP_SZMASK)|TP_SMALL; break;
@@ -6180,15 +6193,17 @@
6180 **
6181 ** Omit "\" used to escape characters. And count entities like
6182 ** "&lt;" as a single character. Multi-byte UTF8 characters count
6183 ** as a single character.
6184 **
6185 ** Attempt to scale the answer by the actual characters seen. Wide
6186 ** characters count more than narrow characters. But the widths are
6187 ** only guesses.
 
6188 */
6189 static int pik_text_length(const PToken *pToken){
 
6190 int n = pToken->n;
6191 const char *z = pToken->z;
6192 int cnt, j;
6193 for(j=1, cnt=0; j<n-1; j++){
6194 char c = z[j];
@@ -6196,22 +6211,24 @@
6196 c = z[++j];
6197 }else if( c=='&' ){
6198 int k;
6199 for(k=j+1; k<j+7 && z[k]!=0 && z[k]!=';'; k++){}
6200 if( z[k]==';' ) j = k;
6201 cnt += 150;
6202 continue;
6203 }
6204 if( (c & 0xc0)==0xc0 ){
6205 while( j+1<n-1 && (z[j+1]&0xc0)==0x80 ){ j++; }
6206 cnt += 100;
6207 continue;
6208 }
6209 if( c>=0x20 && c<=0x7e ){
 
 
6210 cnt += awChar[c-0x20];
6211 }else{
6212 cnt += 100;
6213 }
6214 }
6215 return cnt;
6216 }
6217
@@ -7195,10 +7212,12 @@
7195 { "last", 4, T_LAST, 0, 0 },
7196 { "left", 4, T_LEFT, DIR_LEFT, CP_W },
7197 { "ljust", 5, T_LJUST, 0, 0 },
7198 { "max", 3, T_FUNC2, FN_MAX, 0 },
7199 { "min", 3, T_FUNC2, FN_MIN, 0 },
 
 
7200 { "n", 1, T_EDGEPT, 0, CP_N },
7201 { "ne", 2, T_EDGEPT, 0, CP_NE },
7202 { "north", 5, T_EDGEPT, 0, CP_N },
7203 { "nw", 2, T_EDGEPT, 0, CP_NW },
7204 { "of", 2, T_OF, 0, 0 },
@@ -8122,6 +8141,6 @@
8122
8123
8124 #endif /* PIKCHR_TCL */
8125
8126
8127 #line 8152 "pikchr.c"
8128
--- extsrc/pikchr.c
+++ extsrc/pikchr.c
@@ -59,11 +59,11 @@
59 ** cc pikchr.c -o pikchr.o
60 **
61 ** Add -DPIKCHR_SHELL to add a main() routine that reads input files
62 ** and sends them through Pikchr, for testing. Add -DPIKCHR_FUZZ for
63 ** -fsanitizer=fuzzer testing.
64 **
65 ****************************************************************************
66 ** IMPLEMENTATION NOTES (for people who want to understand the internal
67 ** operation of this software, perhaps to extend the code or to fix bugs):
68 **
69 ** Each call to pikchr() uses a single instance of the Pik structure to
@@ -203,12 +203,13 @@
203 #define TP_SMALL 0x0200 /* Smaller font */
204 #define TP_XTRA 0x0400 /* Amplify TP_BIG or TP_SMALL */
205 #define TP_SZMASK 0x0700 /* Font size mask */
206 #define TP_ITALIC 0x1000 /* Italic font */
207 #define TP_BOLD 0x2000 /* Bold font */
208 #define TP_MONO 0x4000 /* Monospace font family */
209 #define TP_FMASK 0x7000 /* Mask for font style */
210 #define TP_ALIGN 0x8000 /* Rotate to align with the line */
211
212 /* An object to hold a position in 2-D space */
213 struct PPoint {
214 PNum x, y; /* X and Y coordinates */
215 };
@@ -470,11 +471,11 @@
471 static void pik_bbox_init(PBox*);
472 static void pik_bbox_addbox(PBox*,PBox*);
473 static void pik_bbox_add_xy(PBox*,PNum,PNum);
474 static void pik_bbox_addellipse(PBox*,PNum x,PNum y,PNum rx,PNum ry);
475 static void pik_add_txt(Pik*,PToken*,int);
476 static int pik_text_length(const PToken *pToken, const int isMonospace);
477 static void pik_size_to_fit(Pik*,PToken*,int);
478 static int pik_text_position(int,PToken*);
479 static PNum pik_property_of(PObj*,PToken*);
480 static PNum pik_func(Pik*,PToken*,PNum,PNum);
481 static PPoint pik_position_between(PNum x, PPoint p1, PPoint p2);
@@ -489,11 +490,11 @@
490 static PObj *pik_position_assert(Pik*,PPoint*,PToken*,PPoint*);
491 static PNum pik_dist(PPoint*,PPoint*);
492 static void pik_add_macro(Pik*,PToken *pId,PToken *pCode);
493
494
495 #line 521 "pikchr.c"
496 /**************** End of %include directives **********************************/
497 /* These constants specify the various numeric values for terminal symbols.
498 ***************** Begin token definitions *************************************/
499 #ifndef T_ID
500 #define T_ID 1
@@ -564,38 +565,39 @@
565 #define T_RJUST 66
566 #define T_ABOVE 67
567 #define T_BELOW 68
568 #define T_ITALIC 69
569 #define T_BOLD 70
570 #define T_MONO 71
571 #define T_ALIGNED 72
572 #define T_BIG 73
573 #define T_SMALL 74
574 #define T_AND 75
575 #define T_LT 76
576 #define T_GT 77
577 #define T_ON 78
578 #define T_WAY 79
579 #define T_BETWEEN 80
580 #define T_THE 81
581 #define T_NTH 82
582 #define T_VERTEX 83
583 #define T_TOP 84
584 #define T_BOTTOM 85
585 #define T_START 86
586 #define T_END 87
587 #define T_IN 88
588 #define T_THIS 89
589 #define T_DOT_U 90
590 #define T_LAST 91
591 #define T_NUMBER 92
592 #define T_FUNC1 93
593 #define T_FUNC2 94
594 #define T_DIST 95
595 #define T_DOT_XY 96
596 #define T_X 97
597 #define T_Y 98
598 #define T_DOT_L 99
599 #endif
600 /**************** End token definitions ***************************************/
601
602 /* The next sections is a series of control #defines.
603 ** various aspects of the generated parser.
@@ -651,22 +653,22 @@
653 #ifndef INTERFACE
654 # define INTERFACE 1
655 #endif
656 /************* Begin control #defines *****************************************/
657 #define YYCODETYPE unsigned char
658 #define YYNOCODE 136
659 #define YYACTIONTYPE unsigned short int
660 #define pik_parserTOKENTYPE PToken
661 typedef union {
662 int yyinit;
663 pik_parserTOKENTYPE yy0;
664 PNum yy21;
665 PPoint yy63;
666 PRel yy72;
667 PObj* yy162;
668 short int yy188;
669 PList* yy235;
670 } YYMINORTYPE;
671 #ifndef YYSTACKDEPTH
672 #define YYSTACKDEPTH 100
673 #endif
674 #define pik_parserARG_SDECL
@@ -681,11 +683,11 @@
683 #define pik_parserCTX_STORE yypParser->p=p;
684 #define YYFALLBACK 1
685 #define YYNSTATE 164
686 #define YYNRULE 156
687 #define YYNRULE_WITH_ACTION 116
688 #define YYNTOKEN 100
689 #define YY_MAX_SHIFT 163
690 #define YY_MIN_SHIFTREDUCE 287
691 #define YY_MAX_SHIFTREDUCE 442
692 #define YY_ERROR_ACTION 443
693 #define YY_ACCEPT_ACTION 444
@@ -756,322 +758,324 @@
758 ** yy_reduce_ofst[] For each state, the offset into yy_action for
759 ** shifting non-terminals after a reduce.
760 ** yy_default[] Default action for each state.
761 **
762 *********** Begin parsing tables **********************************************/
763 #define YY_ACTTAB_COUNT (1313)
764 static const YYACTIONTYPE yy_action[] = {
765 /* 0 */ 575, 495, 161, 119, 25, 452, 29, 74, 129, 148,
766 /* 10 */ 575, 492, 161, 119, 453, 113, 120, 161, 119, 530,
767 /* 20 */ 427, 428, 339, 559, 81, 30, 560, 561, 575, 64,
768 /* 30 */ 63, 62, 61, 322, 323, 9, 8, 33, 149, 32,
769 /* 40 */ 7, 71, 127, 38, 335, 66, 48, 37, 28, 339,
770 /* 50 */ 339, 339, 339, 425, 426, 340, 341, 342, 343, 344,
771 /* 60 */ 345, 346, 347, 348, 474, 528, 161, 119, 577, 77,
772 /* 70 */ 577, 73, 306, 148, 474, 533, 161, 119, 112, 113,
773 /* 80 */ 120, 161, 119, 128, 427, 428, 339, 31, 81, 531,
774 /* 90 */ 161, 119, 474, 35, 330, 378, 158, 322, 323, 9,
775 /* 100 */ 8, 33, 149, 32, 7, 71, 127, 328, 335, 66,
776 /* 110 */ 579, 378, 158, 339, 339, 339, 339, 425, 426, 340,
777 /* 120 */ 341, 342, 343, 344, 345, 346, 347, 348, 394, 435,
778 /* 130 */ 46, 59, 60, 64, 63, 62, 61, 357, 36, 376,
779 /* 140 */ 54, 51, 2, 47, 403, 13, 297, 411, 412, 413,
780 /* 150 */ 414, 80, 162, 308, 79, 133, 310, 126, 441, 440,
781 /* 160 */ 118, 123, 83, 404, 405, 406, 408, 80, 84, 308,
782 /* 170 */ 79, 299, 411, 412, 413, 414, 118, 69, 350, 350,
783 /* 180 */ 350, 350, 350, 350, 350, 350, 350, 350, 350, 62,
784 /* 190 */ 61, 434, 64, 63, 62, 61, 313, 398, 399, 427,
785 /* 200 */ 428, 339, 380, 157, 64, 63, 62, 61, 122, 106,
786 /* 210 */ 535, 436, 437, 438, 439, 298, 375, 391, 117, 393,
787 /* 220 */ 155, 154, 153, 394, 435, 49, 59, 60, 339, 339,
788 /* 230 */ 339, 339, 425, 426, 376, 3, 4, 2, 64, 63,
789 /* 240 */ 62, 61, 156, 156, 156, 394, 379, 159, 59, 60,
790 /* 250 */ 76, 67, 535, 441, 440, 5, 102, 6, 535, 42,
791 /* 260 */ 131, 535, 69, 107, 301, 302, 303, 394, 305, 15,
792 /* 270 */ 59, 60, 120, 161, 119, 446, 463, 424, 376, 423,
793 /* 280 */ 1, 42, 397, 78, 78, 36, 434, 11, 394, 435,
794 /* 290 */ 356, 59, 60, 12, 152, 139, 432, 14, 16, 376,
795 /* 300 */ 18, 65, 2, 138, 106, 430, 436, 437, 438, 439,
796 /* 310 */ 44, 375, 19, 117, 393, 155, 154, 153, 441, 440,
797 /* 320 */ 142, 140, 64, 63, 62, 61, 106, 20, 68, 376,
798 /* 330 */ 359, 107, 23, 375, 45, 117, 393, 155, 154, 153,
799 /* 340 */ 120, 161, 119, 55, 463, 114, 26, 57, 106, 147,
800 /* 350 */ 146, 434, 569, 58, 392, 375, 43, 117, 393, 155,
801 /* 360 */ 154, 153, 152, 384, 64, 63, 62, 61, 382, 106,
802 /* 370 */ 383, 436, 437, 438, 439, 377, 375, 70, 117, 393,
803 /* 380 */ 155, 154, 153, 160, 39, 22, 21, 445, 142, 140,
804 /* 390 */ 64, 63, 62, 61, 24, 17, 145, 141, 431, 108,
805 /* 400 */ 445, 445, 445, 391, 445, 445, 375, 445, 117, 445,
806 /* 410 */ 445, 55, 74, 445, 148, 445, 445, 147, 146, 124,
807 /* 420 */ 113, 120, 161, 119, 43, 445, 445, 142, 140, 64,
808 /* 430 */ 63, 62, 61, 445, 394, 445, 445, 59, 60, 64,
809 /* 440 */ 63, 62, 61, 149, 445, 376, 445, 445, 42, 445,
810 /* 450 */ 55, 445, 391, 22, 21, 445, 147, 146, 445, 445,
811 /* 460 */ 52, 445, 24, 43, 145, 141, 431, 394, 445, 445,
812 /* 470 */ 59, 60, 64, 63, 62, 61, 445, 445, 376, 132,
813 /* 480 */ 130, 42, 445, 445, 445, 355, 156, 156, 156, 445,
814 /* 490 */ 445, 445, 22, 21, 445, 394, 473, 445, 59, 60,
815 /* 500 */ 445, 24, 445, 145, 141, 431, 376, 445, 107, 42,
816 /* 510 */ 64, 63, 62, 61, 445, 106, 445, 120, 161, 119,
817 /* 520 */ 445, 478, 375, 354, 117, 393, 155, 154, 153, 445,
818 /* 530 */ 394, 143, 473, 59, 60, 64, 63, 62, 61, 152,
819 /* 540 */ 445, 376, 445, 445, 42, 445, 445, 445, 106, 64,
820 /* 550 */ 63, 62, 61, 445, 445, 375, 50, 117, 393, 155,
821 /* 560 */ 154, 153, 445, 394, 144, 445, 59, 60, 445, 445,
822 /* 570 */ 53, 72, 445, 148, 376, 445, 106, 42, 125, 113,
823 /* 580 */ 120, 161, 119, 375, 445, 117, 393, 155, 154, 153,
824 /* 590 */ 394, 445, 445, 59, 60, 445, 445, 445, 445, 445,
825 /* 600 */ 445, 102, 149, 445, 42, 445, 74, 445, 148, 445,
826 /* 610 */ 445, 106, 445, 497, 113, 120, 161, 119, 375, 445,
827 /* 620 */ 117, 393, 155, 154, 153, 394, 445, 445, 59, 60,
828 /* 630 */ 445, 445, 88, 445, 445, 445, 376, 149, 445, 40,
829 /* 640 */ 445, 120, 161, 119, 106, 445, 445, 435, 110, 110,
830 /* 650 */ 445, 375, 445, 117, 393, 155, 154, 153, 394, 445,
831 /* 660 */ 445, 59, 60, 152, 85, 445, 445, 445, 445, 376,
832 /* 670 */ 445, 106, 41, 120, 161, 119, 441, 440, 375, 445,
833 /* 680 */ 117, 393, 155, 154, 153, 448, 454, 29, 445, 445,
834 /* 690 */ 74, 450, 148, 75, 88, 152, 445, 496, 113, 120,
835 /* 700 */ 161, 119, 163, 120, 161, 119, 106, 27, 445, 434,
836 /* 710 */ 111, 111, 445, 375, 445, 117, 393, 155, 154, 153,
837 /* 720 */ 445, 149, 445, 445, 445, 152, 74, 445, 148, 436,
838 /* 730 */ 437, 438, 439, 490, 113, 120, 161, 119, 445, 106,
839 /* 740 */ 121, 447, 454, 29, 445, 445, 375, 450, 117, 393,
840 /* 750 */ 155, 154, 153, 445, 445, 445, 445, 149, 163, 74,
841 /* 760 */ 445, 148, 444, 27, 445, 445, 484, 113, 120, 161,
842 /* 770 */ 119, 445, 445, 445, 74, 445, 148, 445, 445, 445,
843 /* 780 */ 445, 483, 113, 120, 161, 119, 74, 445, 148, 86,
844 /* 790 */ 149, 445, 445, 480, 113, 120, 161, 119, 120, 161,
845 /* 800 */ 119, 445, 74, 445, 148, 149, 445, 445, 445, 134,
846 /* 810 */ 113, 120, 161, 119, 74, 445, 148, 149, 445, 445,
847 /* 820 */ 152, 517, 113, 120, 161, 119, 88, 64, 63, 62,
848 /* 830 */ 61, 445, 445, 149, 445, 120, 161, 119, 445, 74,
849 /* 840 */ 396, 148, 475, 445, 445, 149, 137, 113, 120, 161,
850 /* 850 */ 119, 74, 445, 148, 445, 445, 445, 152, 525, 113,
851 /* 860 */ 120, 161, 119, 445, 74, 445, 148, 445, 445, 445,
852 /* 870 */ 149, 527, 113, 120, 161, 119, 445, 445, 445, 74,
853 /* 880 */ 445, 148, 149, 445, 445, 445, 524, 113, 120, 161,
854 /* 890 */ 119, 74, 445, 148, 98, 149, 445, 445, 526, 113,
855 /* 900 */ 120, 161, 119, 120, 161, 119, 445, 74, 445, 148,
856 /* 910 */ 149, 445, 445, 445, 523, 113, 120, 161, 119, 74,
857 /* 920 */ 445, 148, 149, 445, 445, 152, 522, 113, 120, 161,
858 /* 930 */ 119, 89, 64, 63, 62, 61, 445, 445, 149, 445,
859 /* 940 */ 120, 161, 119, 445, 74, 395, 148, 445, 445, 445,
860 /* 950 */ 149, 521, 113, 120, 161, 119, 74, 445, 148, 445,
861 /* 960 */ 445, 445, 152, 520, 113, 120, 161, 119, 445, 74,
862 /* 970 */ 445, 148, 445, 445, 445, 149, 519, 113, 120, 161,
863 /* 980 */ 119, 445, 445, 445, 74, 445, 148, 149, 445, 445,
864 /* 990 */ 445, 150, 113, 120, 161, 119, 74, 445, 148, 90,
865 /* 1000 */ 149, 445, 445, 151, 113, 120, 161, 119, 120, 161,
866 /* 1010 */ 119, 445, 74, 445, 148, 149, 445, 435, 445, 136,
867 /* 1020 */ 113, 120, 161, 119, 74, 445, 148, 149, 445, 445,
868 /* 1030 */ 152, 135, 113, 120, 161, 119, 64, 63, 62, 61,
869 /* 1040 */ 445, 445, 445, 149, 445, 445, 441, 440, 445, 88,
870 /* 1050 */ 445, 445, 445, 445, 445, 149, 445, 56, 120, 161,
871 /* 1060 */ 119, 88, 445, 445, 10, 479, 479, 445, 445, 445,
872 /* 1070 */ 120, 161, 119, 445, 445, 445, 445, 82, 445, 434,
873 /* 1080 */ 152, 445, 445, 445, 466, 445, 34, 109, 447, 454,
874 /* 1090 */ 29, 445, 152, 445, 450, 445, 445, 445, 107, 436,
875 /* 1100 */ 437, 438, 439, 87, 445, 163, 445, 120, 161, 119,
876 /* 1110 */ 27, 451, 120, 161, 119, 99, 445, 64, 63, 62,
877 /* 1120 */ 61, 445, 100, 445, 120, 161, 119, 101, 445, 152,
878 /* 1130 */ 391, 120, 161, 119, 152, 445, 120, 161, 119, 91,
879 /* 1140 */ 445, 445, 445, 445, 445, 445, 152, 445, 120, 161,
880 /* 1150 */ 119, 103, 445, 152, 92, 445, 445, 445, 152, 445,
881 /* 1160 */ 120, 161, 119, 120, 161, 119, 93, 445, 445, 104,
882 /* 1170 */ 152, 445, 445, 445, 445, 120, 161, 119, 120, 161,
883 /* 1180 */ 119, 445, 152, 445, 94, 152, 445, 445, 445, 445,
884 /* 1190 */ 445, 445, 105, 120, 161, 119, 445, 152, 445, 95,
885 /* 1200 */ 152, 120, 161, 119, 445, 445, 445, 96, 120, 161,
886 /* 1210 */ 119, 445, 445, 445, 445, 152, 120, 161, 119, 445,
887 /* 1220 */ 445, 445, 445, 152, 445, 445, 445, 445, 445, 445,
888 /* 1230 */ 152, 97, 445, 445, 549, 445, 445, 548, 152, 445,
889 /* 1240 */ 120, 161, 119, 120, 161, 119, 120, 161, 119, 445,
890 /* 1250 */ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
891 /* 1260 */ 445, 445, 152, 547, 445, 152, 546, 445, 152, 115,
892 /* 1270 */ 445, 445, 120, 161, 119, 120, 161, 119, 120, 161,
893 /* 1280 */ 119, 116, 445, 445, 445, 445, 445, 445, 445, 445,
894 /* 1290 */ 120, 161, 119, 445, 152, 445, 445, 152, 445, 445,
895 /* 1300 */ 152, 445, 445, 445, 445, 445, 445, 445, 445, 445,
896 /* 1310 */ 445, 445, 152,
897 };
898 static const YYCODETYPE yy_lookahead[] = {
899 /* 0 */ 0, 113, 114, 115, 134, 102, 103, 104, 106, 106,
900 /* 10 */ 10, 113, 114, 115, 111, 112, 113, 114, 115, 106,
901 /* 20 */ 20, 21, 22, 105, 24, 126, 108, 109, 28, 4,
902 /* 30 */ 5, 6, 7, 33, 34, 35, 36, 37, 135, 39,
903 /* 40 */ 40, 41, 42, 105, 44, 45, 108, 109, 107, 49,
904 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
905 /* 60 */ 60, 61, 62, 63, 0, 113, 114, 115, 130, 131,
906 /* 70 */ 132, 104, 25, 106, 10, 113, 114, 115, 111, 112,
907 /* 80 */ 113, 114, 115, 106, 20, 21, 22, 128, 24, 113,
908 /* 90 */ 114, 115, 28, 129, 2, 26, 27, 33, 34, 35,
909 /* 100 */ 36, 37, 135, 39, 40, 41, 42, 2, 44, 45,
910 /* 110 */ 133, 26, 27, 49, 50, 51, 52, 53, 54, 55,
911 /* 120 */ 56, 57, 58, 59, 60, 61, 62, 63, 1, 2,
912 /* 130 */ 38, 4, 5, 4, 5, 6, 7, 17, 10, 12,
913 /* 140 */ 4, 5, 15, 38, 1, 25, 17, 29, 30, 31,
914 /* 150 */ 32, 24, 83, 26, 27, 12, 28, 14, 31, 32,
915 /* 160 */ 91, 18, 116, 20, 21, 22, 23, 24, 116, 26,
916 /* 170 */ 27, 19, 29, 30, 31, 32, 91, 3, 64, 65,
917 /* 180 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 6,
918 /* 190 */ 7, 64, 4, 5, 6, 7, 8, 97, 98, 20,
919 /* 200 */ 21, 22, 26, 27, 4, 5, 6, 7, 1, 82,
920 /* 210 */ 48, 84, 85, 86, 87, 17, 89, 17, 91, 92,
921 /* 220 */ 93, 94, 95, 1, 2, 25, 4, 5, 49, 50,
922 /* 230 */ 51, 52, 53, 54, 12, 16, 15, 15, 4, 5,
923 /* 240 */ 6, 7, 20, 21, 22, 1, 26, 27, 4, 5,
924 /* 250 */ 48, 43, 90, 31, 32, 40, 12, 40, 96, 15,
925 /* 260 */ 47, 99, 88, 104, 20, 21, 22, 1, 24, 35,
926 /* 270 */ 4, 5, 113, 114, 115, 0, 117, 41, 12, 41,
927 /* 280 */ 13, 15, 17, 124, 125, 10, 64, 25, 1, 2,
928 /* 290 */ 17, 4, 5, 75, 135, 81, 80, 3, 3, 12,
929 /* 300 */ 3, 99, 15, 79, 82, 80, 84, 85, 86, 87,
930 /* 310 */ 38, 89, 3, 91, 92, 93, 94, 95, 31, 32,
931 /* 320 */ 2, 3, 4, 5, 6, 7, 82, 3, 3, 12,
932 /* 330 */ 77, 104, 25, 89, 16, 91, 92, 93, 94, 95,
933 /* 340 */ 113, 114, 115, 25, 117, 96, 15, 15, 82, 31,
934 /* 350 */ 32, 64, 125, 15, 17, 89, 38, 91, 92, 93,
935 /* 360 */ 94, 95, 135, 28, 4, 5, 6, 7, 28, 82,
936 /* 370 */ 28, 84, 85, 86, 87, 12, 89, 3, 91, 92,
937 /* 380 */ 93, 94, 95, 90, 11, 67, 68, 136, 2, 3,
938 /* 390 */ 4, 5, 6, 7, 76, 35, 78, 79, 80, 82,
939 /* 400 */ 136, 136, 136, 17, 136, 136, 89, 136, 91, 136,
940 /* 410 */ 136, 25, 104, 136, 106, 136, 136, 31, 32, 111,
941 /* 420 */ 112, 113, 114, 115, 38, 136, 136, 2, 3, 4,
942 /* 430 */ 5, 6, 7, 136, 1, 136, 136, 4, 5, 4,
943 /* 440 */ 5, 6, 7, 135, 136, 12, 136, 136, 15, 136,
944 /* 450 */ 25, 136, 17, 67, 68, 136, 31, 32, 136, 136,
945 /* 460 */ 25, 136, 76, 38, 78, 79, 80, 1, 136, 136,
946 /* 470 */ 4, 5, 4, 5, 6, 7, 136, 136, 12, 46,
947 /* 480 */ 47, 15, 136, 136, 136, 17, 20, 21, 22, 136,
948 /* 490 */ 136, 136, 67, 68, 136, 1, 2, 136, 4, 5,
949 /* 500 */ 136, 76, 136, 78, 79, 80, 12, 136, 104, 15,
950 /* 510 */ 4, 5, 6, 7, 136, 82, 136, 113, 114, 115,
951 /* 520 */ 136, 117, 89, 17, 91, 92, 93, 94, 95, 136,
952 /* 530 */ 1, 2, 38, 4, 5, 4, 5, 6, 7, 135,
953 /* 540 */ 136, 12, 136, 136, 15, 136, 136, 136, 82, 4,
954 /* 550 */ 5, 6, 7, 136, 136, 89, 25, 91, 92, 93,
955 /* 560 */ 94, 95, 136, 1, 2, 136, 4, 5, 136, 136,
956 /* 570 */ 25, 104, 136, 106, 12, 136, 82, 15, 111, 112,
957 /* 580 */ 113, 114, 115, 89, 136, 91, 92, 93, 94, 95,
958 /* 590 */ 1, 136, 136, 4, 5, 136, 136, 136, 136, 136,
959 /* 600 */ 136, 12, 135, 136, 15, 136, 104, 136, 106, 136,
960 /* 610 */ 136, 82, 136, 111, 112, 113, 114, 115, 89, 136,
961 /* 620 */ 91, 92, 93, 94, 95, 1, 136, 136, 4, 5,
962 /* 630 */ 136, 136, 104, 136, 136, 136, 12, 135, 136, 15,
963 /* 640 */ 136, 113, 114, 115, 82, 136, 136, 2, 120, 121,
964 /* 650 */ 136, 89, 136, 91, 92, 93, 94, 95, 1, 136,
965 /* 660 */ 136, 4, 5, 135, 104, 136, 136, 136, 136, 12,
966 /* 670 */ 136, 82, 15, 113, 114, 115, 31, 32, 89, 136,
967 /* 680 */ 91, 92, 93, 94, 95, 101, 102, 103, 136, 136,
968 /* 690 */ 104, 107, 106, 48, 104, 135, 136, 111, 112, 113,
969 /* 700 */ 114, 115, 118, 113, 114, 115, 82, 123, 136, 64,
970 /* 710 */ 120, 121, 136, 89, 136, 91, 92, 93, 94, 95,
971 /* 720 */ 136, 135, 136, 136, 136, 135, 104, 136, 106, 84,
972 /* 730 */ 85, 86, 87, 111, 112, 113, 114, 115, 136, 82,
973 /* 740 */ 100, 101, 102, 103, 136, 136, 89, 107, 91, 92,
974 /* 750 */ 93, 94, 95, 136, 136, 136, 136, 135, 118, 104,
975 /* 760 */ 136, 106, 122, 123, 136, 136, 111, 112, 113, 114,
976 /* 770 */ 115, 136, 136, 136, 104, 136, 106, 136, 136, 136,
977 /* 780 */ 136, 111, 112, 113, 114, 115, 104, 136, 106, 104,
978 /* 790 */ 135, 136, 136, 111, 112, 113, 114, 115, 113, 114,
979 /* 800 */ 115, 136, 104, 136, 106, 135, 136, 136, 136, 111,
980 /* 810 */ 112, 113, 114, 115, 104, 136, 106, 135, 136, 136,
981 /* 820 */ 135, 111, 112, 113, 114, 115, 104, 4, 5, 6,
982 /* 830 */ 7, 136, 136, 135, 136, 113, 114, 115, 136, 104,
983 /* 840 */ 17, 106, 120, 136, 136, 135, 111, 112, 113, 114,
984 /* 850 */ 115, 104, 136, 106, 136, 136, 136, 135, 111, 112,
985 /* 860 */ 113, 114, 115, 136, 104, 136, 106, 136, 136, 136,
986 /* 870 */ 135, 111, 112, 113, 114, 115, 136, 136, 136, 104,
987 /* 880 */ 136, 106, 135, 136, 136, 136, 111, 112, 113, 114,
988 /* 890 */ 115, 104, 136, 106, 104, 135, 136, 136, 111, 112,
989 /* 900 */ 113, 114, 115, 113, 114, 115, 136, 104, 136, 106,
990 /* 910 */ 135, 136, 136, 136, 111, 112, 113, 114, 115, 104,
991 /* 920 */ 136, 106, 135, 136, 136, 135, 111, 112, 113, 114,
992 /* 930 */ 115, 104, 4, 5, 6, 7, 136, 136, 135, 136,
993 /* 940 */ 113, 114, 115, 136, 104, 17, 106, 136, 136, 136,
994 /* 950 */ 135, 111, 112, 113, 114, 115, 104, 136, 106, 136,
995 /* 960 */ 136, 136, 135, 111, 112, 113, 114, 115, 136, 104,
996 /* 970 */ 136, 106, 136, 136, 136, 135, 111, 112, 113, 114,
997 /* 980 */ 115, 136, 136, 136, 104, 136, 106, 135, 136, 136,
998 /* 990 */ 136, 111, 112, 113, 114, 115, 104, 136, 106, 104,
999 /* 1000 */ 135, 136, 136, 111, 112, 113, 114, 115, 113, 114,
1000 /* 1010 */ 115, 136, 104, 136, 106, 135, 136, 2, 136, 111,
1001 /* 1020 */ 112, 113, 114, 115, 104, 136, 106, 135, 136, 136,
1002 /* 1030 */ 135, 111, 112, 113, 114, 115, 4, 5, 6, 7,
1003 /* 1040 */ 136, 136, 136, 135, 136, 136, 31, 32, 136, 104,
1004 /* 1050 */ 136, 136, 136, 136, 136, 135, 136, 25, 113, 114,
1005 /* 1060 */ 115, 104, 136, 136, 119, 120, 121, 136, 136, 136,
1006 /* 1070 */ 113, 114, 115, 136, 136, 136, 136, 120, 136, 64,
1007 /* 1080 */ 135, 136, 136, 136, 127, 136, 129, 100, 101, 102,
1008 /* 1090 */ 103, 136, 135, 136, 107, 136, 136, 136, 104, 84,
1009 /* 1100 */ 85, 86, 87, 104, 136, 118, 136, 113, 114, 115,
1010 /* 1110 */ 123, 117, 113, 114, 115, 104, 136, 4, 5, 6,
1011 /* 1120 */ 7, 136, 104, 136, 113, 114, 115, 104, 136, 135,
1012 /* 1130 */ 17, 113, 114, 115, 135, 136, 113, 114, 115, 104,
1013 /* 1140 */ 136, 136, 136, 136, 136, 136, 135, 136, 113, 114,
1014 /* 1150 */ 115, 104, 136, 135, 104, 136, 136, 136, 135, 136,
1015 /* 1160 */ 113, 114, 115, 113, 114, 115, 104, 136, 136, 104,
1016 /* 1170 */ 135, 136, 136, 136, 136, 113, 114, 115, 113, 114,
1017 /* 1180 */ 115, 136, 135, 136, 104, 135, 136, 136, 136, 136,
1018 /* 1190 */ 136, 136, 104, 113, 114, 115, 136, 135, 136, 104,
1019 /* 1200 */ 135, 113, 114, 115, 136, 136, 136, 104, 113, 114,
1020 /* 1210 */ 115, 136, 136, 136, 136, 135, 113, 114, 115, 136,
1021 /* 1220 */ 136, 136, 136, 135, 136, 136, 136, 136, 136, 136,
1022 /* 1230 */ 135, 104, 136, 136, 104, 136, 136, 104, 135, 136,
1023 /* 1240 */ 113, 114, 115, 113, 114, 115, 113, 114, 115, 136,
1024 /* 1250 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1025 /* 1260 */ 136, 136, 135, 104, 136, 135, 104, 136, 135, 104,
1026 /* 1270 */ 136, 136, 113, 114, 115, 113, 114, 115, 113, 114,
1027 /* 1280 */ 115, 104, 136, 136, 136, 136, 136, 136, 136, 136,
1028 /* 1290 */ 113, 114, 115, 136, 135, 136, 136, 135, 136, 136,
1029 /* 1300 */ 135, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1030 /* 1310 */ 136, 136, 135, 100, 100, 100, 100, 100, 100, 100,
1031 /* 1320 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1032 /* 1330 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1033 /* 1340 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1034 /* 1350 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1035 /* 1360 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1036 /* 1370 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1037 /* 1380 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1038 /* 1390 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1039 /* 1400 */ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1040 /* 1410 */ 100, 100, 100,
1041 };
1042 #define YY_SHIFT_COUNT (163)
1043 #define YY_SHIFT_MIN (0)
1044 #define YY_SHIFT_MAX (1113)
1045 static const unsigned short int yy_shift_ofst[] = {
1046 /* 0 */ 143, 127, 222, 287, 287, 287, 287, 287, 287, 287,
1047 /* 10 */ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1048 /* 20 */ 287, 287, 287, 287, 287, 287, 287, 244, 433, 266,
1049 /* 30 */ 244, 143, 494, 494, 0, 64, 143, 589, 266, 589,
1050 /* 40 */ 466, 466, 466, 529, 562, 266, 266, 266, 266, 266,
1051 /* 50 */ 266, 624, 266, 266, 657, 266, 266, 266, 266, 266,
1052 /* 60 */ 266, 266, 266, 266, 266, 179, 317, 317, 317, 317,
1053 /* 70 */ 317, 645, 318, 386, 425, 1015, 1015, 118, 47, 1313,
1054 /* 80 */ 1313, 1313, 1313, 114, 114, 200, 435, 129, 188, 234,
1055 /* 90 */ 360, 468, 531, 506, 545, 823, 1032, 928, 1113, 25,
1056 /* 100 */ 25, 25, 162, 25, 25, 25, 69, 25, 85, 128,
1057 /* 110 */ 92, 105, 120, 136, 100, 183, 183, 176, 220, 174,
1058 /* 120 */ 202, 275, 152, 207, 198, 219, 221, 208, 215, 217,
1059 /* 130 */ 236, 238, 213, 267, 265, 262, 218, 273, 216, 224,
1060 /* 140 */ 214, 225, 294, 295, 297, 272, 309, 324, 325, 249,
1061 /* 150 */ 253, 307, 249, 331, 332, 338, 337, 335, 340, 342,
1062 /* 160 */ 363, 293, 374, 373,
1063 };
1064 #define YY_REDUCE_COUNT (82)
1065 #define YY_REDUCE_MIN (-130)
1066 #define YY_REDUCE_MAX (1177)
1067 static const short yy_reduce_ofst[] = {
1068 /* 0 */ 640, -97, -33, 308, 467, 502, 586, 622, 655, 670,
1069 /* 10 */ 682, 698, 710, 735, 747, 760, 775, 787, 803, 815,
1070 /* 20 */ 840, 852, 865, 880, 892, 908, 920, 159, 945, 957,
1071 /* 30 */ 227, 987, 528, 590, -62, -62, 584, 404, 722, 994,
1072 /* 40 */ 560, 685, 790, 827, 895, 999, 1011, 1018, 1023, 1035,
1073 /* 50 */ 1047, 1050, 1062, 1065, 1080, 1088, 1095, 1103, 1127, 1130,
1074 /* 60 */ 1133, 1159, 1162, 1165, 1177, -82, -112, -102, -48, -38,
1075 /* 70 */ -24, -23, -130, -130, -130, -98, -87, -59, -101, -41,
1076 /* 80 */ 46, 52, -36,
1077 };
1078 static const YYACTIONTYPE yy_default[] = {
1079 /* 0 */ 449, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1080 /* 10 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1081 /* 20 */ 443, 443, 443, 443, 443, 443, 443, 443, 473, 576,
@@ -1177,10 +1181,11 @@
1181 0, /* RJUST => nothing */
1182 0, /* ABOVE => nothing */
1183 0, /* BELOW => nothing */
1184 0, /* ITALIC => nothing */
1185 0, /* BOLD => nothing */
1186 0, /* MONO => nothing */
1187 0, /* ALIGNED => nothing */
1188 0, /* BIG => nothing */
1189 0, /* SMALL => nothing */
1190 0, /* AND => nothing */
1191 0, /* LT => nothing */
@@ -1364,74 +1369,75 @@
1369 /* 66 */ "RJUST",
1370 /* 67 */ "ABOVE",
1371 /* 68 */ "BELOW",
1372 /* 69 */ "ITALIC",
1373 /* 70 */ "BOLD",
1374 /* 71 */ "MONO",
1375 /* 72 */ "ALIGNED",
1376 /* 73 */ "BIG",
1377 /* 74 */ "SMALL",
1378 /* 75 */ "AND",
1379 /* 76 */ "LT",
1380 /* 77 */ "GT",
1381 /* 78 */ "ON",
1382 /* 79 */ "WAY",
1383 /* 80 */ "BETWEEN",
1384 /* 81 */ "THE",
1385 /* 82 */ "NTH",
1386 /* 83 */ "VERTEX",
1387 /* 84 */ "TOP",
1388 /* 85 */ "BOTTOM",
1389 /* 86 */ "START",
1390 /* 87 */ "END",
1391 /* 88 */ "IN",
1392 /* 89 */ "THIS",
1393 /* 90 */ "DOT_U",
1394 /* 91 */ "LAST",
1395 /* 92 */ "NUMBER",
1396 /* 93 */ "FUNC1",
1397 /* 94 */ "FUNC2",
1398 /* 95 */ "DIST",
1399 /* 96 */ "DOT_XY",
1400 /* 97 */ "X",
1401 /* 98 */ "Y",
1402 /* 99 */ "DOT_L",
1403 /* 100 */ "statement_list",
1404 /* 101 */ "statement",
1405 /* 102 */ "unnamed_statement",
1406 /* 103 */ "basetype",
1407 /* 104 */ "expr",
1408 /* 105 */ "numproperty",
1409 /* 106 */ "edge",
1410 /* 107 */ "direction",
1411 /* 108 */ "dashproperty",
1412 /* 109 */ "colorproperty",
1413 /* 110 */ "locproperty",
1414 /* 111 */ "position",
1415 /* 112 */ "place",
1416 /* 113 */ "object",
1417 /* 114 */ "objectname",
1418 /* 115 */ "nth",
1419 /* 116 */ "textposition",
1420 /* 117 */ "rvalue",
1421 /* 118 */ "lvalue",
1422 /* 119 */ "even",
1423 /* 120 */ "relexpr",
1424 /* 121 */ "optrelexpr",
1425 /* 122 */ "document",
1426 /* 123 */ "print",
1427 /* 124 */ "prlist",
1428 /* 125 */ "pritem",
1429 /* 126 */ "prsep",
1430 /* 127 */ "attribute_list",
1431 /* 128 */ "savelist",
1432 /* 129 */ "alist",
1433 /* 130 */ "attribute",
1434 /* 131 */ "go",
1435 /* 132 */ "boolproperty",
1436 /* 133 */ "withclause",
1437 /* 134 */ "between",
1438 /* 135 */ "place2",
1439 };
1440 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1441
1442 #ifndef NDEBUG
1443 /* For tracing reduce actions, the names of all rules are required.
@@ -1498,11 +1504,11 @@
1504 /* 58 */ "boolproperty ::= INVIS",
1505 /* 59 */ "boolproperty ::= THICK",
1506 /* 60 */ "boolproperty ::= THIN",
1507 /* 61 */ "boolproperty ::= SOLID",
1508 /* 62 */ "textposition ::=",
1509 /* 63 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL",
1510 /* 64 */ "position ::= expr COMMA expr",
1511 /* 65 */ "position ::= place PLUS expr COMMA expr",
1512 /* 66 */ "position ::= place MINUS expr COMMA expr",
1513 /* 67 */ "position ::= place PLUS LP expr COMMA expr RP",
1514 /* 68 */ "position ::= place MINUS LP expr COMMA expr RP",
@@ -1716,24 +1722,24 @@
1722 ** Note: during a reduce, the only symbols destroyed are those
1723 ** which appear on the RHS of the rule, but which are *not* used
1724 ** inside the C code.
1725 */
1726 /********* Begin destructor definitions ***************************************/
1727 case 100: /* statement_list */
1728 {
1729 #line 510 "pikchr.y"
1730 pik_elist_free(p,(yypminor->yy235));
1731 #line 1756 "pikchr.c"
1732 }
1733 break;
1734 case 101: /* statement */
1735 case 102: /* unnamed_statement */
1736 case 103: /* basetype */
1737 {
1738 #line 512 "pikchr.y"
1739 pik_elem_free(p,(yypminor->yy162));
1740 #line 1765 "pikchr.c"
1741 }
1742 break;
1743 /********* End destructor definitions *****************************************/
1744 default: break; /* If no destructor action specified: do nothing */
1745 }
@@ -1947,14 +1953,14 @@
1953 #endif
1954 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1955 /* Here code is inserted which will execute if the parser
1956 ** stack every overflows */
1957 /******** Begin %stack_overflow code ******************************************/
1958 #line 544 "pikchr.y"
1959
1960 pik_error(p, 0, "parser stack overflow");
1961 #line 1986 "pikchr.c"
1962 /******** End %stack_overflow code ********************************************/
1963 pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
1964 pik_parserCTX_STORE
1965 }
1966
@@ -2022,166 +2028,166 @@
2028 }
2029
2030 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
2031 ** of that rule */
2032 static const YYCODETYPE yyRuleInfoLhs[] = {
2033 122, /* (0) document ::= statement_list */
2034 100, /* (1) statement_list ::= statement */
2035 100, /* (2) statement_list ::= statement_list EOL statement */
2036 101, /* (3) statement ::= */
2037 101, /* (4) statement ::= direction */
2038 101, /* (5) statement ::= lvalue ASSIGN rvalue */
2039 101, /* (6) statement ::= PLACENAME COLON unnamed_statement */
2040 101, /* (7) statement ::= PLACENAME COLON position */
2041 101, /* (8) statement ::= unnamed_statement */
2042 101, /* (9) statement ::= print prlist */
2043 101, /* (10) statement ::= ASSERT LP expr EQ expr RP */
2044 101, /* (11) statement ::= ASSERT LP position EQ position RP */
2045 101, /* (12) statement ::= DEFINE ID CODEBLOCK */
2046 117, /* (13) rvalue ::= PLACENAME */
2047 125, /* (14) pritem ::= FILL */
2048 125, /* (15) pritem ::= COLOR */
2049 125, /* (16) pritem ::= THICKNESS */
2050 125, /* (17) pritem ::= rvalue */
2051 125, /* (18) pritem ::= STRING */
2052 126, /* (19) prsep ::= COMMA */
2053 102, /* (20) unnamed_statement ::= basetype attribute_list */
2054 103, /* (21) basetype ::= CLASSNAME */
2055 103, /* (22) basetype ::= STRING textposition */
2056 103, /* (23) basetype ::= LB savelist statement_list RB */
2057 128, /* (24) savelist ::= */
2058 120, /* (25) relexpr ::= expr */
2059 120, /* (26) relexpr ::= expr PERCENT */
2060 121, /* (27) optrelexpr ::= */
2061 127, /* (28) attribute_list ::= relexpr alist */
2062 130, /* (29) attribute ::= numproperty relexpr */
2063 130, /* (30) attribute ::= dashproperty expr */
2064 130, /* (31) attribute ::= dashproperty */
2065 130, /* (32) attribute ::= colorproperty rvalue */
2066 130, /* (33) attribute ::= go direction optrelexpr */
2067 130, /* (34) attribute ::= go direction even position */
2068 130, /* (35) attribute ::= CLOSE */
2069 130, /* (36) attribute ::= CHOP */
2070 130, /* (37) attribute ::= FROM position */
2071 130, /* (38) attribute ::= TO position */
2072 130, /* (39) attribute ::= THEN */
2073 130, /* (40) attribute ::= THEN optrelexpr HEADING expr */
2074 130, /* (41) attribute ::= THEN optrelexpr EDGEPT */
2075 130, /* (42) attribute ::= GO optrelexpr HEADING expr */
2076 130, /* (43) attribute ::= GO optrelexpr EDGEPT */
2077 130, /* (44) attribute ::= AT position */
2078 130, /* (45) attribute ::= SAME */
2079 130, /* (46) attribute ::= SAME AS object */
2080 130, /* (47) attribute ::= STRING textposition */
2081 130, /* (48) attribute ::= FIT */
2082 130, /* (49) attribute ::= BEHIND object */
2083 133, /* (50) withclause ::= DOT_E edge AT position */
2084 133, /* (51) withclause ::= edge AT position */
2085 105, /* (52) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2086 132, /* (53) boolproperty ::= CW */
2087 132, /* (54) boolproperty ::= CCW */
2088 132, /* (55) boolproperty ::= LARROW */
2089 132, /* (56) boolproperty ::= RARROW */
2090 132, /* (57) boolproperty ::= LRARROW */
2091 132, /* (58) boolproperty ::= INVIS */
2092 132, /* (59) boolproperty ::= THICK */
2093 132, /* (60) boolproperty ::= THIN */
2094 132, /* (61) boolproperty ::= SOLID */
2095 116, /* (62) textposition ::= */
2096 116, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */
2097 111, /* (64) position ::= expr COMMA expr */
2098 111, /* (65) position ::= place PLUS expr COMMA expr */
2099 111, /* (66) position ::= place MINUS expr COMMA expr */
2100 111, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2101 111, /* (68) position ::= place MINUS LP expr COMMA expr RP */
2102 111, /* (69) position ::= LP position COMMA position RP */
2103 111, /* (70) position ::= LP position RP */
2104 111, /* (71) position ::= expr between position AND position */
2105 111, /* (72) position ::= expr LT position COMMA position GT */
2106 111, /* (73) position ::= expr ABOVE position */
2107 111, /* (74) position ::= expr BELOW position */
2108 111, /* (75) position ::= expr LEFT OF position */
2109 111, /* (76) position ::= expr RIGHT OF position */
2110 111, /* (77) position ::= expr ON HEADING EDGEPT OF position */
2111 111, /* (78) position ::= expr HEADING EDGEPT OF position */
2112 111, /* (79) position ::= expr EDGEPT OF position */
2113 111, /* (80) position ::= expr ON HEADING expr FROM position */
2114 111, /* (81) position ::= expr HEADING expr FROM position */
2115 112, /* (82) place ::= edge OF object */
2116 135, /* (83) place2 ::= object */
2117 135, /* (84) place2 ::= object DOT_E edge */
2118 135, /* (85) place2 ::= NTH VERTEX OF object */
2119 113, /* (86) object ::= nth */
2120 113, /* (87) object ::= nth OF|IN object */
2121 114, /* (88) objectname ::= THIS */
2122 114, /* (89) objectname ::= PLACENAME */
2123 114, /* (90) objectname ::= objectname DOT_U PLACENAME */
2124 115, /* (91) nth ::= NTH CLASSNAME */
2125 115, /* (92) nth ::= NTH LAST CLASSNAME */
2126 115, /* (93) nth ::= LAST CLASSNAME */
2127 115, /* (94) nth ::= LAST */
2128 115, /* (95) nth ::= NTH LB RB */
2129 115, /* (96) nth ::= NTH LAST LB RB */
2130 115, /* (97) nth ::= LAST LB RB */
2131 104, /* (98) expr ::= expr PLUS expr */
2132 104, /* (99) expr ::= expr MINUS expr */
2133 104, /* (100) expr ::= expr STAR expr */
2134 104, /* (101) expr ::= expr SLASH expr */
2135 104, /* (102) expr ::= MINUS expr */
2136 104, /* (103) expr ::= PLUS expr */
2137 104, /* (104) expr ::= LP expr RP */
2138 104, /* (105) expr ::= LP FILL|COLOR|THICKNESS RP */
2139 104, /* (106) expr ::= NUMBER */
2140 104, /* (107) expr ::= ID */
2141 104, /* (108) expr ::= FUNC1 LP expr RP */
2142 104, /* (109) expr ::= FUNC2 LP expr COMMA expr RP */
2143 104, /* (110) expr ::= DIST LP position COMMA position RP */
2144 104, /* (111) expr ::= place2 DOT_XY X */
2145 104, /* (112) expr ::= place2 DOT_XY Y */
2146 104, /* (113) expr ::= object DOT_L numproperty */
2147 104, /* (114) expr ::= object DOT_L dashproperty */
2148 104, /* (115) expr ::= object DOT_L colorproperty */
2149 118, /* (116) lvalue ::= ID */
2150 118, /* (117) lvalue ::= FILL */
2151 118, /* (118) lvalue ::= COLOR */
2152 118, /* (119) lvalue ::= THICKNESS */
2153 117, /* (120) rvalue ::= expr */
2154 123, /* (121) print ::= PRINT */
2155 124, /* (122) prlist ::= pritem */
2156 124, /* (123) prlist ::= prlist prsep pritem */
2157 107, /* (124) direction ::= UP */
2158 107, /* (125) direction ::= DOWN */
2159 107, /* (126) direction ::= LEFT */
2160 107, /* (127) direction ::= RIGHT */
2161 121, /* (128) optrelexpr ::= relexpr */
2162 127, /* (129) attribute_list ::= alist */
2163 129, /* (130) alist ::= */
2164 129, /* (131) alist ::= alist attribute */
2165 130, /* (132) attribute ::= boolproperty */
2166 130, /* (133) attribute ::= WITH withclause */
2167 131, /* (134) go ::= GO */
2168 131, /* (135) go ::= */
2169 119, /* (136) even ::= UNTIL EVEN WITH */
2170 119, /* (137) even ::= EVEN WITH */
2171 108, /* (138) dashproperty ::= DOTTED */
2172 108, /* (139) dashproperty ::= DASHED */
2173 109, /* (140) colorproperty ::= FILL */
2174 109, /* (141) colorproperty ::= COLOR */
2175 111, /* (142) position ::= place */
2176 134, /* (143) between ::= WAY BETWEEN */
2177 134, /* (144) between ::= BETWEEN */
2178 134, /* (145) between ::= OF THE WAY BETWEEN */
2179 112, /* (146) place ::= place2 */
2180 106, /* (147) edge ::= CENTER */
2181 106, /* (148) edge ::= EDGEPT */
2182 106, /* (149) edge ::= TOP */
2183 106, /* (150) edge ::= BOTTOM */
2184 106, /* (151) edge ::= START */
2185 106, /* (152) edge ::= END */
2186 106, /* (153) edge ::= RIGHT */
2187 106, /* (154) edge ::= LEFT */
2188 113, /* (155) object ::= objectname */
2189 };
2190
2191 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2192 ** of symbols on the right-hand side of that rule. */
2193 static const signed char yyRuleInfoNRhs[] = {
@@ -2246,11 +2252,11 @@
2252 -1, /* (58) boolproperty ::= INVIS */
2253 -1, /* (59) boolproperty ::= THICK */
2254 -1, /* (60) boolproperty ::= THIN */
2255 -1, /* (61) boolproperty ::= SOLID */
2256 0, /* (62) textposition ::= */
2257 -2, /* (63) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */
2258 -3, /* (64) position ::= expr COMMA expr */
2259 -5, /* (65) position ::= place PLUS expr COMMA expr */
2260 -5, /* (66) position ::= place MINUS expr COMMA expr */
2261 -7, /* (67) position ::= place PLUS LP expr COMMA expr RP */
2262 -7, /* (68) position ::= place MINUS LP expr COMMA expr RP */
@@ -2381,620 +2387,620 @@
2387 ** break;
2388 */
2389 /********** Begin reduce actions **********************************************/
2390 YYMINORTYPE yylhsminor;
2391 case 0: /* document ::= statement_list */
2392 #line 548 "pikchr.y"
2393 {pik_render(p,yymsp[0].minor.yy235);}
2394 #line 2419 "pikchr.c"
2395 break;
2396 case 1: /* statement_list ::= statement */
2397 #line 551 "pikchr.y"
2398 { yylhsminor.yy235 = pik_elist_append(p,0,yymsp[0].minor.yy162); }
2399 #line 2424 "pikchr.c"
2400 yymsp[0].minor.yy235 = yylhsminor.yy235;
2401 break;
2402 case 2: /* statement_list ::= statement_list EOL statement */
2403 #line 553 "pikchr.y"
2404 { yylhsminor.yy235 = pik_elist_append(p,yymsp[-2].minor.yy235,yymsp[0].minor.yy162); }
2405 #line 2430 "pikchr.c"
2406 yymsp[-2].minor.yy235 = yylhsminor.yy235;
2407 break;
2408 case 3: /* statement ::= */
2409 #line 556 "pikchr.y"
2410 { yymsp[1].minor.yy162 = 0; }
2411 #line 2436 "pikchr.c"
2412 break;
2413 case 4: /* statement ::= direction */
2414 #line 557 "pikchr.y"
2415 { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy162=0; }
2416 #line 2441 "pikchr.c"
2417 yymsp[0].minor.yy162 = yylhsminor.yy162;
2418 break;
2419 case 5: /* statement ::= lvalue ASSIGN rvalue */
2420 #line 558 "pikchr.y"
2421 {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy21,&yymsp[-1].minor.yy0); yylhsminor.yy162=0;}
2422 #line 2447 "pikchr.c"
2423 yymsp[-2].minor.yy162 = yylhsminor.yy162;
2424 break;
2425 case 6: /* statement ::= PLACENAME COLON unnamed_statement */
2426 #line 560 "pikchr.y"
2427 { yylhsminor.yy162 = yymsp[0].minor.yy162; pik_elem_setname(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0); }
2428 #line 2453 "pikchr.c"
2429 yymsp[-2].minor.yy162 = yylhsminor.yy162;
2430 break;
2431 case 7: /* statement ::= PLACENAME COLON position */
2432 #line 562 "pikchr.y"
2433 { yylhsminor.yy162 = pik_elem_new(p,0,0,0);
2434 if(yylhsminor.yy162){ yylhsminor.yy162->ptAt = yymsp[0].minor.yy63; pik_elem_setname(p,yylhsminor.yy162,&yymsp[-2].minor.yy0); }}
2435 #line 2460 "pikchr.c"
2436 yymsp[-2].minor.yy162 = yylhsminor.yy162;
2437 break;
2438 case 8: /* statement ::= unnamed_statement */
2439 #line 564 "pikchr.y"
2440 {yylhsminor.yy162 = yymsp[0].minor.yy162;}
2441 #line 2466 "pikchr.c"
2442 yymsp[0].minor.yy162 = yylhsminor.yy162;
2443 break;
2444 case 9: /* statement ::= print prlist */
2445 #line 565 "pikchr.y"
2446 {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy162=0;}
2447 #line 2472 "pikchr.c"
2448 break;
2449 case 10: /* statement ::= ASSERT LP expr EQ expr RP */
2450 #line 570 "pikchr.y"
2451 {yymsp[-5].minor.yy162=pik_assert(p,yymsp[-3].minor.yy21,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy21);}
2452 #line 2477 "pikchr.c"
2453 break;
2454 case 11: /* statement ::= ASSERT LP position EQ position RP */
 
 
 
 
 
2455 #line 572 "pikchr.y"
2456 {yymsp[-5].minor.yy162=pik_position_assert(p,&yymsp[-3].minor.yy63,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy63);}
2457 #line 2482 "pikchr.c"
2458 break;
2459 case 12: /* statement ::= DEFINE ID CODEBLOCK */
2460 #line 573 "pikchr.y"
2461 {yymsp[-2].minor.yy162=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2462 #line 2487 "pikchr.c"
2463 break;
2464 case 13: /* rvalue ::= PLACENAME */
2465 #line 584 "pikchr.y"
2466 {yylhsminor.yy21 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
2467 #line 2492 "pikchr.c"
2468 yymsp[0].minor.yy21 = yylhsminor.yy21;
2469 break;
2470 case 14: /* pritem ::= FILL */
2471 case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15);
2472 case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16);
2473 #line 589 "pikchr.y"
2474 {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
2475 #line 2500 "pikchr.c"
2476 break;
2477 case 17: /* pritem ::= rvalue */
2478 #line 592 "pikchr.y"
2479 {pik_append_num(p,"",yymsp[0].minor.yy21);}
2480 #line 2505 "pikchr.c"
2481 break;
2482 case 18: /* pritem ::= STRING */
2483 #line 593 "pikchr.y"
2484 {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
2485 #line 2510 "pikchr.c"
2486 break;
2487 case 19: /* prsep ::= COMMA */
2488 #line 594 "pikchr.y"
2489 {pik_append(p, " ", 1);}
2490 #line 2515 "pikchr.c"
2491 break;
2492 case 20: /* unnamed_statement ::= basetype attribute_list */
2493 #line 597 "pikchr.y"
2494 {yylhsminor.yy162 = yymsp[-1].minor.yy162; pik_after_adding_attributes(p,yylhsminor.yy162);}
2495 #line 2520 "pikchr.c"
2496 yymsp[-1].minor.yy162 = yylhsminor.yy162;
2497 break;
2498 case 21: /* basetype ::= CLASSNAME */
2499 #line 599 "pikchr.y"
2500 {yylhsminor.yy162 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
2501 #line 2526 "pikchr.c"
2502 yymsp[0].minor.yy162 = yylhsminor.yy162;
2503 break;
2504 case 22: /* basetype ::= STRING textposition */
2505 #line 601 "pikchr.y"
2506 {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy188; yylhsminor.yy162 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
2507 #line 2532 "pikchr.c"
2508 yymsp[-1].minor.yy162 = yylhsminor.yy162;
2509 break;
2510 case 23: /* basetype ::= LB savelist statement_list RB */
2511 #line 603 "pikchr.y"
2512 { p->list = yymsp[-2].minor.yy235; yymsp[-3].minor.yy162 = pik_elem_new(p,0,0,yymsp[-1].minor.yy235); if(yymsp[-3].minor.yy162) yymsp[-3].minor.yy162->errTok = yymsp[0].minor.yy0; }
2513 #line 2538 "pikchr.c"
2514 break;
2515 case 24: /* savelist ::= */
2516 #line 608 "pikchr.y"
2517 {yymsp[1].minor.yy235 = p->list; p->list = 0;}
2518 #line 2543 "pikchr.c"
2519 break;
2520 case 25: /* relexpr ::= expr */
2521 #line 615 "pikchr.y"
2522 {yylhsminor.yy72.rAbs = yymsp[0].minor.yy21; yylhsminor.yy72.rRel = 0;}
2523 #line 2548 "pikchr.c"
2524 yymsp[0].minor.yy72 = yylhsminor.yy72;
2525 break;
2526 case 26: /* relexpr ::= expr PERCENT */
2527 #line 616 "pikchr.y"
2528 {yylhsminor.yy72.rAbs = 0; yylhsminor.yy72.rRel = yymsp[-1].minor.yy21/100;}
2529 #line 2554 "pikchr.c"
2530 yymsp[-1].minor.yy72 = yylhsminor.yy72;
2531 break;
2532 case 27: /* optrelexpr ::= */
2533 #line 618 "pikchr.y"
2534 {yymsp[1].minor.yy72.rAbs = 0; yymsp[1].minor.yy72.rRel = 1.0;}
2535 #line 2560 "pikchr.c"
2536 break;
2537 case 28: /* attribute_list ::= relexpr alist */
2538 #line 620 "pikchr.y"
2539 {pik_add_direction(p,0,&yymsp[-1].minor.yy72);}
2540 #line 2565 "pikchr.c"
2541 break;
2542 case 29: /* attribute ::= numproperty relexpr */
2543 #line 624 "pikchr.y"
2544 { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy72); }
2545 #line 2570 "pikchr.c"
2546 break;
2547 case 30: /* attribute ::= dashproperty expr */
2548 #line 625 "pikchr.y"
2549 { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy21); }
2550 #line 2575 "pikchr.c"
2551 break;
2552 case 31: /* attribute ::= dashproperty */
2553 #line 626 "pikchr.y"
2554 { pik_set_dashed(p,&yymsp[0].minor.yy0,0); }
2555 #line 2580 "pikchr.c"
2556 break;
2557 case 32: /* attribute ::= colorproperty rvalue */
2558 #line 627 "pikchr.y"
2559 { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy21); }
2560 #line 2585 "pikchr.c"
2561 break;
2562 case 33: /* attribute ::= go direction optrelexpr */
2563 #line 628 "pikchr.y"
2564 { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy72);}
2565 #line 2590 "pikchr.c"
2566 break;
2567 case 34: /* attribute ::= go direction even position */
2568 #line 629 "pikchr.y"
2569 {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy63);}
2570 #line 2595 "pikchr.c"
2571 break;
2572 case 35: /* attribute ::= CLOSE */
2573 #line 630 "pikchr.y"
2574 { pik_close_path(p,&yymsp[0].minor.yy0); }
2575 #line 2600 "pikchr.c"
2576 break;
2577 case 36: /* attribute ::= CHOP */
2578 #line 631 "pikchr.y"
2579 { p->cur->bChop = 1; }
2580 #line 2605 "pikchr.c"
2581 break;
2582 case 37: /* attribute ::= FROM position */
2583 #line 632 "pikchr.y"
2584 { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy63); }
2585 #line 2610 "pikchr.c"
2586 break;
2587 case 38: /* attribute ::= TO position */
2588 #line 633 "pikchr.y"
2589 { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy63); }
2590 #line 2615 "pikchr.c"
2591 break;
2592 case 39: /* attribute ::= THEN */
2593 #line 634 "pikchr.y"
2594 { pik_then(p, &yymsp[0].minor.yy0, p->cur); }
2595 #line 2620 "pikchr.c"
2596 break;
2597 case 40: /* attribute ::= THEN optrelexpr HEADING expr */
2598 case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42);
2599 #line 636 "pikchr.y"
2600 {pik_move_hdg(p,&yymsp[-2].minor.yy72,&yymsp[-1].minor.yy0,yymsp[0].minor.yy21,0,&yymsp[-3].minor.yy0);}
2601 #line 2626 "pikchr.c"
2602 break;
2603 case 41: /* attribute ::= THEN optrelexpr EDGEPT */
2604 case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43);
2605 #line 637 "pikchr.y"
2606 {pik_move_hdg(p,&yymsp[-1].minor.yy72,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);}
2607 #line 2632 "pikchr.c"
2608 break;
2609 case 44: /* attribute ::= AT position */
2610 #line 642 "pikchr.y"
2611 { pik_set_at(p,0,&yymsp[0].minor.yy63,&yymsp[-1].minor.yy0); }
2612 #line 2637 "pikchr.c"
2613 break;
2614 case 45: /* attribute ::= SAME */
2615 #line 644 "pikchr.y"
2616 {pik_same(p,0,&yymsp[0].minor.yy0);}
2617 #line 2642 "pikchr.c"
2618 break;
2619 case 46: /* attribute ::= SAME AS object */
2620 #line 645 "pikchr.y"
2621 {pik_same(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);}
2622 #line 2647 "pikchr.c"
2623 break;
2624 case 47: /* attribute ::= STRING textposition */
2625 #line 646 "pikchr.y"
2626 {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy188);}
2627 #line 2652 "pikchr.c"
2628 break;
2629 case 48: /* attribute ::= FIT */
2630 #line 647 "pikchr.y"
2631 {pik_size_to_fit(p,&yymsp[0].minor.yy0,3); }
2632 #line 2657 "pikchr.c"
2633 break;
2634 case 49: /* attribute ::= BEHIND object */
2635 #line 648 "pikchr.y"
2636 {pik_behind(p,yymsp[0].minor.yy162);}
2637 #line 2662 "pikchr.c"
2638 break;
2639 case 50: /* withclause ::= DOT_E edge AT position */
2640 case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51);
2641 #line 656 "pikchr.y"
2642 { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy63,&yymsp[-1].minor.yy0); }
2643 #line 2668 "pikchr.c"
2644 break;
2645 case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
2646 #line 660 "pikchr.y"
2647 {yylhsminor.yy0 = yymsp[0].minor.yy0;}
2648 #line 2673 "pikchr.c"
2649 yymsp[0].minor.yy0 = yylhsminor.yy0;
2650 break;
2651 case 53: /* boolproperty ::= CW */
2652 #line 671 "pikchr.y"
2653 {p->cur->cw = 1;}
2654 #line 2679 "pikchr.c"
2655 break;
2656 case 54: /* boolproperty ::= CCW */
2657 #line 672 "pikchr.y"
2658 {p->cur->cw = 0;}
2659 #line 2684 "pikchr.c"
2660 break;
2661 case 55: /* boolproperty ::= LARROW */
2662 #line 673 "pikchr.y"
2663 {p->cur->larrow=1; p->cur->rarrow=0; }
2664 #line 2689 "pikchr.c"
2665 break;
2666 case 56: /* boolproperty ::= RARROW */
2667 #line 674 "pikchr.y"
2668 {p->cur->larrow=0; p->cur->rarrow=1; }
2669 #line 2694 "pikchr.c"
2670 break;
2671 case 57: /* boolproperty ::= LRARROW */
2672 #line 675 "pikchr.y"
2673 {p->cur->larrow=1; p->cur->rarrow=1; }
2674 #line 2699 "pikchr.c"
2675 break;
2676 case 58: /* boolproperty ::= INVIS */
2677 #line 676 "pikchr.y"
2678 {p->cur->sw = 0.0;}
2679 #line 2704 "pikchr.c"
2680 break;
2681 case 59: /* boolproperty ::= THICK */
2682 #line 677 "pikchr.y"
2683 {p->cur->sw *= 1.5;}
2684 #line 2709 "pikchr.c"
2685 break;
2686 case 60: /* boolproperty ::= THIN */
2687 #line 678 "pikchr.y"
2688 {p->cur->sw *= 0.67;}
2689 #line 2714 "pikchr.c"
2690 break;
2691 case 61: /* boolproperty ::= SOLID */
2692 #line 679 "pikchr.y"
2693 {p->cur->sw = pik_value(p,"thickness",9,0);
2694 p->cur->dotted = p->cur->dashed = 0.0;}
2695 #line 2720 "pikchr.c"
2696 break;
2697 case 62: /* textposition ::= */
2698 #line 682 "pikchr.y"
2699 {yymsp[1].minor.yy188 = 0;}
2700 #line 2725 "pikchr.c"
2701 break;
2702 case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */
2703 #line 685 "pikchr.y"
2704 {yylhsminor.yy188 = (short int)pik_text_position(yymsp[-1].minor.yy188,&yymsp[0].minor.yy0);}
2705 #line 2730 "pikchr.c"
2706 yymsp[-1].minor.yy188 = yylhsminor.yy188;
2707 break;
2708 case 64: /* position ::= expr COMMA expr */
2709 #line 688 "pikchr.y"
2710 {yylhsminor.yy63.x=yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[0].minor.yy21;}
2711 #line 2736 "pikchr.c"
2712 yymsp[-2].minor.yy63 = yylhsminor.yy63;
2713 break;
2714 case 65: /* position ::= place PLUS expr COMMA expr */
2715 #line 690 "pikchr.y"
2716 {yylhsminor.yy63.x=yymsp[-4].minor.yy63.x+yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[-4].minor.yy63.y+yymsp[0].minor.yy21;}
2717 #line 2742 "pikchr.c"
2718 yymsp[-4].minor.yy63 = yylhsminor.yy63;
2719 break;
2720 case 66: /* position ::= place MINUS expr COMMA expr */
2721 #line 691 "pikchr.y"
2722 {yylhsminor.yy63.x=yymsp[-4].minor.yy63.x-yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[-4].minor.yy63.y-yymsp[0].minor.yy21;}
2723 #line 2748 "pikchr.c"
2724 yymsp[-4].minor.yy63 = yylhsminor.yy63;
2725 break;
2726 case 67: /* position ::= place PLUS LP expr COMMA expr RP */
2727 #line 693 "pikchr.y"
2728 {yylhsminor.yy63.x=yymsp[-6].minor.yy63.x+yymsp[-3].minor.yy21; yylhsminor.yy63.y=yymsp[-6].minor.yy63.y+yymsp[-1].minor.yy21;}
2729 #line 2754 "pikchr.c"
2730 yymsp[-6].minor.yy63 = yylhsminor.yy63;
2731 break;
2732 case 68: /* position ::= place MINUS LP expr COMMA expr RP */
2733 #line 695 "pikchr.y"
2734 {yylhsminor.yy63.x=yymsp[-6].minor.yy63.x-yymsp[-3].minor.yy21; yylhsminor.yy63.y=yymsp[-6].minor.yy63.y-yymsp[-1].minor.yy21;}
2735 #line 2760 "pikchr.c"
2736 yymsp[-6].minor.yy63 = yylhsminor.yy63;
2737 break;
2738 case 69: /* position ::= LP position COMMA position RP */
2739 #line 696 "pikchr.y"
2740 {yymsp[-4].minor.yy63.x=yymsp[-3].minor.yy63.x; yymsp[-4].minor.yy63.y=yymsp[-1].minor.yy63.y;}
2741 #line 2766 "pikchr.c"
2742 break;
2743 case 70: /* position ::= LP position RP */
2744 #line 697 "pikchr.y"
2745 {yymsp[-2].minor.yy63=yymsp[-1].minor.yy63;}
2746 #line 2771 "pikchr.c"
2747 break;
2748 case 71: /* position ::= expr between position AND position */
2749 #line 699 "pikchr.y"
2750 {yylhsminor.yy63 = pik_position_between(yymsp[-4].minor.yy21,yymsp[-2].minor.yy63,yymsp[0].minor.yy63);}
2751 #line 2776 "pikchr.c"
2752 yymsp[-4].minor.yy63 = yylhsminor.yy63;
2753 break;
2754 case 72: /* position ::= expr LT position COMMA position GT */
2755 #line 701 "pikchr.y"
2756 {yylhsminor.yy63 = pik_position_between(yymsp[-5].minor.yy21,yymsp[-3].minor.yy63,yymsp[-1].minor.yy63);}
2757 #line 2782 "pikchr.c"
2758 yymsp[-5].minor.yy63 = yylhsminor.yy63;
2759 break;
2760 case 73: /* position ::= expr ABOVE position */
2761 #line 702 "pikchr.y"
2762 {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.y += yymsp[-2].minor.yy21;}
2763 #line 2788 "pikchr.c"
2764 yymsp[-2].minor.yy63 = yylhsminor.yy63;
2765 break;
2766 case 74: /* position ::= expr BELOW position */
2767 #line 703 "pikchr.y"
2768 {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.y -= yymsp[-2].minor.yy21;}
2769 #line 2794 "pikchr.c"
2770 yymsp[-2].minor.yy63 = yylhsminor.yy63;
2771 break;
2772 case 75: /* position ::= expr LEFT OF position */
2773 #line 704 "pikchr.y"
2774 {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.x -= yymsp[-3].minor.yy21;}
2775 #line 2800 "pikchr.c"
2776 yymsp[-3].minor.yy63 = yylhsminor.yy63;
2777 break;
2778 case 76: /* position ::= expr RIGHT OF position */
2779 #line 705 "pikchr.y"
2780 {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.x += yymsp[-3].minor.yy21;}
2781 #line 2806 "pikchr.c"
2782 yymsp[-3].minor.yy63 = yylhsminor.yy63;
2783 break;
2784 case 77: /* position ::= expr ON HEADING EDGEPT OF position */
2785 #line 707 "pikchr.y"
2786 {yylhsminor.yy63 = pik_position_at_hdg(yymsp[-5].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);}
2787 #line 2812 "pikchr.c"
2788 yymsp[-5].minor.yy63 = yylhsminor.yy63;
2789 break;
2790 case 78: /* position ::= expr HEADING EDGEPT OF position */
2791 #line 709 "pikchr.y"
2792 {yylhsminor.yy63 = pik_position_at_hdg(yymsp[-4].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);}
2793 #line 2818 "pikchr.c"
2794 yymsp[-4].minor.yy63 = yylhsminor.yy63;
2795 break;
2796 case 79: /* position ::= expr EDGEPT OF position */
2797 #line 711 "pikchr.y"
2798 {yylhsminor.yy63 = pik_position_at_hdg(yymsp[-3].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);}
2799 #line 2824 "pikchr.c"
2800 yymsp[-3].minor.yy63 = yylhsminor.yy63;
2801 break;
2802 case 80: /* position ::= expr ON HEADING expr FROM position */
2803 #line 713 "pikchr.y"
2804 {yylhsminor.yy63 = pik_position_at_angle(yymsp[-5].minor.yy21,yymsp[-2].minor.yy21,yymsp[0].minor.yy63);}
2805 #line 2830 "pikchr.c"
2806 yymsp[-5].minor.yy63 = yylhsminor.yy63;
2807 break;
2808 case 81: /* position ::= expr HEADING expr FROM position */
2809 #line 715 "pikchr.y"
2810 {yylhsminor.yy63 = pik_position_at_angle(yymsp[-4].minor.yy21,yymsp[-2].minor.yy21,yymsp[0].minor.yy63);}
2811 #line 2836 "pikchr.c"
2812 yymsp[-4].minor.yy63 = yylhsminor.yy63;
2813 break;
2814 case 82: /* place ::= edge OF object */
2815 #line 727 "pikchr.y"
2816 {yylhsminor.yy63 = pik_place_of_elem(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);}
2817 #line 2842 "pikchr.c"
2818 yymsp[-2].minor.yy63 = yylhsminor.yy63;
2819 break;
2820 case 83: /* place2 ::= object */
2821 #line 728 "pikchr.y"
2822 {yylhsminor.yy63 = pik_place_of_elem(p,yymsp[0].minor.yy162,0);}
2823 #line 2848 "pikchr.c"
2824 yymsp[0].minor.yy63 = yylhsminor.yy63;
2825 break;
2826 case 84: /* place2 ::= object DOT_E edge */
2827 #line 729 "pikchr.y"
2828 {yylhsminor.yy63 = pik_place_of_elem(p,yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);}
2829 #line 2854 "pikchr.c"
2830 yymsp[-2].minor.yy63 = yylhsminor.yy63;
2831 break;
2832 case 85: /* place2 ::= NTH VERTEX OF object */
2833 #line 730 "pikchr.y"
2834 {yylhsminor.yy63 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy162);}
2835 #line 2860 "pikchr.c"
2836 yymsp[-3].minor.yy63 = yylhsminor.yy63;
2837 break;
2838 case 86: /* object ::= nth */
2839 #line 742 "pikchr.y"
2840 {yylhsminor.yy162 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
2841 #line 2866 "pikchr.c"
2842 yymsp[0].minor.yy162 = yylhsminor.yy162;
2843 break;
2844 case 87: /* object ::= nth OF|IN object */
2845 #line 743 "pikchr.y"
2846 {yylhsminor.yy162 = pik_find_nth(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);}
2847 #line 2872 "pikchr.c"
2848 yymsp[-2].minor.yy162 = yylhsminor.yy162;
2849 break;
2850 case 88: /* objectname ::= THIS */
2851 #line 745 "pikchr.y"
2852 {yymsp[0].minor.yy162 = p->cur;}
2853 #line 2878 "pikchr.c"
2854 break;
2855 case 89: /* objectname ::= PLACENAME */
2856 #line 746 "pikchr.y"
2857 {yylhsminor.yy162 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
2858 #line 2883 "pikchr.c"
2859 yymsp[0].minor.yy162 = yylhsminor.yy162;
2860 break;
2861 case 90: /* objectname ::= objectname DOT_U PLACENAME */
2862 #line 748 "pikchr.y"
2863 {yylhsminor.yy162 = pik_find_byname(p,yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);}
2864 #line 2889 "pikchr.c"
2865 yymsp[-2].minor.yy162 = yylhsminor.yy162;
2866 break;
2867 case 91: /* nth ::= NTH CLASSNAME */
2868 #line 750 "pikchr.y"
2869 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
2870 #line 2895 "pikchr.c"
2871 yymsp[-1].minor.yy0 = yylhsminor.yy0;
2872 break;
2873 case 92: /* nth ::= NTH LAST CLASSNAME */
2874 #line 751 "pikchr.y"
2875 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
2876 #line 2901 "pikchr.c"
2877 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2878 break;
2879 case 93: /* nth ::= LAST CLASSNAME */
2880 #line 752 "pikchr.y"
2881 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
2882 #line 2907 "pikchr.c"
2883 break;
2884 case 94: /* nth ::= LAST */
2885 #line 753 "pikchr.y"
2886 {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
2887 #line 2912 "pikchr.c"
2888 yymsp[0].minor.yy0 = yylhsminor.yy0;
2889 break;
2890 case 95: /* nth ::= NTH LB RB */
2891 #line 754 "pikchr.y"
2892 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
2893 #line 2918 "pikchr.c"
2894 yymsp[-2].minor.yy0 = yylhsminor.yy0;
2895 break;
2896 case 96: /* nth ::= NTH LAST LB RB */
2897 #line 755 "pikchr.y"
2898 {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
2899 #line 2924 "pikchr.c"
2900 yymsp[-3].minor.yy0 = yylhsminor.yy0;
2901 break;
2902 case 97: /* nth ::= LAST LB RB */
2903 #line 756 "pikchr.y"
2904 {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
2905 #line 2930 "pikchr.c"
2906 break;
2907 case 98: /* expr ::= expr PLUS expr */
2908 #line 758 "pikchr.y"
2909 {yylhsminor.yy21=yymsp[-2].minor.yy21+yymsp[0].minor.yy21;}
2910 #line 2935 "pikchr.c"
2911 yymsp[-2].minor.yy21 = yylhsminor.yy21;
2912 break;
2913 case 99: /* expr ::= expr MINUS expr */
2914 #line 759 "pikchr.y"
2915 {yylhsminor.yy21=yymsp[-2].minor.yy21-yymsp[0].minor.yy21;}
2916 #line 2941 "pikchr.c"
2917 yymsp[-2].minor.yy21 = yylhsminor.yy21;
2918 break;
2919 case 100: /* expr ::= expr STAR expr */
2920 #line 760 "pikchr.y"
2921 {yylhsminor.yy21=yymsp[-2].minor.yy21*yymsp[0].minor.yy21;}
2922 #line 2947 "pikchr.c"
2923 yymsp[-2].minor.yy21 = yylhsminor.yy21;
2924 break;
2925 case 101: /* expr ::= expr SLASH expr */
2926 #line 761 "pikchr.y"
2927 {
2928 if( yymsp[0].minor.yy21==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy21 = 0.0; }
2929 else{ yylhsminor.yy21 = yymsp[-2].minor.yy21/yymsp[0].minor.yy21; }
2930 }
2931 #line 2956 "pikchr.c"
2932 yymsp[-2].minor.yy21 = yylhsminor.yy21;
2933 break;
2934 case 102: /* expr ::= MINUS expr */
2935 #line 765 "pikchr.y"
2936 {yymsp[-1].minor.yy21=-yymsp[0].minor.yy21;}
2937 #line 2962 "pikchr.c"
2938 break;
2939 case 103: /* expr ::= PLUS expr */
2940 #line 766 "pikchr.y"
2941 {yymsp[-1].minor.yy21=yymsp[0].minor.yy21;}
2942 #line 2967 "pikchr.c"
2943 break;
2944 case 104: /* expr ::= LP expr RP */
2945 #line 767 "pikchr.y"
2946 {yymsp[-2].minor.yy21=yymsp[-1].minor.yy21;}
2947 #line 2972 "pikchr.c"
2948 break;
2949 case 105: /* expr ::= LP FILL|COLOR|THICKNESS RP */
2950 #line 768 "pikchr.y"
2951 {yymsp[-2].minor.yy21=pik_get_var(p,&yymsp[-1].minor.yy0);}
2952 #line 2977 "pikchr.c"
2953 break;
2954 case 106: /* expr ::= NUMBER */
2955 #line 769 "pikchr.y"
2956 {yylhsminor.yy21=pik_atof(&yymsp[0].minor.yy0);}
2957 #line 2982 "pikchr.c"
2958 yymsp[0].minor.yy21 = yylhsminor.yy21;
2959 break;
2960 case 107: /* expr ::= ID */
2961 #line 770 "pikchr.y"
2962 {yylhsminor.yy21=pik_get_var(p,&yymsp[0].minor.yy0);}
2963 #line 2988 "pikchr.c"
2964 yymsp[0].minor.yy21 = yylhsminor.yy21;
2965 break;
2966 case 108: /* expr ::= FUNC1 LP expr RP */
2967 #line 771 "pikchr.y"
2968 {yylhsminor.yy21 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy21,0.0);}
2969 #line 2994 "pikchr.c"
2970 yymsp[-3].minor.yy21 = yylhsminor.yy21;
2971 break;
2972 case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */
2973 #line 772 "pikchr.y"
2974 {yylhsminor.yy21 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy21,yymsp[-1].minor.yy21);}
2975 #line 3000 "pikchr.c"
2976 yymsp[-5].minor.yy21 = yylhsminor.yy21;
2977 break;
2978 case 110: /* expr ::= DIST LP position COMMA position RP */
2979 #line 773 "pikchr.y"
2980 {yymsp[-5].minor.yy21 = pik_dist(&yymsp[-3].minor.yy63,&yymsp[-1].minor.yy63);}
2981 #line 3006 "pikchr.c"
2982 break;
2983 case 111: /* expr ::= place2 DOT_XY X */
2984 #line 774 "pikchr.y"
2985 {yylhsminor.yy21 = yymsp[-2].minor.yy63.x;}
2986 #line 3011 "pikchr.c"
2987 yymsp[-2].minor.yy21 = yylhsminor.yy21;
2988 break;
2989 case 112: /* expr ::= place2 DOT_XY Y */
2990 #line 775 "pikchr.y"
2991 {yylhsminor.yy21 = yymsp[-2].minor.yy63.y;}
2992 #line 3017 "pikchr.c"
2993 yymsp[-2].minor.yy21 = yylhsminor.yy21;
2994 break;
2995 case 113: /* expr ::= object DOT_L numproperty */
2996 case 114: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==114);
2997 case 115: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==115);
2998 #line 776 "pikchr.y"
2999 {yylhsminor.yy21=pik_property_of(yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);}
3000 #line 3025 "pikchr.c"
3001 yymsp[-2].minor.yy21 = yylhsminor.yy21;
3002 break;
3003 default:
3004 /* (116) lvalue ::= ID */ yytestcase(yyruleno==116);
3005 /* (117) lvalue ::= FILL */ yytestcase(yyruleno==117);
3006 /* (118) lvalue ::= COLOR */ yytestcase(yyruleno==118);
@@ -3092,19 +3098,19 @@
3098 ){
3099 pik_parserARG_FETCH
3100 pik_parserCTX_FETCH
3101 #define TOKEN yyminor
3102 /************ Begin %syntax_error code ****************************************/
3103 #line 536 "pikchr.y"
3104
3105 if( TOKEN.z && TOKEN.z[0] ){
3106 pik_error(p, &TOKEN, "syntax error");
3107 }else{
3108 pik_error(p, 0, "syntax error");
3109 }
3110 UNUSED_PARAMETER(yymajor);
3111 #line 3136 "pikchr.c"
3112 /************ End %syntax_error code ******************************************/
3113 pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
3114 pik_parserCTX_STORE
3115 }
3116
@@ -3376,11 +3382,11 @@
3382 #else
3383 (void)iToken;
3384 return 0;
3385 #endif
3386 }
3387 #line 781 "pikchr.y"
3388
3389
3390
3391 /* Chart of the 148 official CSS color names with their
3392 ** corresponding RGB values thru Color Module Level 4:
@@ -4978,14 +4984,16 @@
4984 if( t->eCode & TP_RJUST ) nx += jw;
4985
4986 if( pBox!=0 ){
4987 /* If pBox is not NULL, do not draw any <text>. Instead, just expand
4988 ** pBox to include the text */
4989 PNum cw = pik_text_length(t, t->eCode & TP_MONO)*p->charWidth*xtraFontScale*0.01;
4990 PNum ch = p->charHeight*0.5*xtraFontScale;
4991 PNum x0, y0, x1, y1; /* Boundary of text relative to pObj->ptAt */
4992 if( (t->eCode & (TP_BOLD|TP_MONO))==TP_BOLD ){
4993 cw *= 1.1;
4994 }
4995 if( t->eCode & TP_RJUST ){
4996 x0 = nx;
4997 y0 = y-ch;
4998 x1 = nx-cw;
4999 y1 = y+ch;
@@ -5036,10 +5044,14 @@
5044 if( t->eCode & TP_ITALIC ){
5045 pik_append(p, " font-style=\"italic\"", -1);
5046 }
5047 if( t->eCode & TP_BOLD ){
5048 pik_append(p, " font-weight=\"bold\"", -1);
5049 }
5050 if( t->eCode & TP_MONO ){
5051 pik_append(p, " font-family=\"monospace\"", -1);
5052 xtraFontScale *= 1.28;
5053 }
5054 if( pObj->color>=0.0 ){
5055 pik_append_clr(p, " fill=\"", pObj->color, "\"",0);
5056 }
5057 xtraFontScale *= p->fontScale;
@@ -6044,12 +6056,13 @@
6056 case T_LJUST: iRes = (iRes&~TP_JMASK) | TP_LJUST; break;
6057 case T_RJUST: iRes = (iRes&~TP_JMASK) | TP_RJUST; break;
6058 case T_ABOVE: iRes = (iRes&~TP_VMASK) | TP_ABOVE; break;
6059 case T_CENTER: iRes = (iRes&~TP_VMASK) | TP_CENTER; break;
6060 case T_BELOW: iRes = (iRes&~TP_VMASK) | TP_BELOW; break;
6061 case T_ITALIC: iRes |= TP_ITALIC; break;
6062 case T_BOLD: iRes |= TP_BOLD; break;
6063 case T_MONO: iRes |= TP_MONO; break;
6064 case T_ALIGNED: iRes |= TP_ALIGN; break;
6065 case T_BIG: if( iRes & TP_BIG ) iRes |= TP_XTRA;
6066 else iRes = (iRes &~TP_SZMASK)|TP_BIG; break;
6067 case T_SMALL: if( iRes & TP_SMALL ) iRes |= TP_XTRA;
6068 else iRes = (iRes &~TP_SZMASK)|TP_SMALL; break;
@@ -6180,15 +6193,17 @@
6193 **
6194 ** Omit "\" used to escape characters. And count entities like
6195 ** "&lt;" as a single character. Multi-byte UTF8 characters count
6196 ** as a single character.
6197 **
6198 ** Unless using a monospaced font, attempt to scale the answer by
6199 ** the actual characters seen. Wide characters count more than
6200 ** narrow characters. But the widths are only guesses.
6201 **
6202 */
6203 static int pik_text_length(const PToken *pToken, const int isMonospace){
6204 const int stdAvg=100, monoAvg=82;
6205 int n = pToken->n;
6206 const char *z = pToken->z;
6207 int cnt, j;
6208 for(j=1, cnt=0; j<n-1; j++){
6209 char c = z[j];
@@ -6196,22 +6211,24 @@
6211 c = z[++j];
6212 }else if( c=='&' ){
6213 int k;
6214 for(k=j+1; k<j+7 && z[k]!=0 && z[k]!=';'; k++){}
6215 if( z[k]==';' ) j = k;
6216 cnt += (isMonospace ? monoAvg : stdAvg) * 3 / 2;
6217 continue;
6218 }
6219 if( (c & 0xc0)==0xc0 ){
6220 while( j+1<n-1 && (z[j+1]&0xc0)==0x80 ){ j++; }
6221 cnt += isMonospace ? monoAvg : stdAvg;
6222 continue;
6223 }
6224 if( isMonospace ){
6225 cnt += monoAvg;
6226 }else if( c >= 0x20 && c <= 0x7e ){
6227 cnt += awChar[c-0x20];
6228 }else{
6229 cnt += stdAvg;
6230 }
6231 }
6232 return cnt;
6233 }
6234
@@ -7195,10 +7212,12 @@
7212 { "last", 4, T_LAST, 0, 0 },
7213 { "left", 4, T_LEFT, DIR_LEFT, CP_W },
7214 { "ljust", 5, T_LJUST, 0, 0 },
7215 { "max", 3, T_FUNC2, FN_MAX, 0 },
7216 { "min", 3, T_FUNC2, FN_MIN, 0 },
7217 { "mono", 4, T_MONO, 0, 0 },
7218 { "monospace", 9, T_MONO, 0, 0 },
7219 { "n", 1, T_EDGEPT, 0, CP_N },
7220 { "ne", 2, T_EDGEPT, 0, CP_NE },
7221 { "north", 5, T_EDGEPT, 0, CP_N },
7222 { "nw", 2, T_EDGEPT, 0, CP_NW },
7223 { "of", 2, T_OF, 0, 0 },
@@ -8122,6 +8141,6 @@
8141
8142
8143 #endif /* PIKCHR_TCL */
8144
8145
8146 #line 8171 "pikchr.c"
8147
+145 -167
--- extsrc/pikchr.js
+++ extsrc/pikchr.js
@@ -1,17 +1,18 @@
11
22
var initPikchrModule = (() => {
33
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
44
55
return (
6
-function(initPikchrModule = {}) {
6
+function(config) {
7
+ var initPikchrModule = config || {};
78
89
var Module = typeof initPikchrModule != "undefined" ? initPikchrModule : {};
910
1011
var readyPromiseResolve, readyPromiseReject;
1112
12
-Module["ready"] = new Promise((resolve, reject) => {
13
+Module["ready"] = new Promise(function(resolve, reject) {
1314
readyPromiseResolve = resolve;
1415
readyPromiseReject = reject;
1516
});
1617
1718
var moduleOverrides = Object.assign({}, Module);
@@ -114,10 +115,89 @@
114115
var wasmMemory;
115116
116117
var ABORT = false;
117118
118119
var EXITSTATUS;
120
+
121
+var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
122
+
123
+function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
124
+ var endIdx = idx + maxBytesToRead;
125
+ var endPtr = idx;
126
+ while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
127
+ if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
128
+ return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
129
+ }
130
+ var str = "";
131
+ while (idx < endPtr) {
132
+ var u0 = heapOrArray[idx++];
133
+ if (!(u0 & 128)) {
134
+ str += String.fromCharCode(u0);
135
+ continue;
136
+ }
137
+ var u1 = heapOrArray[idx++] & 63;
138
+ if ((u0 & 224) == 192) {
139
+ str += String.fromCharCode((u0 & 31) << 6 | u1);
140
+ continue;
141
+ }
142
+ var u2 = heapOrArray[idx++] & 63;
143
+ if ((u0 & 240) == 224) {
144
+ u0 = (u0 & 15) << 12 | u1 << 6 | u2;
145
+ } else {
146
+ u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
147
+ }
148
+ if (u0 < 65536) {
149
+ str += String.fromCharCode(u0);
150
+ } else {
151
+ var ch = u0 - 65536;
152
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
153
+ }
154
+ }
155
+ return str;
156
+}
157
+
158
+function UTF8ToString(ptr, maxBytesToRead) {
159
+ return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
160
+}
161
+
162
+function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
163
+ if (!(maxBytesToWrite > 0)) return 0;
164
+ var startIdx = outIdx;
165
+ var endIdx = outIdx + maxBytesToWrite - 1;
166
+ for (var i = 0; i < str.length; ++i) {
167
+ var u = str.charCodeAt(i);
168
+ if (u >= 55296 && u <= 57343) {
169
+ var u1 = str.charCodeAt(++i);
170
+ u = 65536 + ((u & 1023) << 10) | u1 & 1023;
171
+ }
172
+ if (u <= 127) {
173
+ if (outIdx >= endIdx) break;
174
+ heap[outIdx++] = u;
175
+ } else if (u <= 2047) {
176
+ if (outIdx + 1 >= endIdx) break;
177
+ heap[outIdx++] = 192 | u >> 6;
178
+ heap[outIdx++] = 128 | u & 63;
179
+ } else if (u <= 65535) {
180
+ if (outIdx + 2 >= endIdx) break;
181
+ heap[outIdx++] = 224 | u >> 12;
182
+ heap[outIdx++] = 128 | u >> 6 & 63;
183
+ heap[outIdx++] = 128 | u & 63;
184
+ } else {
185
+ if (outIdx + 3 >= endIdx) break;
186
+ heap[outIdx++] = 240 | u >> 18;
187
+ heap[outIdx++] = 128 | u >> 12 & 63;
188
+ heap[outIdx++] = 128 | u >> 6 & 63;
189
+ heap[outIdx++] = 128 | u & 63;
190
+ }
191
+ }
192
+ heap[outIdx] = 0;
193
+ return outIdx - startIdx;
194
+}
195
+
196
+function stringToUTF8(str, outPtr, maxBytesToWrite) {
197
+ return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
198
+}
119199
120200
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
121201
122202
function updateMemoryViews() {
123203
var b = wasmMemory.buffer;
@@ -129,10 +209,12 @@
129209
Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
130210
Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
131211
Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
132212
}
133213
214
+var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216;
215
+
134216
var wasmTable;
135217
136218
var __ATPRERUN__ = [];
137219
138220
var __ATINIT__ = [];
@@ -139,14 +221,12 @@
139221
140222
var __ATPOSTRUN__ = [];
141223
142224
var runtimeInitialized = false;
143225
144
-var runtimeKeepaliveCounter = 0;
145
-
146226
function keepRuntimeAlive() {
147
- return noExitRuntime || runtimeKeepaliveCounter > 0;
227
+ return noExitRuntime;
148228
}
149229
150230
function preRun() {
151231
if (Module["preRun"]) {
152232
if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
@@ -255,81 +335,83 @@
255335
} catch (err) {
256336
abort(err);
257337
}
258338
}
259339
260
-function getBinaryPromise(binaryFile) {
340
+function getBinaryPromise() {
261341
if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
262342
if (typeof fetch == "function") {
263
- return fetch(binaryFile, {
343
+ return fetch(wasmBinaryFile, {
264344
credentials: "same-origin"
265
- }).then(response => {
345
+ }).then(function(response) {
266346
if (!response["ok"]) {
267
- throw "failed to load wasm binary file at '" + binaryFile + "'";
347
+ throw "failed to load wasm binary file at '" + wasmBinaryFile + "'";
268348
}
269349
return response["arrayBuffer"]();
270
- }).catch(() => getBinary(binaryFile));
271
- }
272
- }
273
- return Promise.resolve().then(() => getBinary(binaryFile));
274
-}
275
-
276
-function instantiateArrayBuffer(binaryFile, imports, receiver) {
277
- return getBinaryPromise(binaryFile).then(binary => {
278
- return WebAssembly.instantiate(binary, imports);
279
- }).then(instance => {
280
- return instance;
281
- }).then(receiver, reason => {
282
- err("failed to asynchronously prepare wasm: " + reason);
283
- abort(reason);
284
- });
285
-}
286
-
287
-function instantiateAsync(binary, binaryFile, imports, callback) {
288
- if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") {
289
- return fetch(binaryFile, {
290
- credentials: "same-origin"
291
- }).then(response => {
292
- var result = WebAssembly.instantiateStreaming(response, imports);
293
- return result.then(callback, function(reason) {
294
- err("wasm streaming compile failed: " + reason);
295
- err("falling back to ArrayBuffer instantiation");
296
- return instantiateArrayBuffer(binaryFile, imports, callback);
297
- });
298
- });
299
- } else {
300
- return instantiateArrayBuffer(binaryFile, imports, callback);
301
- }
350
+ }).catch(function() {
351
+ return getBinary(wasmBinaryFile);
352
+ });
353
+ }
354
+ }
355
+ return Promise.resolve().then(function() {
356
+ return getBinary(wasmBinaryFile);
357
+ });
302358
}
303359
304360
function createWasm() {
305361
var info = {
306
- "a": wasmImports
362
+ "a": asmLibraryArg
307363
};
308364
function receiveInstance(instance, module) {
309365
var exports = instance.exports;
310366
Module["asm"] = exports;
311367
wasmMemory = Module["asm"]["d"];
312368
updateMemoryViews();
313369
wasmTable = Module["asm"]["g"];
314370
addOnInit(Module["asm"]["e"]);
315371
removeRunDependency("wasm-instantiate");
316
- return exports;
317372
}
318373
addRunDependency("wasm-instantiate");
319374
function receiveInstantiationResult(result) {
320375
receiveInstance(result["instance"]);
376
+ }
377
+ function instantiateArrayBuffer(receiver) {
378
+ return getBinaryPromise().then(function(binary) {
379
+ return WebAssembly.instantiate(binary, info);
380
+ }).then(function(instance) {
381
+ return instance;
382
+ }).then(receiver, function(reason) {
383
+ err("failed to asynchronously prepare wasm: " + reason);
384
+ abort(reason);
385
+ });
386
+ }
387
+ function instantiateAsync() {
388
+ if (!wasmBinary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(wasmBinaryFile) && typeof fetch == "function") {
389
+ return fetch(wasmBinaryFile, {
390
+ credentials: "same-origin"
391
+ }).then(function(response) {
392
+ var result = WebAssembly.instantiateStreaming(response, info);
393
+ return result.then(receiveInstantiationResult, function(reason) {
394
+ err("wasm streaming compile failed: " + reason);
395
+ err("falling back to ArrayBuffer instantiation");
396
+ return instantiateArrayBuffer(receiveInstantiationResult);
397
+ });
398
+ });
399
+ } else {
400
+ return instantiateArrayBuffer(receiveInstantiationResult);
401
+ }
321402
}
322403
if (Module["instantiateWasm"]) {
323404
try {
324
- return Module["instantiateWasm"](info, receiveInstance);
405
+ var exports = Module["instantiateWasm"](info, receiveInstance);
406
+ return exports;
325407
} catch (e) {
326408
err("Module.instantiateWasm callback failed with error: " + e);
327409
readyPromiseReject(e);
328410
}
329411
}
330
- instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);
412
+ instantiateAsync().catch(readyPromiseReject);
331413
return {};
332414
}
333415
334416
var tempDouble;
335417
@@ -375,10 +457,11 @@
375457
return HEAPU32[ptr >> 2];
376458
377459
default:
378460
abort("invalid type for getValue: " + type);
379461
}
462
+ return null;
380463
}
381464
382465
function setValue(ptr, value, type = "i8") {
383466
if (type.endsWith("*")) type = "*";
384467
switch (type) {
@@ -397,11 +480,11 @@
397480
case "i32":
398481
HEAP32[ptr >> 2] = value;
399482
break;
400483
401484
case "i64":
402
- tempI64 = [ value >>> 0, (tempDouble = value, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ],
485
+ tempI64 = [ value >>> 0, (tempDouble = value, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ],
403486
HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
404487
break;
405488
406489
case "float":
407490
HEAPF32[ptr >> 2] = value;
@@ -418,51 +501,10 @@
418501
default:
419502
abort("invalid type for setValue: " + type);
420503
}
421504
}
422505
423
-var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
424
-
425
-function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
426
- var endIdx = idx + maxBytesToRead;
427
- var endPtr = idx;
428
- while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
429
- if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
430
- return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
431
- }
432
- var str = "";
433
- while (idx < endPtr) {
434
- var u0 = heapOrArray[idx++];
435
- if (!(u0 & 128)) {
436
- str += String.fromCharCode(u0);
437
- continue;
438
- }
439
- var u1 = heapOrArray[idx++] & 63;
440
- if ((u0 & 224) == 192) {
441
- str += String.fromCharCode((u0 & 31) << 6 | u1);
442
- continue;
443
- }
444
- var u2 = heapOrArray[idx++] & 63;
445
- if ((u0 & 240) == 224) {
446
- u0 = (u0 & 15) << 12 | u1 << 6 | u2;
447
- } else {
448
- u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
449
- }
450
- if (u0 < 65536) {
451
- str += String.fromCharCode(u0);
452
- } else {
453
- var ch = u0 - 65536;
454
- str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
455
- }
456
- }
457
- return str;
458
-}
459
-
460
-function UTF8ToString(ptr, maxBytesToRead) {
461
- return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
462
-}
463
-
464506
function ___assert_fail(condition, filename, line, func) {
465507
abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [ filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function" ]);
466508
}
467509
468510
function abortOnCannotGrowMemory(requestedSize) {
@@ -511,79 +553,18 @@
511553
512554
function writeArrayToMemory(array, buffer) {
513555
HEAP8.set(array, buffer);
514556
}
515557
516
-function lengthBytesUTF8(str) {
517
- var len = 0;
518
- for (var i = 0; i < str.length; ++i) {
519
- var c = str.charCodeAt(i);
520
- if (c <= 127) {
521
- len++;
522
- } else if (c <= 2047) {
523
- len += 2;
524
- } else if (c >= 55296 && c <= 57343) {
525
- len += 4;
526
- ++i;
527
- } else {
528
- len += 3;
529
- }
530
- }
531
- return len;
532
-}
533
-
534
-function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
535
- if (!(maxBytesToWrite > 0)) return 0;
536
- var startIdx = outIdx;
537
- var endIdx = outIdx + maxBytesToWrite - 1;
538
- for (var i = 0; i < str.length; ++i) {
539
- var u = str.charCodeAt(i);
540
- if (u >= 55296 && u <= 57343) {
541
- var u1 = str.charCodeAt(++i);
542
- u = 65536 + ((u & 1023) << 10) | u1 & 1023;
543
- }
544
- if (u <= 127) {
545
- if (outIdx >= endIdx) break;
546
- heap[outIdx++] = u;
547
- } else if (u <= 2047) {
548
- if (outIdx + 1 >= endIdx) break;
549
- heap[outIdx++] = 192 | u >> 6;
550
- heap[outIdx++] = 128 | u & 63;
551
- } else if (u <= 65535) {
552
- if (outIdx + 2 >= endIdx) break;
553
- heap[outIdx++] = 224 | u >> 12;
554
- heap[outIdx++] = 128 | u >> 6 & 63;
555
- heap[outIdx++] = 128 | u & 63;
556
- } else {
557
- if (outIdx + 3 >= endIdx) break;
558
- heap[outIdx++] = 240 | u >> 18;
559
- heap[outIdx++] = 128 | u >> 12 & 63;
560
- heap[outIdx++] = 128 | u >> 6 & 63;
561
- heap[outIdx++] = 128 | u & 63;
562
- }
563
- }
564
- heap[outIdx] = 0;
565
- return outIdx - startIdx;
566
-}
567
-
568
-function stringToUTF8(str, outPtr, maxBytesToWrite) {
569
- return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
570
-}
571
-
572
-function stringToUTF8OnStack(str) {
573
- var size = lengthBytesUTF8(str) + 1;
574
- var ret = stackAlloc(size);
575
- stringToUTF8(str, ret, size);
576
- return ret;
577
-}
578
-
579558
function ccall(ident, returnType, argTypes, args, opts) {
580559
var toC = {
581560
"string": str => {
582561
var ret = 0;
583562
if (str !== null && str !== undefined && str !== 0) {
584
- ret = stringToUTF8OnStack(str);
563
+ var len = (str.length << 2) + 1;
564
+ ret = stackAlloc(len);
565
+ stringToUTF8(str, ret, len);
585566
}
586567
return ret;
587568
},
588569
"array": arr => {
589570
var ret = stackAlloc(arr.length);
@@ -620,50 +601,47 @@
620601
ret = onDone(ret);
621602
return ret;
622603
}
623604
624605
function cwrap(ident, returnType, argTypes, opts) {
625
- var numericArgs = !argTypes || argTypes.every(type => type === "number" || type === "boolean");
606
+ argTypes = argTypes || [];
607
+ var numericArgs = argTypes.every(type => type === "number" || type === "boolean");
626608
var numericRet = returnType !== "string";
627609
if (numericRet && numericArgs && !opts) {
628610
return getCFunc(ident);
629611
}
630612
return function() {
631613
return ccall(ident, returnType, argTypes, arguments, opts);
632614
};
633615
}
634616
635
-var wasmImports = {
617
+var asmLibraryArg = {
636618
"a": ___assert_fail,
637619
"b": _emscripten_resize_heap,
638620
"c": _exit
639621
};
640622
641623
var asm = createWasm();
642624
643
-var ___wasm_call_ctors = function() {
644
- return (___wasm_call_ctors = Module["asm"]["e"]).apply(null, arguments);
625
+var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
626
+ return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["e"]).apply(null, arguments);
645627
};
646628
647629
var _pikchr = Module["_pikchr"] = function() {
648630
return (_pikchr = Module["_pikchr"] = Module["asm"]["f"]).apply(null, arguments);
649631
};
650632
651
-var ___errno_location = function() {
652
- return (___errno_location = Module["asm"]["__errno_location"]).apply(null, arguments);
633
+var stackSave = Module["stackSave"] = function() {
634
+ return (stackSave = Module["stackSave"] = Module["asm"]["h"]).apply(null, arguments);
653635
};
654636
655
-var stackSave = function() {
656
- return (stackSave = Module["asm"]["h"]).apply(null, arguments);
637
+var stackRestore = Module["stackRestore"] = function() {
638
+ return (stackRestore = Module["stackRestore"] = Module["asm"]["i"]).apply(null, arguments);
657639
};
658640
659
-var stackRestore = function() {
660
- return (stackRestore = Module["asm"]["i"]).apply(null, arguments);
661
-};
662
-
663
-var stackAlloc = function() {
664
- return (stackAlloc = Module["asm"]["j"]).apply(null, arguments);
641
+var stackAlloc = Module["stackAlloc"] = function() {
642
+ return (stackAlloc = Module["stackAlloc"] = Module["asm"]["j"]).apply(null, arguments);
665643
};
666644
667645
Module["stackAlloc"] = stackAlloc;
668646
669647
Module["stackSave"] = stackSave;
@@ -681,11 +659,12 @@
681659
dependenciesFulfilled = function runCaller() {
682660
if (!calledRun) run();
683661
if (!calledRun) dependenciesFulfilled = runCaller;
684662
};
685663
686
-function run() {
664
+function run(args) {
665
+ args = args || arguments_;
687666
if (runDependencies > 0) {
688667
return;
689668
}
690669
preRun();
691670
if (runDependencies > 0) {
@@ -724,14 +703,13 @@
724703
run();
725704
726705
727706
return initPikchrModule.ready
728707
}
729
-
730708
);
731709
})();
732710
if (typeof exports === 'object' && typeof module === 'object')
733711
module.exports = initPikchrModule;
734712
else if (typeof define === 'function' && define['amd'])
735713
define([], function() { return initPikchrModule; });
736714
else if (typeof exports === 'object')
737715
exports["initPikchrModule"] = initPikchrModule;
738716
--- extsrc/pikchr.js
+++ extsrc/pikchr.js
@@ -1,17 +1,18 @@
1
2 var initPikchrModule = (() => {
3 var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
4
5 return (
6 function(initPikchrModule = {}) {
 
7
8 var Module = typeof initPikchrModule != "undefined" ? initPikchrModule : {};
9
10 var readyPromiseResolve, readyPromiseReject;
11
12 Module["ready"] = new Promise((resolve, reject) => {
13 readyPromiseResolve = resolve;
14 readyPromiseReject = reject;
15 });
16
17 var moduleOverrides = Object.assign({}, Module);
@@ -114,10 +115,89 @@
114 var wasmMemory;
115
116 var ABORT = false;
117
118 var EXITSTATUS;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
120 var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
121
122 function updateMemoryViews() {
123 var b = wasmMemory.buffer;
@@ -129,10 +209,12 @@
129 Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
130 Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
131 Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
132 }
133
 
 
134 var wasmTable;
135
136 var __ATPRERUN__ = [];
137
138 var __ATINIT__ = [];
@@ -139,14 +221,12 @@
139
140 var __ATPOSTRUN__ = [];
141
142 var runtimeInitialized = false;
143
144 var runtimeKeepaliveCounter = 0;
145
146 function keepRuntimeAlive() {
147 return noExitRuntime || runtimeKeepaliveCounter > 0;
148 }
149
150 function preRun() {
151 if (Module["preRun"]) {
152 if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
@@ -255,81 +335,83 @@
255 } catch (err) {
256 abort(err);
257 }
258 }
259
260 function getBinaryPromise(binaryFile) {
261 if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
262 if (typeof fetch == "function") {
263 return fetch(binaryFile, {
264 credentials: "same-origin"
265 }).then(response => {
266 if (!response["ok"]) {
267 throw "failed to load wasm binary file at '" + binaryFile + "'";
268 }
269 return response["arrayBuffer"]();
270 }).catch(() => getBinary(binaryFile));
271 }
272 }
273 return Promise.resolve().then(() => getBinary(binaryFile));
274 }
275
276 function instantiateArrayBuffer(binaryFile, imports, receiver) {
277 return getBinaryPromise(binaryFile).then(binary => {
278 return WebAssembly.instantiate(binary, imports);
279 }).then(instance => {
280 return instance;
281 }).then(receiver, reason => {
282 err("failed to asynchronously prepare wasm: " + reason);
283 abort(reason);
284 });
285 }
286
287 function instantiateAsync(binary, binaryFile, imports, callback) {
288 if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") {
289 return fetch(binaryFile, {
290 credentials: "same-origin"
291 }).then(response => {
292 var result = WebAssembly.instantiateStreaming(response, imports);
293 return result.then(callback, function(reason) {
294 err("wasm streaming compile failed: " + reason);
295 err("falling back to ArrayBuffer instantiation");
296 return instantiateArrayBuffer(binaryFile, imports, callback);
297 });
298 });
299 } else {
300 return instantiateArrayBuffer(binaryFile, imports, callback);
301 }
302 }
303
304 function createWasm() {
305 var info = {
306 "a": wasmImports
307 };
308 function receiveInstance(instance, module) {
309 var exports = instance.exports;
310 Module["asm"] = exports;
311 wasmMemory = Module["asm"]["d"];
312 updateMemoryViews();
313 wasmTable = Module["asm"]["g"];
314 addOnInit(Module["asm"]["e"]);
315 removeRunDependency("wasm-instantiate");
316 return exports;
317 }
318 addRunDependency("wasm-instantiate");
319 function receiveInstantiationResult(result) {
320 receiveInstance(result["instance"]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
321 }
322 if (Module["instantiateWasm"]) {
323 try {
324 return Module["instantiateWasm"](info, receiveInstance);
 
325 } catch (e) {
326 err("Module.instantiateWasm callback failed with error: " + e);
327 readyPromiseReject(e);
328 }
329 }
330 instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);
331 return {};
332 }
333
334 var tempDouble;
335
@@ -375,10 +457,11 @@
375 return HEAPU32[ptr >> 2];
376
377 default:
378 abort("invalid type for getValue: " + type);
379 }
 
380 }
381
382 function setValue(ptr, value, type = "i8") {
383 if (type.endsWith("*")) type = "*";
384 switch (type) {
@@ -397,11 +480,11 @@
397 case "i32":
398 HEAP32[ptr >> 2] = value;
399 break;
400
401 case "i64":
402 tempI64 = [ value >>> 0, (tempDouble = value, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ],
403 HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
404 break;
405
406 case "float":
407 HEAPF32[ptr >> 2] = value;
@@ -418,51 +501,10 @@
418 default:
419 abort("invalid type for setValue: " + type);
420 }
421 }
422
423 var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
424
425 function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
426 var endIdx = idx + maxBytesToRead;
427 var endPtr = idx;
428 while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
429 if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
430 return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
431 }
432 var str = "";
433 while (idx < endPtr) {
434 var u0 = heapOrArray[idx++];
435 if (!(u0 & 128)) {
436 str += String.fromCharCode(u0);
437 continue;
438 }
439 var u1 = heapOrArray[idx++] & 63;
440 if ((u0 & 224) == 192) {
441 str += String.fromCharCode((u0 & 31) << 6 | u1);
442 continue;
443 }
444 var u2 = heapOrArray[idx++] & 63;
445 if ((u0 & 240) == 224) {
446 u0 = (u0 & 15) << 12 | u1 << 6 | u2;
447 } else {
448 u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
449 }
450 if (u0 < 65536) {
451 str += String.fromCharCode(u0);
452 } else {
453 var ch = u0 - 65536;
454 str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
455 }
456 }
457 return str;
458 }
459
460 function UTF8ToString(ptr, maxBytesToRead) {
461 return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
462 }
463
464 function ___assert_fail(condition, filename, line, func) {
465 abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [ filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function" ]);
466 }
467
468 function abortOnCannotGrowMemory(requestedSize) {
@@ -511,79 +553,18 @@
511
512 function writeArrayToMemory(array, buffer) {
513 HEAP8.set(array, buffer);
514 }
515
516 function lengthBytesUTF8(str) {
517 var len = 0;
518 for (var i = 0; i < str.length; ++i) {
519 var c = str.charCodeAt(i);
520 if (c <= 127) {
521 len++;
522 } else if (c <= 2047) {
523 len += 2;
524 } else if (c >= 55296 && c <= 57343) {
525 len += 4;
526 ++i;
527 } else {
528 len += 3;
529 }
530 }
531 return len;
532 }
533
534 function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
535 if (!(maxBytesToWrite > 0)) return 0;
536 var startIdx = outIdx;
537 var endIdx = outIdx + maxBytesToWrite - 1;
538 for (var i = 0; i < str.length; ++i) {
539 var u = str.charCodeAt(i);
540 if (u >= 55296 && u <= 57343) {
541 var u1 = str.charCodeAt(++i);
542 u = 65536 + ((u & 1023) << 10) | u1 & 1023;
543 }
544 if (u <= 127) {
545 if (outIdx >= endIdx) break;
546 heap[outIdx++] = u;
547 } else if (u <= 2047) {
548 if (outIdx + 1 >= endIdx) break;
549 heap[outIdx++] = 192 | u >> 6;
550 heap[outIdx++] = 128 | u & 63;
551 } else if (u <= 65535) {
552 if (outIdx + 2 >= endIdx) break;
553 heap[outIdx++] = 224 | u >> 12;
554 heap[outIdx++] = 128 | u >> 6 & 63;
555 heap[outIdx++] = 128 | u & 63;
556 } else {
557 if (outIdx + 3 >= endIdx) break;
558 heap[outIdx++] = 240 | u >> 18;
559 heap[outIdx++] = 128 | u >> 12 & 63;
560 heap[outIdx++] = 128 | u >> 6 & 63;
561 heap[outIdx++] = 128 | u & 63;
562 }
563 }
564 heap[outIdx] = 0;
565 return outIdx - startIdx;
566 }
567
568 function stringToUTF8(str, outPtr, maxBytesToWrite) {
569 return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
570 }
571
572 function stringToUTF8OnStack(str) {
573 var size = lengthBytesUTF8(str) + 1;
574 var ret = stackAlloc(size);
575 stringToUTF8(str, ret, size);
576 return ret;
577 }
578
579 function ccall(ident, returnType, argTypes, args, opts) {
580 var toC = {
581 "string": str => {
582 var ret = 0;
583 if (str !== null && str !== undefined && str !== 0) {
584 ret = stringToUTF8OnStack(str);
 
 
585 }
586 return ret;
587 },
588 "array": arr => {
589 var ret = stackAlloc(arr.length);
@@ -620,50 +601,47 @@
620 ret = onDone(ret);
621 return ret;
622 }
623
624 function cwrap(ident, returnType, argTypes, opts) {
625 var numericArgs = !argTypes || argTypes.every(type => type === "number" || type === "boolean");
 
626 var numericRet = returnType !== "string";
627 if (numericRet && numericArgs && !opts) {
628 return getCFunc(ident);
629 }
630 return function() {
631 return ccall(ident, returnType, argTypes, arguments, opts);
632 };
633 }
634
635 var wasmImports = {
636 "a": ___assert_fail,
637 "b": _emscripten_resize_heap,
638 "c": _exit
639 };
640
641 var asm = createWasm();
642
643 var ___wasm_call_ctors = function() {
644 return (___wasm_call_ctors = Module["asm"]["e"]).apply(null, arguments);
645 };
646
647 var _pikchr = Module["_pikchr"] = function() {
648 return (_pikchr = Module["_pikchr"] = Module["asm"]["f"]).apply(null, arguments);
649 };
650
651 var ___errno_location = function() {
652 return (___errno_location = Module["asm"]["__errno_location"]).apply(null, arguments);
653 };
654
655 var stackSave = function() {
656 return (stackSave = Module["asm"]["h"]).apply(null, arguments);
657 };
658
659 var stackRestore = function() {
660 return (stackRestore = Module["asm"]["i"]).apply(null, arguments);
661 };
662
663 var stackAlloc = function() {
664 return (stackAlloc = Module["asm"]["j"]).apply(null, arguments);
665 };
666
667 Module["stackAlloc"] = stackAlloc;
668
669 Module["stackSave"] = stackSave;
@@ -681,11 +659,12 @@
681 dependenciesFulfilled = function runCaller() {
682 if (!calledRun) run();
683 if (!calledRun) dependenciesFulfilled = runCaller;
684 };
685
686 function run() {
 
687 if (runDependencies > 0) {
688 return;
689 }
690 preRun();
691 if (runDependencies > 0) {
@@ -724,14 +703,13 @@
724 run();
725
726
727 return initPikchrModule.ready
728 }
729
730 );
731 })();
732 if (typeof exports === 'object' && typeof module === 'object')
733 module.exports = initPikchrModule;
734 else if (typeof define === 'function' && define['amd'])
735 define([], function() { return initPikchrModule; });
736 else if (typeof exports === 'object')
737 exports["initPikchrModule"] = initPikchrModule;
738
--- extsrc/pikchr.js
+++ extsrc/pikchr.js
@@ -1,17 +1,18 @@
1
2 var initPikchrModule = (() => {
3 var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
4
5 return (
6 function(config) {
7 var initPikchrModule = config || {};
8
9 var Module = typeof initPikchrModule != "undefined" ? initPikchrModule : {};
10
11 var readyPromiseResolve, readyPromiseReject;
12
13 Module["ready"] = new Promise(function(resolve, reject) {
14 readyPromiseResolve = resolve;
15 readyPromiseReject = reject;
16 });
17
18 var moduleOverrides = Object.assign({}, Module);
@@ -114,10 +115,89 @@
115 var wasmMemory;
116
117 var ABORT = false;
118
119 var EXITSTATUS;
120
121 var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
122
123 function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
124 var endIdx = idx + maxBytesToRead;
125 var endPtr = idx;
126 while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
127 if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
128 return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
129 }
130 var str = "";
131 while (idx < endPtr) {
132 var u0 = heapOrArray[idx++];
133 if (!(u0 & 128)) {
134 str += String.fromCharCode(u0);
135 continue;
136 }
137 var u1 = heapOrArray[idx++] & 63;
138 if ((u0 & 224) == 192) {
139 str += String.fromCharCode((u0 & 31) << 6 | u1);
140 continue;
141 }
142 var u2 = heapOrArray[idx++] & 63;
143 if ((u0 & 240) == 224) {
144 u0 = (u0 & 15) << 12 | u1 << 6 | u2;
145 } else {
146 u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
147 }
148 if (u0 < 65536) {
149 str += String.fromCharCode(u0);
150 } else {
151 var ch = u0 - 65536;
152 str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
153 }
154 }
155 return str;
156 }
157
158 function UTF8ToString(ptr, maxBytesToRead) {
159 return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
160 }
161
162 function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
163 if (!(maxBytesToWrite > 0)) return 0;
164 var startIdx = outIdx;
165 var endIdx = outIdx + maxBytesToWrite - 1;
166 for (var i = 0; i < str.length; ++i) {
167 var u = str.charCodeAt(i);
168 if (u >= 55296 && u <= 57343) {
169 var u1 = str.charCodeAt(++i);
170 u = 65536 + ((u & 1023) << 10) | u1 & 1023;
171 }
172 if (u <= 127) {
173 if (outIdx >= endIdx) break;
174 heap[outIdx++] = u;
175 } else if (u <= 2047) {
176 if (outIdx + 1 >= endIdx) break;
177 heap[outIdx++] = 192 | u >> 6;
178 heap[outIdx++] = 128 | u & 63;
179 } else if (u <= 65535) {
180 if (outIdx + 2 >= endIdx) break;
181 heap[outIdx++] = 224 | u >> 12;
182 heap[outIdx++] = 128 | u >> 6 & 63;
183 heap[outIdx++] = 128 | u & 63;
184 } else {
185 if (outIdx + 3 >= endIdx) break;
186 heap[outIdx++] = 240 | u >> 18;
187 heap[outIdx++] = 128 | u >> 12 & 63;
188 heap[outIdx++] = 128 | u >> 6 & 63;
189 heap[outIdx++] = 128 | u & 63;
190 }
191 }
192 heap[outIdx] = 0;
193 return outIdx - startIdx;
194 }
195
196 function stringToUTF8(str, outPtr, maxBytesToWrite) {
197 return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
198 }
199
200 var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
201
202 function updateMemoryViews() {
203 var b = wasmMemory.buffer;
@@ -129,10 +209,12 @@
209 Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
210 Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
211 Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
212 }
213
214 var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216;
215
216 var wasmTable;
217
218 var __ATPRERUN__ = [];
219
220 var __ATINIT__ = [];
@@ -139,14 +221,12 @@
221
222 var __ATPOSTRUN__ = [];
223
224 var runtimeInitialized = false;
225
 
 
226 function keepRuntimeAlive() {
227 return noExitRuntime;
228 }
229
230 function preRun() {
231 if (Module["preRun"]) {
232 if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
@@ -255,81 +335,83 @@
335 } catch (err) {
336 abort(err);
337 }
338 }
339
340 function getBinaryPromise() {
341 if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
342 if (typeof fetch == "function") {
343 return fetch(wasmBinaryFile, {
344 credentials: "same-origin"
345 }).then(function(response) {
346 if (!response["ok"]) {
347 throw "failed to load wasm binary file at '" + wasmBinaryFile + "'";
348 }
349 return response["arrayBuffer"]();
350 }).catch(function() {
351 return getBinary(wasmBinaryFile);
352 });
353 }
354 }
355 return Promise.resolve().then(function() {
356 return getBinary(wasmBinaryFile);
357 });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358 }
359
360 function createWasm() {
361 var info = {
362 "a": asmLibraryArg
363 };
364 function receiveInstance(instance, module) {
365 var exports = instance.exports;
366 Module["asm"] = exports;
367 wasmMemory = Module["asm"]["d"];
368 updateMemoryViews();
369 wasmTable = Module["asm"]["g"];
370 addOnInit(Module["asm"]["e"]);
371 removeRunDependency("wasm-instantiate");
 
372 }
373 addRunDependency("wasm-instantiate");
374 function receiveInstantiationResult(result) {
375 receiveInstance(result["instance"]);
376 }
377 function instantiateArrayBuffer(receiver) {
378 return getBinaryPromise().then(function(binary) {
379 return WebAssembly.instantiate(binary, info);
380 }).then(function(instance) {
381 return instance;
382 }).then(receiver, function(reason) {
383 err("failed to asynchronously prepare wasm: " + reason);
384 abort(reason);
385 });
386 }
387 function instantiateAsync() {
388 if (!wasmBinary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(wasmBinaryFile) && typeof fetch == "function") {
389 return fetch(wasmBinaryFile, {
390 credentials: "same-origin"
391 }).then(function(response) {
392 var result = WebAssembly.instantiateStreaming(response, info);
393 return result.then(receiveInstantiationResult, function(reason) {
394 err("wasm streaming compile failed: " + reason);
395 err("falling back to ArrayBuffer instantiation");
396 return instantiateArrayBuffer(receiveInstantiationResult);
397 });
398 });
399 } else {
400 return instantiateArrayBuffer(receiveInstantiationResult);
401 }
402 }
403 if (Module["instantiateWasm"]) {
404 try {
405 var exports = Module["instantiateWasm"](info, receiveInstance);
406 return exports;
407 } catch (e) {
408 err("Module.instantiateWasm callback failed with error: " + e);
409 readyPromiseReject(e);
410 }
411 }
412 instantiateAsync().catch(readyPromiseReject);
413 return {};
414 }
415
416 var tempDouble;
417
@@ -375,10 +457,11 @@
457 return HEAPU32[ptr >> 2];
458
459 default:
460 abort("invalid type for getValue: " + type);
461 }
462 return null;
463 }
464
465 function setValue(ptr, value, type = "i8") {
466 if (type.endsWith("*")) type = "*";
467 switch (type) {
@@ -397,11 +480,11 @@
480 case "i32":
481 HEAP32[ptr >> 2] = value;
482 break;
483
484 case "i64":
485 tempI64 = [ value >>> 0, (tempDouble = value, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ],
486 HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
487 break;
488
489 case "float":
490 HEAPF32[ptr >> 2] = value;
@@ -418,51 +501,10 @@
501 default:
502 abort("invalid type for setValue: " + type);
503 }
504 }
505
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
506 function ___assert_fail(condition, filename, line, func) {
507 abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [ filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function" ]);
508 }
509
510 function abortOnCannotGrowMemory(requestedSize) {
@@ -511,79 +553,18 @@
553
554 function writeArrayToMemory(array, buffer) {
555 HEAP8.set(array, buffer);
556 }
557
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
558 function ccall(ident, returnType, argTypes, args, opts) {
559 var toC = {
560 "string": str => {
561 var ret = 0;
562 if (str !== null && str !== undefined && str !== 0) {
563 var len = (str.length << 2) + 1;
564 ret = stackAlloc(len);
565 stringToUTF8(str, ret, len);
566 }
567 return ret;
568 },
569 "array": arr => {
570 var ret = stackAlloc(arr.length);
@@ -620,50 +601,47 @@
601 ret = onDone(ret);
602 return ret;
603 }
604
605 function cwrap(ident, returnType, argTypes, opts) {
606 argTypes = argTypes || [];
607 var numericArgs = argTypes.every(type => type === "number" || type === "boolean");
608 var numericRet = returnType !== "string";
609 if (numericRet && numericArgs && !opts) {
610 return getCFunc(ident);
611 }
612 return function() {
613 return ccall(ident, returnType, argTypes, arguments, opts);
614 };
615 }
616
617 var asmLibraryArg = {
618 "a": ___assert_fail,
619 "b": _emscripten_resize_heap,
620 "c": _exit
621 };
622
623 var asm = createWasm();
624
625 var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
626 return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["e"]).apply(null, arguments);
627 };
628
629 var _pikchr = Module["_pikchr"] = function() {
630 return (_pikchr = Module["_pikchr"] = Module["asm"]["f"]).apply(null, arguments);
631 };
632
633 var stackSave = Module["stackSave"] = function() {
634 return (stackSave = Module["stackSave"] = Module["asm"]["h"]).apply(null, arguments);
635 };
636
637 var stackRestore = Module["stackRestore"] = function() {
638 return (stackRestore = Module["stackRestore"] = Module["asm"]["i"]).apply(null, arguments);
639 };
640
641 var stackAlloc = Module["stackAlloc"] = function() {
642 return (stackAlloc = Module["stackAlloc"] = Module["asm"]["j"]).apply(null, arguments);
 
 
 
 
643 };
644
645 Module["stackAlloc"] = stackAlloc;
646
647 Module["stackSave"] = stackSave;
@@ -681,11 +659,12 @@
659 dependenciesFulfilled = function runCaller() {
660 if (!calledRun) run();
661 if (!calledRun) dependenciesFulfilled = runCaller;
662 };
663
664 function run(args) {
665 args = args || arguments_;
666 if (runDependencies > 0) {
667 return;
668 }
669 preRun();
670 if (runDependencies > 0) {
@@ -724,14 +703,13 @@
703 run();
704
705
706 return initPikchrModule.ready
707 }
 
708 );
709 })();
710 if (typeof exports === 'object' && typeof module === 'object')
711 module.exports = initPikchrModule;
712 else if (typeof define === 'function' && define['amd'])
713 define([], function() { return initPikchrModule; });
714 else if (typeof exports === 'object')
715 exports["initPikchrModule"] = initPikchrModule;
716
--- extsrc/pikchr.wasm
+++ extsrc/pikchr.wasm
cannot compute difference between binary files
11
--- extsrc/pikchr.wasm
+++ extsrc/pikchr.wasm
0 annot compute difference between binary files
1
--- extsrc/pikchr.wasm
+++ extsrc/pikchr.wasm
0 annot compute difference between binary files
1

Keyboard Shortcuts

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