1 # Exercising Bison on actual grammars. -*- Autotest -*-
3 # Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004,
4 # 2005, 2007, 2009 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 AT_BANNER([[Existing Grammars.]])
21 # AT_TEST_EXISTING_GRAMMAR(DESCRIPTION,
22 # DECLS, GRAMMAR, INPUT,
23 # BISON-STDERR, LAST-STATE, LALR1-DIFF,
25 # [PARSER-EXIT-VALUE],
26 # [PARSER-STDOUT], [PARSER-STDERR])
27 # --------------------------------------------------------------
28 m4_define([AT_TEST_EXISTING_GRAMMAR], [_AT_TEST_EXISTING_GRAMMAR([$][1], $@)])
30 m4_define([_AT_TEST_EXISTING_GRAMMAR],
32 dnl See how the parser tables have changed. As the .output format evolves, the
33 dnl diff comments with line numbers might be a pain to maintain. When that
34 dnl time comes, just use sed to drop the line numbers. For now, as LR(1)
35 dnl support is rapidly evolving, let's keep that information to be careful.
36 dnl However, we don't do diffs for canonical LR(1) because the diff is huge.
37 m4_pushdef([AT_LALR1_DIFF_CHECK],
38 [AT_CHECK([[sed 's/^%define lr.type .*$//' input.y > input-lalr.y]])
39 AT_BISON_CHECK([[--report=all input-lalr.y]], [[0]], [ignore], [ignore])
40 AT_CHECK([[diff -u input-lalr.output input.output \
41 | sed -n '/^@@/,$p' | sed 's/^ $//']],
44 AT_TEST_TABLES_AND_PARSE([$2[: LALR(1)]], [[LALR]], [[last-state]],
45 [[%define lr.type "LALR"
47 [$4], [$5], [$6], [$7],
48 [AT_LALR1_DIFF_CHECK([$8])$9]m4_if($#, 8, [],
52 AT_TEST_TABLES_AND_PARSE([$2[: IELR(1)]], [[IELR]], [[last-state]],
53 [[%define lr.type "IELR"
55 [$4], [$5], [$6], [$7],
56 [AT_LALR1_DIFF_CHECK([$8])$9]m4_if($#, 8, [],
60 AT_TEST_TABLES_AND_PARSE([$2[: Canonical LR(1)]], [[canonical LR]],
61 [[last-state,no-xml]],
62 [[%define lr.type "canonical LR"
64 [$4], [$5], [$6], [$7],
65 [$9]m4_if($#, 8, [], $#, 9, [], [, m4_shiftn(9, $@)]))
67 m4_popdef([AT_LALR1_DIFF_CHECK])
72 ## ----------------------- ##
73 ## GNU AWK 3.1.0 Grammar. ##
74 ## ----------------------- ##
76 # We have been careful to strip all the actions excepts the
79 # There are 65 SR conflicts. Bison was once wrong, due to an incorrect
80 # computation of nullable. It reported 485 SR conflicts!
82 AT_TEST_EXISTING_GRAMMAR([[GNU AWK 3.1.0 Grammar]],
85 %token FUNC_CALL NAME REGEXP
87 %token YNUMBER YSTRING
88 %token RELOP APPEND_OP
89 %token ASSIGNOP MATCHOP NEWLINE CONCAT_OP
90 %token LEX_BEGIN LEX_END LEX_IF LEX_ELSE LEX_RETURN LEX_DELETE
91 %token LEX_WHILE LEX_DO LEX_FOR LEX_BREAK LEX_CONTINUE
92 %token LEX_PRINT LEX_PRINTF LEX_NEXT LEX_EXIT LEX_FUNCTION
93 %token LEX_GETLINE LEX_NEXTFILE
95 %token LEX_AND LEX_OR INCREMENT DECREMENT
96 %token LEX_BUILTIN LEX_LENGTH
98 /* Lowest to highest */
105 %left FUNC_CALL LEX_BUILTIN LEX_LENGTH
108 %nonassoc RELOP '<' '>' '|' APPEND_OP TWOWAYIO
110 %left YSTRING YNUMBER
115 %left INCREMENT DECREMENT
121 : opt_nls program opt_nls
133 : LEX_BEGIN {} action
135 | LEX_BEGIN statement_term
136 | LEX_END statement_term
139 | pattern statement_term
140 | function_prologue function_body
155 : LEX_FUNCTION {} func_name '(' opt_param_list r_paren opt_nls
159 : l_brace statements r_brace opt_semi opt_nls
160 | l_brace r_brace opt_semi opt_nls
170 * In this rule, want_regexp tells yylex that the next thing
171 * is a regexp so it should read up to the closing slash.
177 : l_brace statements r_brace opt_semi opt_nls
178 | l_brace r_brace opt_semi opt_nls
183 | statements statement
196 | l_brace statements r_brace
198 | LEX_WHILE '(' exp r_paren opt_nls statement
199 | LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren opt_nls
200 | LEX_FOR '(' NAME LEX_IN NAME r_paren opt_nls statement
201 | LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement
202 | LEX_FOR '(' opt_exp semi opt_nls semi opt_nls opt_exp r_paren opt_nls statement
203 | LEX_BREAK statement_term
204 | LEX_CONTINUE statement_term
205 | print '(' expression_list r_paren output_redir statement_term
206 | print opt_rexpression_list output_redir statement_term
207 | LEX_NEXT statement_term
208 | LEX_NEXTFILE statement_term
209 | LEX_EXIT opt_exp statement_term
210 | LEX_RETURN {} opt_exp statement_term
211 | LEX_DELETE NAME '[' expression_list ']' statement_term
212 | LEX_DELETE NAME statement_term
222 : LEX_IF '(' exp r_paren opt_nls statement
223 | LEX_IF '(' exp r_paren opt_nls statement
224 LEX_ELSE opt_nls statement
257 | param_list comma NAME
260 | param_list comma error
263 /* optional expression, as in for loop */
276 | rexpression_list comma rexp
278 | rexpression_list error
279 | rexpression_list error rexp
280 | rexpression_list comma error
290 | expression_list comma exp
292 | expression_list error
293 | expression_list error exp
294 | expression_list comma error
297 /* Expressions, not including the comma operator. */
298 exp : variable ASSIGNOP {} exp
299 | '(' expression_list r_paren LEX_IN NAME
300 | exp '|' LEX_GETLINE opt_variable
301 | exp TWOWAYIO LEX_GETLINE opt_variable
302 | LEX_GETLINE opt_variable input_redir
307 | '!' regexp %prec UNARY
312 | exp '?' exp ':' exp
314 | exp simp_exp %prec CONCAT_OP
318 : variable ASSIGNOP {} rexp
321 | LEX_GETLINE opt_variable input_redir
323 | '!' regexp %prec UNARY
327 | rexp '?' rexp ':' rexp
329 | rexp simp_exp %prec CONCAT_OP
334 /* Binary operators in order of decreasing precedence. */
335 | simp_exp '^' simp_exp
336 | simp_exp '*' simp_exp
337 | simp_exp '/' simp_exp
338 | simp_exp '%' simp_exp
339 | simp_exp '+' simp_exp
340 | simp_exp '-' simp_exp
346 : '!' simp_exp %prec UNARY
349 '(' opt_expression_list r_paren
350 | LEX_LENGTH '(' opt_expression_list r_paren
352 | FUNC_CALL '(' opt_expression_list r_paren
358 | '-' simp_exp %prec UNARY
359 | '+' simp_exp %prec UNARY
369 | NAME '[' expression_list ']'
370 | '$' non_post_simp_exp
400 dnl For example, in AWK:
404 dnl The grammar below (from GNU AWK 3.1.0) using canonical LR(1) or IELR(1)
409 dnl That is, they shift `*' immediately and make it part of the getline
412 dnl The grammar below using LALR(1) parses it as a syntax error. So does
413 dnl GNU AWK 3.0.6, 3.1.0, and 3.1.1. They reduce the full getline expression
414 dnl before shifting `*' even though `*' is not a valid lookahead.
416 dnl GNU AWK 3.1.2, 3.1.3, 3.1.4, and 3.1.5 parse it as:
420 dnl That is, like the other versions of GNU AWK, they reduce the full getline
421 dnl expression before shifting `*'. However, because of a different LHS on the
422 dnl getline rule, `*' actually is a valid lookahead. Solaris /usr/xpg4/bin/awk
423 dnl and the Open Group awk specification seem to agree:
425 dnl http://www.opengroup.org/pubs/online/7908799/xcu/awk.html
427 dnl /bin/nawk and /bin/awk on Solaris 10 report it as a syntax error, but they
428 dnl don't like even `print $!4;'.
429 [[LEX_GETLINE, '$', '!', YNUMBER, '*', YNUMBER, ';']],
432 [AT_COND_CASE([[canonical LR]],
433 [[input.y: conflicts: 265 shift/reduce]],
434 [[input.y: conflicts: 65 shift/reduce]])[
438 [AT_COND_CASE([[LALR]], [[319]], [[canonical LR]], [[2358]], [[328]])],
440 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
441 dnl Isocore map from LALR(1) state number to new state number plus descriptions
442 dnl of any change in the actions resulting in a change in accepted language:
449 dnl - 56 -> 326: reduce -> shift on '*', '/', and '%'
450 dnl - 58 -> 327: reduce -> shift on '*', '/', and '%'
451 dnl - 61 -> 328: reduce -> shift on '*', '/', and '%'
452 [AT_COND_CASE([[LALR]], [],
453 [[@@ -712,7 +712,7 @@
454 156 | . '$' non_post_simp_exp
456 NAME shift, and go to state 9
457 - '$' shift, and go to state 24
458 + '$' shift, and go to state 320
460 NAME [reduce using rule 152 (opt_variable)]
461 '$' [reduce using rule 152 (opt_variable)]
462 @@ -5379,7 +5379,7 @@
463 156 | . '$' non_post_simp_exp
465 NAME shift, and go to state 9
466 - '$' shift, and go to state 24
467 + '$' shift, and go to state 320
469 NAME [reduce using rule 152 (opt_variable)]
470 '$' [reduce using rule 152 (opt_variable)]
471 @@ -5399,7 +5399,7 @@
472 156 | . '$' non_post_simp_exp
474 NAME shift, and go to state 9
475 - '$' shift, and go to state 24
476 + '$' shift, and go to state 320
478 NAME [reduce using rule 152 (opt_variable)]
479 '$' [reduce using rule 152 (opt_variable)]
480 @@ -6214,7 +6214,7 @@
481 156 | . '$' non_post_simp_exp
483 NAME shift, and go to state 9
484 - '$' shift, and go to state 24
485 + '$' shift, and go to state 320
487 NAME [reduce using rule 152 (opt_variable)]
488 '$' [reduce using rule 152 (opt_variable)]
489 @@ -11099,3 +11099,274 @@
490 45 statement: LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement .
492 $default reduce using rule 45 (statement)
497 + 139 non_post_simp_exp: . '!' simp_exp
498 + 140 | . '(' exp r_paren
499 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
500 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
502 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
504 + 146 | . INCREMENT variable
505 + 147 | . DECREMENT variable
508 + 150 | . '-' simp_exp
509 + 151 | . '+' simp_exp
510 + 154 variable: . NAME
511 + 155 | . NAME '[' expression_list ']'
512 + 156 | . '$' non_post_simp_exp
513 + 156 | '$' . non_post_simp_exp
515 + FUNC_CALL shift, and go to state 8
516 + NAME shift, and go to state 9
517 + YNUMBER shift, and go to state 10
518 + YSTRING shift, and go to state 11
519 + INCREMENT shift, and go to state 321
520 + DECREMENT shift, and go to state 322
521 + LEX_BUILTIN shift, and go to state 18
522 + LEX_LENGTH shift, and go to state 19
523 + '+' shift, and go to state 323
524 + '-' shift, and go to state 324
525 + '!' shift, and go to state 325
526 + '$' shift, and go to state 320
527 + '(' shift, and go to state 55
529 + non_post_simp_exp go to state 62
530 + variable go to state 63
535 + 146 non_post_simp_exp: INCREMENT . variable
536 + 154 variable: . NAME
537 + 155 | . NAME '[' expression_list ']'
538 + 156 | . '$' non_post_simp_exp
540 + NAME shift, and go to state 9
541 + '$' shift, and go to state 320
543 + variable go to state 50
548 + 147 non_post_simp_exp: DECREMENT . variable
549 + 154 variable: . NAME
550 + 155 | . NAME '[' expression_list ']'
551 + 156 | . '$' non_post_simp_exp
553 + NAME shift, and go to state 9
554 + '$' shift, and go to state 320
556 + variable go to state 51
561 + 130 simp_exp: . non_post_simp_exp
562 + 131 | . simp_exp '^' simp_exp
563 + 132 | . simp_exp '*' simp_exp
564 + 133 | . simp_exp '/' simp_exp
565 + 134 | . simp_exp '%' simp_exp
566 + 135 | . simp_exp '+' simp_exp
567 + 136 | . simp_exp '-' simp_exp
568 + 137 | . variable INCREMENT
569 + 138 | . variable DECREMENT
570 + 139 non_post_simp_exp: . '!' simp_exp
571 + 140 | . '(' exp r_paren
572 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
573 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
575 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
577 + 146 | . INCREMENT variable
578 + 147 | . DECREMENT variable
581 + 150 | . '-' simp_exp
582 + 151 | . '+' simp_exp
583 + 151 | '+' . simp_exp
584 + 154 variable: . NAME
585 + 155 | . NAME '[' expression_list ']'
586 + 156 | . '$' non_post_simp_exp
588 + FUNC_CALL shift, and go to state 8
589 + NAME shift, and go to state 9
590 + YNUMBER shift, and go to state 10
591 + YSTRING shift, and go to state 11
592 + INCREMENT shift, and go to state 16
593 + DECREMENT shift, and go to state 17
594 + LEX_BUILTIN shift, and go to state 18
595 + LEX_LENGTH shift, and go to state 19
596 + '+' shift, and go to state 20
597 + '-' shift, and go to state 21
598 + '!' shift, and go to state 54
599 + '$' shift, and go to state 24
600 + '(' shift, and go to state 55
602 + simp_exp go to state 326
603 + non_post_simp_exp go to state 35
604 + variable go to state 57
609 + 130 simp_exp: . non_post_simp_exp
610 + 131 | . simp_exp '^' simp_exp
611 + 132 | . simp_exp '*' simp_exp
612 + 133 | . simp_exp '/' simp_exp
613 + 134 | . simp_exp '%' simp_exp
614 + 135 | . simp_exp '+' simp_exp
615 + 136 | . simp_exp '-' simp_exp
616 + 137 | . variable INCREMENT
617 + 138 | . variable DECREMENT
618 + 139 non_post_simp_exp: . '!' simp_exp
619 + 140 | . '(' exp r_paren
620 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
621 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
623 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
625 + 146 | . INCREMENT variable
626 + 147 | . DECREMENT variable
629 + 150 | . '-' simp_exp
630 + 150 | '-' . simp_exp
631 + 151 | . '+' simp_exp
632 + 154 variable: . NAME
633 + 155 | . NAME '[' expression_list ']'
634 + 156 | . '$' non_post_simp_exp
636 + FUNC_CALL shift, and go to state 8
637 + NAME shift, and go to state 9
638 + YNUMBER shift, and go to state 10
639 + YSTRING shift, and go to state 11
640 + INCREMENT shift, and go to state 16
641 + DECREMENT shift, and go to state 17
642 + LEX_BUILTIN shift, and go to state 18
643 + LEX_LENGTH shift, and go to state 19
644 + '+' shift, and go to state 20
645 + '-' shift, and go to state 21
646 + '!' shift, and go to state 54
647 + '$' shift, and go to state 24
648 + '(' shift, and go to state 55
650 + simp_exp go to state 327
651 + non_post_simp_exp go to state 35
652 + variable go to state 57
657 + 130 simp_exp: . non_post_simp_exp
658 + 131 | . simp_exp '^' simp_exp
659 + 132 | . simp_exp '*' simp_exp
660 + 133 | . simp_exp '/' simp_exp
661 + 134 | . simp_exp '%' simp_exp
662 + 135 | . simp_exp '+' simp_exp
663 + 136 | . simp_exp '-' simp_exp
664 + 137 | . variable INCREMENT
665 + 138 | . variable DECREMENT
666 + 139 non_post_simp_exp: . '!' simp_exp
667 + 139 | '!' . simp_exp
668 + 140 | . '(' exp r_paren
669 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
670 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
672 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
674 + 146 | . INCREMENT variable
675 + 147 | . DECREMENT variable
678 + 150 | . '-' simp_exp
679 + 151 | . '+' simp_exp
680 + 154 variable: . NAME
681 + 155 | . NAME '[' expression_list ']'
682 + 156 | . '$' non_post_simp_exp
684 + FUNC_CALL shift, and go to state 8
685 + NAME shift, and go to state 9
686 + YNUMBER shift, and go to state 10
687 + YSTRING shift, and go to state 11
688 + INCREMENT shift, and go to state 16
689 + DECREMENT shift, and go to state 17
690 + LEX_BUILTIN shift, and go to state 18
691 + LEX_LENGTH shift, and go to state 19
692 + '+' shift, and go to state 20
693 + '-' shift, and go to state 21
694 + '!' shift, and go to state 54
695 + '$' shift, and go to state 24
696 + '(' shift, and go to state 55
698 + simp_exp go to state 328
699 + non_post_simp_exp go to state 35
700 + variable go to state 57
705 + 131 simp_exp: simp_exp . '^' simp_exp
706 + 132 | simp_exp . '*' simp_exp
707 + 133 | simp_exp . '/' simp_exp
708 + 134 | simp_exp . '%' simp_exp
709 + 135 | simp_exp . '+' simp_exp
710 + 136 | simp_exp . '-' simp_exp
711 + 151 non_post_simp_exp: '+' simp_exp . [error, FUNC_CALL, NAME, YNUMBER, YSTRING, RELOP, APPEND_OP, MATCHOP, NEWLINE, LEX_IN, LEX_AND, LEX_OR, INCREMENT, DECREMENT, LEX_BUILTIN, LEX_LENGTH, '?', ':', ',', '<', '>', '|', TWOWAYIO, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
713 + '*' shift, and go to state 89
714 + '/' shift, and go to state 90
715 + '%' shift, and go to state 91
716 + '^' shift, and go to state 92
718 + $default reduce using rule 151 (non_post_simp_exp)
720 + Conflict between rule 151 and token '+' resolved as reduce ('+' < UNARY).
721 + Conflict between rule 151 and token '-' resolved as reduce ('-' < UNARY).
726 + 131 simp_exp: simp_exp . '^' simp_exp
727 + 132 | simp_exp . '*' simp_exp
728 + 133 | simp_exp . '/' simp_exp
729 + 134 | simp_exp . '%' simp_exp
730 + 135 | simp_exp . '+' simp_exp
731 + 136 | simp_exp . '-' simp_exp
732 + 150 non_post_simp_exp: '-' simp_exp . [error, FUNC_CALL, NAME, YNUMBER, YSTRING, RELOP, APPEND_OP, MATCHOP, NEWLINE, LEX_IN, LEX_AND, LEX_OR, INCREMENT, DECREMENT, LEX_BUILTIN, LEX_LENGTH, '?', ':', ',', '<', '>', '|', TWOWAYIO, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
734 + '*' shift, and go to state 89
735 + '/' shift, and go to state 90
736 + '%' shift, and go to state 91
737 + '^' shift, and go to state 92
739 + $default reduce using rule 150 (non_post_simp_exp)
741 + Conflict between rule 150 and token '+' resolved as reduce ('+' < UNARY).
742 + Conflict between rule 150 and token '-' resolved as reduce ('-' < UNARY).
747 + 131 simp_exp: simp_exp . '^' simp_exp
748 + 132 | simp_exp . '*' simp_exp
749 + 133 | simp_exp . '/' simp_exp
750 + 134 | simp_exp . '%' simp_exp
751 + 135 | simp_exp . '+' simp_exp
752 + 136 | simp_exp . '-' simp_exp
753 + 139 non_post_simp_exp: '!' simp_exp . [error, FUNC_CALL, NAME, YNUMBER, YSTRING, RELOP, APPEND_OP, MATCHOP, NEWLINE, LEX_IN, LEX_AND, LEX_OR, INCREMENT, DECREMENT, LEX_BUILTIN, LEX_LENGTH, '?', ':', ',', '<', '>', '|', TWOWAYIO, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
755 + '*' shift, and go to state 89
756 + '/' shift, and go to state 90
757 + '%' shift, and go to state 91
758 + '^' shift, and go to state 92
760 + $default reduce using rule 139 (non_post_simp_exp)
762 + Conflict between rule 139 and token '+' resolved as reduce ('+' < UNARY).
763 + Conflict between rule 139 and token '-' resolved as reduce ('-' < UNARY).
769 dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
770 dnl In the case of the syntax error, the parser recovers, so it returns 0.
773 [AT_COND_CASE([[LALR]],
774 [[syntax error, unexpected '*', expecting NEWLINE or '{' or ';'
777 ## ----------------- ##
778 ## GNU Cim Grammar. ##
779 ## ----------------- ##
781 # GNU Cim, the GNU Simula 87 Compiler.
783 # Bison was once wrong, due to an incorrect computation of the RR conflicts.
784 # It reported 80 SR && 99 RR conflicts instead of 78/10!!!
786 AT_TEST_EXISTING_GRAMMAR([[GNU Cim Grammar]],
790 HACTIVATE HAFTER /*HAND*/ HARRAY HAT
791 HBEFORE HBEGIN HBOOLEAN
792 HCHARACTER HCLASS /*HCOMMENT*/ HCONC
794 HELSE HEND HEQ /*HEQV*/ HEXTERNAL
798 HIF /*HIMP*/ HIN HINNER HINSPECT HINTEGER HIS
800 HNAME HNE HNEW HNONE /*HNOT*/ HNOTEXT
802 HPRIOR HPROCEDURE HPROTECTED
804 HREACTIVATE HREAL HREF
806 HTEXT HTHEN HTHIS HTO
811 HASSIGNVALUE HASSIGNREF
812 /*HDOT*/ HPAREXPSEPARATOR HLABELSEPARATOR HSTATEMENTSEPARATOR
815 HADD HSUB HMUL HDIV HINTDIV HEXP
819 %token HBOOLEANKONST HINTEGERKONST HCHARACTERKONST
834 %left HVALRELOPERATOR HREFRELOPERATOR HOBJRELOPERATOR
840 %left HFACTOROPERATOR
841 %left HPRIMARYOPERATOR
850 /* GRAMATIKK FOR PROGRAM MODULES */
853 | error HSTATEMENTSEPARATOR MBEE_DECLSTMS
855 EXT_DECLARATION : HEXTERNAL
873 EXTERNAL_KIND_ITEM: EXT_IDENT
886 MBEE_REST_EXT_LIST: /* EMPTY
887 | HPAREXPSEPARATOR EXT_KIND_LIST
889 EXT_KIND_LIST : EXT_KIND_ITEM
890 | EXT_KIND_LIST HPAREXPSEPARATOR EXT_KIND_ITEM
892 EXT_KIND_ITEM : HIDENTIFIER
896 EMPTY_BLOCK : /*EMPT*/
900 | EXT_LIST HPAREXPSEPARATOR EXT_ITEM
902 EXT_ITEM : HIDENTIFIER
905 EXT_IDENT : /* EMPTY */
909 /* GRAMATIKK FOR TYPER */
928 /* GRAMATIKK FOR DEL AV SETNINGER */
929 MBEE_ELSE_PART : /*EMPT*/
939 FOR_LIST : FOR_LIST_ELEMENT
944 FOR_LIST_ELEMENT: EXPRESSION
947 MBEE_F_L_EL_R_PT: /*EMPT*/
959 CONN_STATE_R_PT : WHEN_CLAUSE_LIST
963 WHEN_CLAUSE_LIST: HWHEN
973 MBEE_OTWI_CLAUS : /*EMPT*/
978 ACTIVATOR : HACTIVATE
982 | ATDELAY EXPRESSION {}
990 BEFOREAFTER : HBEFORE
996 /* GRAMATIKK FOR SETNINGER OG DEKLARASJONER */
997 MODULSTATEMENT : HWHILE
1031 | EXPRESSION_SIMP HBEGIN error HSTATEMENTSEPARATOR
1033 | EXPRESSION_SIMP HBEGIN error HEND
1035 | ACTIVATOR EXPRESSION SCHEDULE
1040 | MBEE_TYPE HPROCEDURE
1064 DECLSTATEMENT : MODULSTATEMENT
1082 BLOCK : DECLSTATEMENT
1083 | HBEGIN MBEE_DECLSTMS HEND
1084 | HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND
1087 MBEE_DECLSTMS : MBEE_DECLSTMSU
1089 MBEE_DECLSTMSU : DECLSTATEMENT
1094 MODULS : MODULSTATEMENT
1095 | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT
1097 /* GRAMATIKK FOR DEL AV DEKLARASJONER */
1098 ARR_SEGMENT_LIST: ARR_SEGMENT
1103 ARR_SEGMENT : ARRAY_SEGMENT
1105 BAUND_PAIR_LIST HENDPAR
1107 ARRAY_SEGMENT : ARRAY_SEGMENT_EL {}
1113 ARRAY_SEGMENT_EL: HIDENTIFIER
1115 BAUND_PAIR_LIST : BAUND_PAIR
1120 BAUND_PAIR : EXPRESSION
1124 SWITCH_LIST : EXPRESSION
1129 HEADING : MBEE_FMAL_PAR_P HSTATEMENTSEPARATOR {}
1135 MBEE_FMAL_PAR_P : /*EMPT*/
1138 FMAL_PAR_PART : HBEGPAR NO_TYPE
1141 MBEE_LISTV : /*EMPT*/
1145 | FPP_CATEG HDOTDOTDOT
1147 HPAREXPSEPARATOR LISTV
1150 HPAREXPSEPARATOR LISTV
1152 FPP_HEADING : HBEGPAR NO_TYPE
1153 FPP_MBEE_LISTV HENDPAR
1155 FPP_MBEE_LISTV : /*EMPT*/
1158 FPP_LISTV : FPP_CATEG HDOTDOTDOT
1161 HPAREXPSEPARATOR LISTV
1163 FPP_SPEC : FPP_CATEG SPECIFIER HIDENTIFIER
1164 | FPP_CATEG FPP_PROC_DECL_IN_SPEC
1166 FPP_CATEG : HNAME HLABELSEPARATOR
1167 | HVALUE HLABELSEPARATOR
1168 | HVAR HLABELSEPARATOR
1171 FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
1174 FPP_HEADING {} { /* Yes, two "final" actions. */ }
1176 IDENTIFIER_LISTV: HIDENTIFIER
1179 HPAREXPSEPARATOR IDENTIFIER_LISTV
1181 MBEE_MODE_PART : /*EMPT*/
1184 MODE_PART : NAME_PART
1187 | NAME_PART VALUE_PART
1188 | VALUE_PART NAME_PART
1189 | NAME_PART VAR_PART
1190 | VAR_PART NAME_PART
1191 | VALUE_PART VAR_PART
1192 | VAR_PART VALUE_PART
1193 | VAR_PART NAME_PART VALUE_PART
1194 | NAME_PART VAR_PART VALUE_PART
1195 | NAME_PART VALUE_PART VAR_PART
1196 | VAR_PART VALUE_PART NAME_PART
1197 | VALUE_PART VAR_PART NAME_PART
1198 | VALUE_PART NAME_PART VAR_PART
1200 NAME_PART : HNAME {}
1208 VALUE_PART : HVALUE {}
1209 IDENTIFIER_LISTV HSTATEMENTSEPARATOR
1211 MBEE_SPEC_PART : /*EMPT*/
1214 SPEC_PART : ONE_SPEC
1215 | SPEC_PART ONE_SPEC
1217 ONE_SPEC : SPECIFIER IDENTIFIER_LIST HSTATEMENTSEPARATOR
1218 | NO_TYPE HPROCEDURE HIDENTIFIER HOBJRELOPERATOR
1220 PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
1221 | FPP_PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
1222 | MBEE_TYPE HPROCEDURE HIDENTIFIER HSTATEMENTSEPARATOR
1223 | MBEE_TYPE HPROCEDURE HIDENTIFIER HPAREXPSEPARATOR
1224 IDENTIFIER_LIST HSTATEMENTSEPARATOR
1232 PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
1239 MBEE_BEGIN_END : /* EMPTY */
1242 MBEE_PROT_PART : /*EMPT*/
1245 PROTECTION_PART : PROT_SPECIFIER IDENTIFIER_LIST
1247 | PROTECTION_PART PROT_SPECIFIER
1248 IDENTIFIER_LIST HSTATEMENTSEPARATOR
1250 PROT_SPECIFIER : HHIDDEN
1257 MBEE_VIRT_PART : /*EMPT*/
1260 VIRTUAL_PART : HVIRTUAL
1264 IDENTIFIER_LIST : HIDENTIFIER
1265 | IDENTIFIER_LIST HPAREXPSEPARATOR
1268 IDENTIFIER_LISTC: HIDENTIFIER
1270 | IDENTIFIER_LISTC HPAREXPSEPARATOR
1274 MBEE_CONSTANT : /* EMPTY */
1280 /* GRAMATIKK FOR UTTRYKK */
1281 EXPRESSION : EXPRESSION_SIMP
1289 EXPRESSION_SIMP : EXPRESSION_SIMP
1297 | EXPRESSION_SIMP HOR
1301 | EXPRESSION_SIMP HAND
1306 HEQV EXPRESSION_SIMP
1308 HIMP EXPRESSION_SIMP
1312 HAND EXPRESSION_SIMP
1313 | HNOT EXPRESSION_SIMP
1324 EXPRESSION_SIMP %prec UNEAR
1355 ARG_R_PT : /*EMPTY*/
1357 ARGUMENT_LIST HENDPAR
1359 MBEE_ARG_R_PT : /*EMPTY*/
1361 ARGUMENT_LIST HENDPAR
1363 ARGUMENT_LIST : EXPRESSION
1374 [AT_COND_CASE([[canonical LR]],
1375 [[input.y: conflicts: 1876 shift/reduce, 144 reduce/reduce]],
1376 [[input.y: conflicts: 78 shift/reduce, 10 reduce/reduce]])[
1380 [AT_COND_CASE([[canonical LR]], [[10425]], [[442]])],
1382 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
1386 [AT_COND_CASE([[canonical LR]], [[]],
1387 [AT_CHECK([[grep '^State.*conflicts:' input.output]], [[0]],
1388 [[State 64 conflicts: 14 shift/reduce
1389 State 164 conflicts: 1 shift/reduce
1390 State 201 conflicts: 33 shift/reduce, 4 reduce/reduce
1391 State 206 conflicts: 1 shift/reduce
1392 State 240 conflicts: 1 shift/reduce
1393 State 335 conflicts: 9 shift/reduce, 2 reduce/reduce
1394 State 356 conflicts: 1 shift/reduce
1395 State 360 conflicts: 9 shift/reduce, 2 reduce/reduce
1396 State 427 conflicts: 9 shift/reduce, 2 reduce/reduce
1399 ## -------------------------------- ##
1400 ## GNU pic (Groff 1.18.1) Grammar. ##
1401 ## -------------------------------- ##
1403 # GNU pic, part of groff.
1405 # Bison once reported shift/reduce conflicts that it shouldn't have.
1407 AT_TEST_EXISTING_GRAMMAR([[GNU pic (Groff 1.18.1) Grammar]],
1419 %token LEFT_ARROW_HEAD
1420 %token RIGHT_ARROW_HEAD
1421 %token DOUBLE_ARROW_HEAD
1531 /* this ensures that plot 17 "%g" parses as (plot 17 "%g") */
1535 /* give text adjustments higher precedence than TEXT, so that
1536 box "foo" above ljust == box ("foo" above ljust)
1539 %left LJUST RJUST ABOVE BELOW
1542 /* Give attributes that take an optional expression a higher
1543 precedence than left and right, so that eg `line chop left'
1545 %left CHOP SOLID DASHED DOTTED UP DOWN FILL COLORED OUTLINED
1548 %left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND SRAND LAST
1549 %left ORDINAL HERE '`'
1551 %left BOX CIRCLE ELLIPSE ARC LINE ARROW SPLINE '[' /* ] */
1553 /* these need to be lower than '-' */
1554 %left HEIGHT RADIUS WIDTH DIAMETER FROM TO AT THICKNESS
1556 /* these must have higher precedence than CHOP so that `label %prec CHOP'
1558 %left DOT_N DOT_E DOT_W DOT_S DOT_NE DOT_SE DOT_NW DOT_SW DOT_C
1559 %left DOT_START DOT_END TOP BOTTOM LEFT_CORNER RIGHT_CORNER
1560 %left UPPER LOWER NORTH SOUTH EAST WEST CENTER START END
1565 %left EQUALEQUAL NOTEQUAL
1566 %left '<' '>' LESSEQUAL GREATEREQUAL
1583 optional_separator middle_element_list optional_separator
1586 middle_element_list:
1588 | middle_element_list separator element
1602 VARIABLE '=' any_expr
1603 | VARIABLE ':' '=' any_expr
1609 | COMMAND print_args
1625 | FOR VARIABLE '=' expr TO expr optional_by DO
1638 | reset_variables VARIABLE
1639 | reset_variables ',' VARIABLE
1644 | print_args print_arg
1650 | position %prec ','
1670 text EQUALEQUAL text
1671 | text NOTEQUAL text
1672 | text_expr ANDAND text_expr
1673 | text_expr ANDAND expr
1674 | expr ANDAND text_expr
1675 | text_expr OROR text_expr
1676 | text_expr OROR expr
1677 | expr OROR text_expr
1689 | LABEL ':' optional_separator element
1690 | LABEL ':' optional_separator position_not_place
1691 | LABEL ':' optional_separator place
1692 | '{' {} element_list '}'
1718 | object_spec HEIGHT expr
1719 | object_spec RADIUS expr
1720 | object_spec WIDTH expr
1721 | object_spec DIAMETER expr
1722 | object_spec expr %prec HEIGHT
1724 | object_spec UP expr
1726 | object_spec DOWN expr
1728 | object_spec RIGHT expr
1730 | object_spec LEFT expr
1731 | object_spec FROM position
1732 | object_spec TO position
1733 | object_spec AT position
1734 | object_spec WITH path
1735 | object_spec WITH position %prec ','
1736 | object_spec BY expr_pair
1739 | object_spec DOTTED
1740 | object_spec DOTTED expr
1741 | object_spec DASHED
1742 | object_spec DASHED expr
1744 | object_spec FILL expr
1745 | object_spec SHADED text
1746 | object_spec COLORED text
1747 | object_spec OUTLINED text
1749 | object_spec CHOP expr
1751 | object_spec INVISIBLE
1752 | object_spec LEFT_ARROW_HEAD
1753 | object_spec RIGHT_ARROW_HEAD
1754 | object_spec DOUBLE_ARROW_HEAD
1757 | object_spec text %prec TEXT
1762 | object_spec THICKNESS expr
1763 | object_spec ALIGNED
1768 | SPRINTF '(' TEXT sprintf_args ')'
1773 | sprintf_args ',' expr
1783 | position '+' expr_pair
1784 | position '-' expr_pair
1785 | '(' position ',' position ')'
1786 | expr between position AND position
1787 | expr '<' position ',' position '>'
1792 | OF THE WAY BETWEEN
1801 /* line at A left == line (at A) left */
1820 optional_ordinal_last:
1827 | optional_ordinal_last object_type
1844 | label_path '.' LABEL
1849 /* give this a lower precedence than LEFT and RIGHT so that
1850 [A: box] with .A left == [A: box] with (.A left) */
1851 | label_path %prec TEXT
1857 | '(' relative_path ',' relative_path ')'
1859 /* The rest of these rules are a compatibility sop. */
1860 | ORDINAL LAST object_type relative_path
1861 | LAST object_type relative_path
1862 | ORDINAL object_type relative_path
1863 | LABEL relative_path
1890 | UPPER RIGHT_CORNER
1891 | LOWER RIGHT_CORNER
1915 | '-' expr %prec '!'
1917 | SIN '(' any_expr ')'
1918 | COS '(' any_expr ')'
1919 | ATAN2 '(' any_expr ',' any_expr ')'
1920 | LOG '(' any_expr ')'
1921 | EXP '(' any_expr ')'
1922 | SQRT '(' any_expr ')'
1923 | K_MAX '(' any_expr ',' any_expr ')'
1924 | K_MIN '(' any_expr ',' any_expr ')'
1925 | INT '(' any_expr ')'
1926 | RAND '(' any_expr ')'
1928 | SRAND '(' any_expr ')'
1930 | expr LESSEQUAL expr
1932 | expr GREATEREQUAL expr
1933 | expr EQUALEQUAL expr
1934 | expr NOTEQUAL expr
1943 dnl For example, in pic:
1951 dnl Even using groff 1.19.2, the 3rd line above is a syntax error. Change
1952 dnl "left" to "right", and it still is. However, add "upper" or "lower" before
1953 dnl "left or "right" and it's accepted to mean ".nw", ".ne", ".sw", or ".se".
1954 dnl (There seem to be no aliases for "north" and "south" that can stand alone
1955 dnl without being followed by "of".)
1956 [[VARIABLE, '=', LABEL, LEFT, DOT_X]],
1959 [[input.y:471.11-48: warning: rule useless in parser due to conflicts: path: ORDINAL LAST object_type relative_path
1963 [AT_COND_CASE([[LALR]], [[422]], [[canonical LR]], [[4833]], [[427]])],
1965 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
1966 dnl Isocore map from LALR(1) state number to new state number plus descriptions
1967 dnl of any change in the actions resulting in a change in accepted language:
1968 dnl - 102 -> 423: reduce -> shift on LEFT and RIGHT
1973 [AT_COND_CASE([[LALR]], [],
1974 [[@@ -1223,7 +1223,7 @@
1975 text_expr go to state 112
1976 text go to state 113
1977 place go to state 114
1978 - label go to state 102
1979 + label go to state 423
1980 ordinal go to state 103
1981 optional_ordinal_last go to state 104
1982 nth_primitive go to state 105
1983 @@ -1377,7 +1377,7 @@
1984 '!' shift, and go to state 94
1986 place go to state 114
1987 - label go to state 102
1988 + label go to state 423
1989 ordinal go to state 103
1990 optional_ordinal_last go to state 104
1991 nth_primitive go to state 105
1992 @@ -1854,7 +1854,7 @@
1994 text go to state 162
1995 place go to state 114
1996 - label go to state 102
1997 + label go to state 423
1998 ordinal go to state 103
1999 optional_ordinal_last go to state 104
2000 nth_primitive go to state 105
2001 @@ -2047,7 +2047,7 @@
2002 text_expr go to state 112
2003 text go to state 113
2004 place go to state 114
2005 - label go to state 102
2006 + label go to state 423
2007 ordinal go to state 103
2008 optional_ordinal_last go to state 104
2009 nth_primitive go to state 105
2010 @@ -2571,7 +2571,7 @@
2011 position_not_place go to state 99
2012 expr_pair go to state 191
2013 place go to state 101
2014 - label go to state 102
2015 + label go to state 423
2016 ordinal go to state 103
2017 optional_ordinal_last go to state 104
2018 nth_primitive go to state 105
2019 @@ -2732,7 +2732,7 @@
2020 text_expr go to state 112
2021 text go to state 113
2022 place go to state 114
2023 - label go to state 102
2024 + label go to state 423
2025 ordinal go to state 103
2026 optional_ordinal_last go to state 104
2027 nth_primitive go to state 105
2028 @@ -2875,7 +2875,7 @@
2029 '!' shift, and go to state 94
2031 place go to state 114
2032 - label go to state 102
2033 + label go to state 423
2034 ordinal go to state 103
2035 optional_ordinal_last go to state 104
2036 nth_primitive go to state 105
2037 @@ -3018,7 +3018,7 @@
2038 '!' shift, and go to state 94
2040 place go to state 114
2041 - label go to state 102
2042 + label go to state 423
2043 ordinal go to state 103
2044 optional_ordinal_last go to state 104
2045 nth_primitive go to state 105
2046 @@ -3256,7 +3256,7 @@
2050 - 146 place: label . [$end, LABEL, VARIABLE, NUMBER, TEXT, ORDINAL, LEFT_ARROW_HEAD, RIGHT_ARROW_HEAD, DOUBLE_ARROW_HEAD, LAST, UP, DOWN, LEFT, RIGHT, HEIGHT, RADIUS, WIDTH, DIAMETER, FROM, TO, AT, WITH, BY, THEN, SOLID, DOTTED, DASHED, CHOP, SAME, INVISIBLE, LJUST, RJUST, ABOVE, BELOW, AND, HERE, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, SIN, COS, ATAN2, LOG, EXP, SQRT, K_MAX, K_MIN, INT, RAND, SRAND, CW, CCW, THICKNESS, FILL, COLORED, OUTLINED, SHADED, ALIGNED, SPRINTF, '(', '`', ',', '>', '+', '-', '!', ';', '}', '@:>@', ')']
2051 + 146 place: label . [$end, LABEL, VARIABLE, NUMBER, TEXT, ORDINAL, LEFT_ARROW_HEAD, RIGHT_ARROW_HEAD, DOUBLE_ARROW_HEAD, LAST, UP, DOWN, LEFT, RIGHT, HEIGHT, RADIUS, WIDTH, DIAMETER, FROM, TO, AT, WITH, BY, THEN, SOLID, DOTTED, DASHED, CHOP, SAME, INVISIBLE, LJUST, RJUST, ABOVE, BELOW, HERE, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, SIN, COS, ATAN2, LOG, EXP, SQRT, K_MAX, K_MIN, INT, RAND, SRAND, CW, CCW, THICKNESS, FILL, COLORED, OUTLINED, SHADED, ALIGNED, SPRINTF, '(', '`', '+', '-', '!', ';', '}', '@:>@']
2052 147 | label . corner
2053 153 label: label . '.' LABEL
2055 @@ -3645,7 +3645,7 @@
2056 text_expr go to state 112
2057 text go to state 113
2058 place go to state 114
2059 - label go to state 102
2060 + label go to state 423
2061 ordinal go to state 103
2062 optional_ordinal_last go to state 104
2063 nth_primitive go to state 105
2064 @@ -3804,7 +3804,7 @@
2065 text_expr go to state 239
2066 text go to state 113
2067 place go to state 114
2068 - label go to state 102
2069 + label go to state 423
2070 ordinal go to state 103
2071 optional_ordinal_last go to state 104
2072 nth_primitive go to state 105
2073 @@ -4481,7 +4481,7 @@
2074 $default reduce using rule 89 (object_spec)
2076 place go to state 114
2077 - label go to state 102
2078 + label go to state 423
2079 ordinal go to state 103
2080 optional_ordinal_last go to state 104
2081 nth_primitive go to state 105
2082 @@ -4673,7 +4673,7 @@
2083 $default reduce using rule 91 (object_spec)
2085 place go to state 114
2086 - label go to state 102
2087 + label go to state 423
2088 ordinal go to state 103
2089 optional_ordinal_last go to state 104
2090 nth_primitive go to state 105
2091 @@ -4867,7 +4867,7 @@
2092 $default reduce using rule 95 (object_spec)
2094 place go to state 114
2095 - label go to state 102
2096 + label go to state 423
2097 ordinal go to state 103
2098 optional_ordinal_last go to state 104
2099 nth_primitive go to state 105
2100 @@ -5065,7 +5065,7 @@
2101 $default reduce using rule 93 (object_spec)
2103 place go to state 114
2104 - label go to state 102
2105 + label go to state 423
2106 ordinal go to state 103
2107 optional_ordinal_last go to state 104
2108 nth_primitive go to state 105
2109 @@ -5260,7 +5260,7 @@
2110 '!' shift, and go to state 94
2112 place go to state 114
2113 - label go to state 102
2114 + label go to state 423
2115 ordinal go to state 103
2116 optional_ordinal_last go to state 104
2117 nth_primitive go to state 105
2118 @@ -5403,7 +5403,7 @@
2119 '!' shift, and go to state 94
2121 place go to state 114
2122 - label go to state 102
2123 + label go to state 423
2124 ordinal go to state 103
2125 optional_ordinal_last go to state 104
2126 nth_primitive go to state 105
2127 @@ -5546,7 +5546,7 @@
2128 '!' shift, and go to state 94
2130 place go to state 114
2131 - label go to state 102
2132 + label go to state 423
2133 ordinal go to state 103
2134 optional_ordinal_last go to state 104
2135 nth_primitive go to state 105
2136 @@ -5689,7 +5689,7 @@
2137 '!' shift, and go to state 94
2139 place go to state 114
2140 - label go to state 102
2141 + label go to state 423
2142 ordinal go to state 103
2143 optional_ordinal_last go to state 104
2144 nth_primitive go to state 105
2145 @@ -6475,7 +6475,7 @@
2147 expr_pair go to state 280
2148 place go to state 114
2149 - label go to state 102
2150 + label go to state 423
2151 ordinal go to state 103
2152 optional_ordinal_last go to state 104
2153 nth_primitive go to state 105
2154 @@ -6633,7 +6633,7 @@
2155 $default reduce using rule 105 (object_spec)
2157 place go to state 114
2158 - label go to state 102
2159 + label go to state 423
2160 ordinal go to state 103
2161 optional_ordinal_last go to state 104
2162 nth_primitive go to state 105
2163 @@ -6825,7 +6825,7 @@
2164 $default reduce using rule 107 (object_spec)
2166 place go to state 114
2167 - label go to state 102
2168 + label go to state 423
2169 ordinal go to state 103
2170 optional_ordinal_last go to state 104
2171 nth_primitive go to state 105
2172 @@ -7017,7 +7017,7 @@
2173 $default reduce using rule 114 (object_spec)
2175 place go to state 114
2176 - label go to state 102
2177 + label go to state 423
2178 ordinal go to state 103
2179 optional_ordinal_last go to state 104
2180 nth_primitive go to state 105
2181 @@ -7264,7 +7264,7 @@
2182 '!' shift, and go to state 94
2184 place go to state 114
2185 - label go to state 102
2186 + label go to state 423
2187 ordinal go to state 103
2188 optional_ordinal_last go to state 104
2189 nth_primitive go to state 105
2190 @@ -7408,7 +7408,7 @@
2191 $default reduce using rule 109 (object_spec)
2193 place go to state 114
2194 - label go to state 102
2195 + label go to state 423
2196 ordinal go to state 103
2197 optional_ordinal_last go to state 104
2198 nth_primitive go to state 105
2199 @@ -7819,12 +7819,12 @@
2200 position_not_place go to state 296
2201 expr_pair go to state 100
2202 place go to state 297
2203 - label go to state 102
2204 + label go to state 423
2205 ordinal go to state 103
2206 optional_ordinal_last go to state 104
2207 nth_primitive go to state 105
2208 corner go to state 106
2209 - expr go to state 266
2210 + expr go to state 424
2214 @@ -7987,7 +7987,7 @@
2215 text_expr go to state 112
2216 text go to state 113
2217 place go to state 114
2218 - label go to state 102
2219 + label go to state 423
2220 ordinal go to state 103
2221 optional_ordinal_last go to state 104
2222 nth_primitive go to state 105
2223 @@ -8172,7 +8172,7 @@
2224 text_expr go to state 112
2225 text go to state 113
2226 place go to state 114
2227 - label go to state 102
2228 + label go to state 423
2229 ordinal go to state 103
2230 optional_ordinal_last go to state 104
2231 nth_primitive go to state 105
2232 @@ -8333,7 +8333,7 @@
2233 text_expr go to state 112
2234 text go to state 113
2235 place go to state 114
2236 - label go to state 102
2237 + label go to state 423
2238 ordinal go to state 103
2239 optional_ordinal_last go to state 104
2240 nth_primitive go to state 105
2241 @@ -8494,7 +8494,7 @@
2242 text_expr go to state 112
2243 text go to state 113
2244 place go to state 114
2245 - label go to state 102
2246 + label go to state 423
2247 ordinal go to state 103
2248 optional_ordinal_last go to state 104
2249 nth_primitive go to state 105
2250 @@ -8655,7 +8655,7 @@
2251 text_expr go to state 112
2252 text go to state 113
2253 place go to state 114
2254 - label go to state 102
2255 + label go to state 423
2256 ordinal go to state 103
2257 optional_ordinal_last go to state 104
2258 nth_primitive go to state 105
2259 @@ -8816,7 +8816,7 @@
2260 text_expr go to state 112
2261 text go to state 113
2262 place go to state 114
2263 - label go to state 102
2264 + label go to state 423
2265 ordinal go to state 103
2266 optional_ordinal_last go to state 104
2267 nth_primitive go to state 105
2268 @@ -8977,7 +8977,7 @@
2269 text_expr go to state 112
2270 text go to state 113
2271 place go to state 114
2272 - label go to state 102
2273 + label go to state 423
2274 ordinal go to state 103
2275 optional_ordinal_last go to state 104
2276 nth_primitive go to state 105
2277 @@ -9138,7 +9138,7 @@
2278 text_expr go to state 112
2279 text go to state 113
2280 place go to state 114
2281 - label go to state 102
2282 + label go to state 423
2283 ordinal go to state 103
2284 optional_ordinal_last go to state 104
2285 nth_primitive go to state 105
2286 @@ -9299,7 +9299,7 @@
2287 text_expr go to state 112
2288 text go to state 113
2289 place go to state 114
2290 - label go to state 102
2291 + label go to state 423
2292 ordinal go to state 103
2293 optional_ordinal_last go to state 104
2294 nth_primitive go to state 105
2295 @@ -9460,7 +9460,7 @@
2296 text_expr go to state 112
2297 text go to state 113
2298 place go to state 114
2299 - label go to state 102
2300 + label go to state 423
2301 ordinal go to state 103
2302 optional_ordinal_last go to state 104
2303 nth_primitive go to state 105
2304 @@ -9623,7 +9623,7 @@
2305 text_expr go to state 112
2306 text go to state 113
2307 place go to state 114
2308 - label go to state 102
2309 + label go to state 423
2310 ordinal go to state 103
2311 optional_ordinal_last go to state 104
2312 nth_primitive go to state 105
2313 @@ -9784,7 +9784,7 @@
2314 text_expr go to state 112
2315 text go to state 113
2316 place go to state 114
2317 - label go to state 102
2318 + label go to state 423
2319 ordinal go to state 103
2320 optional_ordinal_last go to state 104
2321 nth_primitive go to state 105
2322 @@ -9921,7 +9921,7 @@
2324 $default reduce using rule 47 (any_expr)
2326 - between go to state 237
2327 + between go to state 425
2331 @@ -10152,7 +10152,7 @@
2333 expr_pair go to state 317
2334 place go to state 114
2335 - label go to state 102
2336 + label go to state 423
2337 ordinal go to state 103
2338 optional_ordinal_last go to state 104
2339 nth_primitive go to state 105
2340 @@ -10298,7 +10298,7 @@
2342 expr_pair go to state 318
2343 place go to state 114
2344 - label go to state 102
2345 + label go to state 423
2346 ordinal go to state 103
2347 optional_ordinal_last go to state 104
2348 nth_primitive go to state 105
2349 @@ -10622,7 +10622,7 @@
2350 '!' shift, and go to state 94
2352 place go to state 114
2353 - label go to state 102
2354 + label go to state 423
2355 ordinal go to state 103
2356 optional_ordinal_last go to state 104
2357 nth_primitive go to state 105
2358 @@ -10765,7 +10765,7 @@
2359 '!' shift, and go to state 94
2361 place go to state 114
2362 - label go to state 102
2363 + label go to state 423
2364 ordinal go to state 103
2365 optional_ordinal_last go to state 104
2366 nth_primitive go to state 105
2367 @@ -10908,7 +10908,7 @@
2368 '!' shift, and go to state 94
2370 place go to state 114
2371 - label go to state 102
2372 + label go to state 423
2373 ordinal go to state 103
2374 optional_ordinal_last go to state 104
2375 nth_primitive go to state 105
2376 @@ -11051,7 +11051,7 @@
2377 '!' shift, and go to state 94
2379 place go to state 114
2380 - label go to state 102
2381 + label go to state 423
2382 ordinal go to state 103
2383 optional_ordinal_last go to state 104
2384 nth_primitive go to state 105
2385 @@ -11194,7 +11194,7 @@
2386 '!' shift, and go to state 94
2388 place go to state 114
2389 - label go to state 102
2390 + label go to state 423
2391 ordinal go to state 103
2392 optional_ordinal_last go to state 104
2393 nth_primitive go to state 105
2394 @@ -11337,7 +11337,7 @@
2395 '!' shift, and go to state 94
2397 place go to state 114
2398 - label go to state 102
2399 + label go to state 423
2400 ordinal go to state 103
2401 optional_ordinal_last go to state 104
2402 nth_primitive go to state 105
2403 @@ -11480,7 +11480,7 @@
2404 '!' shift, and go to state 94
2406 place go to state 114
2407 - label go to state 102
2408 + label go to state 423
2409 ordinal go to state 103
2410 optional_ordinal_last go to state 104
2411 nth_primitive go to state 105
2412 @@ -11637,7 +11637,7 @@
2413 position_not_place go to state 99
2414 expr_pair go to state 100
2415 place go to state 101
2416 - label go to state 102
2417 + label go to state 423
2418 ordinal go to state 103
2419 optional_ordinal_last go to state 104
2420 nth_primitive go to state 105
2421 @@ -11780,7 +11780,7 @@
2422 '!' shift, and go to state 94
2424 place go to state 114
2425 - label go to state 102
2426 + label go to state 423
2427 ordinal go to state 103
2428 optional_ordinal_last go to state 104
2429 nth_primitive go to state 105
2430 @@ -11923,7 +11923,7 @@
2431 '!' shift, and go to state 94
2433 place go to state 114
2434 - label go to state 102
2435 + label go to state 423
2436 ordinal go to state 103
2437 optional_ordinal_last go to state 104
2438 nth_primitive go to state 105
2439 @@ -12066,7 +12066,7 @@
2440 '!' shift, and go to state 94
2442 place go to state 114
2443 - label go to state 102
2444 + label go to state 423
2445 ordinal go to state 103
2446 optional_ordinal_last go to state 104
2447 nth_primitive go to state 105
2448 @@ -12209,7 +12209,7 @@
2449 '!' shift, and go to state 94
2451 place go to state 114
2452 - label go to state 102
2453 + label go to state 423
2454 ordinal go to state 103
2455 optional_ordinal_last go to state 104
2456 nth_primitive go to state 105
2457 @@ -12352,7 +12352,7 @@
2458 '!' shift, and go to state 94
2460 place go to state 114
2461 - label go to state 102
2462 + label go to state 423
2463 ordinal go to state 103
2464 optional_ordinal_last go to state 104
2465 nth_primitive go to state 105
2466 @@ -12495,7 +12495,7 @@
2467 '!' shift, and go to state 94
2469 place go to state 114
2470 - label go to state 102
2471 + label go to state 423
2472 ordinal go to state 103
2473 optional_ordinal_last go to state 104
2474 nth_primitive go to state 105
2475 @@ -12638,7 +12638,7 @@
2476 '!' shift, and go to state 94
2478 place go to state 114
2479 - label go to state 102
2480 + label go to state 423
2481 ordinal go to state 103
2482 optional_ordinal_last go to state 104
2483 nth_primitive go to state 105
2484 @@ -12794,12 +12794,12 @@
2485 position_not_place go to state 99
2486 expr_pair go to state 100
2487 place go to state 101
2488 - label go to state 102
2489 + label go to state 423
2490 ordinal go to state 103
2491 optional_ordinal_last go to state 104
2492 nth_primitive go to state 105
2493 corner go to state 106
2494 - expr go to state 266
2495 + expr go to state 424
2499 @@ -12937,7 +12937,7 @@
2500 '!' shift, and go to state 94
2502 place go to state 114
2503 - label go to state 102
2504 + label go to state 423
2505 ordinal go to state 103
2506 optional_ordinal_last go to state 104
2507 nth_primitive go to state 105
2508 @@ -13160,7 +13160,7 @@
2509 text_expr go to state 342
2510 text go to state 113
2511 place go to state 114
2512 - label go to state 102
2513 + label go to state 423
2514 ordinal go to state 103
2515 optional_ordinal_last go to state 104
2516 nth_primitive go to state 105
2517 @@ -13319,7 +13319,7 @@
2518 text_expr go to state 344
2519 text go to state 113
2520 place go to state 114
2521 - label go to state 102
2522 + label go to state 423
2523 ordinal go to state 103
2524 optional_ordinal_last go to state 104
2525 nth_primitive go to state 105
2526 @@ -13502,7 +13502,7 @@
2527 text_expr go to state 348
2528 text go to state 113
2529 place go to state 114
2530 - label go to state 102
2531 + label go to state 423
2532 ordinal go to state 103
2533 optional_ordinal_last go to state 104
2534 nth_primitive go to state 105
2535 @@ -13661,7 +13661,7 @@
2536 text_expr go to state 350
2537 text go to state 113
2538 place go to state 114
2539 - label go to state 102
2540 + label go to state 423
2541 ordinal go to state 103
2542 optional_ordinal_last go to state 104
2543 nth_primitive go to state 105
2544 @@ -13804,7 +13804,7 @@
2545 '!' shift, and go to state 94
2547 place go to state 114
2548 - label go to state 102
2549 + label go to state 423
2550 ordinal go to state 103
2551 optional_ordinal_last go to state 104
2552 nth_primitive go to state 105
2553 @@ -14747,7 +14747,7 @@
2554 position_not_place go to state 99
2555 expr_pair go to state 191
2556 place go to state 101
2557 - label go to state 102
2558 + label go to state 423
2559 ordinal go to state 103
2560 optional_ordinal_last go to state 104
2561 nth_primitive go to state 105
2562 @@ -15074,7 +15074,7 @@
2563 text go to state 113
2564 expr_pair go to state 365
2565 place go to state 114
2566 - label go to state 102
2567 + label go to state 423
2568 ordinal go to state 103
2569 optional_ordinal_last go to state 104
2570 nth_primitive go to state 105
2571 @@ -15693,12 +15693,12 @@
2572 position_not_place go to state 99
2573 expr_pair go to state 100
2574 place go to state 101
2575 - label go to state 102
2576 + label go to state 423
2577 ordinal go to state 103
2578 optional_ordinal_last go to state 104
2579 nth_primitive go to state 105
2580 corner go to state 106
2581 - expr go to state 266
2582 + expr go to state 424
2586 @@ -16124,7 +16124,7 @@
2588 $default reduce using rule 239 (expr)
2590 - between go to state 237
2591 + between go to state 425
2593 Conflict between rule 239 and token OF resolved as shift ('<' < OF).
2594 Conflict between rule 239 and token BETWEEN resolved as shift ('<' < BETWEEN).
2595 @@ -17234,7 +17234,7 @@
2596 text_expr go to state 112
2597 text go to state 113
2598 place go to state 114
2599 - label go to state 102
2600 + label go to state 423
2601 ordinal go to state 103
2602 optional_ordinal_last go to state 104
2603 nth_primitive go to state 105
2604 @@ -17416,7 +17416,7 @@
2605 text_expr go to state 112
2606 text go to state 113
2607 place go to state 114
2608 - label go to state 102
2609 + label go to state 423
2610 ordinal go to state 103
2611 optional_ordinal_last go to state 104
2612 nth_primitive go to state 105
2613 @@ -17577,7 +17577,7 @@
2614 text_expr go to state 112
2615 text go to state 113
2616 place go to state 114
2617 - label go to state 102
2618 + label go to state 423
2619 ordinal go to state 103
2620 optional_ordinal_last go to state 104
2621 nth_primitive go to state 105
2622 @@ -17772,12 +17772,12 @@
2623 position_not_place go to state 99
2624 expr_pair go to state 100
2625 place go to state 101
2626 - label go to state 102
2627 + label go to state 423
2628 ordinal go to state 103
2629 optional_ordinal_last go to state 104
2630 nth_primitive go to state 105
2631 corner go to state 106
2632 - expr go to state 266
2633 + expr go to state 424
2637 @@ -18071,7 +18071,7 @@
2638 '!' shift, and go to state 94
2640 place go to state 114
2641 - label go to state 102
2642 + label go to state 423
2643 ordinal go to state 103
2644 optional_ordinal_last go to state 104
2645 nth_primitive go to state 105
2646 @@ -18221,7 +18221,7 @@
2647 '!' shift, and go to state 94
2649 place go to state 114
2650 - label go to state 102
2651 + label go to state 423
2652 ordinal go to state 103
2653 optional_ordinal_last go to state 104
2654 nth_primitive go to state 105
2655 @@ -18830,7 +18830,7 @@
2656 '!' shift, and go to state 94
2658 place go to state 114
2659 - label go to state 102
2660 + label go to state 423
2661 ordinal go to state 103
2662 optional_ordinal_last go to state 104
2663 nth_primitive go to state 105
2664 @@ -18987,7 +18987,7 @@
2665 '!' shift, and go to state 94
2667 place go to state 114
2668 - label go to state 102
2669 + label go to state 423
2670 ordinal go to state 103
2671 optional_ordinal_last go to state 104
2672 nth_primitive go to state 105
2673 @@ -19089,3 +19089,440 @@
2674 29 placeless_element: FOR VARIABLE '=' expr TO expr optional_by DO $@6 DELIMITED .
2676 $default reduce using rule 29 (placeless_element)
2681 + 146 place: label . [$end, AND, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, ',', '>', '+', '-', ';', '}', '@:>@', ')']
2682 + 147 | label . corner
2683 + 153 label: label . '.' LABEL
2684 + 180 corner: . DOT_N
2699 + 195 | . UPPER LEFT
2700 + 196 | . LOWER LEFT
2701 + 197 | . UPPER RIGHT
2702 + 198 | . LOWER RIGHT
2703 + 199 | . LEFT_CORNER
2704 + 200 | . RIGHT_CORNER
2705 + 201 | . UPPER LEFT_CORNER
2706 + 202 | . LOWER LEFT_CORNER
2707 + 203 | . UPPER RIGHT_CORNER
2708 + 204 | . LOWER RIGHT_CORNER
2717 + LEFT shift, and go to state 53
2718 + RIGHT shift, and go to state 54
2719 + DOT_N shift, and go to state 56
2720 + DOT_E shift, and go to state 57
2721 + DOT_W shift, and go to state 58
2722 + DOT_S shift, and go to state 59
2723 + DOT_NE shift, and go to state 60
2724 + DOT_SE shift, and go to state 61
2725 + DOT_NW shift, and go to state 62
2726 + DOT_SW shift, and go to state 63
2727 + DOT_C shift, and go to state 64
2728 + DOT_START shift, and go to state 65
2729 + DOT_END shift, and go to state 66
2730 + TOP shift, and go to state 78
2731 + BOTTOM shift, and go to state 79
2732 + UPPER shift, and go to state 80
2733 + LOWER shift, and go to state 81
2734 + LEFT_CORNER shift, and go to state 82
2735 + RIGHT_CORNER shift, and go to state 83
2736 + NORTH shift, and go to state 84
2737 + SOUTH shift, and go to state 85
2738 + EAST shift, and go to state 86
2739 + WEST shift, and go to state 87
2740 + CENTER shift, and go to state 88
2741 + END shift, and go to state 89
2742 + START shift, and go to state 90
2743 + '.' shift, and go to state 204
2745 + $default reduce using rule 146 (place)
2747 + corner go to state 205
2752 + 140 position_not_place: expr . between position AND position
2753 + 141 | expr . '<' position ',' position '>'
2754 + 142 between: . BETWEEN
2755 + 143 | . OF THE WAY BETWEEN
2756 + 144 expr_pair: expr . ',' expr
2757 + 219 expr: expr . '+' expr
2758 + 220 | expr . '-' expr
2759 + 221 | expr . '*' expr
2760 + 222 | expr . '/' expr
2761 + 223 | expr . '%' expr
2762 + 224 | expr . '^' expr
2763 + 239 | expr . '<' expr
2764 + 240 | expr . LESSEQUAL expr
2765 + 241 | expr . '>' expr
2766 + 242 | expr . GREATEREQUAL expr
2767 + 243 | expr . EQUALEQUAL expr
2768 + 244 | expr . NOTEQUAL expr
2769 + 245 | expr . ANDAND expr
2770 + 246 | expr . OROR expr
2772 + OF shift, and go to state 220
2773 + BETWEEN shift, and go to state 221
2774 + ANDAND shift, and go to state 222
2775 + OROR shift, and go to state 223
2776 + NOTEQUAL shift, and go to state 224
2777 + EQUALEQUAL shift, and go to state 225
2778 + LESSEQUAL shift, and go to state 226
2779 + GREATEREQUAL shift, and go to state 227
2780 + ',' shift, and go to state 228
2781 + '<' shift, and go to state 229
2782 + '>' shift, and go to state 230
2783 + '+' shift, and go to state 231
2784 + '-' shift, and go to state 232
2785 + '*' shift, and go to state 233
2786 + '/' shift, and go to state 234
2787 + '%' shift, and go to state 235
2788 + '^' shift, and go to state 236
2790 + between go to state 425
2795 + 134 position: . position_not_place
2797 + 136 position_not_place: . expr_pair
2798 + 137 | . position '+' expr_pair
2799 + 138 | . position '-' expr_pair
2800 + 139 | . '(' position ',' position ')'
2801 + 140 | . expr between position AND position
2802 + 140 | expr between . position AND position
2803 + 141 | . expr '<' position ',' position '>'
2804 + 144 expr_pair: . expr ',' expr
2805 + 145 | . '(' expr_pair ')'
2806 + 146 place: . label
2807 + 147 | . label corner
2808 + 148 | . corner label
2809 + 149 | . corner OF label
2811 + 151 label: . LABEL
2812 + 152 | . nth_primitive
2813 + 153 | . label '.' LABEL
2814 + 154 ordinal: . ORDINAL
2815 + 155 | . '`' any_expr TH
2816 + 156 optional_ordinal_last: . LAST
2817 + 157 | . ordinal LAST
2818 + 158 nth_primitive: . ordinal object_type
2819 + 159 | . optional_ordinal_last object_type
2820 + 180 corner: . DOT_N
2835 + 195 | . UPPER LEFT
2836 + 196 | . LOWER LEFT
2837 + 197 | . UPPER RIGHT
2838 + 198 | . LOWER RIGHT
2839 + 199 | . LEFT_CORNER
2840 + 200 | . RIGHT_CORNER
2841 + 201 | . UPPER LEFT_CORNER
2842 + 202 | . LOWER LEFT_CORNER
2843 + 203 | . UPPER RIGHT_CORNER
2844 + 204 | . LOWER RIGHT_CORNER
2852 + 212 expr: . VARIABLE
2854 + 214 | . place DOT_X
2855 + 215 | . place DOT_Y
2856 + 216 | . place DOT_HT
2857 + 217 | . place DOT_WID
2858 + 218 | . place DOT_RAD
2859 + 219 | . expr '+' expr
2860 + 220 | . expr '-' expr
2861 + 221 | . expr '*' expr
2862 + 222 | . expr '/' expr
2863 + 223 | . expr '%' expr
2864 + 224 | . expr '^' expr
2866 + 226 | . '(' any_expr ')'
2867 + 227 | . SIN '(' any_expr ')'
2868 + 228 | . COS '(' any_expr ')'
2869 + 229 | . ATAN2 '(' any_expr ',' any_expr ')'
2870 + 230 | . LOG '(' any_expr ')'
2871 + 231 | . EXP '(' any_expr ')'
2872 + 232 | . SQRT '(' any_expr ')'
2873 + 233 | . K_MAX '(' any_expr ',' any_expr ')'
2874 + 234 | . K_MIN '(' any_expr ',' any_expr ')'
2875 + 235 | . INT '(' any_expr ')'
2876 + 236 | . RAND '(' any_expr ')'
2877 + 237 | . RAND '(' ')'
2878 + 238 | . SRAND '(' any_expr ')'
2879 + 239 | . expr '<' expr
2880 + 240 | . expr LESSEQUAL expr
2881 + 241 | . expr '>' expr
2882 + 242 | . expr GREATEREQUAL expr
2883 + 243 | . expr EQUALEQUAL expr
2884 + 244 | . expr NOTEQUAL expr
2885 + 245 | . expr ANDAND expr
2886 + 246 | . expr OROR expr
2889 + LABEL shift, and go to state 48
2890 + VARIABLE shift, and go to state 49
2891 + NUMBER shift, and go to state 50
2892 + ORDINAL shift, and go to state 51
2893 + LAST shift, and go to state 52
2894 + LEFT shift, and go to state 53
2895 + RIGHT shift, and go to state 54
2896 + HERE shift, and go to state 55
2897 + DOT_N shift, and go to state 56
2898 + DOT_E shift, and go to state 57
2899 + DOT_W shift, and go to state 58
2900 + DOT_S shift, and go to state 59
2901 + DOT_NE shift, and go to state 60
2902 + DOT_SE shift, and go to state 61
2903 + DOT_NW shift, and go to state 62
2904 + DOT_SW shift, and go to state 63
2905 + DOT_C shift, and go to state 64
2906 + DOT_START shift, and go to state 65
2907 + DOT_END shift, and go to state 66
2908 + SIN shift, and go to state 67
2909 + COS shift, and go to state 68
2910 + ATAN2 shift, and go to state 69
2911 + LOG shift, and go to state 70
2912 + EXP shift, and go to state 71
2913 + SQRT shift, and go to state 72
2914 + K_MAX shift, and go to state 73
2915 + K_MIN shift, and go to state 74
2916 + INT shift, and go to state 75
2917 + RAND shift, and go to state 76
2918 + SRAND shift, and go to state 77
2919 + TOP shift, and go to state 78
2920 + BOTTOM shift, and go to state 79
2921 + UPPER shift, and go to state 80
2922 + LOWER shift, and go to state 81
2923 + LEFT_CORNER shift, and go to state 82
2924 + RIGHT_CORNER shift, and go to state 83
2925 + NORTH shift, and go to state 84
2926 + SOUTH shift, and go to state 85
2927 + EAST shift, and go to state 86
2928 + WEST shift, and go to state 87
2929 + CENTER shift, and go to state 88
2930 + END shift, and go to state 89
2931 + START shift, and go to state 90
2932 + '(' shift, and go to state 91
2933 + '`' shift, and go to state 92
2934 + '-' shift, and go to state 93
2935 + '!' shift, and go to state 94
2937 + position go to state 426
2938 + position_not_place go to state 99
2939 + expr_pair go to state 100
2940 + place go to state 101
2941 + label go to state 423
2942 + ordinal go to state 103
2943 + optional_ordinal_last go to state 104
2944 + nth_primitive go to state 105
2945 + corner go to state 106
2946 + expr go to state 424
2951 + 137 position_not_place: position . '+' expr_pair
2952 + 138 | position . '-' expr_pair
2953 + 140 | expr between position . AND position
2955 + AND shift, and go to state 427
2956 + '+' shift, and go to state 197
2957 + '-' shift, and go to state 198
2962 + 134 position: . position_not_place
2964 + 136 position_not_place: . expr_pair
2965 + 137 | . position '+' expr_pair
2966 + 138 | . position '-' expr_pair
2967 + 139 | . '(' position ',' position ')'
2968 + 140 | . expr between position AND position
2969 + 140 | expr between position AND . position
2970 + 141 | . expr '<' position ',' position '>'
2971 + 144 expr_pair: . expr ',' expr
2972 + 145 | . '(' expr_pair ')'
2973 + 146 place: . label
2974 + 147 | . label corner
2975 + 148 | . corner label
2976 + 149 | . corner OF label
2978 + 151 label: . LABEL
2979 + 152 | . nth_primitive
2980 + 153 | . label '.' LABEL
2981 + 154 ordinal: . ORDINAL
2982 + 155 | . '`' any_expr TH
2983 + 156 optional_ordinal_last: . LAST
2984 + 157 | . ordinal LAST
2985 + 158 nth_primitive: . ordinal object_type
2986 + 159 | . optional_ordinal_last object_type
2987 + 180 corner: . DOT_N
3002 + 195 | . UPPER LEFT
3003 + 196 | . LOWER LEFT
3004 + 197 | . UPPER RIGHT
3005 + 198 | . LOWER RIGHT
3006 + 199 | . LEFT_CORNER
3007 + 200 | . RIGHT_CORNER
3008 + 201 | . UPPER LEFT_CORNER
3009 + 202 | . LOWER LEFT_CORNER
3010 + 203 | . UPPER RIGHT_CORNER
3011 + 204 | . LOWER RIGHT_CORNER
3019 + 212 expr: . VARIABLE
3021 + 214 | . place DOT_X
3022 + 215 | . place DOT_Y
3023 + 216 | . place DOT_HT
3024 + 217 | . place DOT_WID
3025 + 218 | . place DOT_RAD
3026 + 219 | . expr '+' expr
3027 + 220 | . expr '-' expr
3028 + 221 | . expr '*' expr
3029 + 222 | . expr '/' expr
3030 + 223 | . expr '%' expr
3031 + 224 | . expr '^' expr
3033 + 226 | . '(' any_expr ')'
3034 + 227 | . SIN '(' any_expr ')'
3035 + 228 | . COS '(' any_expr ')'
3036 + 229 | . ATAN2 '(' any_expr ',' any_expr ')'
3037 + 230 | . LOG '(' any_expr ')'
3038 + 231 | . EXP '(' any_expr ')'
3039 + 232 | . SQRT '(' any_expr ')'
3040 + 233 | . K_MAX '(' any_expr ',' any_expr ')'
3041 + 234 | . K_MIN '(' any_expr ',' any_expr ')'
3042 + 235 | . INT '(' any_expr ')'
3043 + 236 | . RAND '(' any_expr ')'
3044 + 237 | . RAND '(' ')'
3045 + 238 | . SRAND '(' any_expr ')'
3046 + 239 | . expr '<' expr
3047 + 240 | . expr LESSEQUAL expr
3048 + 241 | . expr '>' expr
3049 + 242 | . expr GREATEREQUAL expr
3050 + 243 | . expr EQUALEQUAL expr
3051 + 244 | . expr NOTEQUAL expr
3052 + 245 | . expr ANDAND expr
3053 + 246 | . expr OROR expr
3056 + LABEL shift, and go to state 48
3057 + VARIABLE shift, and go to state 49
3058 + NUMBER shift, and go to state 50
3059 + ORDINAL shift, and go to state 51
3060 + LAST shift, and go to state 52
3061 + LEFT shift, and go to state 53
3062 + RIGHT shift, and go to state 54
3063 + HERE shift, and go to state 55
3064 + DOT_N shift, and go to state 56
3065 + DOT_E shift, and go to state 57
3066 + DOT_W shift, and go to state 58
3067 + DOT_S shift, and go to state 59
3068 + DOT_NE shift, and go to state 60
3069 + DOT_SE shift, and go to state 61
3070 + DOT_NW shift, and go to state 62
3071 + DOT_SW shift, and go to state 63
3072 + DOT_C shift, and go to state 64
3073 + DOT_START shift, and go to state 65
3074 + DOT_END shift, and go to state 66
3075 + SIN shift, and go to state 67
3076 + COS shift, and go to state 68
3077 + ATAN2 shift, and go to state 69
3078 + LOG shift, and go to state 70
3079 + EXP shift, and go to state 71
3080 + SQRT shift, and go to state 72
3081 + K_MAX shift, and go to state 73
3082 + K_MIN shift, and go to state 74
3083 + INT shift, and go to state 75
3084 + RAND shift, and go to state 76
3085 + SRAND shift, and go to state 77
3086 + TOP shift, and go to state 78
3087 + BOTTOM shift, and go to state 79
3088 + UPPER shift, and go to state 80
3089 + LOWER shift, and go to state 81
3090 + LEFT_CORNER shift, and go to state 82
3091 + RIGHT_CORNER shift, and go to state 83
3092 + NORTH shift, and go to state 84
3093 + SOUTH shift, and go to state 85
3094 + EAST shift, and go to state 86
3095 + WEST shift, and go to state 87
3096 + CENTER shift, and go to state 88
3097 + END shift, and go to state 89
3098 + START shift, and go to state 90
3099 + '(' shift, and go to state 91
3100 + '`' shift, and go to state 92
3101 + '-' shift, and go to state 93
3102 + '!' shift, and go to state 94
3104 + position go to state 402
3105 + position_not_place go to state 99
3106 + expr_pair go to state 100
3107 + place go to state 101
3108 + label go to state 423
3109 + ordinal go to state 103
3110 + optional_ordinal_last go to state 104
3111 + nth_primitive go to state 105
3112 + corner go to state 106
3113 + expr go to state 424
3119 dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
3120 [AT_COND_CASE([[LALR]], [[1]], [[0]])],
3122 [AT_COND_CASE([[LALR]],
3123 [[syntax error, unexpected LEFT