1 # Exercising Bison on actual grammars. -*- Autotest -*-
3 # Copyright (C) 1989-1992, 2000-2005, 2007, 2009-2013 Free Software
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 [dnl We need diff -u, which is not portable.
39 AT_CHECK([diff -u /dev/null /dev/null || exit 77], [0], [ignore])
41 AT_CHECK([[sed 's/^%define lr.type .*$//' input.y > input-lalr.y]])
42 AT_BISON_CHECK([[--report=all input-lalr.y]], [[0]], [ignore], [ignore])
43 AT_CHECK([[diff -u input-lalr.output input.output \
44 | sed -n '/^@@/,$p' | sed 's/^ $//']],
47 AT_TEST_TABLES_AND_PARSE([$2[: LALR(1)]], [[LALR]], [[last-state]],
48 [[%define lr.type lalr
50 [$4], [$5], [$6], [$7],
51 [AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12])
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], [$10], [$11], [$12])
57 AT_TEST_TABLES_AND_PARSE([$2[: Canonical LR(1)]], [[canonical LR]],
58 [[last-state,no-xml]],
59 [[%define lr.type canonical-lr
61 [$4], [$5], [$6], [$7],
62 [$9], [$10], [$11], [$12])
64 m4_popdef([AT_LALR1_DIFF_CHECK])
69 ## ----------------------- ##
70 ## GNU AWK 3.1.0 Grammar. ##
71 ## ----------------------- ##
73 # We have been careful to strip all the actions excepts the
76 # There are 65 SR conflicts. Bison was once wrong, due to an incorrect
77 # computation of nullable. It reported 485 SR conflicts!
79 AT_TEST_EXISTING_GRAMMAR([[GNU AWK 3.1.0 Grammar]],
82 %token FUNC_CALL NAME REGEXP
84 %token YNUMBER YSTRING
85 %token RELOP APPEND_OP
86 %token ASSIGNOP MATCHOP NEWLINE CONCAT_OP
87 %token LEX_BEGIN LEX_END LEX_IF LEX_ELSE LEX_RETURN LEX_DELETE
88 %token LEX_WHILE LEX_DO LEX_FOR LEX_BREAK LEX_CONTINUE
89 %token LEX_PRINT LEX_PRINTF LEX_NEXT LEX_EXIT LEX_FUNCTION
90 %token LEX_GETLINE LEX_NEXTFILE
92 %token LEX_AND LEX_OR INCREMENT DECREMENT
93 %token LEX_BUILTIN LEX_LENGTH
95 /* Lowest to highest */
102 %left FUNC_CALL LEX_BUILTIN LEX_LENGTH
105 %nonassoc RELOP '<' '>' '|' APPEND_OP TWOWAYIO
107 %left YSTRING YNUMBER
112 %left INCREMENT DECREMENT
118 : opt_nls program opt_nls
130 : LEX_BEGIN {} action
132 | LEX_BEGIN statement_term
133 | LEX_END statement_term
136 | pattern statement_term
137 | function_prologue function_body
152 : LEX_FUNCTION {} func_name '(' opt_param_list r_paren opt_nls
156 : l_brace statements r_brace opt_semi opt_nls
157 | l_brace r_brace opt_semi opt_nls
167 * In this rule, want_regexp tells yylex that the next thing
168 * is a regexp so it should read up to the closing slash.
174 : l_brace statements r_brace opt_semi opt_nls
175 | l_brace r_brace opt_semi opt_nls
180 | statements statement
193 | l_brace statements r_brace
195 | LEX_WHILE '(' exp r_paren opt_nls statement
196 | LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren opt_nls
197 | LEX_FOR '(' NAME LEX_IN NAME r_paren opt_nls statement
198 | LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement
199 | LEX_FOR '(' opt_exp semi opt_nls semi opt_nls opt_exp r_paren opt_nls statement
200 | LEX_BREAK statement_term
201 | LEX_CONTINUE statement_term
202 | print '(' expression_list r_paren output_redir statement_term
203 | print opt_rexpression_list output_redir statement_term
204 | LEX_NEXT statement_term
205 | LEX_NEXTFILE statement_term
206 | LEX_EXIT opt_exp statement_term
207 | LEX_RETURN {} opt_exp statement_term
208 | LEX_DELETE NAME '[' expression_list ']' statement_term
209 | LEX_DELETE NAME statement_term
219 : LEX_IF '(' exp r_paren opt_nls statement
220 | LEX_IF '(' exp r_paren opt_nls statement
221 LEX_ELSE opt_nls statement
254 | param_list comma NAME
257 | param_list comma error
260 /* optional expression, as in for loop */
273 | rexpression_list comma rexp
275 | rexpression_list error
276 | rexpression_list error rexp
277 | rexpression_list comma error
287 | expression_list comma exp
289 | expression_list error
290 | expression_list error exp
291 | expression_list comma error
294 /* Expressions, not including the comma operator. */
295 exp : variable ASSIGNOP {} exp
296 | '(' expression_list r_paren LEX_IN NAME
297 | exp '|' LEX_GETLINE opt_variable
298 | exp TWOWAYIO LEX_GETLINE opt_variable
299 | LEX_GETLINE opt_variable input_redir
304 | '!' regexp %prec UNARY
309 | exp '?' exp ':' exp
311 | exp simp_exp %prec CONCAT_OP
315 : variable ASSIGNOP {} rexp
318 | LEX_GETLINE opt_variable input_redir
320 | '!' regexp %prec UNARY
324 | rexp '?' rexp ':' rexp
326 | rexp simp_exp %prec CONCAT_OP
331 /* Binary operators in order of decreasing precedence. */
332 | simp_exp '^' simp_exp
333 | simp_exp '*' simp_exp
334 | simp_exp '/' simp_exp
335 | simp_exp '%' simp_exp
336 | simp_exp '+' simp_exp
337 | simp_exp '-' simp_exp
343 : '!' simp_exp %prec UNARY
346 '(' opt_expression_list r_paren
347 | LEX_LENGTH '(' opt_expression_list r_paren
349 | FUNC_CALL '(' opt_expression_list r_paren
355 | '-' simp_exp %prec UNARY
356 | '+' simp_exp %prec UNARY
366 | NAME '[' expression_list ']'
367 | '$' non_post_simp_exp
397 dnl For example, in AWK:
401 dnl The grammar below (from GNU AWK 3.1.0) using canonical LR(1) or IELR(1)
406 dnl That is, they shift `*' immediately and make it part of the getline
409 dnl The grammar below using LALR(1) parses it as a syntax error. So does
410 dnl GNU AWK 3.0.6, 3.1.0, and 3.1.1. They reduce the full getline expression
411 dnl before shifting `*' even though `*' is not a valid lookahead.
413 dnl GNU AWK 3.1.2, 3.1.3, 3.1.4, and 3.1.5 parse it as:
417 dnl That is, like the other versions of GNU AWK, they reduce the full getline
418 dnl expression before shifting `*'. However, because of a different LHS on the
419 dnl getline rule, `*' actually is a valid lookahead. Solaris /usr/xpg4/bin/awk
420 dnl and the Open Group awk specification seem to agree:
422 dnl http://www.opengroup.org/pubs/online/7908799/xcu/awk.html
424 dnl /bin/nawk and /bin/awk on Solaris 10 report it as a syntax error, but they
425 dnl don't like even `print $!4;'.
426 [[LEX_GETLINE, '$', '!', YNUMBER, '*', YNUMBER, ';']],
429 [AT_COND_CASE([[canonical LR]],
430 [[input.y: warning: 265 shift/reduce conflicts [-Wconflicts-sr]]],
431 [[input.y: warning: 65 shift/reduce conflicts [-Wconflicts-sr]]])[
435 [AT_COND_CASE([[LALR]], [[319]], [[canonical LR]], [[2358]], [[328]])],
437 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
438 dnl Isocore map from LALR(1) state number to new state number plus descriptions
439 dnl of any change in the actions resulting in a change in accepted language:
446 dnl - 56 -> 326: reduce -> shift on '*', '/', and '%'
447 dnl - 58 -> 327: reduce -> shift on '*', '/', and '%'
448 dnl - 61 -> 328: reduce -> shift on '*', '/', and '%'
449 [AT_COND_CASE([[LALR]], [],
450 [[@@ -712,7 +712,7 @@
451 156 | . '$' non_post_simp_exp
453 NAME shift, and go to state 9
454 - '$' shift, and go to state 24
455 + '$' shift, and go to state 320
457 NAME [reduce using rule 152 (opt_variable)]
458 '$' [reduce using rule 152 (opt_variable)]
459 @@ -5379,7 +5379,7 @@
460 156 | . '$' non_post_simp_exp
462 NAME shift, and go to state 9
463 - '$' shift, and go to state 24
464 + '$' shift, and go to state 320
466 NAME [reduce using rule 152 (opt_variable)]
467 '$' [reduce using rule 152 (opt_variable)]
468 @@ -5399,7 +5399,7 @@
469 156 | . '$' non_post_simp_exp
471 NAME shift, and go to state 9
472 - '$' shift, and go to state 24
473 + '$' shift, and go to state 320
475 NAME [reduce using rule 152 (opt_variable)]
476 '$' [reduce using rule 152 (opt_variable)]
477 @@ -6214,7 +6214,7 @@
478 156 | . '$' non_post_simp_exp
480 NAME shift, and go to state 9
481 - '$' shift, and go to state 24
482 + '$' shift, and go to state 320
484 NAME [reduce using rule 152 (opt_variable)]
485 '$' [reduce using rule 152 (opt_variable)]
486 @@ -11099,3 +11099,274 @@
487 45 statement: LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement .
489 $default reduce using rule 45 (statement)
494 + 139 non_post_simp_exp: . '!' simp_exp
495 + 140 | . '(' exp r_paren
496 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
497 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
499 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
501 + 146 | . INCREMENT variable
502 + 147 | . DECREMENT variable
505 + 150 | . '-' simp_exp
506 + 151 | . '+' simp_exp
507 + 154 variable: . NAME
508 + 155 | . NAME '[' expression_list ']'
509 + 156 | . '$' non_post_simp_exp
510 + 156 | '$' . non_post_simp_exp
512 + FUNC_CALL shift, and go to state 8
513 + NAME shift, and go to state 9
514 + YNUMBER shift, and go to state 10
515 + YSTRING shift, and go to state 11
516 + INCREMENT shift, and go to state 321
517 + DECREMENT shift, and go to state 322
518 + LEX_BUILTIN shift, and go to state 18
519 + LEX_LENGTH shift, and go to state 19
520 + '+' shift, and go to state 323
521 + '-' shift, and go to state 324
522 + '!' shift, and go to state 325
523 + '$' shift, and go to state 320
524 + '(' shift, and go to state 55
526 + non_post_simp_exp go to state 62
527 + variable go to state 63
532 + 146 non_post_simp_exp: INCREMENT . variable
533 + 154 variable: . NAME
534 + 155 | . NAME '[' expression_list ']'
535 + 156 | . '$' non_post_simp_exp
537 + NAME shift, and go to state 9
538 + '$' shift, and go to state 320
540 + variable go to state 50
545 + 147 non_post_simp_exp: DECREMENT . variable
546 + 154 variable: . NAME
547 + 155 | . NAME '[' expression_list ']'
548 + 156 | . '$' non_post_simp_exp
550 + NAME shift, and go to state 9
551 + '$' shift, and go to state 320
553 + variable go to state 51
558 + 130 simp_exp: . non_post_simp_exp
559 + 131 | . simp_exp '^' simp_exp
560 + 132 | . simp_exp '*' simp_exp
561 + 133 | . simp_exp '/' simp_exp
562 + 134 | . simp_exp '%' simp_exp
563 + 135 | . simp_exp '+' simp_exp
564 + 136 | . simp_exp '-' simp_exp
565 + 137 | . variable INCREMENT
566 + 138 | . variable DECREMENT
567 + 139 non_post_simp_exp: . '!' simp_exp
568 + 140 | . '(' exp r_paren
569 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
570 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
572 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
574 + 146 | . INCREMENT variable
575 + 147 | . DECREMENT variable
578 + 150 | . '-' simp_exp
579 + 151 | . '+' simp_exp
580 + 151 | '+' . simp_exp
581 + 154 variable: . NAME
582 + 155 | . NAME '[' expression_list ']'
583 + 156 | . '$' non_post_simp_exp
585 + FUNC_CALL shift, and go to state 8
586 + NAME shift, and go to state 9
587 + YNUMBER shift, and go to state 10
588 + YSTRING shift, and go to state 11
589 + INCREMENT shift, and go to state 16
590 + DECREMENT shift, and go to state 17
591 + LEX_BUILTIN shift, and go to state 18
592 + LEX_LENGTH shift, and go to state 19
593 + '+' shift, and go to state 20
594 + '-' shift, and go to state 21
595 + '!' shift, and go to state 54
596 + '$' shift, and go to state 24
597 + '(' shift, and go to state 55
599 + simp_exp go to state 326
600 + non_post_simp_exp go to state 35
601 + variable go to state 57
606 + 130 simp_exp: . non_post_simp_exp
607 + 131 | . simp_exp '^' simp_exp
608 + 132 | . simp_exp '*' simp_exp
609 + 133 | . simp_exp '/' simp_exp
610 + 134 | . simp_exp '%' simp_exp
611 + 135 | . simp_exp '+' simp_exp
612 + 136 | . simp_exp '-' simp_exp
613 + 137 | . variable INCREMENT
614 + 138 | . variable DECREMENT
615 + 139 non_post_simp_exp: . '!' simp_exp
616 + 140 | . '(' exp r_paren
617 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
618 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
620 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
622 + 146 | . INCREMENT variable
623 + 147 | . DECREMENT variable
626 + 150 | . '-' simp_exp
627 + 150 | '-' . simp_exp
628 + 151 | . '+' simp_exp
629 + 154 variable: . NAME
630 + 155 | . NAME '[' expression_list ']'
631 + 156 | . '$' non_post_simp_exp
633 + FUNC_CALL shift, and go to state 8
634 + NAME shift, and go to state 9
635 + YNUMBER shift, and go to state 10
636 + YSTRING shift, and go to state 11
637 + INCREMENT shift, and go to state 16
638 + DECREMENT shift, and go to state 17
639 + LEX_BUILTIN shift, and go to state 18
640 + LEX_LENGTH shift, and go to state 19
641 + '+' shift, and go to state 20
642 + '-' shift, and go to state 21
643 + '!' shift, and go to state 54
644 + '$' shift, and go to state 24
645 + '(' shift, and go to state 55
647 + simp_exp go to state 327
648 + non_post_simp_exp go to state 35
649 + variable go to state 57
654 + 130 simp_exp: . non_post_simp_exp
655 + 131 | . simp_exp '^' simp_exp
656 + 132 | . simp_exp '*' simp_exp
657 + 133 | . simp_exp '/' simp_exp
658 + 134 | . simp_exp '%' simp_exp
659 + 135 | . simp_exp '+' simp_exp
660 + 136 | . simp_exp '-' simp_exp
661 + 137 | . variable INCREMENT
662 + 138 | . variable DECREMENT
663 + 139 non_post_simp_exp: . '!' simp_exp
664 + 139 | '!' . simp_exp
665 + 140 | . '(' exp r_paren
666 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
667 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
669 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
671 + 146 | . INCREMENT variable
672 + 147 | . DECREMENT variable
675 + 150 | . '-' simp_exp
676 + 151 | . '+' simp_exp
677 + 154 variable: . NAME
678 + 155 | . NAME '[' expression_list ']'
679 + 156 | . '$' non_post_simp_exp
681 + FUNC_CALL shift, and go to state 8
682 + NAME shift, and go to state 9
683 + YNUMBER shift, and go to state 10
684 + YSTRING shift, and go to state 11
685 + INCREMENT shift, and go to state 16
686 + DECREMENT shift, and go to state 17
687 + LEX_BUILTIN shift, and go to state 18
688 + LEX_LENGTH shift, and go to state 19
689 + '+' shift, and go to state 20
690 + '-' shift, and go to state 21
691 + '!' shift, and go to state 54
692 + '$' shift, and go to state 24
693 + '(' shift, and go to state 55
695 + simp_exp go to state 328
696 + non_post_simp_exp go to state 35
697 + variable go to state 57
702 + 131 simp_exp: simp_exp . '^' simp_exp
703 + 132 | simp_exp . '*' simp_exp
704 + 133 | simp_exp . '/' simp_exp
705 + 134 | simp_exp . '%' simp_exp
706 + 135 | simp_exp . '+' simp_exp
707 + 136 | simp_exp . '-' simp_exp
708 + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
710 + '*' shift, and go to state 89
711 + '/' shift, and go to state 90
712 + '%' shift, and go to state 91
713 + '^' shift, and go to state 92
715 + $default reduce using rule 151 (non_post_simp_exp)
717 + Conflict between rule 151 and token '+' resolved as reduce ('+' < UNARY).
718 + Conflict between rule 151 and token '-' resolved as reduce ('-' < UNARY).
723 + 131 simp_exp: simp_exp . '^' simp_exp
724 + 132 | simp_exp . '*' simp_exp
725 + 133 | simp_exp . '/' simp_exp
726 + 134 | simp_exp . '%' simp_exp
727 + 135 | simp_exp . '+' simp_exp
728 + 136 | simp_exp . '-' simp_exp
729 + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
731 + '*' shift, and go to state 89
732 + '/' shift, and go to state 90
733 + '%' shift, and go to state 91
734 + '^' shift, and go to state 92
736 + $default reduce using rule 150 (non_post_simp_exp)
738 + Conflict between rule 150 and token '+' resolved as reduce ('+' < UNARY).
739 + Conflict between rule 150 and token '-' resolved as reduce ('-' < UNARY).
744 + 131 simp_exp: simp_exp . '^' simp_exp
745 + 132 | simp_exp . '*' simp_exp
746 + 133 | simp_exp . '/' simp_exp
747 + 134 | simp_exp . '%' simp_exp
748 + 135 | simp_exp . '+' simp_exp
749 + 136 | simp_exp . '-' simp_exp
750 + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
752 + '*' shift, and go to state 89
753 + '/' shift, and go to state 90
754 + '%' shift, and go to state 91
755 + '^' shift, and go to state 92
757 + $default reduce using rule 139 (non_post_simp_exp)
759 + Conflict between rule 139 and token '+' resolved as reduce ('+' < UNARY).
760 + Conflict between rule 139 and token '-' resolved as reduce ('-' < UNARY).
766 dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
767 dnl In the case of the syntax error, the parser recovers, so it returns 0.
770 [AT_COND_CASE([[LALR]],
771 [[syntax error, unexpected '*', expecting NEWLINE or '{' or ';'
774 ## ----------------- ##
775 ## GNU Cim Grammar. ##
776 ## ----------------- ##
778 # GNU Cim, the GNU Simula 87 Compiler.
780 # Bison was once wrong, due to an incorrect computation of the RR conflicts.
781 # It reported 80 SR && 99 RR conflicts instead of 78/10!!!
783 AT_TEST_EXISTING_GRAMMAR([[GNU Cim Grammar]],
786 HACTIVATE HAFTER /*HAND*/ HARRAY HAT
787 HBEFORE HBEGIN HBOOLEAN
788 HCHARACTER HCLASS /*HCOMMENT*/ HCONC
790 HELSE HEND HEQ /*HEQV*/ HEXTERNAL
794 HIF /*HIMP*/ HIN HINNER HINSPECT HINTEGER HIS
796 HNAME HNE HNEW HNONE /*HNOT*/ HNOTEXT
798 HPRIOR HPROCEDURE HPROTECTED
800 HREACTIVATE HREAL HREF
802 HTEXT HTHEN HTHIS HTO
807 HASSIGNVALUE HASSIGNREF
808 /*HDOT*/ HPAREXPSEPARATOR HLABELSEPARATOR HSTATEMENTSEPARATOR
811 HADD HSUB HMUL HDIV HINTDIV HEXP
815 %token HBOOLEANKONST HINTEGERKONST HCHARACTERKONST
830 %left HVALRELOPERATOR HREFRELOPERATOR HOBJRELOPERATOR
836 %left HFACTOROPERATOR
837 %left HPRIMARYOPERATOR
846 /* GRAMATIKK FOR PROGRAM MODULES */
849 | error HSTATEMENTSEPARATOR MBEE_DECLSTMS
851 EXT_DECLARATION : HEXTERNAL
869 EXTERNAL_KIND_ITEM: EXT_IDENT
882 MBEE_REST_EXT_LIST: /* EMPTY
883 | HPAREXPSEPARATOR EXT_KIND_LIST
885 EXT_KIND_LIST : EXT_KIND_ITEM
886 | EXT_KIND_LIST HPAREXPSEPARATOR EXT_KIND_ITEM
888 EXT_KIND_ITEM : HIDENTIFIER
892 EMPTY_BLOCK : /*EMPT*/
896 | EXT_LIST HPAREXPSEPARATOR EXT_ITEM
898 EXT_ITEM : HIDENTIFIER
901 EXT_IDENT : /* EMPTY */
905 /* GRAMATIKK FOR TYPER */
924 /* GRAMATIKK FOR DEL AV SETNINGER */
925 MBEE_ELSE_PART : /*EMPT*/
935 FOR_LIST : FOR_LIST_ELEMENT
940 FOR_LIST_ELEMENT: EXPRESSION
943 MBEE_F_L_EL_R_PT: /*EMPT*/
955 CONN_STATE_R_PT : WHEN_CLAUSE_LIST
959 WHEN_CLAUSE_LIST: HWHEN
969 MBEE_OTWI_CLAUS : /*EMPT*/
974 ACTIVATOR : HACTIVATE
978 | ATDELAY EXPRESSION {}
986 BEFOREAFTER : HBEFORE
992 /* GRAMATIKK FOR SETNINGER OG DEKLARASJONER */
993 MODULSTATEMENT : HWHILE
1027 | EXPRESSION_SIMP HBEGIN error HSTATEMENTSEPARATOR
1029 | EXPRESSION_SIMP HBEGIN error HEND
1031 | ACTIVATOR EXPRESSION SCHEDULE
1036 | MBEE_TYPE HPROCEDURE
1060 DECLSTATEMENT : MODULSTATEMENT
1078 BLOCK : DECLSTATEMENT
1079 | HBEGIN MBEE_DECLSTMS HEND
1080 | HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND
1083 MBEE_DECLSTMS : MBEE_DECLSTMSU
1085 MBEE_DECLSTMSU : DECLSTATEMENT
1090 MODULS : MODULSTATEMENT
1091 | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT
1093 /* GRAMATIKK FOR DEL AV DEKLARASJONER */
1094 ARR_SEGMENT_LIST: ARR_SEGMENT
1099 ARR_SEGMENT : ARRAY_SEGMENT
1101 BAUND_PAIR_LIST HENDPAR
1103 ARRAY_SEGMENT : ARRAY_SEGMENT_EL {}
1109 ARRAY_SEGMENT_EL: HIDENTIFIER
1111 BAUND_PAIR_LIST : BAUND_PAIR
1116 BAUND_PAIR : EXPRESSION
1120 SWITCH_LIST : EXPRESSION
1125 HEADING : MBEE_FMAL_PAR_P HSTATEMENTSEPARATOR {}
1131 MBEE_FMAL_PAR_P : /*EMPT*/
1134 FMAL_PAR_PART : HBEGPAR NO_TYPE
1137 MBEE_LISTV : /*EMPT*/
1141 | FPP_CATEG HDOTDOTDOT
1143 HPAREXPSEPARATOR LISTV
1146 HPAREXPSEPARATOR LISTV
1148 FPP_HEADING : HBEGPAR NO_TYPE
1149 FPP_MBEE_LISTV HENDPAR
1151 FPP_MBEE_LISTV : /*EMPT*/
1154 FPP_LISTV : FPP_CATEG HDOTDOTDOT
1157 HPAREXPSEPARATOR LISTV
1159 FPP_SPEC : FPP_CATEG SPECIFIER HIDENTIFIER
1160 | FPP_CATEG FPP_PROC_DECL_IN_SPEC
1162 FPP_CATEG : HNAME HLABELSEPARATOR
1163 | HVALUE HLABELSEPARATOR
1164 | HVAR HLABELSEPARATOR
1167 FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
1170 FPP_HEADING {} { /* Yes, two "final" actions. */ }
1172 IDENTIFIER_LISTV: HIDENTIFIER
1175 HPAREXPSEPARATOR IDENTIFIER_LISTV
1177 MBEE_MODE_PART : /*EMPT*/
1180 MODE_PART : NAME_PART
1183 | NAME_PART VALUE_PART
1184 | VALUE_PART NAME_PART
1185 | NAME_PART VAR_PART
1186 | VAR_PART NAME_PART
1187 | VALUE_PART VAR_PART
1188 | VAR_PART VALUE_PART
1189 | VAR_PART NAME_PART VALUE_PART
1190 | NAME_PART VAR_PART VALUE_PART
1191 | NAME_PART VALUE_PART VAR_PART
1192 | VAR_PART VALUE_PART NAME_PART
1193 | VALUE_PART VAR_PART NAME_PART
1194 | VALUE_PART NAME_PART VAR_PART
1196 NAME_PART : HNAME {}
1204 VALUE_PART : HVALUE {}
1205 IDENTIFIER_LISTV HSTATEMENTSEPARATOR
1207 MBEE_SPEC_PART : /*EMPT*/
1210 SPEC_PART : ONE_SPEC
1211 | SPEC_PART ONE_SPEC
1213 ONE_SPEC : SPECIFIER IDENTIFIER_LIST HSTATEMENTSEPARATOR
1214 | NO_TYPE HPROCEDURE HIDENTIFIER HOBJRELOPERATOR
1216 PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
1217 | FPP_PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
1218 | MBEE_TYPE HPROCEDURE HIDENTIFIER HSTATEMENTSEPARATOR
1219 | MBEE_TYPE HPROCEDURE HIDENTIFIER HPAREXPSEPARATOR
1220 IDENTIFIER_LIST HSTATEMENTSEPARATOR
1228 PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
1235 MBEE_BEGIN_END : /* EMPTY */
1238 MBEE_PROT_PART : /*EMPT*/
1241 PROTECTION_PART : PROT_SPECIFIER IDENTIFIER_LIST
1243 | PROTECTION_PART PROT_SPECIFIER
1244 IDENTIFIER_LIST HSTATEMENTSEPARATOR
1246 PROT_SPECIFIER : HHIDDEN
1253 MBEE_VIRT_PART : /*EMPT*/
1256 VIRTUAL_PART : HVIRTUAL
1260 IDENTIFIER_LIST : HIDENTIFIER
1261 | IDENTIFIER_LIST HPAREXPSEPARATOR
1264 IDENTIFIER_LISTC: HIDENTIFIER
1266 | IDENTIFIER_LISTC HPAREXPSEPARATOR
1270 MBEE_CONSTANT : /* EMPTY */
1276 /* GRAMATIKK FOR UTTRYKK */
1277 EXPRESSION : EXPRESSION_SIMP
1285 EXPRESSION_SIMP : EXPRESSION_SIMP
1293 | EXPRESSION_SIMP HOR
1297 | EXPRESSION_SIMP HAND
1302 HEQV EXPRESSION_SIMP
1304 HIMP EXPRESSION_SIMP
1308 HAND EXPRESSION_SIMP
1309 | HNOT EXPRESSION_SIMP
1320 EXPRESSION_SIMP %prec UNEAR
1351 ARG_R_PT : /*EMPTY*/
1353 ARGUMENT_LIST HENDPAR
1355 MBEE_ARG_R_PT : /*EMPTY*/
1357 ARGUMENT_LIST HENDPAR
1359 ARGUMENT_LIST : EXPRESSION
1370 [AT_COND_CASE([[canonical LR]],
1371 [[input.y: warning: 1876 shift/reduce conflicts [-Wconflicts-sr]
1372 input.y: warning: 144 reduce/reduce conflicts [-Wconflicts-rr]]],
1373 [[input.y: warning: 78 shift/reduce conflicts [-Wconflicts-sr]
1374 input.y: warning: 10 reduce/reduce conflicts [-Wconflicts-rr]]])[
1378 [AT_COND_CASE([[canonical LR]], [[10425]], [[442]])],
1380 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
1384 [AT_COND_CASE([[canonical LR]], [[]],
1385 [AT_CHECK([[grep '^State.*conflicts:' input.output]], [[0]],
1386 [[State 64 conflicts: 14 shift/reduce
1387 State 164 conflicts: 1 shift/reduce
1388 State 201 conflicts: 33 shift/reduce, 4 reduce/reduce
1389 State 206 conflicts: 1 shift/reduce
1390 State 240 conflicts: 1 shift/reduce
1391 State 335 conflicts: 9 shift/reduce, 2 reduce/reduce
1392 State 356 conflicts: 1 shift/reduce
1393 State 360 conflicts: 9 shift/reduce, 2 reduce/reduce
1394 State 427 conflicts: 9 shift/reduce, 2 reduce/reduce
1397 ## -------------------------------- ##
1398 ## GNU pic (Groff 1.18.1) Grammar. ##
1399 ## -------------------------------- ##
1401 # GNU pic, part of groff.
1403 # Bison once reported shift/reduce conflicts that it shouldn't have.
1405 AT_TEST_EXISTING_GRAMMAR([[GNU pic (Groff 1.18.1) Grammar]],
1416 %token LEFT_ARROW_HEAD
1417 %token RIGHT_ARROW_HEAD
1418 %token DOUBLE_ARROW_HEAD
1528 /* this ensures that plot 17 "%g" parses as (plot 17 "%g") */
1532 /* give text adjustments higher precedence than TEXT, so that
1533 box "foo" above ljust == box ("foo" above ljust)
1536 %left LJUST RJUST ABOVE BELOW
1539 /* Give attributes that take an optional expression a higher
1540 precedence than left and right, so that eg `line chop left'
1542 %left CHOP SOLID DASHED DOTTED UP DOWN FILL COLORED OUTLINED
1545 %left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND SRAND LAST
1546 %left ORDINAL HERE '`'
1548 %left BOX CIRCLE ELLIPSE ARC LINE ARROW SPLINE '[' /* ] */
1550 /* these need to be lower than '-' */
1551 %left HEIGHT RADIUS WIDTH DIAMETER FROM TO AT THICKNESS
1553 /* these must have higher precedence than CHOP so that `label %prec CHOP'
1555 %left DOT_N DOT_E DOT_W DOT_S DOT_NE DOT_SE DOT_NW DOT_SW DOT_C
1556 %left DOT_START DOT_END TOP BOTTOM LEFT_CORNER RIGHT_CORNER
1557 %left UPPER LOWER NORTH SOUTH EAST WEST CENTER START END
1562 %left EQUALEQUAL NOTEQUAL
1563 %left '<' '>' LESSEQUAL GREATEREQUAL
1580 optional_separator middle_element_list optional_separator
1583 middle_element_list:
1585 | middle_element_list separator element
1599 VARIABLE '=' any_expr
1600 | VARIABLE ':' '=' any_expr
1606 | COMMAND print_args
1622 | FOR VARIABLE '=' expr TO expr optional_by DO
1635 | reset_variables VARIABLE
1636 | reset_variables ',' VARIABLE
1641 | print_args print_arg
1647 | position %prec ','
1667 text EQUALEQUAL text
1668 | text NOTEQUAL text
1669 | text_expr ANDAND text_expr
1670 | text_expr ANDAND expr
1671 | expr ANDAND text_expr
1672 | text_expr OROR text_expr
1673 | text_expr OROR expr
1674 | expr OROR text_expr
1686 | LABEL ':' optional_separator element
1687 | LABEL ':' optional_separator position_not_place
1688 | LABEL ':' optional_separator place
1689 | '{' {} element_list '}'
1715 | object_spec HEIGHT expr
1716 | object_spec RADIUS expr
1717 | object_spec WIDTH expr
1718 | object_spec DIAMETER expr
1719 | object_spec expr %prec HEIGHT
1721 | object_spec UP expr
1723 | object_spec DOWN expr
1725 | object_spec RIGHT expr
1727 | object_spec LEFT expr
1728 | object_spec FROM position
1729 | object_spec TO position
1730 | object_spec AT position
1731 | object_spec WITH path
1732 | object_spec WITH position %prec ','
1733 | object_spec BY expr_pair
1736 | object_spec DOTTED
1737 | object_spec DOTTED expr
1738 | object_spec DASHED
1739 | object_spec DASHED expr
1741 | object_spec FILL expr
1742 | object_spec SHADED text
1743 | object_spec COLORED text
1744 | object_spec OUTLINED text
1746 | object_spec CHOP expr
1748 | object_spec INVISIBLE
1749 | object_spec LEFT_ARROW_HEAD
1750 | object_spec RIGHT_ARROW_HEAD
1751 | object_spec DOUBLE_ARROW_HEAD
1754 | object_spec text %prec TEXT
1759 | object_spec THICKNESS expr
1760 | object_spec ALIGNED
1765 | SPRINTF '(' TEXT sprintf_args ')'
1770 | sprintf_args ',' expr
1780 | position '+' expr_pair
1781 | position '-' expr_pair
1782 | '(' position ',' position ')'
1783 | expr between position AND position
1784 | expr '<' position ',' position '>'
1789 | OF THE WAY BETWEEN
1798 /* line at A left == line (at A) left */
1817 optional_ordinal_last:
1824 | optional_ordinal_last object_type
1841 | label_path '.' LABEL
1846 /* give this a lower precedence than LEFT and RIGHT so that
1847 [A: box] with .A left == [A: box] with (.A left) */
1848 | label_path %prec TEXT
1854 | '(' relative_path ',' relative_path ')'
1856 /* The rest of these rules are a compatibility sop. */
1857 | ORDINAL LAST object_type relative_path
1858 | LAST object_type relative_path
1859 | ORDINAL object_type relative_path
1860 | LABEL relative_path
1887 | UPPER RIGHT_CORNER
1888 | LOWER RIGHT_CORNER
1912 | '-' expr %prec '!'
1914 | SIN '(' any_expr ')'
1915 | COS '(' any_expr ')'
1916 | ATAN2 '(' any_expr ',' any_expr ')'
1917 | LOG '(' any_expr ')'
1918 | EXP '(' any_expr ')'
1919 | SQRT '(' any_expr ')'
1920 | K_MAX '(' any_expr ',' any_expr ')'
1921 | K_MIN '(' any_expr ',' any_expr ')'
1922 | INT '(' any_expr ')'
1923 | RAND '(' any_expr ')'
1925 | SRAND '(' any_expr ')'
1927 | expr LESSEQUAL expr
1929 | expr GREATEREQUAL expr
1930 | expr EQUALEQUAL expr
1931 | expr NOTEQUAL expr
1940 dnl For example, in pic:
1948 dnl Even using groff 1.19.2, the 3rd line above is a syntax error. Change
1949 dnl "left" to "right", and it still is. However, add "upper" or "lower" before
1950 dnl "left or "right" and it's accepted to mean ".nw", ".ne", ".sw", or ".se".
1951 dnl (There seem to be no aliases for "north" and "south" that can stand alone
1952 dnl without being followed by "of".)
1953 [[VARIABLE, '=', LABEL, LEFT, DOT_X]],
1956 [[input.y:471.11-48: warning: rule useless in parser due to conflicts: path: ORDINAL LAST object_type relative_path [-Wother]
1960 [AT_COND_CASE([[LALR]], [[422]], [[canonical LR]], [[4833]], [[427]])],
1962 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
1963 dnl Isocore map from LALR(1) state number to new state number plus descriptions
1964 dnl of any change in the actions resulting in a change in accepted language:
1965 dnl - 102 -> 423: reduce -> shift on LEFT and RIGHT
1970 [AT_COND_CASE([[LALR]], [],
1971 [[@@ -1223,7 +1223,7 @@
1972 text_expr go to state 112
1973 text go to state 113
1974 place go to state 114
1975 - label go to state 102
1976 + label go to state 423
1977 ordinal go to state 103
1978 optional_ordinal_last go to state 104
1979 nth_primitive go to state 105
1980 @@ -1377,7 +1377,7 @@
1981 '!' shift, and go to state 94
1983 place go to state 114
1984 - label go to state 102
1985 + label go to state 423
1986 ordinal go to state 103
1987 optional_ordinal_last go to state 104
1988 nth_primitive go to state 105
1989 @@ -1854,7 +1854,7 @@
1991 text go to state 162
1992 place go to state 114
1993 - label go to state 102
1994 + label go to state 423
1995 ordinal go to state 103
1996 optional_ordinal_last go to state 104
1997 nth_primitive go to state 105
1998 @@ -2047,7 +2047,7 @@
1999 text_expr go to state 112
2000 text go to state 113
2001 place go to state 114
2002 - label go to state 102
2003 + label go to state 423
2004 ordinal go to state 103
2005 optional_ordinal_last go to state 104
2006 nth_primitive go to state 105
2007 @@ -2571,7 +2571,7 @@
2008 position_not_place go to state 99
2009 expr_pair go to state 191
2010 place go to state 101
2011 - label go to state 102
2012 + label go to state 423
2013 ordinal go to state 103
2014 optional_ordinal_last go to state 104
2015 nth_primitive go to state 105
2016 @@ -2732,7 +2732,7 @@
2017 text_expr go to state 112
2018 text go to state 113
2019 place go to state 114
2020 - label go to state 102
2021 + label go to state 423
2022 ordinal go to state 103
2023 optional_ordinal_last go to state 104
2024 nth_primitive go to state 105
2025 @@ -2875,7 +2875,7 @@
2026 '!' shift, and go to state 94
2028 place go to state 114
2029 - label go to state 102
2030 + label go to state 423
2031 ordinal go to state 103
2032 optional_ordinal_last go to state 104
2033 nth_primitive go to state 105
2034 @@ -3018,7 +3018,7 @@
2035 '!' shift, and go to state 94
2037 place go to state 114
2038 - label go to state 102
2039 + label go to state 423
2040 ordinal go to state 103
2041 optional_ordinal_last go to state 104
2042 nth_primitive go to state 105
2043 @@ -3256,7 +3256,7 @@
2047 - 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, '(', '`', ',', '>', '+', '-', '!', ';', '}', '@:>@', ')']
2048 + 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, '(', '`', '+', '-', '!', ';', '}', '@:>@']
2049 147 | label . corner
2050 153 label: label . '.' LABEL
2052 @@ -3645,7 +3645,7 @@
2053 text_expr go to state 112
2054 text go to state 113
2055 place go to state 114
2056 - label go to state 102
2057 + label go to state 423
2058 ordinal go to state 103
2059 optional_ordinal_last go to state 104
2060 nth_primitive go to state 105
2061 @@ -3804,7 +3804,7 @@
2062 text_expr go to state 239
2063 text go to state 113
2064 place go to state 114
2065 - label go to state 102
2066 + label go to state 423
2067 ordinal go to state 103
2068 optional_ordinal_last go to state 104
2069 nth_primitive go to state 105
2070 @@ -4481,7 +4481,7 @@
2071 $default reduce using rule 89 (object_spec)
2073 place go to state 114
2074 - label go to state 102
2075 + label go to state 423
2076 ordinal go to state 103
2077 optional_ordinal_last go to state 104
2078 nth_primitive go to state 105
2079 @@ -4673,7 +4673,7 @@
2080 $default reduce using rule 91 (object_spec)
2082 place go to state 114
2083 - label go to state 102
2084 + label go to state 423
2085 ordinal go to state 103
2086 optional_ordinal_last go to state 104
2087 nth_primitive go to state 105
2088 @@ -4867,7 +4867,7 @@
2089 $default reduce using rule 95 (object_spec)
2091 place go to state 114
2092 - label go to state 102
2093 + label go to state 423
2094 ordinal go to state 103
2095 optional_ordinal_last go to state 104
2096 nth_primitive go to state 105
2097 @@ -5065,7 +5065,7 @@
2098 $default reduce using rule 93 (object_spec)
2100 place go to state 114
2101 - label go to state 102
2102 + label go to state 423
2103 ordinal go to state 103
2104 optional_ordinal_last go to state 104
2105 nth_primitive go to state 105
2106 @@ -5260,7 +5260,7 @@
2107 '!' shift, and go to state 94
2109 place go to state 114
2110 - label go to state 102
2111 + label go to state 423
2112 ordinal go to state 103
2113 optional_ordinal_last go to state 104
2114 nth_primitive go to state 105
2115 @@ -5403,7 +5403,7 @@
2116 '!' shift, and go to state 94
2118 place go to state 114
2119 - label go to state 102
2120 + label go to state 423
2121 ordinal go to state 103
2122 optional_ordinal_last go to state 104
2123 nth_primitive go to state 105
2124 @@ -5546,7 +5546,7 @@
2125 '!' shift, and go to state 94
2127 place go to state 114
2128 - label go to state 102
2129 + label go to state 423
2130 ordinal go to state 103
2131 optional_ordinal_last go to state 104
2132 nth_primitive go to state 105
2133 @@ -5689,7 +5689,7 @@
2134 '!' shift, and go to state 94
2136 place go to state 114
2137 - label go to state 102
2138 + label go to state 423
2139 ordinal go to state 103
2140 optional_ordinal_last go to state 104
2141 nth_primitive go to state 105
2142 @@ -6475,7 +6475,7 @@
2144 expr_pair go to state 280
2145 place go to state 114
2146 - label go to state 102
2147 + label go to state 423
2148 ordinal go to state 103
2149 optional_ordinal_last go to state 104
2150 nth_primitive go to state 105
2151 @@ -6633,7 +6633,7 @@
2152 $default reduce using rule 105 (object_spec)
2154 place go to state 114
2155 - label go to state 102
2156 + label go to state 423
2157 ordinal go to state 103
2158 optional_ordinal_last go to state 104
2159 nth_primitive go to state 105
2160 @@ -6825,7 +6825,7 @@
2161 $default reduce using rule 107 (object_spec)
2163 place go to state 114
2164 - label go to state 102
2165 + label go to state 423
2166 ordinal go to state 103
2167 optional_ordinal_last go to state 104
2168 nth_primitive go to state 105
2169 @@ -7017,7 +7017,7 @@
2170 $default reduce using rule 114 (object_spec)
2172 place go to state 114
2173 - label go to state 102
2174 + label go to state 423
2175 ordinal go to state 103
2176 optional_ordinal_last go to state 104
2177 nth_primitive go to state 105
2178 @@ -7264,7 +7264,7 @@
2179 '!' shift, and go to state 94
2181 place go to state 114
2182 - label go to state 102
2183 + label go to state 423
2184 ordinal go to state 103
2185 optional_ordinal_last go to state 104
2186 nth_primitive go to state 105
2187 @@ -7408,7 +7408,7 @@
2188 $default reduce using rule 109 (object_spec)
2190 place go to state 114
2191 - label go to state 102
2192 + label go to state 423
2193 ordinal go to state 103
2194 optional_ordinal_last go to state 104
2195 nth_primitive go to state 105
2196 @@ -7819,12 +7819,12 @@
2197 position_not_place go to state 296
2198 expr_pair go to state 100
2199 place go to state 297
2200 - label go to state 102
2201 + label go to state 423
2202 ordinal go to state 103
2203 optional_ordinal_last go to state 104
2204 nth_primitive go to state 105
2205 corner go to state 106
2206 - expr go to state 266
2207 + expr go to state 424
2211 @@ -7987,7 +7987,7 @@
2212 text_expr go to state 112
2213 text go to state 113
2214 place go to state 114
2215 - label go to state 102
2216 + label go to state 423
2217 ordinal go to state 103
2218 optional_ordinal_last go to state 104
2219 nth_primitive go to state 105
2220 @@ -8172,7 +8172,7 @@
2221 text_expr go to state 112
2222 text go to state 113
2223 place go to state 114
2224 - label go to state 102
2225 + label go to state 423
2226 ordinal go to state 103
2227 optional_ordinal_last go to state 104
2228 nth_primitive go to state 105
2229 @@ -8333,7 +8333,7 @@
2230 text_expr go to state 112
2231 text go to state 113
2232 place go to state 114
2233 - label go to state 102
2234 + label go to state 423
2235 ordinal go to state 103
2236 optional_ordinal_last go to state 104
2237 nth_primitive go to state 105
2238 @@ -8494,7 +8494,7 @@
2239 text_expr go to state 112
2240 text go to state 113
2241 place go to state 114
2242 - label go to state 102
2243 + label go to state 423
2244 ordinal go to state 103
2245 optional_ordinal_last go to state 104
2246 nth_primitive go to state 105
2247 @@ -8655,7 +8655,7 @@
2248 text_expr go to state 112
2249 text go to state 113
2250 place go to state 114
2251 - label go to state 102
2252 + label go to state 423
2253 ordinal go to state 103
2254 optional_ordinal_last go to state 104
2255 nth_primitive go to state 105
2256 @@ -8816,7 +8816,7 @@
2257 text_expr go to state 112
2258 text go to state 113
2259 place go to state 114
2260 - label go to state 102
2261 + label go to state 423
2262 ordinal go to state 103
2263 optional_ordinal_last go to state 104
2264 nth_primitive go to state 105
2265 @@ -8977,7 +8977,7 @@
2266 text_expr go to state 112
2267 text go to state 113
2268 place go to state 114
2269 - label go to state 102
2270 + label go to state 423
2271 ordinal go to state 103
2272 optional_ordinal_last go to state 104
2273 nth_primitive go to state 105
2274 @@ -9138,7 +9138,7 @@
2275 text_expr go to state 112
2276 text go to state 113
2277 place go to state 114
2278 - label go to state 102
2279 + label go to state 423
2280 ordinal go to state 103
2281 optional_ordinal_last go to state 104
2282 nth_primitive go to state 105
2283 @@ -9299,7 +9299,7 @@
2284 text_expr go to state 112
2285 text go to state 113
2286 place go to state 114
2287 - label go to state 102
2288 + label go to state 423
2289 ordinal go to state 103
2290 optional_ordinal_last go to state 104
2291 nth_primitive go to state 105
2292 @@ -9460,7 +9460,7 @@
2293 text_expr go to state 112
2294 text go to state 113
2295 place go to state 114
2296 - label go to state 102
2297 + label go to state 423
2298 ordinal go to state 103
2299 optional_ordinal_last go to state 104
2300 nth_primitive go to state 105
2301 @@ -9623,7 +9623,7 @@
2302 text_expr go to state 112
2303 text go to state 113
2304 place go to state 114
2305 - label go to state 102
2306 + label go to state 423
2307 ordinal go to state 103
2308 optional_ordinal_last go to state 104
2309 nth_primitive go to state 105
2310 @@ -9784,7 +9784,7 @@
2311 text_expr go to state 112
2312 text go to state 113
2313 place go to state 114
2314 - label go to state 102
2315 + label go to state 423
2316 ordinal go to state 103
2317 optional_ordinal_last go to state 104
2318 nth_primitive go to state 105
2319 @@ -9921,7 +9921,7 @@
2321 $default reduce using rule 47 (any_expr)
2323 - between go to state 237
2324 + between go to state 425
2328 @@ -10152,7 +10152,7 @@
2330 expr_pair go to state 317
2331 place go to state 114
2332 - label go to state 102
2333 + label go to state 423
2334 ordinal go to state 103
2335 optional_ordinal_last go to state 104
2336 nth_primitive go to state 105
2337 @@ -10298,7 +10298,7 @@
2339 expr_pair go to state 318
2340 place go to state 114
2341 - label go to state 102
2342 + label go to state 423
2343 ordinal go to state 103
2344 optional_ordinal_last go to state 104
2345 nth_primitive go to state 105
2346 @@ -10622,7 +10622,7 @@
2347 '!' shift, and go to state 94
2349 place go to state 114
2350 - label go to state 102
2351 + label go to state 423
2352 ordinal go to state 103
2353 optional_ordinal_last go to state 104
2354 nth_primitive go to state 105
2355 @@ -10765,7 +10765,7 @@
2356 '!' shift, and go to state 94
2358 place go to state 114
2359 - label go to state 102
2360 + label go to state 423
2361 ordinal go to state 103
2362 optional_ordinal_last go to state 104
2363 nth_primitive go to state 105
2364 @@ -10908,7 +10908,7 @@
2365 '!' shift, and go to state 94
2367 place go to state 114
2368 - label go to state 102
2369 + label go to state 423
2370 ordinal go to state 103
2371 optional_ordinal_last go to state 104
2372 nth_primitive go to state 105
2373 @@ -11051,7 +11051,7 @@
2374 '!' shift, and go to state 94
2376 place go to state 114
2377 - label go to state 102
2378 + label go to state 423
2379 ordinal go to state 103
2380 optional_ordinal_last go to state 104
2381 nth_primitive go to state 105
2382 @@ -11194,7 +11194,7 @@
2383 '!' shift, and go to state 94
2385 place go to state 114
2386 - label go to state 102
2387 + label go to state 423
2388 ordinal go to state 103
2389 optional_ordinal_last go to state 104
2390 nth_primitive go to state 105
2391 @@ -11337,7 +11337,7 @@
2392 '!' shift, and go to state 94
2394 place go to state 114
2395 - label go to state 102
2396 + label go to state 423
2397 ordinal go to state 103
2398 optional_ordinal_last go to state 104
2399 nth_primitive go to state 105
2400 @@ -11480,7 +11480,7 @@
2401 '!' shift, and go to state 94
2403 place go to state 114
2404 - label go to state 102
2405 + label go to state 423
2406 ordinal go to state 103
2407 optional_ordinal_last go to state 104
2408 nth_primitive go to state 105
2409 @@ -11637,7 +11637,7 @@
2410 position_not_place go to state 99
2411 expr_pair go to state 100
2412 place go to state 101
2413 - label go to state 102
2414 + label go to state 423
2415 ordinal go to state 103
2416 optional_ordinal_last go to state 104
2417 nth_primitive go to state 105
2418 @@ -11780,7 +11780,7 @@
2419 '!' shift, and go to state 94
2421 place go to state 114
2422 - label go to state 102
2423 + label go to state 423
2424 ordinal go to state 103
2425 optional_ordinal_last go to state 104
2426 nth_primitive go to state 105
2427 @@ -11923,7 +11923,7 @@
2428 '!' shift, and go to state 94
2430 place go to state 114
2431 - label go to state 102
2432 + label go to state 423
2433 ordinal go to state 103
2434 optional_ordinal_last go to state 104
2435 nth_primitive go to state 105
2436 @@ -12066,7 +12066,7 @@
2437 '!' shift, and go to state 94
2439 place go to state 114
2440 - label go to state 102
2441 + label go to state 423
2442 ordinal go to state 103
2443 optional_ordinal_last go to state 104
2444 nth_primitive go to state 105
2445 @@ -12209,7 +12209,7 @@
2446 '!' shift, and go to state 94
2448 place go to state 114
2449 - label go to state 102
2450 + label go to state 423
2451 ordinal go to state 103
2452 optional_ordinal_last go to state 104
2453 nth_primitive go to state 105
2454 @@ -12352,7 +12352,7 @@
2455 '!' shift, and go to state 94
2457 place go to state 114
2458 - label go to state 102
2459 + label go to state 423
2460 ordinal go to state 103
2461 optional_ordinal_last go to state 104
2462 nth_primitive go to state 105
2463 @@ -12495,7 +12495,7 @@
2464 '!' shift, and go to state 94
2466 place go to state 114
2467 - label go to state 102
2468 + label go to state 423
2469 ordinal go to state 103
2470 optional_ordinal_last go to state 104
2471 nth_primitive go to state 105
2472 @@ -12638,7 +12638,7 @@
2473 '!' shift, and go to state 94
2475 place go to state 114
2476 - label go to state 102
2477 + label go to state 423
2478 ordinal go to state 103
2479 optional_ordinal_last go to state 104
2480 nth_primitive go to state 105
2481 @@ -12794,12 +12794,12 @@
2482 position_not_place go to state 99
2483 expr_pair go to state 100
2484 place go to state 101
2485 - label go to state 102
2486 + label go to state 423
2487 ordinal go to state 103
2488 optional_ordinal_last go to state 104
2489 nth_primitive go to state 105
2490 corner go to state 106
2491 - expr go to state 266
2492 + expr go to state 424
2496 @@ -12937,7 +12937,7 @@
2497 '!' shift, and go to state 94
2499 place go to state 114
2500 - label go to state 102
2501 + label go to state 423
2502 ordinal go to state 103
2503 optional_ordinal_last go to state 104
2504 nth_primitive go to state 105
2505 @@ -13160,7 +13160,7 @@
2506 text_expr go to state 342
2507 text go to state 113
2508 place go to state 114
2509 - label go to state 102
2510 + label go to state 423
2511 ordinal go to state 103
2512 optional_ordinal_last go to state 104
2513 nth_primitive go to state 105
2514 @@ -13319,7 +13319,7 @@
2515 text_expr go to state 344
2516 text go to state 113
2517 place go to state 114
2518 - label go to state 102
2519 + label go to state 423
2520 ordinal go to state 103
2521 optional_ordinal_last go to state 104
2522 nth_primitive go to state 105
2523 @@ -13502,7 +13502,7 @@
2524 text_expr go to state 348
2525 text go to state 113
2526 place go to state 114
2527 - label go to state 102
2528 + label go to state 423
2529 ordinal go to state 103
2530 optional_ordinal_last go to state 104
2531 nth_primitive go to state 105
2532 @@ -13661,7 +13661,7 @@
2533 text_expr go to state 350
2534 text go to state 113
2535 place go to state 114
2536 - label go to state 102
2537 + label go to state 423
2538 ordinal go to state 103
2539 optional_ordinal_last go to state 104
2540 nth_primitive go to state 105
2541 @@ -13804,7 +13804,7 @@
2542 '!' shift, and go to state 94
2544 place go to state 114
2545 - label go to state 102
2546 + label go to state 423
2547 ordinal go to state 103
2548 optional_ordinal_last go to state 104
2549 nth_primitive go to state 105
2550 @@ -14747,7 +14747,7 @@
2551 position_not_place go to state 99
2552 expr_pair go to state 191
2553 place go to state 101
2554 - label go to state 102
2555 + label go to state 423
2556 ordinal go to state 103
2557 optional_ordinal_last go to state 104
2558 nth_primitive go to state 105
2559 @@ -15074,7 +15074,7 @@
2560 text go to state 113
2561 expr_pair go to state 365
2562 place go to state 114
2563 - label go to state 102
2564 + label go to state 423
2565 ordinal go to state 103
2566 optional_ordinal_last go to state 104
2567 nth_primitive go to state 105
2568 @@ -15693,12 +15693,12 @@
2569 position_not_place go to state 99
2570 expr_pair go to state 100
2571 place go to state 101
2572 - label go to state 102
2573 + label go to state 423
2574 ordinal go to state 103
2575 optional_ordinal_last go to state 104
2576 nth_primitive go to state 105
2577 corner go to state 106
2578 - expr go to state 266
2579 + expr go to state 424
2583 @@ -16124,7 +16124,7 @@
2585 $default reduce using rule 239 (expr)
2587 - between go to state 237
2588 + between go to state 425
2590 Conflict between rule 239 and token OF resolved as shift ('<' < OF).
2591 Conflict between rule 239 and token BETWEEN resolved as shift ('<' < BETWEEN).
2592 @@ -17234,7 +17234,7 @@
2593 text_expr go to state 112
2594 text go to state 113
2595 place go to state 114
2596 - label go to state 102
2597 + label go to state 423
2598 ordinal go to state 103
2599 optional_ordinal_last go to state 104
2600 nth_primitive go to state 105
2601 @@ -17416,7 +17416,7 @@
2602 text_expr go to state 112
2603 text go to state 113
2604 place go to state 114
2605 - label go to state 102
2606 + label go to state 423
2607 ordinal go to state 103
2608 optional_ordinal_last go to state 104
2609 nth_primitive go to state 105
2610 @@ -17577,7 +17577,7 @@
2611 text_expr go to state 112
2612 text go to state 113
2613 place go to state 114
2614 - label go to state 102
2615 + label go to state 423
2616 ordinal go to state 103
2617 optional_ordinal_last go to state 104
2618 nth_primitive go to state 105
2619 @@ -17772,12 +17772,12 @@
2620 position_not_place go to state 99
2621 expr_pair go to state 100
2622 place go to state 101
2623 - label go to state 102
2624 + label go to state 423
2625 ordinal go to state 103
2626 optional_ordinal_last go to state 104
2627 nth_primitive go to state 105
2628 corner go to state 106
2629 - expr go to state 266
2630 + expr go to state 424
2634 @@ -18071,7 +18071,7 @@
2635 '!' shift, and go to state 94
2637 place go to state 114
2638 - label go to state 102
2639 + label go to state 423
2640 ordinal go to state 103
2641 optional_ordinal_last go to state 104
2642 nth_primitive go to state 105
2643 @@ -18221,7 +18221,7 @@
2644 '!' shift, and go to state 94
2646 place go to state 114
2647 - label go to state 102
2648 + label go to state 423
2649 ordinal go to state 103
2650 optional_ordinal_last go to state 104
2651 nth_primitive go to state 105
2652 @@ -18830,7 +18830,7 @@
2653 '!' shift, and go to state 94
2655 place go to state 114
2656 - label go to state 102
2657 + label go to state 423
2658 ordinal go to state 103
2659 optional_ordinal_last go to state 104
2660 nth_primitive go to state 105
2661 @@ -18987,7 +18987,7 @@
2662 '!' shift, and go to state 94
2664 place go to state 114
2665 - label go to state 102
2666 + label go to state 423
2667 ordinal go to state 103
2668 optional_ordinal_last go to state 104
2669 nth_primitive go to state 105
2670 @@ -19089,3 +19089,440 @@
2671 29 placeless_element: FOR VARIABLE '=' expr TO expr optional_by DO $@6 DELIMITED .
2673 $default reduce using rule 29 (placeless_element)
2678 + 146 place: label . [$end, AND, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, ',', '>', '+', '-', ';', '}', '@:>@', ')']
2679 + 147 | label . corner
2680 + 153 label: label . '.' LABEL
2681 + 180 corner: . DOT_N
2696 + 195 | . UPPER LEFT
2697 + 196 | . LOWER LEFT
2698 + 197 | . UPPER RIGHT
2699 + 198 | . LOWER RIGHT
2700 + 199 | . LEFT_CORNER
2701 + 200 | . RIGHT_CORNER
2702 + 201 | . UPPER LEFT_CORNER
2703 + 202 | . LOWER LEFT_CORNER
2704 + 203 | . UPPER RIGHT_CORNER
2705 + 204 | . LOWER RIGHT_CORNER
2714 + LEFT shift, and go to state 53
2715 + RIGHT shift, and go to state 54
2716 + DOT_N shift, and go to state 56
2717 + DOT_E shift, and go to state 57
2718 + DOT_W shift, and go to state 58
2719 + DOT_S shift, and go to state 59
2720 + DOT_NE shift, and go to state 60
2721 + DOT_SE shift, and go to state 61
2722 + DOT_NW shift, and go to state 62
2723 + DOT_SW shift, and go to state 63
2724 + DOT_C shift, and go to state 64
2725 + DOT_START shift, and go to state 65
2726 + DOT_END shift, and go to state 66
2727 + TOP shift, and go to state 78
2728 + BOTTOM shift, and go to state 79
2729 + UPPER shift, and go to state 80
2730 + LOWER shift, and go to state 81
2731 + LEFT_CORNER shift, and go to state 82
2732 + RIGHT_CORNER shift, and go to state 83
2733 + NORTH shift, and go to state 84
2734 + SOUTH shift, and go to state 85
2735 + EAST shift, and go to state 86
2736 + WEST shift, and go to state 87
2737 + CENTER shift, and go to state 88
2738 + END shift, and go to state 89
2739 + START shift, and go to state 90
2740 + '.' shift, and go to state 204
2742 + $default reduce using rule 146 (place)
2744 + corner go to state 205
2749 + 140 position_not_place: expr . between position AND position
2750 + 141 | expr . '<' position ',' position '>'
2751 + 142 between: . BETWEEN
2752 + 143 | . OF THE WAY BETWEEN
2753 + 144 expr_pair: expr . ',' expr
2754 + 219 expr: expr . '+' expr
2755 + 220 | expr . '-' expr
2756 + 221 | expr . '*' expr
2757 + 222 | expr . '/' expr
2758 + 223 | expr . '%' expr
2759 + 224 | expr . '^' expr
2760 + 239 | expr . '<' expr
2761 + 240 | expr . LESSEQUAL expr
2762 + 241 | expr . '>' expr
2763 + 242 | expr . GREATEREQUAL expr
2764 + 243 | expr . EQUALEQUAL expr
2765 + 244 | expr . NOTEQUAL expr
2766 + 245 | expr . ANDAND expr
2767 + 246 | expr . OROR expr
2769 + OF shift, and go to state 220
2770 + BETWEEN shift, and go to state 221
2771 + ANDAND shift, and go to state 222
2772 + OROR shift, and go to state 223
2773 + NOTEQUAL shift, and go to state 224
2774 + EQUALEQUAL shift, and go to state 225
2775 + LESSEQUAL shift, and go to state 226
2776 + GREATEREQUAL shift, and go to state 227
2777 + ',' shift, and go to state 228
2778 + '<' shift, and go to state 229
2779 + '>' shift, and go to state 230
2780 + '+' shift, and go to state 231
2781 + '-' shift, and go to state 232
2782 + '*' shift, and go to state 233
2783 + '/' shift, and go to state 234
2784 + '%' shift, and go to state 235
2785 + '^' shift, and go to state 236
2787 + between go to state 425
2792 + 134 position: . position_not_place
2794 + 136 position_not_place: . expr_pair
2795 + 137 | . position '+' expr_pair
2796 + 138 | . position '-' expr_pair
2797 + 139 | . '(' position ',' position ')'
2798 + 140 | . expr between position AND position
2799 + 140 | expr between . position AND position
2800 + 141 | . expr '<' position ',' position '>'
2801 + 144 expr_pair: . expr ',' expr
2802 + 145 | . '(' expr_pair ')'
2803 + 146 place: . label
2804 + 147 | . label corner
2805 + 148 | . corner label
2806 + 149 | . corner OF label
2808 + 151 label: . LABEL
2809 + 152 | . nth_primitive
2810 + 153 | . label '.' LABEL
2811 + 154 ordinal: . ORDINAL
2812 + 155 | . '`' any_expr TH
2813 + 156 optional_ordinal_last: . LAST
2814 + 157 | . ordinal LAST
2815 + 158 nth_primitive: . ordinal object_type
2816 + 159 | . optional_ordinal_last object_type
2817 + 180 corner: . DOT_N
2832 + 195 | . UPPER LEFT
2833 + 196 | . LOWER LEFT
2834 + 197 | . UPPER RIGHT
2835 + 198 | . LOWER RIGHT
2836 + 199 | . LEFT_CORNER
2837 + 200 | . RIGHT_CORNER
2838 + 201 | . UPPER LEFT_CORNER
2839 + 202 | . LOWER LEFT_CORNER
2840 + 203 | . UPPER RIGHT_CORNER
2841 + 204 | . LOWER RIGHT_CORNER
2849 + 212 expr: . VARIABLE
2851 + 214 | . place DOT_X
2852 + 215 | . place DOT_Y
2853 + 216 | . place DOT_HT
2854 + 217 | . place DOT_WID
2855 + 218 | . place DOT_RAD
2856 + 219 | . expr '+' expr
2857 + 220 | . expr '-' expr
2858 + 221 | . expr '*' expr
2859 + 222 | . expr '/' expr
2860 + 223 | . expr '%' expr
2861 + 224 | . expr '^' expr
2863 + 226 | . '(' any_expr ')'
2864 + 227 | . SIN '(' any_expr ')'
2865 + 228 | . COS '(' any_expr ')'
2866 + 229 | . ATAN2 '(' any_expr ',' any_expr ')'
2867 + 230 | . LOG '(' any_expr ')'
2868 + 231 | . EXP '(' any_expr ')'
2869 + 232 | . SQRT '(' any_expr ')'
2870 + 233 | . K_MAX '(' any_expr ',' any_expr ')'
2871 + 234 | . K_MIN '(' any_expr ',' any_expr ')'
2872 + 235 | . INT '(' any_expr ')'
2873 + 236 | . RAND '(' any_expr ')'
2874 + 237 | . RAND '(' ')'
2875 + 238 | . SRAND '(' any_expr ')'
2876 + 239 | . expr '<' expr
2877 + 240 | . expr LESSEQUAL expr
2878 + 241 | . expr '>' expr
2879 + 242 | . expr GREATEREQUAL expr
2880 + 243 | . expr EQUALEQUAL expr
2881 + 244 | . expr NOTEQUAL expr
2882 + 245 | . expr ANDAND expr
2883 + 246 | . expr OROR expr
2886 + LABEL shift, and go to state 48
2887 + VARIABLE shift, and go to state 49
2888 + NUMBER shift, and go to state 50
2889 + ORDINAL shift, and go to state 51
2890 + LAST shift, and go to state 52
2891 + LEFT shift, and go to state 53
2892 + RIGHT shift, and go to state 54
2893 + HERE shift, and go to state 55
2894 + DOT_N shift, and go to state 56
2895 + DOT_E shift, and go to state 57
2896 + DOT_W shift, and go to state 58
2897 + DOT_S shift, and go to state 59
2898 + DOT_NE shift, and go to state 60
2899 + DOT_SE shift, and go to state 61
2900 + DOT_NW shift, and go to state 62
2901 + DOT_SW shift, and go to state 63
2902 + DOT_C shift, and go to state 64
2903 + DOT_START shift, and go to state 65
2904 + DOT_END shift, and go to state 66
2905 + SIN shift, and go to state 67
2906 + COS shift, and go to state 68
2907 + ATAN2 shift, and go to state 69
2908 + LOG shift, and go to state 70
2909 + EXP shift, and go to state 71
2910 + SQRT shift, and go to state 72
2911 + K_MAX shift, and go to state 73
2912 + K_MIN shift, and go to state 74
2913 + INT shift, and go to state 75
2914 + RAND shift, and go to state 76
2915 + SRAND shift, and go to state 77
2916 + TOP shift, and go to state 78
2917 + BOTTOM shift, and go to state 79
2918 + UPPER shift, and go to state 80
2919 + LOWER shift, and go to state 81
2920 + LEFT_CORNER shift, and go to state 82
2921 + RIGHT_CORNER shift, and go to state 83
2922 + NORTH shift, and go to state 84
2923 + SOUTH shift, and go to state 85
2924 + EAST shift, and go to state 86
2925 + WEST shift, and go to state 87
2926 + CENTER shift, and go to state 88
2927 + END shift, and go to state 89
2928 + START shift, and go to state 90
2929 + '(' shift, and go to state 91
2930 + '`' shift, and go to state 92
2931 + '-' shift, and go to state 93
2932 + '!' shift, and go to state 94
2934 + position go to state 426
2935 + position_not_place go to state 99
2936 + expr_pair go to state 100
2937 + place go to state 101
2938 + label go to state 423
2939 + ordinal go to state 103
2940 + optional_ordinal_last go to state 104
2941 + nth_primitive go to state 105
2942 + corner go to state 106
2943 + expr go to state 424
2948 + 137 position_not_place: position . '+' expr_pair
2949 + 138 | position . '-' expr_pair
2950 + 140 | expr between position . AND position
2952 + AND shift, and go to state 427
2953 + '+' shift, and go to state 197
2954 + '-' shift, and go to state 198
2959 + 134 position: . position_not_place
2961 + 136 position_not_place: . expr_pair
2962 + 137 | . position '+' expr_pair
2963 + 138 | . position '-' expr_pair
2964 + 139 | . '(' position ',' position ')'
2965 + 140 | . expr between position AND position
2966 + 140 | expr between position AND . position
2967 + 141 | . expr '<' position ',' position '>'
2968 + 144 expr_pair: . expr ',' expr
2969 + 145 | . '(' expr_pair ')'
2970 + 146 place: . label
2971 + 147 | . label corner
2972 + 148 | . corner label
2973 + 149 | . corner OF label
2975 + 151 label: . LABEL
2976 + 152 | . nth_primitive
2977 + 153 | . label '.' LABEL
2978 + 154 ordinal: . ORDINAL
2979 + 155 | . '`' any_expr TH
2980 + 156 optional_ordinal_last: . LAST
2981 + 157 | . ordinal LAST
2982 + 158 nth_primitive: . ordinal object_type
2983 + 159 | . optional_ordinal_last object_type
2984 + 180 corner: . DOT_N
2999 + 195 | . UPPER LEFT
3000 + 196 | . LOWER LEFT
3001 + 197 | . UPPER RIGHT
3002 + 198 | . LOWER RIGHT
3003 + 199 | . LEFT_CORNER
3004 + 200 | . RIGHT_CORNER
3005 + 201 | . UPPER LEFT_CORNER
3006 + 202 | . LOWER LEFT_CORNER
3007 + 203 | . UPPER RIGHT_CORNER
3008 + 204 | . LOWER RIGHT_CORNER
3016 + 212 expr: . VARIABLE
3018 + 214 | . place DOT_X
3019 + 215 | . place DOT_Y
3020 + 216 | . place DOT_HT
3021 + 217 | . place DOT_WID
3022 + 218 | . place DOT_RAD
3023 + 219 | . expr '+' expr
3024 + 220 | . expr '-' expr
3025 + 221 | . expr '*' expr
3026 + 222 | . expr '/' expr
3027 + 223 | . expr '%' expr
3028 + 224 | . expr '^' expr
3030 + 226 | . '(' any_expr ')'
3031 + 227 | . SIN '(' any_expr ')'
3032 + 228 | . COS '(' any_expr ')'
3033 + 229 | . ATAN2 '(' any_expr ',' any_expr ')'
3034 + 230 | . LOG '(' any_expr ')'
3035 + 231 | . EXP '(' any_expr ')'
3036 + 232 | . SQRT '(' any_expr ')'
3037 + 233 | . K_MAX '(' any_expr ',' any_expr ')'
3038 + 234 | . K_MIN '(' any_expr ',' any_expr ')'
3039 + 235 | . INT '(' any_expr ')'
3040 + 236 | . RAND '(' any_expr ')'
3041 + 237 | . RAND '(' ')'
3042 + 238 | . SRAND '(' any_expr ')'
3043 + 239 | . expr '<' expr
3044 + 240 | . expr LESSEQUAL expr
3045 + 241 | . expr '>' expr
3046 + 242 | . expr GREATEREQUAL expr
3047 + 243 | . expr EQUALEQUAL expr
3048 + 244 | . expr NOTEQUAL expr
3049 + 245 | . expr ANDAND expr
3050 + 246 | . expr OROR expr
3053 + LABEL shift, and go to state 48
3054 + VARIABLE shift, and go to state 49
3055 + NUMBER shift, and go to state 50
3056 + ORDINAL shift, and go to state 51
3057 + LAST shift, and go to state 52
3058 + LEFT shift, and go to state 53
3059 + RIGHT shift, and go to state 54
3060 + HERE shift, and go to state 55
3061 + DOT_N shift, and go to state 56
3062 + DOT_E shift, and go to state 57
3063 + DOT_W shift, and go to state 58
3064 + DOT_S shift, and go to state 59
3065 + DOT_NE shift, and go to state 60
3066 + DOT_SE shift, and go to state 61
3067 + DOT_NW shift, and go to state 62
3068 + DOT_SW shift, and go to state 63
3069 + DOT_C shift, and go to state 64
3070 + DOT_START shift, and go to state 65
3071 + DOT_END shift, and go to state 66
3072 + SIN shift, and go to state 67
3073 + COS shift, and go to state 68
3074 + ATAN2 shift, and go to state 69
3075 + LOG shift, and go to state 70
3076 + EXP shift, and go to state 71
3077 + SQRT shift, and go to state 72
3078 + K_MAX shift, and go to state 73
3079 + K_MIN shift, and go to state 74
3080 + INT shift, and go to state 75
3081 + RAND shift, and go to state 76
3082 + SRAND shift, and go to state 77
3083 + TOP shift, and go to state 78
3084 + BOTTOM shift, and go to state 79
3085 + UPPER shift, and go to state 80
3086 + LOWER shift, and go to state 81
3087 + LEFT_CORNER shift, and go to state 82
3088 + RIGHT_CORNER shift, and go to state 83
3089 + NORTH shift, and go to state 84
3090 + SOUTH shift, and go to state 85
3091 + EAST shift, and go to state 86
3092 + WEST shift, and go to state 87
3093 + CENTER shift, and go to state 88
3094 + END shift, and go to state 89
3095 + START shift, and go to state 90
3096 + '(' shift, and go to state 91
3097 + '`' shift, and go to state 92
3098 + '-' shift, and go to state 93
3099 + '!' shift, and go to state 94
3101 + position go to state 402
3102 + position_not_place go to state 99
3103 + expr_pair go to state 100
3104 + place go to state 101
3105 + label go to state 423
3106 + ordinal go to state 103
3107 + optional_ordinal_last go to state 104
3108 + nth_primitive go to state 105
3109 + corner go to state 106
3110 + expr go to state 424
3116 dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
3117 [AT_COND_CASE([[LALR]], [[1]], [[0]])],
3119 [AT_COND_CASE([[LALR]],
3120 [[syntax error, unexpected LEFT