Fossil

Diff
Login

Differences From Artifact [73d4b8a4b2]:

To Artifact [149f6f763f]:


177
178
179
180
181
182
183




184
185
186
187
188
189
190
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194







+
+
+
+







#define TP_JMASK   0x0003  /* Mask for justification bits */
#define TP_ABOVE2  0x0004  /* Position text way above PElem.ptAt */
#define TP_ABOVE   0x0008  /* Position text above PElem.ptAt */
#define TP_CENTER  0x0010  /* On the line */
#define TP_BELOW   0x0020  /* Position text below PElem.ptAt */
#define TP_BELOW2  0x0040  /* Position text way below PElem.ptAt */
#define TP_VMASK   0x007c  /* Mask for text positioning flags */
#define TP_BIG     0x0100  /* Larger font */
#define TP_SMALL   0x0200  /* Smaller font */
#define TP_XTRA    0x0400  /* Amplify TP_BIG or TP_SMALL */
#define TP_SZMASK  0x0700  /* Font size mask */
#define TP_ITALIC  0x1000  /* Italic font */
#define TP_BOLD    0x2000  /* Bold font */
#define TP_FMASK   0x3000  /* Mask for font style */
#define TP_ALIGN   0x4000  /* Rotate to align with the line */

/* An object to hold a position in 2-D space */
struct PPoint {
416
417
418
419
420
421
422
423

424
425
426
427
428
429
430
420
421
422
423
424
425
426

427
428
429
430
431
432
433
434







-
+







static PPoint pik_position_at_hdg(Pik *p, PNum dist, PToken *pD, PPoint pt);
static void pik_same(Pik *p, PElem*, PToken*);
static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem);
static PToken pik_next_semantic_token(Pik *p, PToken *pThis);
static void pik_compute_layout_settings(Pik*);


#line 449 "pikchr.c"
#line 453 "pikchr.c"
/**************** End of %include directives **********************************/
/* These constants specify the various numeric values for terminal symbols.
***************** Begin token definitions *************************************/
#ifndef T_ID
#define T_ID                              1
#define T_EDGEPT                          2
#define T_OF                              3
473
474
475
476
477
478
479


480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508































509
510
511
512
513
514
515
477
478
479
480
481
482
483
484
485





























486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523







+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







#define T_DASHED                         46
#define T_CW                             47
#define T_CCW                            48
#define T_LARROW                         49
#define T_RARROW                         50
#define T_LRARROW                        51
#define T_INVIS                          52
#define T_THICK                          53
#define T_THIN                           54
#define T_CENTER                         53
#define T_LJUST                          54
#define T_RJUST                          55
#define T_ABOVE                          56
#define T_BELOW                          57
#define T_ITALIC                         58
#define T_BOLD                           59
#define T_ALIGNED                        60
#define T_LP                             61
#define T_RP                             62
#define T_HEADING                        63
#define T_WAY                            64
#define T_BETWEEN                        65
#define T_THE                            66
#define T_DOT_L                          67
#define T_START                          68
#define T_END                            69
#define T_NTH                            70
#define T_VERTEX                         71
#define T_IN                             72
#define T_DOT_U                          73
#define T_LAST                           74
#define T_NUMBER                         75
#define T_FUNC1                          76
#define T_FUNC2                          77
#define T_X                              78
#define T_Y                              79
#define T_TOP                            80
#define T_BOTTOM                         81
#define T_CENTER                         55
#define T_LJUST                          56
#define T_RJUST                          57
#define T_ABOVE                          58
#define T_BELOW                          59
#define T_ITALIC                         60
#define T_BOLD                           61
#define T_ALIGNED                        62
#define T_BIG                            63
#define T_SMALL                          64
#define T_LP                             65
#define T_RP                             66
#define T_HEADING                        67
#define T_WAY                            68
#define T_BETWEEN                        69
#define T_THE                            70
#define T_DOT_L                          71
#define T_START                          72
#define T_END                            73
#define T_NTH                            74
#define T_VERTEX                         75
#define T_IN                             76
#define T_DOT_U                          77
#define T_LAST                           78
#define T_NUMBER                         79
#define T_FUNC1                          80
#define T_FUNC2                          81
#define T_X                              82
#define T_Y                              83
#define T_TOP                            84
#define T_BOTTOM                         85
#endif
/**************** End token definitions ***************************************/

/* The next sections is a series of control #defines.
** various aspects of the generated parser.
**    YYCODETYPE         is the data type used to store the integer codes
**                       that represent terminal and non-terminal symbols.
561
562
563
564
565
566
567
568

569
570
571
572
573
574
575
576




577
578

579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597



598
599
600
601
602
603
604
605







606
607
608
609
610
611
612
569
570
571
572
573
574
575

576
577
578
579
580
581



582
583
584
585


586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602



603
604
605
606







607
608
609
610
611
612
613
614
615
616
617
618
619
620







-
+





-
-
-
+
+
+
+
-
-
+
















-
-
-
+
+
+

-
-
-
-
-
-
-
+
+
+
+
+
+
+







**    YY_MAX_REDUCE      Maximum value for reduce actions
*/
#ifndef INTERFACE
# define INTERFACE 1
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned char
#define YYNOCODE 115
#define YYNOCODE 119
#define YYACTIONTYPE unsigned short int
#define pik_parserTOKENTYPE PToken
typedef union {
  int yyinit;
  pik_parserTOKENTYPE yy0;
  PElem* yy24;
  PEList* yy42;
  PPoint yy49;
  PElem* yy26;
  int yy60;
  PEList* yy120;
  PPoint yy131;
  int yy52;
  PNum yy83;
  PNum yy191;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
#endif
#define pik_parserARG_SDECL
#define pik_parserARG_PDECL
#define pik_parserARG_PARAM
#define pik_parserARG_FETCH
#define pik_parserARG_STORE
#define pik_parserCTX_SDECL Pik *p;
#define pik_parserCTX_PDECL ,Pik *p
#define pik_parserCTX_PARAM ,p
#define pik_parserCTX_FETCH Pik *p=yypParser->p;
#define pik_parserCTX_STORE yypParser->p=p;
#define YYFALLBACK 1
#define YYNSTATE             153
#define YYNRULE              146
#define YYNRULE_WITH_ACTION  110
#define YYNTOKEN             82
#define YYNRULE              148
#define YYNRULE_WITH_ACTION  112
#define YYNTOKEN             86
#define YY_MAX_SHIFT         152
#define YY_MIN_SHIFTREDUCE   268
#define YY_MAX_SHIFTREDUCE   413
#define YY_ERROR_ACTION      414
#define YY_ACCEPT_ACTION     415
#define YY_NO_ACTION         416
#define YY_MIN_REDUCE        417
#define YY_MAX_REDUCE        562
#define YY_MIN_SHIFTREDUCE   270
#define YY_MAX_SHIFTREDUCE   417
#define YY_ERROR_ACTION      418
#define YY_ACCEPT_ACTION     419
#define YY_NO_ACTION         420
#define YY_MIN_REDUCE        421
#define YY_MAX_REDUCE        568
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))

/* Define the yytestcase() macro to be a no-op if is not already defined
** otherwise.
**
** Applications can choose to define yytestcase() in the %include section
665
666
667
668
669
670
671
672

673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732



























































733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758

























759
760

761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785























786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
















































834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
























858
859
860
861

862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
















879
880
881
882


883
884
885
886
887
888
889
890
891








892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
















910
911
912
913
914
915
916
673
674
675
676
677
678
679

680
681
682


























































683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741


























742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766


767
768
769























770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
















































793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
























841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867

868
869
















870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887


888
889
890








891
892
893
894
895
896
897
898
899
900
















901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923







-
+


-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+


-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



-
+

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


-
-
+
+

-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+


-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







**  yy_shift_ofst[]    For each state, the offset into yy_action for
**                     shifting terminals.
**  yy_reduce_ofst[]   For each state, the offset into yy_action for
**                     shifting non-terminals after a reduce.
**  yy_default[]       Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (866)
#define YY_ACTTAB_COUNT (859)
static const YYACTIONTYPE yy_action[] = {
 /*     0 */    64,  137,  129,   19,  139,  135,  141,   99,  101,  100,
 /*    10 */   151,  109,   38,   35,  401,  402,  313,  516,   72,  113,
 /*    20 */   517,  518,  515,  386,  387,  388,  389,  301,  302,   10,
 /*    30 */     9,  305,    8,   51,  111,   41,  310,   27,   40,   28,
 /*    40 */   132,  313,  313,  313,  313,  399,  400,  314,  315,  316,
 /*    50 */   317,  318,  319,  363,  409,  142,   45,   46,  541,  541,
 /*    60 */   284,  423,   26,   65,  346,  129,  401,  402,  313,   12,
 /*    70 */   424,  101,  100,  151,  109,   48,   47,  412,  413,  401,
 /*    80 */   402,  313,  321,  321,  321,  321,  321,  321,  321,  321,
 /*    90 */   112,  112,   24,  313,  313,  313,  313,  399,  400,   22,
 /*   100 */   124,  122,   50,   49,   48,   47,  313,  313,  313,  313,
 /*   110 */   399,  400,  328,    1,  114,  114,  547,   39,   73,   67,
 /*   120 */   131,  130,   89,  126,  125,   74,  107,  362,  144,  143,
 /*   130 */   408,  408,  410,  411,  363,  370,  371,   45,   46,   52,
 /*   140 */   346,   82,    6,  408,  408,  346,   30,  401,  402,  313,
 /*   150 */   103,  151,  109,    7,   18,   17,   20,  457,  151,  109,
 /*   160 */   361,   32,  123,  405,   63,  124,  122,   50,   49,   48,
 /*   170 */    47,  396,  409,  395,  313,  313,  313,  313,  399,  400,
 /*   180 */   363,  409,   39,   45,   46,  127,  151,  109,  126,  125,
 /*   190 */   116,  346,  376,  377,    5,  412,  413,   71,   97,  286,
 /*   200 */    70,   11,  107,   94,  412,  413,   25,  107,  362,  144,
 /*   210 */   143,  408,  408,  363,  409,  327,   45,   46,  288,   18,
 /*   220 */    17,  350,  147,  406,  346,  495,   32,  123,  405,   50,
 /*   230 */    49,   48,   47,  297,   65,  121,  129,  412,  413,  120,
 /*   240 */     1,  461,  101,  100,  151,  109,   62,  131,  130,   89,
 /*   250 */   410,  411,  495,  107,  362,  144,  143,   95,  495,  410,
 /*   260 */   411,  363,  348,  148,   45,   46,  103,  151,  109,  417,
 /*   270 */   445,  404,   96,    1,  279,  280,  281,   68,  283,   25,
 /*   280 */   131,  130,   89,  378,  349,  149,  107,  362,  144,  143,
 /*   290 */    14,   15,  410,  411,  133,   16,  379,  380,  381,  383,
 /*   300 */    71,  106,  286,   70,   31,  386,  387,  388,  389,   53,
 /*   310 */    54,  401,  402,  313,  363,   62,  108,   45,   46,   55,
 /*   320 */    56,    5,  491,  151,  109,  346,   50,   49,   48,   47,
 /*   330 */    94,    2,  102,  375,  107,  362,  144,  143,  313,  313,
 /*   340 */   313,  313,  399,  400,  363,  374,  373,   45,   46,   58,
 /*   350 */   117,  115,  490,  151,  109,  346,   50,   49,   48,   47,
 /*   360 */   292,  110,  418,  425,   26,  338,  339,  363,  421,   43,
 /*   370 */    45,   46,   57,  372,    5,  408,  408,   60,   96,  152,
 /*   380 */    59,  415,   21,   94,  326,   44,   61,  107,  362,  144,
 /*   390 */   143,  363,  354,  352,   45,   46,   50,   49,   48,   47,
 /*   400 */   291,  353,  346,  347,    5,   75,  137,  150,   29,  139,
 /*   410 */   135,  141,  416,   94,  103,  151,  109,  107,  362,  144,
 /*   420 */   143,  363,  416,  416,   45,   46,  416,    5,   77,  416,
 /*   430 */   416,  416,  346,  416,  416,   78,   94,  103,  151,  109,
 /*   440 */   107,  362,  144,  143,  103,  151,  109,  416,   76,  137,
 /*   450 */   416,    3,  139,  135,  141,  416,  416,  103,  151,  109,
 /*   460 */    94,  416,  416,  416,  107,  362,  144,  143,   88,  137,
 /*   470 */   416,  416,  139,  135,  141,   95,  416,  103,  151,  109,
 /*   480 */   416,    4,  416,  416,  103,  151,  109,  416,  422,  416,
 /*   490 */    94,   65,  416,  129,  107,  362,  144,  143,  460,  101,
 /*   500 */   100,  151,  109,   65,  416,  129,   50,   49,   48,   47,
 /*   510 */   455,  101,  100,  151,  109,  409,  489,  151,  109,   65,
 /*   520 */   416,  129,  416,   90,  416,  416,  453,  101,  100,  151,
 /*   530 */   109,   13,  103,  151,  109,   65,  416,  129,  412,  413,
 /*   540 */   416,   84,  452,  101,  100,  151,  109,   65,  416,  129,
 /*   550 */   103,  151,  109,   66,  478,  101,  100,  151,  109,   65,
 /*   560 */   416,  129,  434,  416,   23,  416,  119,  101,  100,  151,
 /*   570 */   109,  416,   50,   49,   48,   47,  416,   65,  416,  129,
 /*   580 */    50,   49,   48,   47,  484,  101,  100,  151,  109,   65,
 /*    10 */   151,  109,   38,   35,  405,  406,  315,  522,   72,  113,
 /*    20 */   523,  524,  521,  390,  391,  392,  393,  303,  304,   10,
 /*    30 */     9,  307,    8,   51,  111,  132,  312,   50,   49,   48,
 /*    40 */    47,  315,  315,  315,  315,  403,  404,  316,  317,  318,
 /*    50 */   319,  320,  321,  322,  323,  367,  413,  142,   45,   46,
 /*    60 */   352,  148,  405,  406,  315,   25,  350,   62,  405,  406,
 /*    70 */   315,  286,  427,   26,   65,   12,  129,  290,  112,  416,
 /*    80 */   417,  428,  101,  100,  151,  109,  413,   24,  112,  315,
 /*    90 */   315,  315,  315,  403,  404,  315,  315,  315,  315,  403,
 /*   100 */   404,  367,  114,  114,   45,   46,  461,  151,  109,  416,
 /*   110 */   417,   22,  350,  553,  405,  406,  315,   73,  108,    1,
 /*   120 */   342,  343,  332,   74,   66,   67,  131,  130,   89,   52,
 /*   130 */   412,  412,  107,  366,  144,  143,  412,  412,  414,  415,
 /*   140 */    62,  315,  315,  315,  315,  403,  404,  367,  413,    6,
 /*   150 */    45,   46,   50,   49,   48,   47,   30,    7,  350,   50,
 /*   160 */    49,   48,   47,   68,   71,    5,  288,   70,  414,  415,
 /*   170 */    63,  416,  417,  400,   94,  374,  375,   13,  107,  366,
 /*   180 */   144,  143,  412,  412,  367,  413,  421,   45,   46,   41,
 /*   190 */   399,   27,   40,   28,   31,  350,   25,  325,  325,  325,
 /*   200 */   325,  325,  325,  325,  325,  325,  325,  116,  416,  417,
 /*   210 */    11,    1,  547,  547,   50,   49,   48,   47,  131,  130,
 /*   220 */    89,  330,   48,   47,  107,  366,  144,  143,   77,   33,
 /*   230 */   414,  415,  367,  354,  147,   45,   46,  103,  151,  109,
 /*   240 */   331,   95,  410,   96,  120,  281,  282,  283,    1,  285,
 /*   250 */   103,  151,  109,  408,  435,  131,  130,   89,  121,   69,
 /*   260 */    69,  107,  366,  144,  143,   14,  382,  414,  415,   15,
 /*   270 */   124,  122,   50,   49,   48,   47,  365,  133,   16,  383,
 /*   280 */   384,  385,  387,   71,   53,  288,   70,   39,  390,  391,
 /*   290 */   392,  393,  106,  126,  125,   54,    5,  124,  122,   50,
 /*   300 */    49,   48,   47,  350,  367,   94,  102,   45,   46,  107,
 /*   310 */   366,  144,  143,    2,   39,  350,   50,   49,   48,   47,
 /*   320 */   126,  125,  380,  381,  353,  149,   18,   17,   55,  405,
 /*   330 */   406,  315,   56,  379,  365,   32,  123,  409,   95,  367,
 /*   340 */   117,  115,   45,   46,  378,  377,   57,  103,  151,  109,
 /*   350 */   350,  449,   58,   18,   17,   59,  315,  315,  315,  315,
 /*   360 */   403,  404,   32,  123,  409,   97,   60,  376,    5,  107,
 /*   370 */    43,  501,  110,  422,  429,   26,   44,   94,  329,  425,
 /*   380 */    61,  107,  366,  144,  143,  367,  358,  356,   45,   46,
 /*   390 */   152,  357,  419,   21,  150,  351,   96,  412,  412,   29,
 /*   400 */    75,  137,  501,    5,  139,  135,  141,  420,  501,  103,
 /*   410 */   151,  109,   94,  352,  148,  420,  107,  366,  144,  143,
 /*   420 */   367,  420,  420,   45,   46,  420,  420,   98,  422,  429,
 /*   430 */    26,  350,   76,  137,  425,  420,  139,  135,  141,  420,
 /*   440 */   420,  103,  151,  109,  420,  152,  420,  420,   21,    5,
 /*   450 */    88,  137,  420,  420,  139,  135,  141,  420,   94,  103,
 /*   460 */   151,  109,  107,  366,  144,  143,  367,  420,  128,   45,
 /*   470 */    46,  108,   65,  420,  129,  420,   95,  350,  420,  465,
 /*   480 */   101,  100,  151,  109,    3,  103,  151,  109,  420,  435,
 /*   490 */   127,  151,  109,   94,   65,  540,  129,  107,  366,  144,
 /*   500 */   143,  464,  101,  100,  151,  109,  420,   65,  420,  129,
 /*   510 */    82,  497,  151,  109,  459,  101,  100,  151,  109,  103,
 /*   520 */   151,  109,  420,  420,   65,   20,  129,   78,  420,  420,
 /*   530 */     4,  457,  101,  100,  151,  109,  103,  151,  109,   94,
 /*   540 */    65,  420,  129,  107,  366,  144,  143,  456,  101,  100,
 /*   550 */   151,  109,   65,  420,  129,  496,  151,  109,  420,  484,
 /*   560 */   101,  100,  151,  109,  420,   65,  420,  129,  420,  420,
 /*   570 */    95,  420,  119,  101,  100,  151,  109,  420,   84,  103,
 /*   580 */   151,  109,  420,  426,   65,  420,  129,  103,  151,  109,
 /*   590 */   420,  490,  101,  100,  151,  109,   65,  420,  129,  438,
 /*   590 */   416,  129,  416,  410,  411,   37,  483,  101,  100,  151,
 /*   600 */   109,   65,  416,  129,  134,  151,  109,  416,  482,  101,
 /*   610 */   100,  151,  109,   65,  416,  129,  348,  148,  348,  148,
 /*   620 */   481,  101,  100,  151,  109,   50,   49,   48,   47,   65,
 /*   630 */   325,  129,   50,   49,   48,   47,  480,  101,  100,  151,
 /*   640 */   109,   65,  416,  129,   50,   49,   48,   47,  479,  101,
 /*   650 */   100,  151,  109,   65,  416,  129,  416,  416,  416,   33,
 /*   660 */   118,  101,  100,  151,  109,  416,   65,  128,  129,  146,
 /*   670 */   108,   95,  108,  449,  101,  100,  151,  109,  416,  416,
 /*   680 */   103,  151,  109,  365,  431,  416,   95,  416,  416,   69,
 /*   690 */    69,   98,  418,  425,   26,  103,  151,  109,  421,  431,
 /*   700 */   416,  416,  361,  416,  416,  534,  136,  151,  109,  152,
 /*   710 */   416,  416,   21,  419,  425,   26,  416,  416,  416,  421,
 /*   720 */    50,   49,   48,   47,   50,   49,   48,   47,  416,  416,
 /*   730 */   152,  416,  416,   21,  416,   36,  138,  151,  109,   34,
 /*   740 */    50,   49,   48,   47,   50,   49,   48,   47,   50,   49,
 /*   750 */    48,   47,  416,   79,  416,   42,  416,  416,   80,  416,
 /*   760 */   416,   91,  103,  151,  109,  416,  416,  103,  151,  109,
 /*   770 */   103,  151,  109,   81,  416,  416,   92,  416,  361,   93,
 /*   780 */   416,  416,  103,  151,  109,  103,  151,  109,  103,  151,
 /*   790 */   109,  140,  151,  109,  145,  151,  109,  416,  416,   83,
 /*   800 */   416,  416,  364,  494,  151,  109,  361,   85,  103,  151,
 /*   810 */   109,   86,  416,  416,   87,  416,  103,  151,  109,  416,
 /*   820 */   103,  151,  109,  103,  151,  109,  416,  509,  416,  416,
 /*   830 */   416,  508,  416,  416,  507,  416,  103,  151,  109,  416,
 /*   840 */   103,  151,  109,  103,  151,  109,  416,  416,  506,  416,
 /*   600 */   420,   23,  420,  489,  101,  100,  151,  109,   65,  420,
 /*   610 */   129,   50,   49,   48,   47,  488,  101,  100,  151,  109,
 /*   620 */   420,   65,  420,  129,  420,  420,   36,  420,  487,  101,
 /*   630 */   100,  151,  109,   65,  420,  129,  420,  420,  413,  420,
 /*   640 */   486,  101,  100,  151,  109,   65,  420,  129,   50,   49,
 /*   650 */    48,   47,  485,  101,  100,  151,  109,  420,   65,  420,
 /*   660 */   129,  416,  417,   34,  420,  118,  101,  100,  151,  109,
 /*   670 */   495,  151,  109,  365,  420,   65,  420,  129,   50,   49,
 /*   680 */    48,   47,  453,  101,  100,  151,  109,   50,   49,   48,
 /*   690 */    47,  423,  429,   26,  134,  151,  109,  425,   50,   49,
 /*   700 */    48,   47,   37,   50,   49,   48,   47,  420,  152,  420,
 /*   710 */   420,   21,  420,   50,   49,   48,   47,  299,  420,  420,
 /*   720 */   414,  415,   50,   49,   48,   47,  294,   50,   49,   48,
 /*   730 */    47,  293,   50,   49,   48,   47,  420,  352,  148,   90,
 /*   740 */   369,  420,   79,  420,  420,   80,  420,   42,  103,  151,
 /*   750 */   109,  103,  151,  109,  103,  151,  109,   91,  420,  420,
 /*   760 */   368,  136,  151,  109,  420,  365,  103,  151,  109,   81,
 /*   770 */   420,  420,   92,  420,  420,   93,  420,  420,  103,  151,
 /*   780 */   109,  103,  151,  109,  103,  151,  109,  420,   83,  420,
 /*   790 */   420,   85,  146,  420,   86,  108,  420,  103,  151,  109,
 /*   800 */   103,  151,  109,  103,  151,  109,   87,  420,  420,  420,
 /*   810 */   420,  515,  420,  420,  514,  103,  151,  109,  420,  513,
 /*   820 */   103,  151,  109,  103,  151,  109,  512,  420,  103,  151,
 /*   830 */   109,  104,  138,  151,  109,  103,  151,  109,  105,  420,
 /*   840 */   103,  151,  109,  420,  420,  420,  420,  103,  151,  109,
 /*   850 */   416,  104,  416,  416,  105,  416,  416,  103,  151,  109,
 /*   860 */   103,  151,  109,  103,  151,  109,
 /*   850 */   140,  151,  109,  145,  151,  109,  500,  151,  109,
};
static const YYCODETYPE yy_lookahead[] = {
 /*     0 */    86,   87,   88,  114,   90,   91,   92,   93,   94,   95,
 /*    10 */    96,   97,    4,    5,   14,   15,   16,   87,   18,   88,
 /*    20 */    90,   91,   92,   23,   24,   25,   26,   27,   28,   29,
 /*    30 */    30,   31,   32,   33,   34,   87,   36,   89,   90,   91,
 /*    40 */    88,   41,   42,   43,   44,   45,   46,   47,   48,   49,
 /*    50 */    50,   51,   52,    1,    2,   88,    4,    5,  110,  111,
 /*    60 */    19,   84,   85,   86,   12,   88,   14,   15,   16,   19,
 /*    70 */    93,   94,   95,   96,   97,    6,    7,   25,   26,   14,
 /*    80 */    15,   16,   53,   54,   55,   56,   57,   58,   59,   60,
 /*    90 */    88,   88,  106,   41,   42,   43,   44,   45,   46,  108,
 /*   100 */     2,    3,    4,    5,    6,    7,   41,   42,   43,   44,
 /*   110 */    45,   46,   62,   61,  112,  113,  113,   19,   98,   40,
 /*   120 */    68,   69,   70,   25,   26,   98,   74,   75,   76,   77,
 /*   130 */    78,   79,   80,   81,    1,   78,   79,    4,    5,   35,
 /*   140 */    12,   86,   32,   78,   79,   12,   67,   14,   15,   16,
 /*   150 */    95,   96,   97,   32,   56,   57,  101,   95,   96,   97,
 /*   160 */    62,   63,   64,   65,   39,    2,    3,    4,    5,    6,
 /*   170 */     7,   33,    2,   33,   41,   42,   43,   44,   45,   46,
 /*   180 */     1,    2,   19,    4,    5,   95,   96,   97,   25,   26,
 /*   190 */    38,   12,   78,   79,   61,   25,   26,   18,   70,   20,
 /*   200 */    21,   39,   74,   70,   25,   26,   10,   74,   75,   76,
 /*   210 */    77,   78,   79,    1,    2,   62,    4,    5,   22,   56,
 /*   220 */    57,   20,   21,   65,   12,   40,   63,   64,   65,    4,
 /*     0 */    90,   91,   92,  118,   94,   95,   96,   97,   98,   99,
 /*    10 */   100,  101,    4,    5,   14,   15,   16,   91,   18,   92,
 /*    20 */    94,   95,   96,   23,   24,   25,   26,   27,   28,   29,
 /*    30 */    30,   31,   32,   33,   34,   92,   36,    4,    5,    6,
 /*    40 */     7,   41,   42,   43,   44,   45,   46,   47,   48,   49,
 /*    50 */    50,   51,   52,   53,   54,    1,    2,   92,    4,    5,
 /*    60 */    20,   21,   14,   15,   16,   10,   12,    3,   14,   15,
 /*    70 */    16,   19,   88,   89,   90,   19,   92,   22,   92,   25,
 /*    80 */    26,   97,   98,   99,  100,  101,    2,  110,   92,   41,
 /*    90 */    42,   43,   44,   45,   46,   41,   42,   43,   44,   45,
 /*   100 */    46,    1,  116,  117,    4,    5,   99,  100,  101,   25,
 /*   110 */    26,  112,   12,  117,   14,   15,   16,  102,   78,   65,
 /*   120 */    72,   73,   66,  102,   40,   40,   72,   73,   74,   35,
 /*   130 */    82,   83,   78,   79,   80,   81,   82,   83,   84,   85,
 /*   140 */    76,   41,   42,   43,   44,   45,   46,    1,    2,   32,
 /*   150 */     4,    5,    4,    5,    6,    7,   71,   32,   12,    4,
 /*   160 */     5,    6,    7,   40,   18,   65,   20,   21,   84,   85,
 /*   170 */    39,   25,   26,   33,   74,   82,   83,   29,   78,   79,
 /*   180 */    80,   81,   82,   83,    1,    2,    0,    4,    5,   91,
 /*   190 */    33,   93,   94,   95,   71,   12,   10,   55,   56,   57,
 /*   200 */    58,   59,   60,   61,   62,   63,   64,   38,   25,   26,
 /*   210 */    39,   65,  114,  115,    4,    5,    6,    7,   72,   73,
 /*   220 */    74,   66,    6,    7,   78,   79,   80,   81,   90,   19,
 /*   230 */     5,    6,    7,    8,   86,   66,   88,   25,   26,   64,
 /*   240 */    61,   93,   94,   95,   96,   97,    3,   68,   69,   70,
 /*   250 */    80,   81,   67,   74,   75,   76,   77,   86,   73,   80,
 /*   260 */    81,    1,   20,   21,    4,    5,   95,   96,   97,    0,
 /*   270 */    99,   65,   12,   61,   14,   15,   16,   40,   18,   10,
 /*   280 */    68,   69,   70,    1,   20,   21,   74,   75,   76,   77,
 /*   290 */     3,    3,   80,   81,   12,    3,   14,   15,   16,   17,
 /*   300 */    18,   67,   20,   21,   67,   23,   24,   25,   26,    3,
 /*   310 */     3,   14,   15,   16,    1,   72,   74,    4,    5,    3,
 /*   320 */     3,   61,   95,   96,   97,   12,    4,    5,    6,    7,
 /*   330 */    70,   13,   67,   62,   74,   75,   76,   77,   41,   42,
 /*   340 */    43,   44,   45,   46,    1,   62,   62,    4,    5,    3,
 /*   350 */    37,   38,   95,   96,   97,   12,    4,    5,    6,    7,
 /*   360 */     8,   82,   83,   84,   85,   68,   69,    1,   89,   61,
 /*   370 */     4,    5,    3,   62,   61,   78,   79,    3,   12,  100,
 /*   380 */     3,  102,  103,   70,   62,   61,    3,   74,   75,   76,
 /*   390 */    77,    1,   22,   22,    4,    5,    4,    5,    6,    7,
 /*   400 */     8,   22,   12,   12,   61,   86,   87,   73,   11,   90,
 /*   410 */    91,   92,  115,   70,   95,   96,   97,   74,   75,   76,
 /*   420 */    77,    1,  115,  115,    4,    5,  115,   61,   86,  115,
 /*   430 */   115,  115,   12,  115,  115,   86,   70,   95,   96,   97,
 /*   440 */    74,   75,   76,   77,   95,   96,   97,  115,   86,   87,
 /*   450 */   115,   61,   90,   91,   92,  115,  115,   95,   96,   97,
 /*   460 */    70,  115,  115,  115,   74,   75,   76,   77,   86,   87,
 /*   470 */   115,  115,   90,   91,   92,   86,  115,   95,   96,   97,
 /*   480 */   115,   61,  115,  115,   95,   96,   97,  115,   99,  115,
 /*   490 */    70,   86,  115,   88,   74,   75,   76,   77,   93,   94,
 /*   500 */    95,   96,   97,   86,  115,   88,    4,    5,    6,    7,
 /*   510 */    93,   94,   95,   96,   97,    2,   95,   96,   97,   86,
 /*   520 */   115,   88,  115,   86,  115,  115,   93,   94,   95,   96,
 /*   530 */    97,   29,   95,   96,   97,   86,  115,   88,   25,   26,
 /*   540 */   115,   86,   93,   94,   95,   96,   97,   86,  115,   88,
 /*   550 */    95,   96,   97,   40,   93,   94,   95,   96,   97,   86,
 /*   560 */   115,   88,  107,  115,  109,  115,   93,   94,   95,   96,
 /*   570 */    97,  115,    4,    5,    6,    7,  115,   86,  115,   88,
 /*   580 */     4,    5,    6,    7,   93,   94,   95,   96,   97,   86,
 /*   590 */   115,   88,  115,   80,   81,   19,   93,   94,   95,   96,
 /*   600 */    97,   86,  115,   88,   95,   96,   97,  115,   93,   94,
 /*   610 */    95,   96,   97,   86,  115,   88,   20,   21,   20,   21,
 /*   620 */    93,   94,   95,   96,   97,    4,    5,    6,    7,   86,
 /*   630 */    62,   88,    4,    5,    6,    7,   93,   94,   95,   96,
 /*   640 */    97,   86,  115,   88,    4,    5,    6,    7,   93,   94,
 /*   650 */    95,   96,   97,   86,  115,   88,  115,  115,  115,   19,
 /*   660 */    93,   94,   95,   96,   97,  115,   86,   71,   88,   71,
 /*   670 */    74,   86,   74,   93,   94,   95,   96,   97,  115,  115,
 /*   680 */    95,   96,   97,   62,   99,  115,   86,  115,  115,  104,
 /*   690 */   105,   82,   83,   84,   85,   95,   96,   97,   89,   99,
 /*   700 */   115,  115,   62,  115,  115,  105,   95,   96,   97,  100,
 /*   230 */    84,   85,    1,   20,   21,    4,    5,   99,  100,  101,
 /*   240 */    66,   90,   69,   12,   68,   14,   15,   16,   65,   18,
 /*   250 */    99,  100,  101,   69,  103,   72,   73,   74,   70,  108,
 /*   260 */   109,   78,   79,   80,   81,    3,    1,   84,   85,    3,
 /*   270 */     2,    3,    4,    5,    6,    7,   66,   12,    3,   14,
 /*   280 */    15,   16,   17,   18,    3,   20,   21,   19,   23,   24,
 /*   290 */    25,   26,   71,   25,   26,    3,   65,    2,    3,    4,
 /*   300 */     5,    6,    7,   12,    1,   74,   71,    4,    5,   78,
 /*   310 */    79,   80,   81,   13,   19,   12,    4,    5,    6,    7,
 /*   320 */    25,   26,   82,   83,   20,   21,   58,   59,    3,   14,
 /*   330 */    15,   16,    3,   66,   66,   67,   68,   69,   90,    1,
 /*   340 */    37,   38,    4,    5,   66,   66,    3,   99,  100,  101,
 /*   350 */    12,  103,    3,   58,   59,    3,   41,   42,   43,   44,
 /*   360 */    45,   46,   67,   68,   69,   74,    3,   66,   65,   78,
 /*   370 */    65,   40,   86,   87,   88,   89,   65,   74,   66,   93,
 /*   380 */     3,   78,   79,   80,   81,    1,   22,   22,    4,    5,
 /*   390 */   104,   22,  106,  107,   77,   12,   12,   82,   83,   11,
 /*   400 */    90,   91,   71,   65,   94,   95,   96,  119,   77,   99,
 /*   410 */   100,  101,   74,   20,   21,  119,   78,   79,   80,   81,
 /*   420 */     1,  119,  119,    4,    5,  119,  119,   86,   87,   88,
 /*   430 */    89,   12,   90,   91,   93,  119,   94,   95,   96,  119,
 /*   440 */   119,   99,  100,  101,  119,  104,  119,  119,  107,   65,
 /*   450 */    90,   91,  119,  119,   94,   95,   96,  119,   74,   99,
 /*   460 */   100,  101,   78,   79,   80,   81,    1,  119,   75,    4,
 /*   470 */     5,   78,   90,  119,   92,  119,   90,   12,  119,   97,
 /*   480 */    98,   99,  100,  101,   65,   99,  100,  101,  119,  103,
 /*   490 */    99,  100,  101,   74,   90,  109,   92,   78,   79,   80,
 /*   500 */    81,   97,   98,   99,  100,  101,  119,   90,  119,   92,
 /*   510 */    90,   99,  100,  101,   97,   98,   99,  100,  101,   99,
 /*   520 */   100,  101,  119,  119,   90,  105,   92,   90,  119,  119,
 /*   530 */    65,   97,   98,   99,  100,  101,   99,  100,  101,   74,
 /*   540 */    90,  119,   92,   78,   79,   80,   81,   97,   98,   99,
 /*   550 */   100,  101,   90,  119,   92,   99,  100,  101,  119,   97,
 /*   560 */    98,   99,  100,  101,  119,   90,  119,   92,  119,  119,
 /*   570 */    90,  119,   97,   98,   99,  100,  101,  119,   90,   99,
 /*   580 */   100,  101,  119,  103,   90,  119,   92,   99,  100,  101,
 /*   590 */   119,   97,   98,   99,  100,  101,   90,  119,   92,  111,
 /*   600 */   119,  113,  119,   97,   98,   99,  100,  101,   90,  119,
 /*   610 */    92,    4,    5,    6,    7,   97,   98,   99,  100,  101,
 /*   620 */   119,   90,  119,   92,  119,  119,   19,  119,   97,   98,
 /*   630 */    99,  100,  101,   90,  119,   92,  119,  119,    2,  119,
 /*   640 */    97,   98,   99,  100,  101,   90,  119,   92,    4,    5,
 /*   650 */     6,    7,   97,   98,   99,  100,  101,  119,   90,  119,
 /*   660 */    92,   25,   26,   19,  119,   97,   98,   99,  100,  101,
 /*   670 */    99,  100,  101,   66,  119,   90,  119,   92,    4,    5,
 /*   680 */     6,    7,   97,   98,   99,  100,  101,    4,    5,    6,
 /*   690 */     7,   87,   88,   89,   99,  100,  101,   93,    4,    5,
 /*   700 */     6,    7,   19,    4,    5,    6,    7,  119,  104,  119,
 /*   710 */   115,  115,  103,   83,   84,   85,  115,  115,  115,   89,
 /*   720 */     4,    5,    6,    7,    4,    5,    6,    7,  115,  115,
 /*   730 */   100,  115,  115,  103,  115,   19,   95,   96,   97,   19,
 /*   740 */     4,    5,    6,    7,    4,    5,    6,    7,    4,    5,
 /*   750 */     6,    7,  115,   86,  115,   19,  115,  115,   86,  115,
 /*   760 */   115,   86,   95,   96,   97,  115,  115,   95,   96,   97,
 /*   770 */    95,   96,   97,   86,  115,  115,   86,  115,   62,   86,
 /*   780 */   115,  115,   95,   96,   97,   95,   96,   97,   95,   96,
 /*   790 */    97,   95,   96,   97,   95,   96,   97,  115,  115,   86,
 /*   800 */   115,  115,   62,   95,   96,   97,   62,   86,   95,   96,
 /*   810 */    97,   86,  115,  115,   86,  115,   95,   96,   97,  115,
 /*   820 */    95,   96,   97,   95,   96,   97,  115,   86,  115,  115,
 /*   830 */   115,   86,  115,  115,   86,  115,   95,   96,   97,  115,
 /*   840 */    95,   96,   97,   95,   96,   97,  115,  115,   86,  115,
 /*   850 */   115,   86,  115,  115,   86,  115,  115,   95,   96,   97,
 /*   860 */    95,   96,   97,   95,   96,   97,   82,   82,   82,   82,
 /*   870 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   880 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   890 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   900 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   910 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   920 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   930 */    82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 /*   940 */    82,   82,   82,   82,   82,   82,   82,   82,
 /*   710 */   119,  107,  119,    4,    5,    6,    7,    8,  119,  119,
 /*   720 */    84,   85,    4,    5,    6,    7,    8,    4,    5,    6,
 /*   730 */     7,    8,    4,    5,    6,    7,  119,   20,   21,   90,
 /*   740 */    66,  119,   90,  119,  119,   90,  119,   19,   99,  100,
 /*   750 */   101,   99,  100,  101,   99,  100,  101,   90,  119,  119,
 /*   760 */    66,   99,  100,  101,  119,   66,   99,  100,  101,   90,
 /*   770 */   119,  119,   90,  119,  119,   90,  119,  119,   99,  100,
 /*   780 */   101,   99,  100,  101,   99,  100,  101,  119,   90,  119,
 /*   790 */   119,   90,   75,  119,   90,   78,  119,   99,  100,  101,
 /*   800 */    99,  100,  101,   99,  100,  101,   90,  119,  119,  119,
 /*   810 */   119,   90,  119,  119,   90,   99,  100,  101,  119,   90,
 /*   820 */    99,  100,  101,   99,  100,  101,   90,  119,   99,  100,
 /*   830 */   101,   90,   99,  100,  101,   99,  100,  101,   90,  119,
 /*   840 */    99,  100,  101,  119,  119,  119,  119,   99,  100,  101,
 /*   850 */    99,  100,  101,   99,  100,  101,   99,  100,  101,   86,
 /*   860 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   870 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   880 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   890 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   900 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   910 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   920 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   930 */    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 /*   940 */    86,   86,   86,   86,   86,
};
#define YY_SHIFT_COUNT    (152)
#define YY_SHIFT_MIN      (0)
#define YY_SHIFT_MAX      (744)
#define YY_SHIFT_MAX      (728)
static const unsigned short int yy_shift_ofst[] = {
 /*     0 */   282,   52,  179,  133,  133,  133,  212,  212,  212,  212,
 /*    10 */   212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
 /*    20 */   212,  260,  282,    0,  260,  282,  343,  313,  366,  366,
 /*    30 */   297,   65,  343,  343,  343,  390,  343,  343,  420,  343,
 /*    40 */   343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
 /*    50 */   343,  513,  128,  128,  128,  128,  128,  128,  128,  128,
 /*    60 */   128,  128,  128,  513,   98,  163,  170,  170,  170,   41,
 /*    70 */   866,  866,  866,   29,   29,  640,  716,  502,  322,  720,
 /*    80 */   568,  576,  225,  352,  392,  621,  736,  740,  744,  596,
 /*    90 */   628,  628,  628,  628,  598,  628,  185,  242,  196,   50,
 /*   100 */    79,    8,   57,  237,   69,   69,  114,  201,  264,  243,
 /*   110 */   269,  104,  110,  121,  125,  138,  140,  152,  162,  153,
 /*   120 */   158,  175,  169,  206,  287,  288,  292,  234,  306,  307,
 /*   130 */   316,  317,  265,  318,  271,  369,  283,  346,  284,  377,
 /*   140 */   311,  374,  265,  308,  324,  234,  383,  370,  371,  379,
 /*   150 */   391,  334,  397,
 /*     0 */   265,   54,  146,  100,  100,  100,  183,  183,  183,  183,
 /*    10 */   183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
 /*    20 */   183,  231,  265,    0,  231,  265,  338,  303,  384,  384,
 /*    30 */    48,  315,  338,  338,  338,  419,  338,  338,  465,  338,
 /*    40 */   338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
 /*    50 */   338,   84,  291,  291,  291,  291,  291,  291,  291,  291,
 /*    60 */   291,  291,  291,   84,  268,  295,  636,  636,  636,   52,
 /*    70 */   859,  859,  859,  142,  142,  210,  607,  148,  155,  644,
 /*    80 */   312,  683,  709,  718,  723,  674,  728,  694,  699,  393,
 /*    90 */    33,   33,   33,   33,  717,   33,  331,   40,   55,   56,
 /*   100 */    85,    8,   93,  123,  216,  216,  240,  213,  304,   64,
 /*   110 */   186,   94,  117,  125,  131,  140,  157,  169,  171,  174,
 /*   120 */   173,  176,  188,  184,  262,  266,  275,  221,  281,  292,
 /*   130 */   325,  329,  235,  300,  267,  343,  278,  349,  279,  352,
 /*   140 */   301,  363,  235,  305,  311,  221,  377,  364,  365,  369,
 /*   150 */   383,  317,  388,
};
#define YY_REDUCE_COUNT (72)
#define YY_REDUCE_MIN   (-111)
#define YY_REDUCE_MAX   (768)
#define YY_REDUCE_MIN   (-115)
#define YY_REDUCE_MAX   (757)
static const short yy_reduce_ofst[] = {
 /*     0 */   279,  -86,  -23,  319,  362,  382,  148,  405,  417,  433,
 /*    10 */   449,  461,  473,  491,  503,  515,  527,  543,  555,  567,
 /*    20 */   580,  585,  609,  -52,  600,  630,  455,   55,  171,  389,
 /*    30 */   -70,  -70,  342,  349,  437,  667,  672,  675,  687,  690,
 /*    40 */   693,  713,  721,  725,  728,  741,  745,  748,  762,  765,
 /*    50 */   768,    2,   62,   90,  227,  257,  421,  509,  611,  641,
 /*    60 */   696,  699,  708,    3, -111, -111,  -69,  -48,  -33,  -14,
 /*    70 */    -9,   20,   27,
 /*     0 */   286,  -90,  -16,  310,  342,  360,  382,  404,  417,  434,
 /*    10 */   450,  462,  475,  494,  506,  518,  531,  543,  555,  568,
 /*    20 */   585,  151,  341,   98,  386,  604,  488,  420,  248,  480,
 /*    30 */   -74,  -74,  138,  437,  649,  652,  655,  667,  679,  682,
 /*    40 */   685,  698,  701,  704,  716,  721,  724,  729,  736,  741,
 /*    50 */   748,  -14,    7,  391,  412,  456,  571,  595,  662,  733,
 /*    60 */   751,  754,  757,   -4, -115, -115,  -73,  -57,  -35,  -23,
 /*    70 */    -1,   15,   21,
};
static const YYACTIONTYPE yy_default[] = {
 /*     0 */   420,  414,  414,  414,  414,  414,  414,  414,  414,  414,
 /*    10 */   414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
 /*    20 */   414,  414,  420,  539,  414,  420,  540,  448,  414,  414,
 /*    30 */   414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
 /*    40 */   444,  414,  414,  414,  414,  414,  414,  414,  414,  414,
 /*    50 */   414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
 /*    60 */   414,  414,  414,  414,  414,  414,  414,  414,  414,  426,
 /*    70 */   438,  469,  469,  436,  458,  414,  414,  414,  414,  414,
 /*    80 */   414,  414,  447,  442,  439,  414,  414,  414,  414,  414,
 /*    90 */   473,  472,  471,  443,  414,  531,  427,  414,  414,  414,
 /*   100 */   485,  552,  414,  414,  505,  504,  414,  500,  414,  493,
 /*   110 */   414,  456,  414,  414,  543,  414,  414,  414,  414,  414,
 /*   120 */   414,  414,  414,  414,  414,  414,  414,  492,  414,  414,
 /*   130 */   414,  414,  486,  414,  414,  414,  414,  414,  414,  414,
 /*   140 */   414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
 /*   150 */   414,  556,  414,
 /*     0 */   424,  418,  418,  418,  418,  418,  418,  418,  418,  418,
 /*    10 */   418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
 /*    20 */   418,  418,  424,  545,  418,  424,  546,  452,  418,  418,
 /*    30 */   418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
 /*    40 */   448,  418,  418,  418,  418,  418,  418,  418,  418,  418,
 /*    50 */   418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
 /*    60 */   418,  418,  418,  418,  418,  418,  418,  418,  418,  430,
 /*    70 */   442,  475,  475,  440,  462,  418,  418,  418,  418,  418,
 /*    80 */   418,  418,  451,  446,  443,  418,  418,  418,  418,  418,
 /*    90 */   479,  478,  477,  447,  418,  537,  431,  418,  418,  418,
 /*   100 */   491,  558,  418,  418,  511,  510,  418,  506,  418,  499,
 /*   110 */   418,  460,  418,  418,  549,  418,  418,  418,  418,  418,
 /*   120 */   418,  418,  418,  418,  418,  418,  418,  498,  418,  418,
 /*   130 */   418,  418,  492,  418,  418,  418,  418,  418,  418,  418,
 /*   140 */   418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
 /*   150 */   418,  562,  418,
};
/********** End of lemon-generated parsing tables *****************************/

/* The next table maps tokens (terminal symbols) into fallback tokens.  
** If a construct like the following:
** 
**      %fallback ID X Y Z.
975
976
977
978
979
980
981


982
983
984
985
986
987
988
989


990
991
992
993
994
995
996
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007







+
+








+
+







    0,  /*     DASHED => nothing */
    0,  /*         CW => nothing */
    0,  /*        CCW => nothing */
    0,  /*     LARROW => nothing */
    0,  /*     RARROW => nothing */
    0,  /*    LRARROW => nothing */
    0,  /*      INVIS => nothing */
    0,  /*      THICK => nothing */
    0,  /*       THIN => nothing */
    0,  /*     CENTER => nothing */
    0,  /*      LJUST => nothing */
    0,  /*      RJUST => nothing */
    0,  /*      ABOVE => nothing */
    0,  /*      BELOW => nothing */
    0,  /*     ITALIC => nothing */
    0,  /*       BOLD => nothing */
    0,  /*    ALIGNED => nothing */
    0,  /*        BIG => nothing */
    0,  /*      SMALL => nothing */
    0,  /*         LP => nothing */
    0,  /*         RP => nothing */
    0,  /*    HEADING => nothing */
    0,  /*        WAY => nothing */
    0,  /*    BETWEEN => nothing */
    0,  /*        THE => nothing */
    0,  /*      DOT_L => nothing */
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213


































































1214
1215
1216
1217
1218
1219
1220
1156
1157
1158
1159
1160
1161
1162






























































1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







  /*   46 */ "DASHED",
  /*   47 */ "CW",
  /*   48 */ "CCW",
  /*   49 */ "LARROW",
  /*   50 */ "RARROW",
  /*   51 */ "LRARROW",
  /*   52 */ "INVIS",
  /*   53 */ "CENTER",
  /*   54 */ "LJUST",
  /*   55 */ "RJUST",
  /*   56 */ "ABOVE",
  /*   57 */ "BELOW",
  /*   58 */ "ITALIC",
  /*   59 */ "BOLD",
  /*   60 */ "ALIGNED",
  /*   61 */ "LP",
  /*   62 */ "RP",
  /*   63 */ "HEADING",
  /*   64 */ "WAY",
  /*   65 */ "BETWEEN",
  /*   66 */ "THE",
  /*   67 */ "DOT_L",
  /*   68 */ "START",
  /*   69 */ "END",
  /*   70 */ "NTH",
  /*   71 */ "VERTEX",
  /*   72 */ "IN",
  /*   73 */ "DOT_U",
  /*   74 */ "LAST",
  /*   75 */ "NUMBER",
  /*   76 */ "FUNC1",
  /*   77 */ "FUNC2",
  /*   78 */ "X",
  /*   79 */ "Y",
  /*   80 */ "TOP",
  /*   81 */ "BOTTOM",
  /*   82 */ "element_list",
  /*   83 */ "element",
  /*   84 */ "unnamed_element",
  /*   85 */ "basetype",
  /*   86 */ "expr",
  /*   87 */ "numproperty",
  /*   88 */ "edge",
  /*   89 */ "direction",
  /*   90 */ "dashproperty",
  /*   91 */ "colorproperty",
  /*   92 */ "locproperty",
  /*   93 */ "position",
  /*   94 */ "place",
  /*   95 */ "object",
  /*   96 */ "objectname",
  /*   97 */ "nth",
  /*   98 */ "textposition",
  /*   99 */ "rvalue",
  /*  100 */ "lvalue",
  /*  101 */ "even",
  /*  102 */ "document",
  /*  103 */ "print",
  /*  104 */ "prlist",
  /*  105 */ "pritem",
  /*  106 */ "prsep",
  /*  107 */ "attribute_list",
  /*  108 */ "savelist",
  /*  109 */ "alist",
  /*  110 */ "attribute",
  /*  111 */ "boolproperty",
  /*  112 */ "withclause",
  /*  113 */ "with",
  /*  114 */ "between",
  /*   53 */ "THICK",
  /*   54 */ "THIN",
  /*   55 */ "CENTER",
  /*   56 */ "LJUST",
  /*   57 */ "RJUST",
  /*   58 */ "ABOVE",
  /*   59 */ "BELOW",
  /*   60 */ "ITALIC",
  /*   61 */ "BOLD",
  /*   62 */ "ALIGNED",
  /*   63 */ "BIG",
  /*   64 */ "SMALL",
  /*   65 */ "LP",
  /*   66 */ "RP",
  /*   67 */ "HEADING",
  /*   68 */ "WAY",
  /*   69 */ "BETWEEN",
  /*   70 */ "THE",
  /*   71 */ "DOT_L",
  /*   72 */ "START",
  /*   73 */ "END",
  /*   74 */ "NTH",
  /*   75 */ "VERTEX",
  /*   76 */ "IN",
  /*   77 */ "DOT_U",
  /*   78 */ "LAST",
  /*   79 */ "NUMBER",
  /*   80 */ "FUNC1",
  /*   81 */ "FUNC2",
  /*   82 */ "X",
  /*   83 */ "Y",
  /*   84 */ "TOP",
  /*   85 */ "BOTTOM",
  /*   86 */ "element_list",
  /*   87 */ "element",
  /*   88 */ "unnamed_element",
  /*   89 */ "basetype",
  /*   90 */ "expr",
  /*   91 */ "numproperty",
  /*   92 */ "edge",
  /*   93 */ "direction",
  /*   94 */ "dashproperty",
  /*   95 */ "colorproperty",
  /*   96 */ "locproperty",
  /*   97 */ "position",
  /*   98 */ "place",
  /*   99 */ "object",
  /*  100 */ "objectname",
  /*  101 */ "nth",
  /*  102 */ "textposition",
  /*  103 */ "rvalue",
  /*  104 */ "lvalue",
  /*  105 */ "even",
  /*  106 */ "document",
  /*  107 */ "print",
  /*  108 */ "prlist",
  /*  109 */ "pritem",
  /*  110 */ "prsep",
  /*  111 */ "attribute_list",
  /*  112 */ "savelist",
  /*  113 */ "alist",
  /*  114 */ "attribute",
  /*  115 */ "boolproperty",
  /*  116 */ "withclause",
  /*  117 */ "with",
  /*  118 */ "between",
};
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */

#ifndef NDEBUG
/* For tracing reduce actions, the names of all rules are required.
*/
static const char *const yyRuleName[] = {
1266
1267
1268
1269
1270
1271
1272


1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300




























1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366


































































1367
1368
1369
1370
1371
1372
1373
1281
1282
1283
1284
1285
1286
1287
1288
1289




























1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317


































































1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390







+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







 /*  45 */ "numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS",
 /*  46 */ "boolproperty ::= CW",
 /*  47 */ "boolproperty ::= CCW",
 /*  48 */ "boolproperty ::= LARROW",
 /*  49 */ "boolproperty ::= RARROW",
 /*  50 */ "boolproperty ::= LRARROW",
 /*  51 */ "boolproperty ::= INVIS",
 /*  52 */ "boolproperty ::= THICK",
 /*  53 */ "boolproperty ::= THIN",
 /*  52 */ "textposition ::=",
 /*  53 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED",
 /*  54 */ "position ::= expr COMMA expr",
 /*  55 */ "position ::= place PLUS expr COMMA expr",
 /*  56 */ "position ::= place MINUS expr COMMA expr",
 /*  57 */ "position ::= place PLUS LP expr COMMA expr RP",
 /*  58 */ "position ::= place MINUS LP expr COMMA expr RP",
 /*  59 */ "position ::= LP position COMMA position RP",
 /*  60 */ "position ::= LP position RP",
 /*  61 */ "position ::= expr between position AND position",
 /*  62 */ "position ::= expr ABOVE position",
 /*  63 */ "position ::= expr BELOW position",
 /*  64 */ "position ::= expr LEFT OF position",
 /*  65 */ "position ::= expr RIGHT OF position",
 /*  66 */ "position ::= expr EDGEPT OF position",
 /*  67 */ "position ::= expr HEADING expr FROM position",
 /*  68 */ "place ::= object",
 /*  69 */ "place ::= object DOT_E edge",
 /*  70 */ "place ::= object DOT_L START",
 /*  71 */ "place ::= object DOT_L END",
 /*  72 */ "place ::= START OF object",
 /*  73 */ "place ::= END OF object",
 /*  74 */ "place ::= edge OF object",
 /*  75 */ "place ::= NTH VERTEX OF object",
 /*  76 */ "object ::= nth",
 /*  77 */ "object ::= nth OF|IN object",
 /*  78 */ "objectname ::= PLACENAME",
 /*  79 */ "objectname ::= objectname DOT_U PLACENAME",
 /*  54 */ "textposition ::=",
 /*  55 */ "textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL",
 /*  56 */ "position ::= expr COMMA expr",
 /*  57 */ "position ::= place PLUS expr COMMA expr",
 /*  58 */ "position ::= place MINUS expr COMMA expr",
 /*  59 */ "position ::= place PLUS LP expr COMMA expr RP",
 /*  60 */ "position ::= place MINUS LP expr COMMA expr RP",
 /*  61 */ "position ::= LP position COMMA position RP",
 /*  62 */ "position ::= LP position RP",
 /*  63 */ "position ::= expr between position AND position",
 /*  64 */ "position ::= expr ABOVE position",
 /*  65 */ "position ::= expr BELOW position",
 /*  66 */ "position ::= expr LEFT OF position",
 /*  67 */ "position ::= expr RIGHT OF position",
 /*  68 */ "position ::= expr EDGEPT OF position",
 /*  69 */ "position ::= expr HEADING expr FROM position",
 /*  70 */ "place ::= object",
 /*  71 */ "place ::= object DOT_E edge",
 /*  72 */ "place ::= object DOT_L START",
 /*  73 */ "place ::= object DOT_L END",
 /*  74 */ "place ::= START OF object",
 /*  75 */ "place ::= END OF object",
 /*  76 */ "place ::= edge OF object",
 /*  77 */ "place ::= NTH VERTEX OF object",
 /*  78 */ "object ::= nth",
 /*  79 */ "object ::= nth OF|IN object",
 /*  80 */ "objectname ::= PLACENAME",
 /*  81 */ "objectname ::= objectname DOT_U PLACENAME",
 /*  80 */ "nth ::= NTH CLASSNAME",
 /*  81 */ "nth ::= NTH LAST CLASSNAME",
 /*  82 */ "nth ::= LAST CLASSNAME",
 /*  83 */ "nth ::= LAST",
 /*  84 */ "nth ::= NTH LB RB",
 /*  85 */ "nth ::= NTH LAST LB RB",
 /*  86 */ "nth ::= LAST LB RB",
 /*  87 */ "expr ::= expr PLUS expr",
 /*  88 */ "expr ::= expr MINUS expr",
 /*  89 */ "expr ::= expr STAR expr",
 /*  90 */ "expr ::= expr SLASH expr",
 /*  91 */ "expr ::= MINUS expr",
 /*  92 */ "expr ::= PLUS expr",
 /*  93 */ "expr ::= LP expr RP",
 /*  94 */ "expr ::= NUMBER",
 /*  95 */ "expr ::= ID",
 /*  96 */ "expr ::= FUNC1 LP expr RP",
 /*  97 */ "expr ::= FUNC2 LP expr COMMA expr RP",
 /*  98 */ "expr ::= object DOT_L locproperty",
 /*  99 */ "expr ::= object DOT_L numproperty",
 /* 100 */ "expr ::= object DOT_L dashproperty",
 /* 101 */ "expr ::= object DOT_L colorproperty",
 /* 102 */ "expr ::= object DOT_E edge DOT_L X",
 /* 103 */ "expr ::= object DOT_E edge DOT_L Y",
 /* 104 */ "expr ::= LP locproperty OF object RP",
 /* 105 */ "expr ::= LP dashproperty OF object RP",
 /* 106 */ "expr ::= LP numproperty OF object RP",
 /* 107 */ "expr ::= LP colorproperty OF object RP",
 /* 108 */ "expr ::= NTH VERTEX OF object DOT_L X",
 /* 109 */ "expr ::= NTH VERTEX OF object DOT_L Y",
 /* 110 */ "lvalue ::= ID",
 /* 111 */ "lvalue ::= FILL",
 /* 112 */ "lvalue ::= COLOR",
 /* 113 */ "lvalue ::= THICKNESS",
 /* 114 */ "rvalue ::= expr",
 /* 115 */ "print ::= PRINT",
 /* 116 */ "prlist ::= pritem",
 /* 117 */ "prlist ::= prlist prsep pritem",
 /* 118 */ "direction ::= UP",
 /* 119 */ "direction ::= DOWN",
 /* 120 */ "direction ::= LEFT",
 /* 121 */ "direction ::= RIGHT",
 /* 122 */ "attribute_list ::= alist",
 /* 123 */ "alist ::=",
 /* 124 */ "alist ::= alist attribute",
 /* 125 */ "attribute ::= boolproperty",
 /* 126 */ "attribute ::= WITH withclause",
 /* 127 */ "even ::= UNTIL EVEN WITH",
 /* 128 */ "even ::= EVEN WITH",
 /* 129 */ "withclause ::= with",
 /* 130 */ "withclause ::= withclause AND with",
 /* 131 */ "dashproperty ::= DOTTED",
 /* 132 */ "dashproperty ::= DASHED",
 /* 133 */ "colorproperty ::= FILL",
 /* 134 */ "colorproperty ::= COLOR",
 /* 135 */ "position ::= place",
 /* 136 */ "between ::= WAY BETWEEN",
 /* 137 */ "between ::= BETWEEN",
 /* 138 */ "between ::= OF THE WAY BETWEEN",
 /* 139 */ "object ::= objectname",
 /* 140 */ "locproperty ::= X|Y",
 /* 141 */ "edge ::= EDGEPT",
 /* 142 */ "edge ::= TOP",
 /* 143 */ "edge ::= BOTTOM",
 /* 144 */ "edge ::= LEFT",
 /* 145 */ "edge ::= RIGHT",
 /*  82 */ "nth ::= NTH CLASSNAME",
 /*  83 */ "nth ::= NTH LAST CLASSNAME",
 /*  84 */ "nth ::= LAST CLASSNAME",
 /*  85 */ "nth ::= LAST",
 /*  86 */ "nth ::= NTH LB RB",
 /*  87 */ "nth ::= NTH LAST LB RB",
 /*  88 */ "nth ::= LAST LB RB",
 /*  89 */ "expr ::= expr PLUS expr",
 /*  90 */ "expr ::= expr MINUS expr",
 /*  91 */ "expr ::= expr STAR expr",
 /*  92 */ "expr ::= expr SLASH expr",
 /*  93 */ "expr ::= MINUS expr",
 /*  94 */ "expr ::= PLUS expr",
 /*  95 */ "expr ::= LP expr RP",
 /*  96 */ "expr ::= NUMBER",
 /*  97 */ "expr ::= ID",
 /*  98 */ "expr ::= FUNC1 LP expr RP",
 /*  99 */ "expr ::= FUNC2 LP expr COMMA expr RP",
 /* 100 */ "expr ::= object DOT_L locproperty",
 /* 101 */ "expr ::= object DOT_L numproperty",
 /* 102 */ "expr ::= object DOT_L dashproperty",
 /* 103 */ "expr ::= object DOT_L colorproperty",
 /* 104 */ "expr ::= object DOT_E edge DOT_L X",
 /* 105 */ "expr ::= object DOT_E edge DOT_L Y",
 /* 106 */ "expr ::= LP locproperty OF object RP",
 /* 107 */ "expr ::= LP dashproperty OF object RP",
 /* 108 */ "expr ::= LP numproperty OF object RP",
 /* 109 */ "expr ::= LP colorproperty OF object RP",
 /* 110 */ "expr ::= NTH VERTEX OF object DOT_L X",
 /* 111 */ "expr ::= NTH VERTEX OF object DOT_L Y",
 /* 112 */ "lvalue ::= ID",
 /* 113 */ "lvalue ::= FILL",
 /* 114 */ "lvalue ::= COLOR",
 /* 115 */ "lvalue ::= THICKNESS",
 /* 116 */ "rvalue ::= expr",
 /* 117 */ "print ::= PRINT",
 /* 118 */ "prlist ::= pritem",
 /* 119 */ "prlist ::= prlist prsep pritem",
 /* 120 */ "direction ::= UP",
 /* 121 */ "direction ::= DOWN",
 /* 122 */ "direction ::= LEFT",
 /* 123 */ "direction ::= RIGHT",
 /* 124 */ "attribute_list ::= alist",
 /* 125 */ "alist ::=",
 /* 126 */ "alist ::= alist attribute",
 /* 127 */ "attribute ::= boolproperty",
 /* 128 */ "attribute ::= WITH withclause",
 /* 129 */ "even ::= UNTIL EVEN WITH",
 /* 130 */ "even ::= EVEN WITH",
 /* 131 */ "withclause ::= with",
 /* 132 */ "withclause ::= withclause AND with",
 /* 133 */ "dashproperty ::= DOTTED",
 /* 134 */ "dashproperty ::= DASHED",
 /* 135 */ "colorproperty ::= FILL",
 /* 136 */ "colorproperty ::= COLOR",
 /* 137 */ "position ::= place",
 /* 138 */ "between ::= WAY BETWEEN",
 /* 139 */ "between ::= BETWEEN",
 /* 140 */ "between ::= OF THE WAY BETWEEN",
 /* 141 */ "object ::= objectname",
 /* 142 */ "locproperty ::= X|Y",
 /* 143 */ "edge ::= EDGEPT",
 /* 144 */ "edge ::= TOP",
 /* 145 */ "edge ::= BOTTOM",
 /* 146 */ "edge ::= LEFT",
 /* 147 */ "edge ::= RIGHT",
};
#endif /* NDEBUG */


#if YYSTACKDEPTH<=0
/*
** Try to increase the size of the parser stack.  Return the number
1485
1486
1487
1488
1489
1490
1491
1492

1493
1494
1495
1496



1497
1498
1499
1500
1501



1502
1503
1504
1505



1506
1507
1508
1509
1510
1511
1512
1502
1503
1504
1505
1506
1507
1508

1509
1510



1511
1512
1513
1514
1515



1516
1517
1518
1519



1520
1521
1522
1523
1524
1525
1526
1527
1528
1529







-
+

-
-
-
+
+
+


-
-
-
+
+
+

-
-
-
+
+
+







    ** being destroyed before it is finished parsing.
    **
    ** Note: during a reduce, the only symbols destroyed are those
    ** which appear on the RHS of the rule, but which are *not* used
    ** inside the C code.
    */
/********* Begin destructor definitions ***************************************/
    case 82: /* element_list */
    case 86: /* element_list */
{
#line 438 "pikchr.y"
pik_elist_free(p,(yypminor->yy42));
#line 1521 "pikchr.c"
#line 442 "pikchr.y"
pik_elist_free(p,(yypminor->yy120));
#line 1538 "pikchr.c"
}
      break;
    case 83: /* element */
    case 84: /* unnamed_element */
    case 85: /* basetype */
    case 87: /* element */
    case 88: /* unnamed_element */
    case 89: /* basetype */
{
#line 440 "pikchr.y"
pik_elem_free(p,(yypminor->yy24));
#line 1530 "pikchr.c"
#line 444 "pikchr.y"
pik_elem_free(p,(yypminor->yy26));
#line 1547 "pikchr.c"
}
      break;
/********* End destructor definitions *****************************************/
    default:  break;   /* If no destructor action specified: do nothing */
  }
}

1716
1717
1718
1719
1720
1721
1722
1723

1724
1725
1726

1727
1728
1729
1730
1731
1732
1733
1733
1734
1735
1736
1737
1738
1739

1740
1741
1742

1743
1744
1745
1746
1747
1748
1749
1750







-
+


-
+







     fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
   }
#endif
   while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
   /* Here code is inserted which will execute if the parser
   ** stack every overflows */
/******** Begin %stack_overflow code ******************************************/
#line 469 "pikchr.y"
#line 473 "pikchr.y"

  pik_error(p, 0, "parser stack overflow");
#line 1751 "pikchr.c"
#line 1768 "pikchr.c"
/******** End %stack_overflow code ********************************************/
   pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */
   pik_parserCTX_STORE
}

/*
** Print tracing information for a SHIFT action
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943




















































































































































1944
1945
1946
1947
1948
1949
1950
1808
1809
1810
1811
1812
1813
1814


















































































































































1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







  yytos->minor.yy0 = yyMinor;
  yyTraceShift(yypParser, yyNewState, "Shift");
}

/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static const YYCODETYPE yyRuleInfoLhs[] = {
   102,  /* (0) document ::= element_list */
    82,  /* (1) element_list ::= element */
    82,  /* (2) element_list ::= element_list EOL element */
    83,  /* (3) element ::= */
    83,  /* (4) element ::= direction */
    83,  /* (5) element ::= lvalue ASSIGN rvalue */
    83,  /* (6) element ::= PLACENAME COLON unnamed_element */
    83,  /* (7) element ::= PLACENAME COLON position */
    83,  /* (8) element ::= unnamed_element */
    83,  /* (9) element ::= print prlist */
    99,  /* (10) rvalue ::= PLACENAME */
   105,  /* (11) pritem ::= FILL */
   105,  /* (12) pritem ::= COLOR */
   105,  /* (13) pritem ::= THICKNESS */
   105,  /* (14) pritem ::= rvalue */
   105,  /* (15) pritem ::= STRING */
   106,  /* (16) prsep ::= COMMA */
    84,  /* (17) unnamed_element ::= basetype attribute_list */
    85,  /* (18) basetype ::= CLASSNAME */
    85,  /* (19) basetype ::= STRING textposition */
    85,  /* (20) basetype ::= LB savelist element_list RB */
   108,  /* (21) savelist ::= */
   107,  /* (22) attribute_list ::= expr */
   107,  /* (23) attribute_list ::= expr PERCENT */
   110,  /* (24) attribute ::= numproperty expr PERCENT */
   110,  /* (25) attribute ::= numproperty expr */
   110,  /* (26) attribute ::= dashproperty expr */
   110,  /* (27) attribute ::= dashproperty */
   110,  /* (28) attribute ::= colorproperty rvalue */
   110,  /* (29) attribute ::= direction expr PERCENT */
   110,  /* (30) attribute ::= direction expr */
   110,  /* (31) attribute ::= direction */
   110,  /* (32) attribute ::= direction even position */
   110,  /* (33) attribute ::= CLOSE */
   110,  /* (34) attribute ::= CHOP */
   110,  /* (35) attribute ::= FROM position */
   110,  /* (36) attribute ::= TO position */
   110,  /* (37) attribute ::= THEN */
   110,  /* (38) attribute ::= AT position */
   110,  /* (39) attribute ::= SAME */
   110,  /* (40) attribute ::= SAME AS object */
   110,  /* (41) attribute ::= STRING textposition */
   110,  /* (42) attribute ::= FIT */
   113,  /* (43) with ::= DOT_E edge AT position */
   113,  /* (44) with ::= edge AT position */
    87,  /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
   111,  /* (46) boolproperty ::= CW */
   111,  /* (47) boolproperty ::= CCW */
   111,  /* (48) boolproperty ::= LARROW */
   111,  /* (49) boolproperty ::= RARROW */
   111,  /* (50) boolproperty ::= LRARROW */
   111,  /* (51) boolproperty ::= INVIS */
    98,  /* (52) textposition ::= */
    98,  /* (53) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
    93,  /* (54) position ::= expr COMMA expr */
    93,  /* (55) position ::= place PLUS expr COMMA expr */
    93,  /* (56) position ::= place MINUS expr COMMA expr */
    93,  /* (57) position ::= place PLUS LP expr COMMA expr RP */
    93,  /* (58) position ::= place MINUS LP expr COMMA expr RP */
    93,  /* (59) position ::= LP position COMMA position RP */
    93,  /* (60) position ::= LP position RP */
    93,  /* (61) position ::= expr between position AND position */
    93,  /* (62) position ::= expr ABOVE position */
    93,  /* (63) position ::= expr BELOW position */
    93,  /* (64) position ::= expr LEFT OF position */
    93,  /* (65) position ::= expr RIGHT OF position */
    93,  /* (66) position ::= expr EDGEPT OF position */
    93,  /* (67) position ::= expr HEADING expr FROM position */
    94,  /* (68) place ::= object */
    94,  /* (69) place ::= object DOT_E edge */
    94,  /* (70) place ::= object DOT_L START */
    94,  /* (71) place ::= object DOT_L END */
    94,  /* (72) place ::= START OF object */
    94,  /* (73) place ::= END OF object */
    94,  /* (74) place ::= edge OF object */
    94,  /* (75) place ::= NTH VERTEX OF object */
    95,  /* (76) object ::= nth */
    95,  /* (77) object ::= nth OF|IN object */
    96,  /* (78) objectname ::= PLACENAME */
    96,  /* (79) objectname ::= objectname DOT_U PLACENAME */
    97,  /* (80) nth ::= NTH CLASSNAME */
    97,  /* (81) nth ::= NTH LAST CLASSNAME */
    97,  /* (82) nth ::= LAST CLASSNAME */
    97,  /* (83) nth ::= LAST */
    97,  /* (84) nth ::= NTH LB RB */
    97,  /* (85) nth ::= NTH LAST LB RB */
    97,  /* (86) nth ::= LAST LB RB */
    86,  /* (87) expr ::= expr PLUS expr */
    86,  /* (88) expr ::= expr MINUS expr */
    86,  /* (89) expr ::= expr STAR expr */
    86,  /* (90) expr ::= expr SLASH expr */
    86,  /* (91) expr ::= MINUS expr */
    86,  /* (92) expr ::= PLUS expr */
    86,  /* (93) expr ::= LP expr RP */
    86,  /* (94) expr ::= NUMBER */
    86,  /* (95) expr ::= ID */
    86,  /* (96) expr ::= FUNC1 LP expr RP */
    86,  /* (97) expr ::= FUNC2 LP expr COMMA expr RP */
    86,  /* (98) expr ::= object DOT_L locproperty */
    86,  /* (99) expr ::= object DOT_L numproperty */
    86,  /* (100) expr ::= object DOT_L dashproperty */
    86,  /* (101) expr ::= object DOT_L colorproperty */
    86,  /* (102) expr ::= object DOT_E edge DOT_L X */
    86,  /* (103) expr ::= object DOT_E edge DOT_L Y */
    86,  /* (104) expr ::= LP locproperty OF object RP */
    86,  /* (105) expr ::= LP dashproperty OF object RP */
    86,  /* (106) expr ::= LP numproperty OF object RP */
    86,  /* (107) expr ::= LP colorproperty OF object RP */
    86,  /* (108) expr ::= NTH VERTEX OF object DOT_L X */
    86,  /* (109) expr ::= NTH VERTEX OF object DOT_L Y */
   100,  /* (110) lvalue ::= ID */
   100,  /* (111) lvalue ::= FILL */
   100,  /* (112) lvalue ::= COLOR */
   100,  /* (113) lvalue ::= THICKNESS */
    99,  /* (114) rvalue ::= expr */
   103,  /* (115) print ::= PRINT */
   104,  /* (116) prlist ::= pritem */
   104,  /* (117) prlist ::= prlist prsep pritem */
    89,  /* (118) direction ::= UP */
    89,  /* (119) direction ::= DOWN */
    89,  /* (120) direction ::= LEFT */
    89,  /* (121) direction ::= RIGHT */
   107,  /* (122) attribute_list ::= alist */
   109,  /* (123) alist ::= */
   109,  /* (124) alist ::= alist attribute */
   110,  /* (125) attribute ::= boolproperty */
   110,  /* (126) attribute ::= WITH withclause */
   101,  /* (127) even ::= UNTIL EVEN WITH */
   101,  /* (128) even ::= EVEN WITH */
   112,  /* (129) withclause ::= with */
   112,  /* (130) withclause ::= withclause AND with */
    90,  /* (131) dashproperty ::= DOTTED */
    90,  /* (132) dashproperty ::= DASHED */
    91,  /* (133) colorproperty ::= FILL */
    91,  /* (134) colorproperty ::= COLOR */
    93,  /* (135) position ::= place */
   114,  /* (136) between ::= WAY BETWEEN */
   114,  /* (137) between ::= BETWEEN */
   114,  /* (138) between ::= OF THE WAY BETWEEN */
    95,  /* (139) object ::= objectname */
    92,  /* (140) locproperty ::= X|Y */
    88,  /* (141) edge ::= EDGEPT */
    88,  /* (142) edge ::= TOP */
    88,  /* (143) edge ::= BOTTOM */
    88,  /* (144) edge ::= LEFT */
    88,  /* (145) edge ::= RIGHT */
   106,  /* (0) document ::= element_list */
    86,  /* (1) element_list ::= element */
    86,  /* (2) element_list ::= element_list EOL element */
    87,  /* (3) element ::= */
    87,  /* (4) element ::= direction */
    87,  /* (5) element ::= lvalue ASSIGN rvalue */
    87,  /* (6) element ::= PLACENAME COLON unnamed_element */
    87,  /* (7) element ::= PLACENAME COLON position */
    87,  /* (8) element ::= unnamed_element */
    87,  /* (9) element ::= print prlist */
   103,  /* (10) rvalue ::= PLACENAME */
   109,  /* (11) pritem ::= FILL */
   109,  /* (12) pritem ::= COLOR */
   109,  /* (13) pritem ::= THICKNESS */
   109,  /* (14) pritem ::= rvalue */
   109,  /* (15) pritem ::= STRING */
   110,  /* (16) prsep ::= COMMA */
    88,  /* (17) unnamed_element ::= basetype attribute_list */
    89,  /* (18) basetype ::= CLASSNAME */
    89,  /* (19) basetype ::= STRING textposition */
    89,  /* (20) basetype ::= LB savelist element_list RB */
   112,  /* (21) savelist ::= */
   111,  /* (22) attribute_list ::= expr */
   111,  /* (23) attribute_list ::= expr PERCENT */
   114,  /* (24) attribute ::= numproperty expr PERCENT */
   114,  /* (25) attribute ::= numproperty expr */
   114,  /* (26) attribute ::= dashproperty expr */
   114,  /* (27) attribute ::= dashproperty */
   114,  /* (28) attribute ::= colorproperty rvalue */
   114,  /* (29) attribute ::= direction expr PERCENT */
   114,  /* (30) attribute ::= direction expr */
   114,  /* (31) attribute ::= direction */
   114,  /* (32) attribute ::= direction even position */
   114,  /* (33) attribute ::= CLOSE */
   114,  /* (34) attribute ::= CHOP */
   114,  /* (35) attribute ::= FROM position */
   114,  /* (36) attribute ::= TO position */
   114,  /* (37) attribute ::= THEN */
   114,  /* (38) attribute ::= AT position */
   114,  /* (39) attribute ::= SAME */
   114,  /* (40) attribute ::= SAME AS object */
   114,  /* (41) attribute ::= STRING textposition */
   114,  /* (42) attribute ::= FIT */
   117,  /* (43) with ::= DOT_E edge AT position */
   117,  /* (44) with ::= edge AT position */
    91,  /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
   115,  /* (46) boolproperty ::= CW */
   115,  /* (47) boolproperty ::= CCW */
   115,  /* (48) boolproperty ::= LARROW */
   115,  /* (49) boolproperty ::= RARROW */
   115,  /* (50) boolproperty ::= LRARROW */
   115,  /* (51) boolproperty ::= INVIS */
   115,  /* (52) boolproperty ::= THICK */
   115,  /* (53) boolproperty ::= THIN */
   102,  /* (54) textposition ::= */
   102,  /* (55) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
    97,  /* (56) position ::= expr COMMA expr */
    97,  /* (57) position ::= place PLUS expr COMMA expr */
    97,  /* (58) position ::= place MINUS expr COMMA expr */
    97,  /* (59) position ::= place PLUS LP expr COMMA expr RP */
    97,  /* (60) position ::= place MINUS LP expr COMMA expr RP */
    97,  /* (61) position ::= LP position COMMA position RP */
    97,  /* (62) position ::= LP position RP */
    97,  /* (63) position ::= expr between position AND position */
    97,  /* (64) position ::= expr ABOVE position */
    97,  /* (65) position ::= expr BELOW position */
    97,  /* (66) position ::= expr LEFT OF position */
    97,  /* (67) position ::= expr RIGHT OF position */
    97,  /* (68) position ::= expr EDGEPT OF position */
    97,  /* (69) position ::= expr HEADING expr FROM position */
    98,  /* (70) place ::= object */
    98,  /* (71) place ::= object DOT_E edge */
    98,  /* (72) place ::= object DOT_L START */
    98,  /* (73) place ::= object DOT_L END */
    98,  /* (74) place ::= START OF object */
    98,  /* (75) place ::= END OF object */
    98,  /* (76) place ::= edge OF object */
    98,  /* (77) place ::= NTH VERTEX OF object */
    99,  /* (78) object ::= nth */
    99,  /* (79) object ::= nth OF|IN object */
   100,  /* (80) objectname ::= PLACENAME */
   100,  /* (81) objectname ::= objectname DOT_U PLACENAME */
   101,  /* (82) nth ::= NTH CLASSNAME */
   101,  /* (83) nth ::= NTH LAST CLASSNAME */
   101,  /* (84) nth ::= LAST CLASSNAME */
   101,  /* (85) nth ::= LAST */
   101,  /* (86) nth ::= NTH LB RB */
   101,  /* (87) nth ::= NTH LAST LB RB */
   101,  /* (88) nth ::= LAST LB RB */
    90,  /* (89) expr ::= expr PLUS expr */
    90,  /* (90) expr ::= expr MINUS expr */
    90,  /* (91) expr ::= expr STAR expr */
    90,  /* (92) expr ::= expr SLASH expr */
    90,  /* (93) expr ::= MINUS expr */
    90,  /* (94) expr ::= PLUS expr */
    90,  /* (95) expr ::= LP expr RP */
    90,  /* (96) expr ::= NUMBER */
    90,  /* (97) expr ::= ID */
    90,  /* (98) expr ::= FUNC1 LP expr RP */
    90,  /* (99) expr ::= FUNC2 LP expr COMMA expr RP */
    90,  /* (100) expr ::= object DOT_L locproperty */
    90,  /* (101) expr ::= object DOT_L numproperty */
    90,  /* (102) expr ::= object DOT_L dashproperty */
    90,  /* (103) expr ::= object DOT_L colorproperty */
    90,  /* (104) expr ::= object DOT_E edge DOT_L X */
    90,  /* (105) expr ::= object DOT_E edge DOT_L Y */
    90,  /* (106) expr ::= LP locproperty OF object RP */
    90,  /* (107) expr ::= LP dashproperty OF object RP */
    90,  /* (108) expr ::= LP numproperty OF object RP */
    90,  /* (109) expr ::= LP colorproperty OF object RP */
    90,  /* (110) expr ::= NTH VERTEX OF object DOT_L X */
    90,  /* (111) expr ::= NTH VERTEX OF object DOT_L Y */
   104,  /* (112) lvalue ::= ID */
   104,  /* (113) lvalue ::= FILL */
   104,  /* (114) lvalue ::= COLOR */
   104,  /* (115) lvalue ::= THICKNESS */
   103,  /* (116) rvalue ::= expr */
   107,  /* (117) print ::= PRINT */
   108,  /* (118) prlist ::= pritem */
   108,  /* (119) prlist ::= prlist prsep pritem */
    93,  /* (120) direction ::= UP */
    93,  /* (121) direction ::= DOWN */
    93,  /* (122) direction ::= LEFT */
    93,  /* (123) direction ::= RIGHT */
   111,  /* (124) attribute_list ::= alist */
   113,  /* (125) alist ::= */
   113,  /* (126) alist ::= alist attribute */
   114,  /* (127) attribute ::= boolproperty */
   114,  /* (128) attribute ::= WITH withclause */
   105,  /* (129) even ::= UNTIL EVEN WITH */
   105,  /* (130) even ::= EVEN WITH */
   116,  /* (131) withclause ::= with */
   116,  /* (132) withclause ::= withclause AND with */
    94,  /* (133) dashproperty ::= DOTTED */
    94,  /* (134) dashproperty ::= DASHED */
    95,  /* (135) colorproperty ::= FILL */
    95,  /* (136) colorproperty ::= COLOR */
    97,  /* (137) position ::= place */
   118,  /* (138) between ::= WAY BETWEEN */
   118,  /* (139) between ::= BETWEEN */
   118,  /* (140) between ::= OF THE WAY BETWEEN */
    99,  /* (141) object ::= objectname */
    96,  /* (142) locproperty ::= X|Y */
    92,  /* (143) edge ::= EDGEPT */
    92,  /* (144) edge ::= TOP */
    92,  /* (145) edge ::= BOTTOM */
    92,  /* (146) edge ::= LEFT */
    92,  /* (147) edge ::= RIGHT */
};

/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
** of symbols on the right-hand side of that rule. */
static const signed char yyRuleInfoNRhs[] = {
   -1,  /* (0) document ::= element_list */
   -1,  /* (1) element_list ::= element */
1994
1995
1996
1997
1998
1999
2000


2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046














































2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
















































2095
2096
2097
2098
2099
2100
2101
2013
2014
2015
2016
2017
2018
2019
2020
2021














































2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
















































2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122







+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







   -1,  /* (45) numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
   -1,  /* (46) boolproperty ::= CW */
   -1,  /* (47) boolproperty ::= CCW */
   -1,  /* (48) boolproperty ::= LARROW */
   -1,  /* (49) boolproperty ::= RARROW */
   -1,  /* (50) boolproperty ::= LRARROW */
   -1,  /* (51) boolproperty ::= INVIS */
   -1,  /* (52) boolproperty ::= THICK */
   -1,  /* (53) boolproperty ::= THIN */
    0,  /* (52) textposition ::= */
   -2,  /* (53) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
   -3,  /* (54) position ::= expr COMMA expr */
   -5,  /* (55) position ::= place PLUS expr COMMA expr */
   -5,  /* (56) position ::= place MINUS expr COMMA expr */
   -7,  /* (57) position ::= place PLUS LP expr COMMA expr RP */
   -7,  /* (58) position ::= place MINUS LP expr COMMA expr RP */
   -5,  /* (59) position ::= LP position COMMA position RP */
   -3,  /* (60) position ::= LP position RP */
   -5,  /* (61) position ::= expr between position AND position */
   -3,  /* (62) position ::= expr ABOVE position */
   -3,  /* (63) position ::= expr BELOW position */
   -4,  /* (64) position ::= expr LEFT OF position */
   -4,  /* (65) position ::= expr RIGHT OF position */
   -4,  /* (66) position ::= expr EDGEPT OF position */
   -5,  /* (67) position ::= expr HEADING expr FROM position */
   -1,  /* (68) place ::= object */
   -3,  /* (69) place ::= object DOT_E edge */
   -3,  /* (70) place ::= object DOT_L START */
   -3,  /* (71) place ::= object DOT_L END */
   -3,  /* (72) place ::= START OF object */
   -3,  /* (73) place ::= END OF object */
   -3,  /* (74) place ::= edge OF object */
   -4,  /* (75) place ::= NTH VERTEX OF object */
   -1,  /* (76) object ::= nth */
   -3,  /* (77) object ::= nth OF|IN object */
   -1,  /* (78) objectname ::= PLACENAME */
   -3,  /* (79) objectname ::= objectname DOT_U PLACENAME */
   -2,  /* (80) nth ::= NTH CLASSNAME */
   -3,  /* (81) nth ::= NTH LAST CLASSNAME */
   -2,  /* (82) nth ::= LAST CLASSNAME */
   -1,  /* (83) nth ::= LAST */
   -3,  /* (84) nth ::= NTH LB RB */
   -4,  /* (85) nth ::= NTH LAST LB RB */
   -3,  /* (86) nth ::= LAST LB RB */
   -3,  /* (87) expr ::= expr PLUS expr */
   -3,  /* (88) expr ::= expr MINUS expr */
   -3,  /* (89) expr ::= expr STAR expr */
   -3,  /* (90) expr ::= expr SLASH expr */
   -2,  /* (91) expr ::= MINUS expr */
   -2,  /* (92) expr ::= PLUS expr */
   -3,  /* (93) expr ::= LP expr RP */
   -1,  /* (94) expr ::= NUMBER */
   -1,  /* (95) expr ::= ID */
   -4,  /* (96) expr ::= FUNC1 LP expr RP */
   -6,  /* (97) expr ::= FUNC2 LP expr COMMA expr RP */
    0,  /* (54) textposition ::= */
   -2,  /* (55) textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
   -3,  /* (56) position ::= expr COMMA expr */
   -5,  /* (57) position ::= place PLUS expr COMMA expr */
   -5,  /* (58) position ::= place MINUS expr COMMA expr */
   -7,  /* (59) position ::= place PLUS LP expr COMMA expr RP */
   -7,  /* (60) position ::= place MINUS LP expr COMMA expr RP */
   -5,  /* (61) position ::= LP position COMMA position RP */
   -3,  /* (62) position ::= LP position RP */
   -5,  /* (63) position ::= expr between position AND position */
   -3,  /* (64) position ::= expr ABOVE position */
   -3,  /* (65) position ::= expr BELOW position */
   -4,  /* (66) position ::= expr LEFT OF position */
   -4,  /* (67) position ::= expr RIGHT OF position */
   -4,  /* (68) position ::= expr EDGEPT OF position */
   -5,  /* (69) position ::= expr HEADING expr FROM position */
   -1,  /* (70) place ::= object */
   -3,  /* (71) place ::= object DOT_E edge */
   -3,  /* (72) place ::= object DOT_L START */
   -3,  /* (73) place ::= object DOT_L END */
   -3,  /* (74) place ::= START OF object */
   -3,  /* (75) place ::= END OF object */
   -3,  /* (76) place ::= edge OF object */
   -4,  /* (77) place ::= NTH VERTEX OF object */
   -1,  /* (78) object ::= nth */
   -3,  /* (79) object ::= nth OF|IN object */
   -1,  /* (80) objectname ::= PLACENAME */
   -3,  /* (81) objectname ::= objectname DOT_U PLACENAME */
   -2,  /* (82) nth ::= NTH CLASSNAME */
   -3,  /* (83) nth ::= NTH LAST CLASSNAME */
   -2,  /* (84) nth ::= LAST CLASSNAME */
   -1,  /* (85) nth ::= LAST */
   -3,  /* (86) nth ::= NTH LB RB */
   -4,  /* (87) nth ::= NTH LAST LB RB */
   -3,  /* (88) nth ::= LAST LB RB */
   -3,  /* (89) expr ::= expr PLUS expr */
   -3,  /* (90) expr ::= expr MINUS expr */
   -3,  /* (91) expr ::= expr STAR expr */
   -3,  /* (92) expr ::= expr SLASH expr */
   -2,  /* (93) expr ::= MINUS expr */
   -2,  /* (94) expr ::= PLUS expr */
   -3,  /* (95) expr ::= LP expr RP */
   -1,  /* (96) expr ::= NUMBER */
   -1,  /* (97) expr ::= ID */
   -4,  /* (98) expr ::= FUNC1 LP expr RP */
   -6,  /* (99) expr ::= FUNC2 LP expr COMMA expr RP */
   -3,  /* (98) expr ::= object DOT_L locproperty */
   -3,  /* (99) expr ::= object DOT_L numproperty */
   -3,  /* (100) expr ::= object DOT_L dashproperty */
   -3,  /* (101) expr ::= object DOT_L colorproperty */
   -5,  /* (102) expr ::= object DOT_E edge DOT_L X */
   -5,  /* (103) expr ::= object DOT_E edge DOT_L Y */
   -5,  /* (104) expr ::= LP locproperty OF object RP */
   -5,  /* (105) expr ::= LP dashproperty OF object RP */
   -5,  /* (106) expr ::= LP numproperty OF object RP */
   -5,  /* (107) expr ::= LP colorproperty OF object RP */
   -6,  /* (108) expr ::= NTH VERTEX OF object DOT_L X */
   -6,  /* (109) expr ::= NTH VERTEX OF object DOT_L Y */
   -1,  /* (110) lvalue ::= ID */
   -1,  /* (111) lvalue ::= FILL */
   -1,  /* (112) lvalue ::= COLOR */
   -1,  /* (113) lvalue ::= THICKNESS */
   -1,  /* (114) rvalue ::= expr */
   -1,  /* (115) print ::= PRINT */
   -1,  /* (116) prlist ::= pritem */
   -3,  /* (117) prlist ::= prlist prsep pritem */
   -1,  /* (118) direction ::= UP */
   -1,  /* (119) direction ::= DOWN */
   -1,  /* (120) direction ::= LEFT */
   -1,  /* (121) direction ::= RIGHT */
   -1,  /* (122) attribute_list ::= alist */
    0,  /* (123) alist ::= */
   -2,  /* (124) alist ::= alist attribute */
   -1,  /* (125) attribute ::= boolproperty */
   -2,  /* (126) attribute ::= WITH withclause */
   -3,  /* (127) even ::= UNTIL EVEN WITH */
   -2,  /* (128) even ::= EVEN WITH */
   -1,  /* (129) withclause ::= with */
   -3,  /* (130) withclause ::= withclause AND with */
   -1,  /* (131) dashproperty ::= DOTTED */
   -1,  /* (132) dashproperty ::= DASHED */
   -1,  /* (133) colorproperty ::= FILL */
   -1,  /* (134) colorproperty ::= COLOR */
   -1,  /* (135) position ::= place */
   -2,  /* (136) between ::= WAY BETWEEN */
   -1,  /* (137) between ::= BETWEEN */
   -4,  /* (138) between ::= OF THE WAY BETWEEN */
   -1,  /* (139) object ::= objectname */
   -1,  /* (140) locproperty ::= X|Y */
   -1,  /* (141) edge ::= EDGEPT */
   -1,  /* (142) edge ::= TOP */
   -1,  /* (143) edge ::= BOTTOM */
   -1,  /* (144) edge ::= LEFT */
   -1,  /* (145) edge ::= RIGHT */
   -3,  /* (100) expr ::= object DOT_L locproperty */
   -3,  /* (101) expr ::= object DOT_L numproperty */
   -3,  /* (102) expr ::= object DOT_L dashproperty */
   -3,  /* (103) expr ::= object DOT_L colorproperty */
   -5,  /* (104) expr ::= object DOT_E edge DOT_L X */
   -5,  /* (105) expr ::= object DOT_E edge DOT_L Y */
   -5,  /* (106) expr ::= LP locproperty OF object RP */
   -5,  /* (107) expr ::= LP dashproperty OF object RP */
   -5,  /* (108) expr ::= LP numproperty OF object RP */
   -5,  /* (109) expr ::= LP colorproperty OF object RP */
   -6,  /* (110) expr ::= NTH VERTEX OF object DOT_L X */
   -6,  /* (111) expr ::= NTH VERTEX OF object DOT_L Y */
   -1,  /* (112) lvalue ::= ID */
   -1,  /* (113) lvalue ::= FILL */
   -1,  /* (114) lvalue ::= COLOR */
   -1,  /* (115) lvalue ::= THICKNESS */
   -1,  /* (116) rvalue ::= expr */
   -1,  /* (117) print ::= PRINT */
   -1,  /* (118) prlist ::= pritem */
   -3,  /* (119) prlist ::= prlist prsep pritem */
   -1,  /* (120) direction ::= UP */
   -1,  /* (121) direction ::= DOWN */
   -1,  /* (122) direction ::= LEFT */
   -1,  /* (123) direction ::= RIGHT */
   -1,  /* (124) attribute_list ::= alist */
    0,  /* (125) alist ::= */
   -2,  /* (126) alist ::= alist attribute */
   -1,  /* (127) attribute ::= boolproperty */
   -2,  /* (128) attribute ::= WITH withclause */
   -3,  /* (129) even ::= UNTIL EVEN WITH */
   -2,  /* (130) even ::= EVEN WITH */
   -1,  /* (131) withclause ::= with */
   -3,  /* (132) withclause ::= withclause AND with */
   -1,  /* (133) dashproperty ::= DOTTED */
   -1,  /* (134) dashproperty ::= DASHED */
   -1,  /* (135) colorproperty ::= FILL */
   -1,  /* (136) colorproperty ::= COLOR */
   -1,  /* (137) position ::= place */
   -2,  /* (138) between ::= WAY BETWEEN */
   -1,  /* (139) between ::= BETWEEN */
   -4,  /* (140) between ::= OF THE WAY BETWEEN */
   -1,  /* (141) object ::= objectname */
   -1,  /* (142) locproperty ::= X|Y */
   -1,  /* (143) edge ::= EDGEPT */
   -1,  /* (144) edge ::= TOP */
   -1,  /* (145) edge ::= BOTTOM */
   -1,  /* (146) edge ::= LEFT */
   -1,  /* (147) edge ::= RIGHT */
};

static void yy_accept(yyParser*);  /* Forward Declaration */

/*
** Perform a reduce action and the shift that must immediately
** follow the reduce.
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187



2188
2189
2190
2191
2192
2193




2194
2195
2196
2197
2198
2199




2200
2201
2202
2203
2204



2205
2206
2207
2208
2209
2210




2211
2212
2213
2214
2215
2216




2217
2218
2219
2220
2221
2222




2223
2224
2225
2226
2227
2228
2229





2230
2231
2232
2233
2234
2235




2236
2237
2238
2239
2240



2241
2242
2243
2244
2245
2246




2247
2248
2249
2250
2251

2252
2253

2254
2255
2256
2257
2258



2259
2260
2261

2262
2263

2264
2265
2266

2267
2268

2269
2270
2271
2272
2273
2274




2275
2276
2277
2278
2279
2280




2281
2282
2283
2284
2285
2286




2287
2288
2289
2290
2291



2292
2293
2294
2295
2296



2297
2298
2299
2300
2301



2302
2303
2304
2305
2306



2307
2308
2309
2310
2311



2312
2313
2314
2315
2316
2317



2318
2319
2320
2321
2322



2323
2324
2325

2326
2327

2328
2329
2330
2331
2332



2333
2334
2335
2336
2337



2338
2339
2340

2341
2342

2343
2344
2345
2346
2347



2348
2349
2350

2351
2352

2353
2354
2355

2356
2357

2358
2359
2360
2361
2362



2363
2364
2365
2366
2367



2368
2369
2370

2371
2372

2373
2374
2375
2376
2377



2378
2379
2380

2381
2382

2383
2384
2385
2386
2387



2388
2389
2390
2391
2392



2393
2394
2395

2396
2397

2398
2399
2400
2401
2402
2403



2404
2405
2406

2407
2408

2409
2410
2411
2412

2413
2414

2415
2416
2417

2418
2419

2420
2421
2422

2423
2424

2425
2426
2427

2428
2429

2430
2431
2432

2433
2434

2435
2436
2437

2438
2439

2440
2441

2442
2443
2444
2445
2446
2447
2448
2449


2450
2451
2452
2453


2454
2455


2456
2457
2458
2459
2460
2461




2462
2463
2464

2465
2466
2467
2468



2469
2470
2471
2472
2473
2474





2475
2476

2477
2478
2479
2480
2481
2482
2483
2484
2485



2486
2487

2488
2489
2490



2491
2492

2493
2494
2495
2496

2497
2498
2499
2500
2501
2502


2503
2504

2505
2506
2507
2508



2509
2510

2511
2512
2513


2514
2515
2516

2517
2518
2519


2520
2521
2522

2523
2524
2525
2526



2527
2528







2529


2530
2531
2532







2533






2534







2535






2536
2537
2538



2539
2540
2541
2542
2543
2544
2545
2546







2547
2548
2549
2550
2551
2552
2553
2554







2555
2556

2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575


















2576
2577
2578



2579
2580
2581
2582
2583
2584





2585
2586
2587


2588
2589

2590
2591
2592
2593


2594
2595

2596
2597
2598
2599


2600
2601

2602
2603
2604


2605
2606

2607
2608
2609
2610


2611
2612

2613
2614
2615
2616


2617
2618

2619
2620
2621
2622


2623
2624

2625
2626
2627
2628
2629
2630





2631
2632
2633
2634
2635
2636





2637
2638
2639
2640
2641
2642





2643
2644
2645


2646
2647
2648


2649
2650
2651


2652
2653
2654
2655
2656




2657
2658
2659
2660
2661




2662
2663
2664
2665
2666




2667
2668
2669
2670
2671
2672





2673
2674
2675
2676
2677
2678





2679
2680
2681
2682
2683
2684





2685
2686
2687
2688
2689
2690





2691
2692
2693
2694
2695
2696
2697
2698
2699








2700
2701
2702
2703
2704
2705





2706
2707
2708
2709
2710
2711





2712
2713
2714
2715
2716
2717
2718
2719







2720
2721
2722
2723
2724
2725





2726
2727
2728
2729
2730
2731





2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769




































2770
2771
2772
2773
2774
2775
2776
2199
2200
2201
2202
2203
2204
2205



2206
2207
2208
2209
2210




2211
2212
2213
2214
2215
2216




2217
2218
2219
2220
2221
2222



2223
2224
2225
2226
2227




2228
2229
2230
2231
2232
2233




2234
2235
2236
2237
2238
2239




2240
2241
2242
2243
2244
2245





2246
2247
2248
2249
2250
2251
2252




2253
2254
2255
2256
2257
2258



2259
2260
2261
2262
2263




2264
2265
2266
2267
2268
2269
2270
2271

2272
2273

2274
2275
2276



2277
2278
2279
2280
2281

2282
2283

2284
2285
2286

2287
2288

2289
2290
2291




2292
2293
2294
2295
2296
2297




2298
2299
2300
2301
2302
2303




2304
2305
2306
2307
2308
2309



2310
2311
2312
2313
2314



2315
2316
2317
2318
2319



2320
2321
2322
2323
2324



2325
2326
2327
2328
2329



2330
2331
2332
2333
2334
2335



2336
2337
2338
2339
2340



2341
2342
2343
2344
2345

2346
2347

2348
2349
2350



2351
2352
2353
2354
2355



2356
2357
2358
2359
2360

2361
2362

2363
2364
2365



2366
2367
2368
2369
2370

2371
2372

2373
2374
2375

2376
2377

2378
2379
2380



2381
2382
2383
2384
2385



2386
2387
2388
2389
2390

2391
2392

2393
2394
2395



2396
2397
2398
2399
2400

2401
2402

2403
2404
2405



2406
2407
2408
2409
2410



2411
2412
2413
2414
2415

2416
2417

2418
2419
2420
2421



2422
2423
2424
2425
2426

2427
2428

2429
2430
2431
2432

2433
2434

2435
2436
2437

2438
2439

2440
2441
2442

2443
2444

2445
2446
2447

2448
2449

2450
2451
2452

2453
2454

2455
2456
2457

2458
2459

2460
2461

2462





2463


2464
2465

2466


2467
2468


2469
2470

2471




2472
2473
2474
2475

2476

2477
2478



2479
2480
2481
2482





2483
2484
2485
2486
2487
2488

2489






2490


2491
2492
2493
2494

2495
2496


2497
2498
2499
2500

2501
2502



2503






2504
2505
2506

2507
2508



2509
2510
2511
2512

2513
2514


2515
2516

2517

2518
2519


2520
2521

2522

2523
2524



2525
2526
2527
2528

2529
2530
2531
2532
2533
2534
2535
2536
2537
2538



2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552

2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566



2567
2568
2569
2570







2571
2572
2573
2574
2575
2576
2577
2578







2579
2580
2581
2582
2583
2584
2585
2586

2587


















2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606



2607
2608
2609
2610





2611
2612
2613
2614
2615
2616


2617
2618
2619

2620
2621
2622


2623
2624
2625

2626
2627
2628


2629
2630
2631

2632
2633


2634
2635
2636

2637
2638
2639


2640
2641
2642

2643
2644
2645


2646
2647
2648

2649
2650
2651


2652
2653
2654

2655
2656





2657
2658
2659
2660
2661
2662





2663
2664
2665
2666
2667
2668





2669
2670
2671
2672
2673
2674


2675
2676
2677


2678
2679
2680


2681
2682
2683




2684
2685
2686
2687
2688




2689
2690
2691
2692
2693




2694
2695
2696
2697
2698





2699
2700
2701
2702
2703
2704





2705
2706
2707
2708
2709
2710





2711
2712
2713
2714
2715
2716





2717
2718
2719
2720
2721
2722








2723
2724
2725
2726
2727
2728
2729
2730
2731





2732
2733
2734
2735
2736
2737





2738
2739
2740
2741
2742
2743







2744
2745
2746
2747
2748
2749
2750
2751





2752
2753
2754
2755
2756
2757





2758
2759
2760
2761
2762
2763
2764




































2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807







-
-
-
+
+
+


-
-
-
-
+
+
+
+


-
-
-
-
+
+
+
+


-
-
-
+
+
+


-
-
-
-
+
+
+
+


-
-
-
-
+
+
+
+


-
-
-
-
+
+
+
+


-
-
-
-
-
+
+
+
+
+


-
-
-
-
+
+
+
+


-
-
-
+
+
+


-
-
-
-
+
+
+
+




-
+

-
+


-
-
-
+
+
+


-
+

-
+


-
+

-
+


-
-
-
-
+
+
+
+


-
-
-
-
+
+
+
+


-
-
-
-
+
+
+
+


-
-
-
+
+
+


-
-
-
+
+
+


-
-
-
+
+
+


-
-
-
+
+
+


-
-
-
+
+
+



-
-
-
+
+
+


-
-
-
+
+
+


-
+

-
+


-
-
-
+
+
+


-
-
-
+
+
+


-
+

-
+


-
-
-
+
+
+


-
+

-
+


-
+

-
+


-
-
-
+
+
+


-
-
-
+
+
+


-
+

-
+


-
-
-
+
+
+


-
+

-
+


-
-
-
+
+
+


-
-
-
+
+
+


-
+

-
+



-
-
-
+
+
+


-
+

-
+



-
+

-
+


-
+

-
+


-
+

-
+


-
+

-
+


-
+

-
+


-
+

-
+

-
+
-
-
-
-
-

-
-
+
+
-

-
-
+
+
-
-
+
+
-

-
-
-
-
+
+
+
+
-

-
+

-
-
-
+
+
+

-
-
-
-
-
+
+
+
+
+

-
+
-
-
-
-
-
-

-
-
+
+
+

-
+

-
-
+
+
+

-
+

-
-
-
+
-
-
-
-
-
-
+
+

-
+

-
-
-
+
+
+

-
+

-
-
+
+
-

-
+

-
-
+
+
-

-
+

-
-
-
+
+
+

-
+
+
+
+
+
+
+

+
+
-
-
-
+
+
+
+
+
+
+

+
+
+
+
+
+
-
+
+
+
+
+
+
+

+
+
+
+
+
+
-
-
-
+
+
+

-
-
-
-
-
-
-
+
+
+
+
+
+
+

-
-
-
-
-
-
-
+
+
+
+
+
+
+

-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
+
+

-
+


-
-
+
+

-
+


-
-
+
+

-
+

-
-
+
+

-
+


-
-
+
+

-
+


-
-
+
+

-
+


-
-
+
+

-
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
+
+

-
-
+
+

-
-
+
+

-
-
-
-
+
+
+
+

-
-
-
-
+
+
+
+

-
-
-
-
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
-
-
+
+
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+


-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







  **     { ... }           // User supplied code
  **  #line <lineno> <thisfile>
  **     break;
  */
/********** Begin reduce actions **********************************************/
        YYMINORTYPE yylhsminor;
      case 0: /* document ::= element_list */
#line 473 "pikchr.y"
{pik_render(p,yymsp[0].minor.yy42);}
#line 2212 "pikchr.c"
#line 477 "pikchr.y"
{pik_render(p,yymsp[0].minor.yy120);}
#line 2233 "pikchr.c"
        break;
      case 1: /* element_list ::= element */
#line 476 "pikchr.y"
{ yylhsminor.yy42 = pik_elist_append(p,0,yymsp[0].minor.yy24); }
#line 2217 "pikchr.c"
  yymsp[0].minor.yy42 = yylhsminor.yy42;
#line 480 "pikchr.y"
{ yylhsminor.yy120 = pik_elist_append(p,0,yymsp[0].minor.yy26); }
#line 2238 "pikchr.c"
  yymsp[0].minor.yy120 = yylhsminor.yy120;
        break;
      case 2: /* element_list ::= element_list EOL element */
#line 478 "pikchr.y"
{ yylhsminor.yy42 = pik_elist_append(p,yymsp[-2].minor.yy42,yymsp[0].minor.yy24); }
#line 2223 "pikchr.c"
  yymsp[-2].minor.yy42 = yylhsminor.yy42;
#line 482 "pikchr.y"
{ yylhsminor.yy120 = pik_elist_append(p,yymsp[-2].minor.yy120,yymsp[0].minor.yy26); }
#line 2244 "pikchr.c"
  yymsp[-2].minor.yy120 = yylhsminor.yy120;
        break;
      case 3: /* element ::= */
#line 481 "pikchr.y"
{ yymsp[1].minor.yy24 = 0; }
#line 2229 "pikchr.c"
#line 485 "pikchr.y"
{ yymsp[1].minor.yy26 = 0; }
#line 2250 "pikchr.c"
        break;
      case 4: /* element ::= direction */
#line 482 "pikchr.y"
{ pik_set_direction(p,yymsp[0].minor.yy0.eCode);  yylhsminor.yy24=0; }
#line 2234 "pikchr.c"
  yymsp[0].minor.yy24 = yylhsminor.yy24;
#line 486 "pikchr.y"
{ pik_set_direction(p,yymsp[0].minor.yy0.eCode);  yylhsminor.yy26=0; }
#line 2255 "pikchr.c"
  yymsp[0].minor.yy26 = yylhsminor.yy26;
        break;
      case 5: /* element ::= lvalue ASSIGN rvalue */
#line 483 "pikchr.y"
{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy83,&yymsp[-1].minor.yy0); yylhsminor.yy24=0;}
#line 2240 "pikchr.c"
  yymsp[-2].minor.yy24 = yylhsminor.yy24;
#line 487 "pikchr.y"
{pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy191,&yymsp[-1].minor.yy0); yylhsminor.yy26=0;}
#line 2261 "pikchr.c"
  yymsp[-2].minor.yy26 = yylhsminor.yy26;
        break;
      case 6: /* element ::= PLACENAME COLON unnamed_element */
#line 485 "pikchr.y"
{ yylhsminor.yy24 = yymsp[0].minor.yy24;  pik_elem_setname(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0); }
#line 2246 "pikchr.c"
  yymsp[-2].minor.yy24 = yylhsminor.yy24;
#line 489 "pikchr.y"
{ yylhsminor.yy26 = yymsp[0].minor.yy26;  pik_elem_setname(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0); }
#line 2267 "pikchr.c"
  yymsp[-2].minor.yy26 = yylhsminor.yy26;
        break;
      case 7: /* element ::= PLACENAME COLON position */
#line 487 "pikchr.y"
{ yylhsminor.yy24 = pik_elem_new(p,0,0,0);
                 if(yylhsminor.yy24){ yylhsminor.yy24->ptAt = yymsp[0].minor.yy49; pik_elem_setname(p,yylhsminor.yy24,&yymsp[-2].minor.yy0); }}
#line 2253 "pikchr.c"
  yymsp[-2].minor.yy24 = yylhsminor.yy24;
#line 491 "pikchr.y"
{ yylhsminor.yy26 = pik_elem_new(p,0,0,0);
                 if(yylhsminor.yy26){ yylhsminor.yy26->ptAt = yymsp[0].minor.yy131; pik_elem_setname(p,yylhsminor.yy26,&yymsp[-2].minor.yy0); }}
#line 2274 "pikchr.c"
  yymsp[-2].minor.yy26 = yylhsminor.yy26;
        break;
      case 8: /* element ::= unnamed_element */
#line 489 "pikchr.y"
{yylhsminor.yy24 = yymsp[0].minor.yy24;}
#line 2259 "pikchr.c"
  yymsp[0].minor.yy24 = yylhsminor.yy24;
#line 493 "pikchr.y"
{yylhsminor.yy26 = yymsp[0].minor.yy26;}
#line 2280 "pikchr.c"
  yymsp[0].minor.yy26 = yylhsminor.yy26;
        break;
      case 9: /* element ::= print prlist */
#line 490 "pikchr.y"
{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy24=0;}
#line 2265 "pikchr.c"
#line 494 "pikchr.y"
{pik_append(p,"<br>\n",5); yymsp[-1].minor.yy26=0;}
#line 2286 "pikchr.c"
        break;
      case 10: /* rvalue ::= PLACENAME */
#line 501 "pikchr.y"
{yylhsminor.yy83 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
#line 2270 "pikchr.c"
  yymsp[0].minor.yy83 = yylhsminor.yy83;
#line 505 "pikchr.y"
{yylhsminor.yy191 = pik_lookup_color(p,&yymsp[0].minor.yy0);}
#line 2291 "pikchr.c"
  yymsp[0].minor.yy191 = yylhsminor.yy191;
        break;
      case 11: /* pritem ::= FILL */
      case 12: /* pritem ::= COLOR */ yytestcase(yyruleno==12);
      case 13: /* pritem ::= THICKNESS */ yytestcase(yyruleno==13);
#line 506 "pikchr.y"
#line 510 "pikchr.y"
{pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));}
#line 2278 "pikchr.c"
#line 2299 "pikchr.c"
        break;
      case 14: /* pritem ::= rvalue */
#line 509 "pikchr.y"
{pik_append_num(p,"",yymsp[0].minor.yy83);}
#line 2283 "pikchr.c"
#line 513 "pikchr.y"
{pik_append_num(p,"",yymsp[0].minor.yy191);}
#line 2304 "pikchr.c"
        break;
      case 15: /* pritem ::= STRING */
#line 510 "pikchr.y"
#line 514 "pikchr.y"
{pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);}
#line 2288 "pikchr.c"
#line 2309 "pikchr.c"
        break;
      case 16: /* prsep ::= COMMA */
#line 511 "pikchr.y"
#line 515 "pikchr.y"
{pik_append(p, " ", 1);}
#line 2293 "pikchr.c"
#line 2314 "pikchr.c"
        break;
      case 17: /* unnamed_element ::= basetype attribute_list */
#line 514 "pikchr.y"
{yylhsminor.yy24 = yymsp[-1].minor.yy24; pik_after_adding_attributes(p,yylhsminor.yy24);}
#line 2298 "pikchr.c"
  yymsp[-1].minor.yy24 = yylhsminor.yy24;
#line 518 "pikchr.y"
{yylhsminor.yy26 = yymsp[-1].minor.yy26; pik_after_adding_attributes(p,yylhsminor.yy26);}
#line 2319 "pikchr.c"
  yymsp[-1].minor.yy26 = yylhsminor.yy26;
        break;
      case 18: /* basetype ::= CLASSNAME */
#line 516 "pikchr.y"
{yylhsminor.yy24 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
#line 2304 "pikchr.c"
  yymsp[0].minor.yy24 = yylhsminor.yy24;
#line 520 "pikchr.y"
{yylhsminor.yy26 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); }
#line 2325 "pikchr.c"
  yymsp[0].minor.yy26 = yylhsminor.yy26;
        break;
      case 19: /* basetype ::= STRING textposition */
#line 518 "pikchr.y"
{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy52; yylhsminor.yy24 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
#line 2310 "pikchr.c"
  yymsp[-1].minor.yy24 = yylhsminor.yy24;
#line 522 "pikchr.y"
{yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy60; yylhsminor.yy26 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); }
#line 2331 "pikchr.c"
  yymsp[-1].minor.yy26 = yylhsminor.yy26;
        break;
      case 20: /* basetype ::= LB savelist element_list RB */
#line 520 "pikchr.y"
{ p->list = yymsp[-2].minor.yy42; yymsp[-3].minor.yy24 = pik_elem_new(p,0,0,yymsp[-1].minor.yy42); if(yymsp[-3].minor.yy24) yymsp[-3].minor.yy24->errTok = yymsp[0].minor.yy0; }
#line 2316 "pikchr.c"
#line 524 "pikchr.y"
{ p->list = yymsp[-2].minor.yy120; yymsp[-3].minor.yy26 = pik_elem_new(p,0,0,yymsp[-1].minor.yy120); if(yymsp[-3].minor.yy26) yymsp[-3].minor.yy26->errTok = yymsp[0].minor.yy0; }
#line 2337 "pikchr.c"
        break;
      case 21: /* savelist ::= */
#line 525 "pikchr.y"
{yymsp[1].minor.yy42 = p->list; p->list = 0;}
#line 2321 "pikchr.c"
#line 529 "pikchr.y"
{yymsp[1].minor.yy120 = p->list; p->list = 0;}
#line 2342 "pikchr.c"
        break;
      case 22: /* attribute_list ::= expr */
#line 532 "pikchr.y"
{ pik_add_direction(p,0,&yymsp[0].minor.yy83,0);}
#line 2326 "pikchr.c"
#line 536 "pikchr.y"
{ pik_add_direction(p,0,&yymsp[0].minor.yy191,0);}
#line 2347 "pikchr.c"
        break;
      case 23: /* attribute_list ::= expr PERCENT */
#line 533 "pikchr.y"
{ pik_add_direction(p,0,&yymsp[-1].minor.yy83,1);}
#line 2331 "pikchr.c"
#line 537 "pikchr.y"
{ pik_add_direction(p,0,&yymsp[-1].minor.yy191,1);}
#line 2352 "pikchr.c"
        break;
      case 24: /* attribute ::= numproperty expr PERCENT */
#line 538 "pikchr.y"
{ pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy83/100.0); }
#line 2336 "pikchr.c"
#line 542 "pikchr.y"
{ pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy191/100.0); }
#line 2357 "pikchr.c"
        break;
      case 25: /* attribute ::= numproperty expr */
      case 28: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==28);
#line 539 "pikchr.y"
{ pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy83,0.0); }
#line 2342 "pikchr.c"
#line 543 "pikchr.y"
{ pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy191,0.0); }
#line 2363 "pikchr.c"
        break;
      case 26: /* attribute ::= dashproperty expr */
#line 540 "pikchr.y"
{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83); }
#line 2347 "pikchr.c"
#line 544 "pikchr.y"
{ pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy191); }
#line 2368 "pikchr.c"
        break;
      case 27: /* attribute ::= dashproperty */
#line 541 "pikchr.y"
#line 545 "pikchr.y"
{ pik_set_dashed(p,&yymsp[0].minor.yy0,0);  }
#line 2352 "pikchr.c"
#line 2373 "pikchr.c"
        break;
      case 29: /* attribute ::= direction expr PERCENT */
#line 544 "pikchr.y"
{ pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy83,1);}
#line 2357 "pikchr.c"
#line 548 "pikchr.y"
{ pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy191,1);}
#line 2378 "pikchr.c"
        break;
      case 30: /* attribute ::= direction expr */
#line 545 "pikchr.y"
{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83,0);}
#line 2362 "pikchr.c"
#line 549 "pikchr.y"
{ pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy191,0);}
#line 2383 "pikchr.c"
        break;
      case 31: /* attribute ::= direction */
#line 546 "pikchr.y"
#line 550 "pikchr.y"
{ pik_add_direction(p,&yymsp[0].minor.yy0,0,0); }
#line 2367 "pikchr.c"
#line 2388 "pikchr.c"
        break;
      case 32: /* attribute ::= direction even position */
#line 547 "pikchr.y"
{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49);}
#line 2372 "pikchr.c"
#line 551 "pikchr.y"
{pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy131);}
#line 2393 "pikchr.c"
        break;
      case 33: /* attribute ::= CLOSE */
#line 548 "pikchr.y"
#line 552 "pikchr.y"
{ pik_close_path(p,&yymsp[0].minor.yy0); }
#line 2377 "pikchr.c"
#line 2398 "pikchr.c"
        break;
      case 34: /* attribute ::= CHOP */
#line 549 "pikchr.y"
#line 553 "pikchr.y"
{ p->cur->bChop = 1; }
#line 2382 "pikchr.c"
#line 2403 "pikchr.c"
        break;
      case 35: /* attribute ::= FROM position */
#line 550 "pikchr.y"
{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); }
#line 2387 "pikchr.c"
#line 554 "pikchr.y"
{ pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy131); }
#line 2408 "pikchr.c"
        break;
      case 36: /* attribute ::= TO position */
#line 551 "pikchr.y"
{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); }
#line 2392 "pikchr.c"
#line 555 "pikchr.y"
{ pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy131); }
#line 2413 "pikchr.c"
        break;
      case 37: /* attribute ::= THEN */
#line 552 "pikchr.y"
#line 556 "pikchr.y"
{ pik_then(p, &yymsp[0].minor.yy0, p->cur); }
#line 2397 "pikchr.c"
#line 2418 "pikchr.c"
        break;
      case 38: /* attribute ::= AT position */
#line 554 "pikchr.y"
{ pik_set_at(p,0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); }
#line 2402 "pikchr.c"
#line 558 "pikchr.y"
{ pik_set_at(p,0,&yymsp[0].minor.yy131,&yymsp[-1].minor.yy0); }
#line 2423 "pikchr.c"
        break;
      case 39: /* attribute ::= SAME */
#line 556 "pikchr.y"
#line 560 "pikchr.y"
{pik_same(p,0,&yymsp[0].minor.yy0);}
#line 2407 "pikchr.c"
#line 2428 "pikchr.c"
        break;
      case 40: /* attribute ::= SAME AS object */
#line 557 "pikchr.y"
{pik_same(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
#line 2412 "pikchr.c"
#line 561 "pikchr.y"
{pik_same(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
#line 2433 "pikchr.c"
        break;
      case 41: /* attribute ::= STRING textposition */
#line 558 "pikchr.y"
{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy52);}
#line 2417 "pikchr.c"
#line 562 "pikchr.y"
{pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy60);}
#line 2438 "pikchr.c"
        break;
      case 42: /* attribute ::= FIT */
#line 559 "pikchr.y"
#line 563 "pikchr.y"
{pik_size_to_fit(p,&yymsp[0].minor.yy0); }
#line 2422 "pikchr.c"
#line 2443 "pikchr.c"
        break;
      case 43: /* with ::= DOT_E edge AT position */
      case 44: /* with ::= edge AT position */ yytestcase(yyruleno==44);
#line 566 "pikchr.y"
{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); }
#line 2428 "pikchr.c"
#line 570 "pikchr.y"
{ pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy131,&yymsp[-1].minor.yy0); }
#line 2449 "pikchr.c"
        break;
      case 45: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */
#line 570 "pikchr.y"
#line 574 "pikchr.y"
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
#line 2433 "pikchr.c"
#line 2454 "pikchr.c"
  yymsp[0].minor.yy0 = yylhsminor.yy0;
        break;
      case 46: /* boolproperty ::= CW */
#line 581 "pikchr.y"
#line 585 "pikchr.y"
{p->cur->cw = 1;}
#line 2439 "pikchr.c"
#line 2460 "pikchr.c"
        break;
      case 47: /* boolproperty ::= CCW */
#line 582 "pikchr.y"
#line 586 "pikchr.y"
{p->cur->cw = 0;}
#line 2444 "pikchr.c"
#line 2465 "pikchr.c"
        break;
      case 48: /* boolproperty ::= LARROW */
#line 583 "pikchr.y"
#line 587 "pikchr.y"
{p->cur->larrow=1; p->cur->rarrow=0; }
#line 2449 "pikchr.c"
#line 2470 "pikchr.c"
        break;
      case 49: /* boolproperty ::= RARROW */
#line 584 "pikchr.y"
#line 588 "pikchr.y"
{p->cur->larrow=0; p->cur->rarrow=1; }
#line 2454 "pikchr.c"
#line 2475 "pikchr.c"
        break;
      case 50: /* boolproperty ::= LRARROW */
#line 585 "pikchr.y"
#line 589 "pikchr.y"
{p->cur->larrow=1; p->cur->rarrow=1; }
#line 2459 "pikchr.c"
#line 2480 "pikchr.c"
        break;
      case 51: /* boolproperty ::= INVIS */
#line 586 "pikchr.y"
#line 590 "pikchr.y"
{p->cur->sw = 0.0;}
#line 2464 "pikchr.c"
#line 2485 "pikchr.c"
        break;
      case 52: /* textposition ::= */
      case 52: /* boolproperty ::= THICK */
#line 588 "pikchr.y"
{yymsp[1].minor.yy52 = 0;}
#line 2469 "pikchr.c"
        break;
      case 53: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */
#line 591 "pikchr.y"
{yylhsminor.yy52 = pik_text_position(p,yymsp[-1].minor.yy52,&yymsp[0].minor.yy0);}
#line 2474 "pikchr.c"
{p->cur->sw *= 1.5;}
#line 2490 "pikchr.c"
  yymsp[-1].minor.yy52 = yylhsminor.yy52;
        break;
      case 54: /* position ::= expr COMMA expr */
#line 594 "pikchr.y"
      case 53: /* boolproperty ::= THIN */
#line 592 "pikchr.y"
{yylhsminor.yy49.x=yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[0].minor.yy83;}
#line 2480 "pikchr.c"
{p->cur->sw *= 0.67;}
#line 2495 "pikchr.c"
  yymsp[-2].minor.yy49 = yylhsminor.yy49;
        break;
      case 55: /* position ::= place PLUS expr COMMA expr */
#line 596 "pikchr.y"
{yylhsminor.yy49.x=yymsp[-4].minor.yy49.x+yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y+yymsp[0].minor.yy83;}
#line 2486 "pikchr.c"
      case 54: /* textposition ::= */
#line 594 "pikchr.y"
{yymsp[1].minor.yy60 = 0;}
#line 2500 "pikchr.c"
  yymsp[-4].minor.yy49 = yylhsminor.yy49;
        break;
      case 56: /* position ::= place MINUS expr COMMA expr */
      case 55: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED|BIG|SMALL */
#line 597 "pikchr.y"
{yylhsminor.yy49.x=yymsp[-4].minor.yy49.x-yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y-yymsp[0].minor.yy83;}
#line 2492 "pikchr.c"
  yymsp[-4].minor.yy49 = yylhsminor.yy49;
{yylhsminor.yy60 = pik_text_position(p,yymsp[-1].minor.yy60,&yymsp[0].minor.yy0);}
#line 2505 "pikchr.c"
  yymsp[-1].minor.yy60 = yylhsminor.yy60;
        break;
      case 57: /* position ::= place PLUS LP expr COMMA expr RP */
#line 599 "pikchr.y"
{yylhsminor.yy49.x=yymsp[-6].minor.yy49.x+yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y+yymsp[-1].minor.yy83;}
#line 2498 "pikchr.c"
  yymsp[-6].minor.yy49 = yylhsminor.yy49;
      case 56: /* position ::= expr COMMA expr */
#line 600 "pikchr.y"
{yylhsminor.yy131.x=yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[0].minor.yy191;}
#line 2511 "pikchr.c"
  yymsp[-2].minor.yy131 = yylhsminor.yy131;
        break;
      case 58: /* position ::= place MINUS LP expr COMMA expr RP */
      case 57: /* position ::= place PLUS expr COMMA expr */
#line 601 "pikchr.y"
{yylhsminor.yy49.x=yymsp[-6].minor.yy49.x-yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y-yymsp[-1].minor.yy83;}
#line 2504 "pikchr.c"
  yymsp[-6].minor.yy49 = yylhsminor.yy49;
        break;
      case 59: /* position ::= LP position COMMA position RP */
#line 602 "pikchr.y"
{yymsp[-4].minor.yy49.x=yymsp[-3].minor.yy49.x; yymsp[-4].minor.yy49.y=yymsp[-1].minor.yy49.y;}
#line 2510 "pikchr.c"
{yylhsminor.yy131.x=yymsp[-4].minor.yy131.x+yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[-4].minor.yy131.y+yymsp[0].minor.yy191;}
#line 2517 "pikchr.c"
  yymsp[-4].minor.yy131 = yylhsminor.yy131;
        break;
      case 60: /* position ::= LP position RP */
      case 58: /* position ::= place MINUS expr COMMA expr */
#line 603 "pikchr.y"
{yymsp[-2].minor.yy49=yymsp[-1].minor.yy49;}
#line 2515 "pikchr.c"
{yylhsminor.yy131.x=yymsp[-4].minor.yy131.x-yymsp[-2].minor.yy191; yylhsminor.yy131.y=yymsp[-4].minor.yy131.y-yymsp[0].minor.yy191;}
#line 2523 "pikchr.c"
  yymsp[-4].minor.yy131 = yylhsminor.yy131;
        break;
      case 61: /* position ::= expr between position AND position */
      case 59: /* position ::= place PLUS LP expr COMMA expr RP */
#line 605 "pikchr.y"
{yylhsminor.yy49 = pik_position_between(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy49,yymsp[0].minor.yy49);}
#line 2520 "pikchr.c"
  yymsp[-4].minor.yy49 = yylhsminor.yy49;
{yylhsminor.yy131.x=yymsp[-6].minor.yy131.x+yymsp[-3].minor.yy191; yylhsminor.yy131.y=yymsp[-6].minor.yy131.y+yymsp[-1].minor.yy191;}
        break;
      case 62: /* position ::= expr ABOVE position */
#line 606 "pikchr.y"
{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y += yymsp[-2].minor.yy83;}
#line 2526 "pikchr.c"
  yymsp[-2].minor.yy49 = yylhsminor.yy49;
#line 2529 "pikchr.c"
  yymsp[-6].minor.yy131 = yylhsminor.yy131;
        break;
      case 63: /* position ::= expr BELOW position */
      case 60: /* position ::= place MINUS LP expr COMMA expr RP */
#line 607 "pikchr.y"
{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y -= yymsp[-2].minor.yy83;}
#line 2532 "pikchr.c"
  yymsp[-2].minor.yy49 = yylhsminor.yy49;
{yylhsminor.yy131.x=yymsp[-6].minor.yy131.x-yymsp[-3].minor.yy191; yylhsminor.yy131.y=yymsp[-6].minor.yy131.y-yymsp[-1].minor.yy191;}
#line 2535 "pikchr.c"
  yymsp[-6].minor.yy131 = yylhsminor.yy131;
        break;
      case 64: /* position ::= expr LEFT OF position */
      case 61: /* position ::= LP position COMMA position RP */
#line 608 "pikchr.y"
{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x -= yymsp[-3].minor.yy83;}
#line 2538 "pikchr.c"
{yymsp[-4].minor.yy131.x=yymsp[-3].minor.yy131.x; yymsp[-4].minor.yy131.y=yymsp[-1].minor.yy131.y;}
#line 2541 "pikchr.c"
  yymsp[-3].minor.yy49 = yylhsminor.yy49;
        break;
      case 65: /* position ::= expr RIGHT OF position */
      case 62: /* position ::= LP position RP */
#line 609 "pikchr.y"
{yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x += yymsp[-3].minor.yy83;}
#line 2544 "pikchr.c"
{yymsp[-2].minor.yy131=yymsp[-1].minor.yy131;}
#line 2546 "pikchr.c"
  yymsp[-3].minor.yy49 = yylhsminor.yy49;
        break;
      case 66: /* position ::= expr EDGEPT OF position */
      case 63: /* position ::= expr between position AND position */
#line 611 "pikchr.y"
{yylhsminor.yy49 = pik_position_at_hdg(p,yymsp[-3].minor.yy83,&yymsp[-2].minor.yy0,yymsp[0].minor.yy49);}
#line 2550 "pikchr.c"
  yymsp[-3].minor.yy49 = yylhsminor.yy49;
{yylhsminor.yy131 = pik_position_between(p,yymsp[-4].minor.yy191,yymsp[-2].minor.yy131,yymsp[0].minor.yy131);}
#line 2551 "pikchr.c"
  yymsp[-4].minor.yy131 = yylhsminor.yy131;
        break;
      case 67: /* position ::= expr HEADING expr FROM position */
      case 64: /* position ::= expr ABOVE position */
#line 612 "pikchr.y"
{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.y += yymsp[-2].minor.yy191;}
#line 2557 "pikchr.c"
  yymsp[-2].minor.yy131 = yylhsminor.yy131;
        break;
      case 65: /* position ::= expr BELOW position */
#line 613 "pikchr.y"
{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.y -= yymsp[-2].minor.yy191;}
#line 2563 "pikchr.c"
{yylhsminor.yy49 = pik_position_at_angle(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy83,yymsp[0].minor.yy49);}
#line 2556 "pikchr.c"
  yymsp[-4].minor.yy49 = yylhsminor.yy49;
  yymsp[-2].minor.yy131 = yylhsminor.yy131;
        break;
      case 66: /* position ::= expr LEFT OF position */
#line 614 "pikchr.y"
{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.x -= yymsp[-3].minor.yy191;}
#line 2569 "pikchr.c"
  yymsp[-3].minor.yy131 = yylhsminor.yy131;
        break;
      case 67: /* position ::= expr RIGHT OF position */
#line 615 "pikchr.y"
{yylhsminor.yy131=yymsp[0].minor.yy131; yylhsminor.yy131.x += yymsp[-3].minor.yy191;}
#line 2575 "pikchr.c"
  yymsp[-3].minor.yy131 = yylhsminor.yy131;
        break;
      case 68: /* place ::= object */
      case 68: /* position ::= expr EDGEPT OF position */
#line 617 "pikchr.y"
{yylhsminor.yy131 = pik_position_at_hdg(p,yymsp[-3].minor.yy191,&yymsp[-2].minor.yy0,yymsp[0].minor.yy131);}
#line 2581 "pikchr.c"
  yymsp[-3].minor.yy131 = yylhsminor.yy131;
        break;
      case 69: /* position ::= expr HEADING expr FROM position */
#line 619 "pikchr.y"
{yylhsminor.yy131 = pik_position_at_angle(p,yymsp[-4].minor.yy191,yymsp[-2].minor.yy191,yymsp[0].minor.yy131);}
#line 2587 "pikchr.c"
  yymsp[-4].minor.yy131 = yylhsminor.yy131;
        break;
      case 70: /* place ::= object */
#line 625 "pikchr.y"
{yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,0);}
#line 2562 "pikchr.c"
  yymsp[0].minor.yy49 = yylhsminor.yy49;
{yylhsminor.yy131 = pik_place_of_elem(p,yymsp[0].minor.yy26,0);}
#line 2593 "pikchr.c"
  yymsp[0].minor.yy131 = yylhsminor.yy131;
        break;
      case 69: /* place ::= object DOT_E edge */
      case 70: /* place ::= object DOT_L START */ yytestcase(yyruleno==70);
      case 71: /* place ::= object DOT_L END */ yytestcase(yyruleno==71);
#line 620 "pikchr.y"
{yylhsminor.yy49 = pik_place_of_elem(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
#line 2570 "pikchr.c"
  yymsp[-2].minor.yy49 = yylhsminor.yy49;
      case 71: /* place ::= object DOT_E edge */
      case 72: /* place ::= object DOT_L START */ yytestcase(yyruleno==72);
      case 73: /* place ::= object DOT_L END */ yytestcase(yyruleno==73);
#line 626 "pikchr.y"
{yylhsminor.yy131 = pik_place_of_elem(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
#line 2601 "pikchr.c"
  yymsp[-2].minor.yy131 = yylhsminor.yy131;
        break;
      case 72: /* place ::= START OF object */
      case 73: /* place ::= END OF object */ yytestcase(yyruleno==73);
      case 74: /* place ::= edge OF object */ yytestcase(yyruleno==74);
#line 623 "pikchr.y"
{yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
#line 2578 "pikchr.c"
  yymsp[-2].minor.yy49 = yylhsminor.yy49;
      case 74: /* place ::= START OF object */
      case 75: /* place ::= END OF object */ yytestcase(yyruleno==75);
      case 76: /* place ::= edge OF object */ yytestcase(yyruleno==76);
#line 629 "pikchr.y"
{yylhsminor.yy131 = pik_place_of_elem(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
#line 2609 "pikchr.c"
  yymsp[-2].minor.yy131 = yylhsminor.yy131;
        break;
      case 75: /* place ::= NTH VERTEX OF object */
      case 77: /* place ::= NTH VERTEX OF object */
#line 626 "pikchr.y"
{yylhsminor.yy49 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy24);}
#line 2584 "pikchr.c"
  yymsp[-3].minor.yy49 = yylhsminor.yy49;
        break;
      case 76: /* object ::= nth */
#line 629 "pikchr.y"
{yylhsminor.yy24 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
#line 2590 "pikchr.c"
  yymsp[0].minor.yy24 = yylhsminor.yy24;
        break;
      case 77: /* object ::= nth OF|IN object */
#line 630 "pikchr.y"
{yylhsminor.yy24 = pik_find_nth(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);}
#line 2596 "pikchr.c"
  yymsp[-2].minor.yy24 = yylhsminor.yy24;
        break;
      case 78: /* objectname ::= PLACENAME */
#line 632 "pikchr.y"
{yylhsminor.yy131 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy26);}
#line 2615 "pikchr.c"
  yymsp[-3].minor.yy131 = yylhsminor.yy131;
        break;
      case 78: /* object ::= nth */
#line 635 "pikchr.y"
{yylhsminor.yy26 = pik_find_nth(p,0,&yymsp[0].minor.yy0);}
#line 2621 "pikchr.c"
  yymsp[0].minor.yy26 = yylhsminor.yy26;
        break;
      case 79: /* object ::= nth OF|IN object */
#line 636 "pikchr.y"
{yylhsminor.yy26 = pik_find_nth(p,yymsp[0].minor.yy26,&yymsp[-2].minor.yy0);}
#line 2627 "pikchr.c"
  yymsp[-2].minor.yy26 = yylhsminor.yy26;
        break;
      case 80: /* objectname ::= PLACENAME */
#line 638 "pikchr.y"
{yylhsminor.yy24 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
#line 2602 "pikchr.c"
  yymsp[0].minor.yy24 = yylhsminor.yy24;
{yylhsminor.yy26 = pik_find_byname(p,0,&yymsp[0].minor.yy0);}
#line 2633 "pikchr.c"
  yymsp[0].minor.yy26 = yylhsminor.yy26;
        break;
      case 79: /* objectname ::= objectname DOT_U PLACENAME */
#line 634 "pikchr.y"
{yylhsminor.yy24 = pik_find_byname(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
#line 2608 "pikchr.c"
  yymsp[-2].minor.yy24 = yylhsminor.yy24;
      case 81: /* objectname ::= objectname DOT_U PLACENAME */
#line 640 "pikchr.y"
{yylhsminor.yy26 = pik_find_byname(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
#line 2639 "pikchr.c"
  yymsp[-2].minor.yy26 = yylhsminor.yy26;
        break;
      case 80: /* nth ::= NTH CLASSNAME */
#line 636 "pikchr.y"
      case 82: /* nth ::= NTH CLASSNAME */
#line 642 "pikchr.y"
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); }
#line 2614 "pikchr.c"
#line 2645 "pikchr.c"
  yymsp[-1].minor.yy0 = yylhsminor.yy0;
        break;
      case 81: /* nth ::= NTH LAST CLASSNAME */
#line 637 "pikchr.y"
      case 83: /* nth ::= NTH LAST CLASSNAME */
#line 643 "pikchr.y"
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); }
#line 2620 "pikchr.c"
#line 2651 "pikchr.c"
  yymsp[-2].minor.yy0 = yylhsminor.yy0;
        break;
      case 82: /* nth ::= LAST CLASSNAME */
#line 638 "pikchr.y"
      case 84: /* nth ::= LAST CLASSNAME */
#line 644 "pikchr.y"
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;}
#line 2626 "pikchr.c"
#line 2657 "pikchr.c"
        break;
      case 83: /* nth ::= LAST */
#line 639 "pikchr.y"
      case 85: /* nth ::= LAST */
#line 645 "pikchr.y"
{yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;}
#line 2631 "pikchr.c"
#line 2662 "pikchr.c"
  yymsp[0].minor.yy0 = yylhsminor.yy0;
        break;
      case 84: /* nth ::= NTH LB RB */
#line 640 "pikchr.y"
      case 86: /* nth ::= NTH LB RB */
#line 646 "pikchr.y"
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);}
#line 2637 "pikchr.c"
#line 2668 "pikchr.c"
  yymsp[-2].minor.yy0 = yylhsminor.yy0;
        break;
      case 85: /* nth ::= NTH LAST LB RB */
#line 641 "pikchr.y"
      case 87: /* nth ::= NTH LAST LB RB */
#line 647 "pikchr.y"
{yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);}
#line 2643 "pikchr.c"
#line 2674 "pikchr.c"
  yymsp[-3].minor.yy0 = yylhsminor.yy0;
        break;
      case 86: /* nth ::= LAST LB RB */
#line 642 "pikchr.y"
      case 88: /* nth ::= LAST LB RB */
#line 648 "pikchr.y"
{yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; }
#line 2649 "pikchr.c"
#line 2680 "pikchr.c"
        break;
      case 87: /* expr ::= expr PLUS expr */
#line 644 "pikchr.y"
{yylhsminor.yy83=yymsp[-2].minor.yy83+yymsp[0].minor.yy83;}
#line 2654 "pikchr.c"
  yymsp[-2].minor.yy83 = yylhsminor.yy83;
      case 89: /* expr ::= expr PLUS expr */
#line 650 "pikchr.y"
{yylhsminor.yy191=yymsp[-2].minor.yy191+yymsp[0].minor.yy191;}
#line 2685 "pikchr.c"
  yymsp[-2].minor.yy191 = yylhsminor.yy191;
        break;
      case 88: /* expr ::= expr MINUS expr */
#line 645 "pikchr.y"
{yylhsminor.yy83=yymsp[-2].minor.yy83-yymsp[0].minor.yy83;}
#line 2660 "pikchr.c"
  yymsp[-2].minor.yy83 = yylhsminor.yy83;
      case 90: /* expr ::= expr MINUS expr */
#line 651 "pikchr.y"
{yylhsminor.yy191=yymsp[-2].minor.yy191-yymsp[0].minor.yy191;}
#line 2691 "pikchr.c"
  yymsp[-2].minor.yy191 = yylhsminor.yy191;
        break;
      case 89: /* expr ::= expr STAR expr */
#line 646 "pikchr.y"
{yylhsminor.yy83=yymsp[-2].minor.yy83*yymsp[0].minor.yy83;}
#line 2666 "pikchr.c"
  yymsp[-2].minor.yy83 = yylhsminor.yy83;
      case 91: /* expr ::= expr STAR expr */
#line 652 "pikchr.y"
{yylhsminor.yy191=yymsp[-2].minor.yy191*yymsp[0].minor.yy191;}
#line 2697 "pikchr.c"
  yymsp[-2].minor.yy191 = yylhsminor.yy191;
        break;
      case 90: /* expr ::= expr SLASH expr */
#line 647 "pikchr.y"
      case 92: /* expr ::= expr SLASH expr */
#line 653 "pikchr.y"
{
  if( yymsp[0].minor.yy83==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy83 = 0.0; }
  else{ yylhsminor.yy83 = yymsp[-2].minor.yy83/yymsp[0].minor.yy83; }
  if( yymsp[0].minor.yy191==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy191 = 0.0; }
  else{ yylhsminor.yy191 = yymsp[-2].minor.yy191/yymsp[0].minor.yy191; }
}
#line 2675 "pikchr.c"
  yymsp[-2].minor.yy83 = yylhsminor.yy83;
#line 2706 "pikchr.c"
  yymsp[-2].minor.yy191 = yylhsminor.yy191;
        break;
      case 91: /* expr ::= MINUS expr */
#line 651 "pikchr.y"
{yymsp[-1].minor.yy83=-yymsp[0].minor.yy83;}
#line 2681 "pikchr.c"
      case 93: /* expr ::= MINUS expr */
#line 657 "pikchr.y"
{yymsp[-1].minor.yy191=-yymsp[0].minor.yy191;}
#line 2712 "pikchr.c"
        break;
      case 92: /* expr ::= PLUS expr */
#line 652 "pikchr.y"
{yymsp[-1].minor.yy83=yymsp[0].minor.yy83;}
#line 2686 "pikchr.c"
      case 94: /* expr ::= PLUS expr */
#line 658 "pikchr.y"
{yymsp[-1].minor.yy191=yymsp[0].minor.yy191;}
#line 2717 "pikchr.c"
        break;
      case 93: /* expr ::= LP expr RP */
#line 653 "pikchr.y"
{yymsp[-2].minor.yy83=yymsp[-1].minor.yy83;}
#line 2691 "pikchr.c"
      case 95: /* expr ::= LP expr RP */
#line 659 "pikchr.y"
{yymsp[-2].minor.yy191=yymsp[-1].minor.yy191;}
#line 2722 "pikchr.c"
        break;
      case 94: /* expr ::= NUMBER */
#line 654 "pikchr.y"
{yylhsminor.yy83=pik_atof(p,&yymsp[0].minor.yy0);}
#line 2696 "pikchr.c"
  yymsp[0].minor.yy83 = yylhsminor.yy83;
      case 96: /* expr ::= NUMBER */
#line 660 "pikchr.y"
{yylhsminor.yy191=pik_atof(p,&yymsp[0].minor.yy0);}
#line 2727 "pikchr.c"
  yymsp[0].minor.yy191 = yylhsminor.yy191;
        break;
      case 95: /* expr ::= ID */
#line 655 "pikchr.y"
{yylhsminor.yy83=pik_get_var(p,&yymsp[0].minor.yy0);}
#line 2702 "pikchr.c"
  yymsp[0].minor.yy83 = yylhsminor.yy83;
      case 97: /* expr ::= ID */
#line 661 "pikchr.y"
{yylhsminor.yy191=pik_get_var(p,&yymsp[0].minor.yy0);}
#line 2733 "pikchr.c"
  yymsp[0].minor.yy191 = yylhsminor.yy191;
        break;
      case 96: /* expr ::= FUNC1 LP expr RP */
#line 656 "pikchr.y"
{yylhsminor.yy83 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy83,0.0);}
#line 2708 "pikchr.c"
  yymsp[-3].minor.yy83 = yylhsminor.yy83;
      case 98: /* expr ::= FUNC1 LP expr RP */
#line 662 "pikchr.y"
{yylhsminor.yy191 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy191,0.0);}
#line 2739 "pikchr.c"
  yymsp[-3].minor.yy191 = yylhsminor.yy191;
        break;
      case 97: /* expr ::= FUNC2 LP expr COMMA expr RP */
#line 657 "pikchr.y"
{yylhsminor.yy83 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy83,yymsp[-1].minor.yy83);}
#line 2714 "pikchr.c"
  yymsp[-5].minor.yy83 = yylhsminor.yy83;
      case 99: /* expr ::= FUNC2 LP expr COMMA expr RP */
#line 663 "pikchr.y"
{yylhsminor.yy191 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy191,yymsp[-1].minor.yy191);}
#line 2745 "pikchr.c"
  yymsp[-5].minor.yy191 = yylhsminor.yy191;
        break;
      case 98: /* expr ::= object DOT_L locproperty */
      case 99: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==99);
      case 100: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==100);
      case 101: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==101);
#line 659 "pikchr.y"
{yylhsminor.yy83=pik_property_of(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);}
#line 2723 "pikchr.c"
  yymsp[-2].minor.yy83 = yylhsminor.yy83;
      case 100: /* expr ::= object DOT_L locproperty */
      case 101: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==101);
      case 102: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==102);
      case 103: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==103);
#line 665 "pikchr.y"
{yylhsminor.yy191=pik_property_of(p,yymsp[-2].minor.yy26,&yymsp[0].minor.yy0);}
#line 2754 "pikchr.c"
  yymsp[-2].minor.yy191 = yylhsminor.yy191;
        break;
      case 102: /* expr ::= object DOT_E edge DOT_L X */
#line 663 "pikchr.y"
{yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).x;}
#line 2729 "pikchr.c"
  yymsp[-4].minor.yy83 = yylhsminor.yy83;
      case 104: /* expr ::= object DOT_E edge DOT_L X */
#line 669 "pikchr.y"
{yylhsminor.yy191=pik_place_of_elem(p,yymsp[-4].minor.yy26,&yymsp[-2].minor.yy0).x;}
#line 2760 "pikchr.c"
  yymsp[-4].minor.yy191 = yylhsminor.yy191;
        break;
      case 103: /* expr ::= object DOT_E edge DOT_L Y */
#line 664 "pikchr.y"
{yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).y;}
#line 2735 "pikchr.c"
  yymsp[-4].minor.yy83 = yylhsminor.yy83;
      case 105: /* expr ::= object DOT_E edge DOT_L Y */
#line 670 "pikchr.y"
{yylhsminor.yy191=pik_place_of_elem(p,yymsp[-4].minor.yy26,&yymsp[-2].minor.yy0).y;}
#line 2766 "pikchr.c"
  yymsp[-4].minor.yy191 = yylhsminor.yy191;
        break;
      case 104: /* expr ::= LP locproperty OF object RP */
      case 105: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==105);
      case 106: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==106);
      case 107: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==107);
#line 665 "pikchr.y"
{yymsp[-4].minor.yy83=pik_property_of(p,yymsp[-1].minor.yy24,&yymsp[-3].minor.yy0);}
#line 2744 "pikchr.c"
      case 106: /* expr ::= LP locproperty OF object RP */
      case 107: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==107);
      case 108: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==108);
      case 109: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==109);
#line 671 "pikchr.y"
{yymsp[-4].minor.yy191=pik_property_of(p,yymsp[-1].minor.yy26,&yymsp[-3].minor.yy0);}
#line 2775 "pikchr.c"
        break;
      case 108: /* expr ::= NTH VERTEX OF object DOT_L X */
#line 671 "pikchr.y"
{yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).x;}
#line 2749 "pikchr.c"
  yymsp[-5].minor.yy83 = yylhsminor.yy83;
      case 110: /* expr ::= NTH VERTEX OF object DOT_L X */
#line 677 "pikchr.y"
{yylhsminor.yy191 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy26).x;}
#line 2780 "pikchr.c"
  yymsp[-5].minor.yy191 = yylhsminor.yy191;
        break;
      case 109: /* expr ::= NTH VERTEX OF object DOT_L Y */
#line 673 "pikchr.y"
{yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).y;}
#line 2755 "pikchr.c"
  yymsp[-5].minor.yy83 = yylhsminor.yy83;
      case 111: /* expr ::= NTH VERTEX OF object DOT_L Y */
#line 679 "pikchr.y"
{yylhsminor.yy191 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy26).y;}
#line 2786 "pikchr.c"
  yymsp[-5].minor.yy191 = yylhsminor.yy191;
        break;
      default:
      /* (110) lvalue ::= ID */ yytestcase(yyruleno==110);
      /* (111) lvalue ::= FILL */ yytestcase(yyruleno==111);
      /* (112) lvalue ::= COLOR */ yytestcase(yyruleno==112);
      /* (113) lvalue ::= THICKNESS */ yytestcase(yyruleno==113);
      /* (114) rvalue ::= expr */ yytestcase(yyruleno==114);
      /* (115) print ::= PRINT */ yytestcase(yyruleno==115);
      /* (116) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=116);
      /* (117) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==117);
      /* (118) direction ::= UP */ yytestcase(yyruleno==118);
      /* (119) direction ::= DOWN */ yytestcase(yyruleno==119);
      /* (120) direction ::= LEFT */ yytestcase(yyruleno==120);
      /* (121) direction ::= RIGHT */ yytestcase(yyruleno==121);
      /* (122) attribute_list ::= alist */ yytestcase(yyruleno==122);
      /* (123) alist ::= */ yytestcase(yyruleno==123);
      /* (124) alist ::= alist attribute */ yytestcase(yyruleno==124);
      /* (125) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=125);
      /* (126) attribute ::= WITH withclause */ yytestcase(yyruleno==126);
      /* (127) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==127);
      /* (128) even ::= EVEN WITH */ yytestcase(yyruleno==128);
      /* (129) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=129);
      /* (130) withclause ::= withclause AND with */ yytestcase(yyruleno==130);
      /* (131) dashproperty ::= DOTTED */ yytestcase(yyruleno==131);
      /* (132) dashproperty ::= DASHED */ yytestcase(yyruleno==132);
      /* (133) colorproperty ::= FILL */ yytestcase(yyruleno==133);
      /* (134) colorproperty ::= COLOR */ yytestcase(yyruleno==134);
      /* (135) position ::= place */ yytestcase(yyruleno==135);
      /* (136) between ::= WAY BETWEEN */ yytestcase(yyruleno==136);
      /* (137) between ::= BETWEEN */ yytestcase(yyruleno==137);
      /* (138) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==138);
      /* (139) object ::= objectname */ yytestcase(yyruleno==139);
      /* (140) locproperty ::= X|Y */ yytestcase(yyruleno==140);
      /* (141) edge ::= EDGEPT */ yytestcase(yyruleno==141);
      /* (142) edge ::= TOP */ yytestcase(yyruleno==142);
      /* (143) edge ::= BOTTOM */ yytestcase(yyruleno==143);
      /* (144) edge ::= LEFT */ yytestcase(yyruleno==144);
      /* (145) edge ::= RIGHT */ yytestcase(yyruleno==145);
      /* (112) lvalue ::= ID */ yytestcase(yyruleno==112);
      /* (113) lvalue ::= FILL */ yytestcase(yyruleno==113);
      /* (114) lvalue ::= COLOR */ yytestcase(yyruleno==114);
      /* (115) lvalue ::= THICKNESS */ yytestcase(yyruleno==115);
      /* (116) rvalue ::= expr */ yytestcase(yyruleno==116);
      /* (117) print ::= PRINT */ yytestcase(yyruleno==117);
      /* (118) prlist ::= pritem (OPTIMIZED OUT) */ assert(yyruleno!=118);
      /* (119) prlist ::= prlist prsep pritem */ yytestcase(yyruleno==119);
      /* (120) direction ::= UP */ yytestcase(yyruleno==120);
      /* (121) direction ::= DOWN */ yytestcase(yyruleno==121);
      /* (122) direction ::= LEFT */ yytestcase(yyruleno==122);
      /* (123) direction ::= RIGHT */ yytestcase(yyruleno==123);
      /* (124) attribute_list ::= alist */ yytestcase(yyruleno==124);
      /* (125) alist ::= */ yytestcase(yyruleno==125);
      /* (126) alist ::= alist attribute */ yytestcase(yyruleno==126);
      /* (127) attribute ::= boolproperty (OPTIMIZED OUT) */ assert(yyruleno!=127);
      /* (128) attribute ::= WITH withclause */ yytestcase(yyruleno==128);
      /* (129) even ::= UNTIL EVEN WITH */ yytestcase(yyruleno==129);
      /* (130) even ::= EVEN WITH */ yytestcase(yyruleno==130);
      /* (131) withclause ::= with (OPTIMIZED OUT) */ assert(yyruleno!=131);
      /* (132) withclause ::= withclause AND with */ yytestcase(yyruleno==132);
      /* (133) dashproperty ::= DOTTED */ yytestcase(yyruleno==133);
      /* (134) dashproperty ::= DASHED */ yytestcase(yyruleno==134);
      /* (135) colorproperty ::= FILL */ yytestcase(yyruleno==135);
      /* (136) colorproperty ::= COLOR */ yytestcase(yyruleno==136);
      /* (137) position ::= place */ yytestcase(yyruleno==137);
      /* (138) between ::= WAY BETWEEN */ yytestcase(yyruleno==138);
      /* (139) between ::= BETWEEN */ yytestcase(yyruleno==139);
      /* (140) between ::= OF THE WAY BETWEEN */ yytestcase(yyruleno==140);
      /* (141) object ::= objectname */ yytestcase(yyruleno==141);
      /* (142) locproperty ::= X|Y */ yytestcase(yyruleno==142);
      /* (143) edge ::= EDGEPT */ yytestcase(yyruleno==143);
      /* (144) edge ::= TOP */ yytestcase(yyruleno==144);
      /* (145) edge ::= BOTTOM */ yytestcase(yyruleno==145);
      /* (146) edge ::= LEFT */ yytestcase(yyruleno==146);
      /* (147) edge ::= RIGHT */ yytestcase(yyruleno==147);
        break;
/********** End reduce actions ************************************************/
  };
  assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
  yygoto = yyRuleInfoLhs[yyruleno];
  yysize = yyRuleInfoNRhs[yyruleno];
  yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto);
2822
2823
2824
2825
2826
2827
2828
2829

2830
2831
2832
2833
2834
2835
2836

2837
2838
2839
2840
2841
2842
2843
2853
2854
2855
2856
2857
2858
2859

2860
2861
2862
2863
2864
2865
2866

2867
2868
2869
2870
2871
2872
2873
2874







-
+






-
+







  int yymajor,                   /* The major type of the error token */
  pik_parserTOKENTYPE yyminor         /* The minor type of the error token */
){
  pik_parserARG_FETCH
  pik_parserCTX_FETCH
#define TOKEN yyminor
/************ Begin %syntax_error code ****************************************/
#line 462 "pikchr.y"
#line 466 "pikchr.y"

  if( TOKEN.z && TOKEN.z[0] ){
    pik_error(p, &TOKEN, "syntax error");
  }else{
    pik_error(p, 0, "syntax error");
  }
#line 2861 "pikchr.c"
#line 2892 "pikchr.c"
/************ End %syntax_error code ******************************************/
  pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */
  pik_parserCTX_STORE
}

/*
** The following is executed when the parser accepts
3062
3063
3064
3065
3066
3067
3068
3069

3070
3071
3072
3073
3074
3075
3076
3093
3094
3095
3096
3097
3098
3099

3100
3101
3102
3103
3104
3105
3106
3107







-
+







  assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) );
  return yyFallback[iToken];
#else
  (void)iToken;
  return 0;
#endif
}
#line 683 "pikchr.y"
#line 689 "pikchr.y"



/* Chart of the 140 official HTML color names with their
** corresponding RGB value.
**
** Two new names "None" and "Off" are added with a value
4108
4109
4110
4111
4112
4113
4114
4115

4116
4117
4118
4119
4120
4121
4122
4139
4140
4141
4142
4143
4144
4145

4146
4147
4148
4149
4150
4151
4152
4153







-
+







  snprintf(buf, sizeof(buf)-1, "%s%d,%d", z1,
       (int)(p->rScale*x), (int)(p->rScale*y));
  buf[sizeof(buf)-1] = 0;
  pik_append(p, buf, -1);
}
static void pik_append_dis(Pik *p, const char *z1, PNum v, const char *z2){
  char buf[200];
  snprintf(buf, sizeof(buf)-1, "%s%d%s", z1, (int)(p->rScale*v), z2);
  snprintf(buf, sizeof(buf)-1, "%s%g%s", z1, p->rScale*v, z2);
  buf[sizeof(buf)-1] = 0;
  pik_append(p, buf, -1);
}
static void pik_append_clr(Pik *p, const char *z1, PNum v, const char *z2){
  char buf[200];
  int x = (int)v;
  int r = (x>>16) & 0xff;
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4181
4182
4183
4184
4185
4186
4187

4188
4189
4190
4191
4192
4193
4194







-







  if( pElem->fill>=0 ){
    pik_append_clr(p, "fill:", pElem->fill, ";");
  }else{
    pik_append(p,"fill:none;",-1);
  }
  if( pElem->sw>0.0 && pElem->color>=0.0 ){
    PNum sw = pElem->sw;
    if( sw*p->rScale<1.0 ) sw = 1.1/p->rScale;
    pik_append_dis(p, "stroke-width:", sw, ";");
    pik_append_clr(p, "stroke:",pElem->color,";");
    if( pElem->dotted>0.0 ){
      PNum v = pElem->dotted;
      if( sw<2.1/p->rScale ) sw = 2.1/p->rScale;
      pik_append_dis(p,"stroke-dasharray:",sw,"");
      pik_append_dis(p,",",v,";");
4261
4262
4263
4264
4265
4266
4267

4268
4269
4270
4271
4272



4273
4274
4275
4276
4277
4278


4279
4280
4281
4282
4283
4284
4285
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310


4311
4312
4313
4314
4315
4316
4317
4318
4319







+





+
+
+




-
-
+
+







  }else if( pElem->type->isLine ){
    dy2 = pElem->sw;
  }else{
    dy2 = 0.0;
  }
  for(i=0; i<n; i++){
    PToken *t = &aTxt[i];
    PNum xtraFontScale = 1.0;
    orig_y = y = pElem->ptAt.y;
    if( t->eCode & TP_ABOVE2 ) y += dy2 + 3*dy;
    if( t->eCode & TP_ABOVE  ) y += dy2 + dy;
    if( t->eCode & TP_BELOW  ) y -= dy2 + dy;
    if( t->eCode & TP_BELOW2 ) y -= dy2 + 3*dy;
    if( t->eCode & TP_BIG    ) xtraFontScale *= 1.25;
    if( t->eCode & TP_SMALL  ) xtraFontScale *= 0.8;
    if( t->eCode & TP_XTRA   ) xtraFontScale *= xtraFontScale;

    if( pBox!=0 ){
      /* If pBox is not NULL, do not draw any <text>.  Instead, just expand
      ** pBox to include the text */
      PNum cw = pik_text_length(t)*p->charWidth;
      PNum ch = p->charHeight*0.5;
      PNum cw = pik_text_length(t)*p->charWidth*xtraFontScale;
      PNum ch = p->charHeight*0.5*xtraFontScale;
      if( t->eCode & TP_RJUST ){
        pik_bbox_add_xy(pBox, x, y-ch);
        pik_bbox_add_xy(pBox, x-cw, y+ch);
      }else if( t->eCode & TP_LJUST ){
        pik_bbox_add_xy(pBox, x, y-ch);
        pik_bbox_add_xy(pBox, x+cw, y+ch);
      }else{
4303
4304
4305
4306
4307
4308
4309

4310
4311


4312
4313
4314
4315
4316
4317
4318
4337
4338
4339
4340
4341
4342
4343
4344


4345
4346
4347
4348
4349
4350
4351
4352
4353







+
-
-
+
+







    }
    if( t->eCode & TP_BOLD ){
      pik_append(p, " font-weight=\"bold\"", -1);
    }
    if( pElem->color>=0.0 ){
      pik_append_clr(p, " fill=\"", pElem->color, "\"");
    }
    xtraFontScale *= p->fontScale;
    if( p->fontScale<=0.99 || p->fontScale>=1.01 ){
      pik_append_num(p, " font-size=\"", p->fontScale*100.0);
    if( xtraFontScale<=0.99 || xtraFontScale>=1.01 ){
      pik_append_num(p, " font-size=\"", xtraFontScale*100.0);
      pik_append(p, "%\"", 2);
    }
    if( (t->eCode & TP_ALIGN)!=0 && pElem->nPath>=2 ){
      int n = pElem->nPath;
      PNum dx = pElem->aPath[n-1].x - pElem->aPath[0].x;
      PNum dy = pElem->aPath[n-1].y - pElem->aPath[0].y;
      PNum ang = atan2(dy,dx)*-180/M_PI;
5063
5064
5065
5066
5067
5068
5069
5070





5071
5072
5073
5074
5075
5076
5077
5098
5099
5100
5101
5102
5103
5104

5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116







-
+
+
+
+
+







    case T_CENTER:   /* no-op */                          break;
    case T_LJUST:    iRes = (iRes&~TP_JMASK) | TP_LJUST;  break;
    case T_RJUST:    iRes = (iRes&~TP_JMASK) | TP_RJUST;  break;
    case T_ABOVE:    iRes = (iRes&~TP_VMASK) | TP_ABOVE;  break;
    case T_BELOW:    iRes = (iRes&~TP_VMASK) | TP_BELOW;  break;
    case T_ITALIC:   iRes |= TP_ITALIC;                   break; 
    case T_BOLD:     iRes |= TP_BOLD;                     break; 
    case T_ALIGNED:  iRes |= TP_ALIGN;                    break; 
    case T_ALIGNED:  iRes |= TP_ALIGN;                    break;
    case T_BIG:      if( iRes & TP_BIG ) iRes |= TP_XTRA;
                     else iRes = (iRes &~TP_SZMASK)|TP_BIG;   break;
    case T_SMALL:    if( iRes & TP_SMALL ) iRes |= TP_XTRA;
                     else iRes = (iRes &~TP_SZMASK)|TP_SMALL; break;
  }
  return iRes;
}

/* Return an estimate of the actually number of displayed characters
** in a character string.
**
5938
5939
5940
5941
5942
5943
5944

5945
5946
5947
5948
5949
5950
5951
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991







+







  { "abs",        3,   T_FUNC1,     FN_ABS,    0       },
  { "aligned",    7,   T_ALIGNED,   0,         0       },
  { "and",        3,   T_AND,       0,         0       },
  { "as",         2,   T_AS,        0,         0       },
  { "at",         2,   T_AT,        0,         0       },
  { "below",      5,   T_BELOW,     0,         0       },
  { "between",    7,   T_BETWEEN,   0,         0       },
  { "big",        3,   T_BIG,       0,         0       },
  { "bold",       4,   T_BOLD,      0,         0       },
  { "bot",        3,   T_EDGEPT,    0,         CP_S    },
  { "bottom",     6,   T_BOTTOM,    0,         CP_S    },
  { "c",          1,   T_EDGEPT,    0,         CP_C    },
  { "ccw",        3,   T_CCW,       0,         0       },
  { "center",     6,   T_CENTER,    0,         0       },
  { "chop",       4,   T_CHOP,      0,         0       },
5988
5989
5990
5991
5992
5993
5994

5995
5996
5997
5998
5999
6000
6001

6002

6003
6004
6005
6006
6007
6008
6009
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052







+







+

+







  { "radius",     6,   T_RADIUS,    0,         0       },
  { "right",      5,   T_RIGHT,     DIR_RIGHT, CP_E    },
  { "rjust",      5,   T_RJUST,     0,         0       },
  { "s",          1,   T_EDGEPT,    0,         CP_S    },
  { "same",       4,   T_SAME,      0,         0       },
  { "se",         2,   T_EDGEPT,    0,         CP_SE   },
  { "sin",        3,   T_FUNC1,     FN_SIN,    0       },
  { "small",      5,   T_SMALL,     0,         0       },
  { "south",      5,   T_EDGEPT,    0,         CP_S    },
  { "sqrt",       4,   T_FUNC1,     FN_SQRT,   0       },
  { "start",      5,   T_START,     0,         0       },
  { "sw",         2,   T_EDGEPT,    0,         CP_SW   },
  { "t",          1,   T_TOP,       0,         CP_N    },
  { "the",        3,   T_THE,       0,         0       },
  { "then",       4,   T_THEN,      0,         0       },
  { "thick",      5,   T_THICK,     0,         0       },
  { "thickness",  9,   T_THICKNESS, 0,         0       },
  { "thin",       4,   T_THIN,      0,         0       },
  { "to",         2,   T_TO,        0,         0       },
  { "top",        3,   T_TOP,       0,         CP_N    },
  { "until",      5,   T_UNTIL,     0,         0       },
  { "up",         2,   T_UP,        DIR_UP,    0       },
  { "vertex",     6,   T_VERTEX,    0,         0       },
  { "w",          1,   T_EDGEPT,    0,         CP_W    },
  { "way",        3,   T_WAY,       0,         0       },
6483
6484
6485
6486
6487
6488
6489
6490

6526
6527
6528
6529
6530
6531
6532

6533







-
+
    }
  }
  printf("</body></html>\n");
  return 0; 
}
#endif /* PIKCHR_SHELL */

#line 6515 "pikchr.c"
#line 6558 "pikchr.c"