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:19.8-16: warning: useless associativity for FUNC_CALL [-Wother]
432 input.y:21.8-14: warning: useless associativity for YNUMBER [-Wother]
433 input.y:21.16-22: warning: useless associativity for YSTRING [-Wother]
434 input.y:22.14-22: warning: useless associativity for APPEND_OP [-Wother]
435 input.y:23.8-15: warning: useless associativity for ASSIGNOP [-Wother]
436 input.y:23.33-41: warning: useless associativity for CONCAT_OP [-Wother]
437 input.y:27.8-18: warning: useless associativity for LEX_GETLINE [-Wother]
438 input.y:28.8-13: warning: useless associativity for LEX_IN [-Wother]
439 input.y:29.23-31: warning: useless associativity for INCREMENT [-Wother]
440 input.y:29.33-41: warning: useless associativity for DECREMENT [-Wother]
441 input.y:30.8-18: warning: useless associativity for LEX_BUILTIN [-Wother]
442 input.y:30.20-29: warning: useless associativity for LEX_LENGTH [-Wother]
443 input.y:40.11-13: warning: useless associativity for ',' [-Wother]
444 input.y:47.8-10: warning: useless associativity for '!' [-Wother]
445 input.y:47.12-16: warning: useless associativity for UNARY [-Wother]
446 input.y:50.7-9: warning: useless associativity for '$' [-Wother]
447 input.y:51.7-9: warning: useless associativity for '(' [-Wother]
448 input.y:51.11-13: warning: useless associativity for ')' [-Wother]]],
449 [[input.y: warning: 65 shift/reduce conflicts [-Wconflicts-sr]
450 input.y:19.8-16: warning: useless associativity for FUNC_CALL [-Wother]
451 input.y:21.8-14: warning: useless associativity for YNUMBER [-Wother]
452 input.y:21.16-22: warning: useless associativity for YSTRING [-Wother]
453 input.y:22.14-22: warning: useless associativity for APPEND_OP [-Wother]
454 input.y:23.8-15: warning: useless associativity for ASSIGNOP [-Wother]
455 input.y:23.33-41: warning: useless associativity for CONCAT_OP [-Wother]
456 input.y:27.8-18: warning: useless associativity for LEX_GETLINE [-Wother]
457 input.y:28.8-13: warning: useless associativity for LEX_IN [-Wother]
458 input.y:29.23-31: warning: useless associativity for INCREMENT [-Wother]
459 input.y:29.33-41: warning: useless associativity for DECREMENT [-Wother]
460 input.y:30.8-18: warning: useless associativity for LEX_BUILTIN [-Wother]
461 input.y:30.20-29: warning: useless associativity for LEX_LENGTH [-Wother]
462 input.y:40.11-13: warning: useless associativity for ',' [-Wother]
463 input.y:47.8-10: warning: useless associativity for '!' [-Wother]
464 input.y:47.12-16: warning: useless associativity for UNARY [-Wother]
465 input.y:50.7-9: warning: useless associativity for '$' [-Wother]
466 input.y:51.7-9: warning: useless associativity for '(' [-Wother]
467 input.y:51.11-13: warning: useless associativity for ')' [-Wother]]])[
471 [AT_COND_CASE([[LALR]], [[319]], [[canonical LR]], [[2358]], [[328]])],
473 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
474 dnl Isocore map from LALR(1) state number to new state number plus descriptions
475 dnl of any change in the actions resulting in a change in accepted language:
482 dnl - 56 -> 326: reduce -> shift on '*', '/', and '%'
483 dnl - 58 -> 327: reduce -> shift on '*', '/', and '%'
484 dnl - 61 -> 328: reduce -> shift on '*', '/', and '%'
485 [AT_COND_CASE([[LALR]], [],
486 [[@@ -712,7 +712,7 @@
487 156 | . '$' non_post_simp_exp
489 NAME shift, and go to state 9
490 - '$' shift, and go to state 24
491 + '$' shift, and go to state 320
493 NAME [reduce using rule 152 (opt_variable)]
494 '$' [reduce using rule 152 (opt_variable)]
495 @@ -5379,7 +5379,7 @@
496 156 | . '$' non_post_simp_exp
498 NAME shift, and go to state 9
499 - '$' shift, and go to state 24
500 + '$' shift, and go to state 320
502 NAME [reduce using rule 152 (opt_variable)]
503 '$' [reduce using rule 152 (opt_variable)]
504 @@ -5399,7 +5399,7 @@
505 156 | . '$' non_post_simp_exp
507 NAME shift, and go to state 9
508 - '$' shift, and go to state 24
509 + '$' shift, and go to state 320
511 NAME [reduce using rule 152 (opt_variable)]
512 '$' [reduce using rule 152 (opt_variable)]
513 @@ -6214,7 +6214,7 @@
514 156 | . '$' non_post_simp_exp
516 NAME shift, and go to state 9
517 - '$' shift, and go to state 24
518 + '$' shift, and go to state 320
520 NAME [reduce using rule 152 (opt_variable)]
521 '$' [reduce using rule 152 (opt_variable)]
522 @@ -11099,3 +11099,274 @@
523 45 statement: LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement .
525 $default reduce using rule 45 (statement)
530 + 139 non_post_simp_exp: . '!' simp_exp
531 + 140 | . '(' exp r_paren
532 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
533 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
535 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
537 + 146 | . INCREMENT variable
538 + 147 | . DECREMENT variable
541 + 150 | . '-' simp_exp
542 + 151 | . '+' simp_exp
543 + 154 variable: . NAME
544 + 155 | . NAME '[' expression_list ']'
545 + 156 | . '$' non_post_simp_exp
546 + 156 | '$' . non_post_simp_exp
548 + FUNC_CALL shift, and go to state 8
549 + NAME shift, and go to state 9
550 + YNUMBER shift, and go to state 10
551 + YSTRING shift, and go to state 11
552 + INCREMENT shift, and go to state 321
553 + DECREMENT shift, and go to state 322
554 + LEX_BUILTIN shift, and go to state 18
555 + LEX_LENGTH shift, and go to state 19
556 + '+' shift, and go to state 323
557 + '-' shift, and go to state 324
558 + '!' shift, and go to state 325
559 + '$' shift, and go to state 320
560 + '(' shift, and go to state 55
562 + non_post_simp_exp go to state 62
563 + variable go to state 63
568 + 146 non_post_simp_exp: INCREMENT . variable
569 + 154 variable: . NAME
570 + 155 | . NAME '[' expression_list ']'
571 + 156 | . '$' non_post_simp_exp
573 + NAME shift, and go to state 9
574 + '$' shift, and go to state 320
576 + variable go to state 50
581 + 147 non_post_simp_exp: DECREMENT . variable
582 + 154 variable: . NAME
583 + 155 | . NAME '[' expression_list ']'
584 + 156 | . '$' non_post_simp_exp
586 + NAME shift, and go to state 9
587 + '$' shift, and go to state 320
589 + variable go to state 51
594 + 130 simp_exp: . non_post_simp_exp
595 + 131 | . simp_exp '^' simp_exp
596 + 132 | . simp_exp '*' simp_exp
597 + 133 | . simp_exp '/' simp_exp
598 + 134 | . simp_exp '%' simp_exp
599 + 135 | . simp_exp '+' simp_exp
600 + 136 | . simp_exp '-' simp_exp
601 + 137 | . variable INCREMENT
602 + 138 | . variable DECREMENT
603 + 139 non_post_simp_exp: . '!' simp_exp
604 + 140 | . '(' exp r_paren
605 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
606 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
608 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
610 + 146 | . INCREMENT variable
611 + 147 | . DECREMENT variable
614 + 150 | . '-' simp_exp
615 + 151 | . '+' simp_exp
616 + 151 | '+' . simp_exp
617 + 154 variable: . NAME
618 + 155 | . NAME '[' expression_list ']'
619 + 156 | . '$' non_post_simp_exp
621 + FUNC_CALL shift, and go to state 8
622 + NAME shift, and go to state 9
623 + YNUMBER shift, and go to state 10
624 + YSTRING shift, and go to state 11
625 + INCREMENT shift, and go to state 16
626 + DECREMENT shift, and go to state 17
627 + LEX_BUILTIN shift, and go to state 18
628 + LEX_LENGTH shift, and go to state 19
629 + '+' shift, and go to state 20
630 + '-' shift, and go to state 21
631 + '!' shift, and go to state 54
632 + '$' shift, and go to state 24
633 + '(' shift, and go to state 55
635 + simp_exp go to state 326
636 + non_post_simp_exp go to state 35
637 + variable go to state 57
642 + 130 simp_exp: . non_post_simp_exp
643 + 131 | . simp_exp '^' simp_exp
644 + 132 | . simp_exp '*' simp_exp
645 + 133 | . simp_exp '/' simp_exp
646 + 134 | . simp_exp '%' simp_exp
647 + 135 | . simp_exp '+' simp_exp
648 + 136 | . simp_exp '-' simp_exp
649 + 137 | . variable INCREMENT
650 + 138 | . variable DECREMENT
651 + 139 non_post_simp_exp: . '!' simp_exp
652 + 140 | . '(' exp r_paren
653 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
654 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
656 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
658 + 146 | . INCREMENT variable
659 + 147 | . DECREMENT variable
662 + 150 | . '-' simp_exp
663 + 150 | '-' . simp_exp
664 + 151 | . '+' simp_exp
665 + 154 variable: . NAME
666 + 155 | . NAME '[' expression_list ']'
667 + 156 | . '$' non_post_simp_exp
669 + FUNC_CALL shift, and go to state 8
670 + NAME shift, and go to state 9
671 + YNUMBER shift, and go to state 10
672 + YSTRING shift, and go to state 11
673 + INCREMENT shift, and go to state 16
674 + DECREMENT shift, and go to state 17
675 + LEX_BUILTIN shift, and go to state 18
676 + LEX_LENGTH shift, and go to state 19
677 + '+' shift, and go to state 20
678 + '-' shift, and go to state 21
679 + '!' shift, and go to state 54
680 + '$' shift, and go to state 24
681 + '(' shift, and go to state 55
683 + simp_exp go to state 327
684 + non_post_simp_exp go to state 35
685 + variable go to state 57
690 + 130 simp_exp: . non_post_simp_exp
691 + 131 | . simp_exp '^' simp_exp
692 + 132 | . simp_exp '*' simp_exp
693 + 133 | . simp_exp '/' simp_exp
694 + 134 | . simp_exp '%' simp_exp
695 + 135 | . simp_exp '+' simp_exp
696 + 136 | . simp_exp '-' simp_exp
697 + 137 | . variable INCREMENT
698 + 138 | . variable DECREMENT
699 + 139 non_post_simp_exp: . '!' simp_exp
700 + 139 | '!' . simp_exp
701 + 140 | . '(' exp r_paren
702 + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren
703 + 142 | . LEX_LENGTH '(' opt_expression_list r_paren
705 + 144 | . FUNC_CALL '(' opt_expression_list r_paren
707 + 146 | . INCREMENT variable
708 + 147 | . DECREMENT variable
711 + 150 | . '-' simp_exp
712 + 151 | . '+' simp_exp
713 + 154 variable: . NAME
714 + 155 | . NAME '[' expression_list ']'
715 + 156 | . '$' non_post_simp_exp
717 + FUNC_CALL shift, and go to state 8
718 + NAME shift, and go to state 9
719 + YNUMBER shift, and go to state 10
720 + YSTRING shift, and go to state 11
721 + INCREMENT shift, and go to state 16
722 + DECREMENT shift, and go to state 17
723 + LEX_BUILTIN shift, and go to state 18
724 + LEX_LENGTH shift, and go to state 19
725 + '+' shift, and go to state 20
726 + '-' shift, and go to state 21
727 + '!' shift, and go to state 54
728 + '$' shift, and go to state 24
729 + '(' shift, and go to state 55
731 + simp_exp go to state 328
732 + non_post_simp_exp go to state 35
733 + variable go to state 57
738 + 131 simp_exp: simp_exp . '^' simp_exp
739 + 132 | simp_exp . '*' simp_exp
740 + 133 | simp_exp . '/' simp_exp
741 + 134 | simp_exp . '%' simp_exp
742 + 135 | simp_exp . '+' simp_exp
743 + 136 | simp_exp . '-' simp_exp
744 + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
746 + '*' shift, and go to state 89
747 + '/' shift, and go to state 90
748 + '%' shift, and go to state 91
749 + '^' shift, and go to state 92
751 + $default reduce using rule 151 (non_post_simp_exp)
753 + Conflict between rule 151 and token '+' resolved as reduce ('+' < UNARY).
754 + Conflict between rule 151 and token '-' resolved as reduce ('-' < UNARY).
759 + 131 simp_exp: simp_exp . '^' simp_exp
760 + 132 | simp_exp . '*' simp_exp
761 + 133 | simp_exp . '/' simp_exp
762 + 134 | simp_exp . '%' simp_exp
763 + 135 | simp_exp . '+' simp_exp
764 + 136 | simp_exp . '-' simp_exp
765 + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
767 + '*' shift, and go to state 89
768 + '/' shift, and go to state 90
769 + '%' shift, and go to state 91
770 + '^' shift, and go to state 92
772 + $default reduce using rule 150 (non_post_simp_exp)
774 + Conflict between rule 150 and token '+' resolved as reduce ('+' < UNARY).
775 + Conflict between rule 150 and token '-' resolved as reduce ('-' < UNARY).
780 + 131 simp_exp: simp_exp . '^' simp_exp
781 + 132 | simp_exp . '*' simp_exp
782 + 133 | simp_exp . '/' simp_exp
783 + 134 | simp_exp . '%' simp_exp
784 + 135 | simp_exp . '+' simp_exp
785 + 136 | simp_exp . '-' simp_exp
786 + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';']
788 + '*' shift, and go to state 89
789 + '/' shift, and go to state 90
790 + '%' shift, and go to state 91
791 + '^' shift, and go to state 92
793 + $default reduce using rule 139 (non_post_simp_exp)
795 + Conflict between rule 139 and token '+' resolved as reduce ('+' < UNARY).
796 + Conflict between rule 139 and token '-' resolved as reduce ('-' < UNARY).
802 dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
803 dnl In the case of the syntax error, the parser recovers, so it returns 0.
806 [AT_COND_CASE([[LALR]],
807 [[syntax error, unexpected '*', expecting NEWLINE or '{' or ';'
810 ## ----------------- ##
811 ## GNU Cim Grammar. ##
812 ## ----------------- ##
814 # GNU Cim, the GNU Simula 87 Compiler.
816 # Bison was once wrong, due to an incorrect computation of the RR conflicts.
817 # It reported 80 SR && 99 RR conflicts instead of 78/10!!!
819 AT_TEST_EXISTING_GRAMMAR([[GNU Cim Grammar]],
822 HACTIVATE HAFTER /*HAND*/ HARRAY HAT
823 HBEFORE HBEGIN HBOOLEAN
824 HCHARACTER HCLASS /*HCOMMENT*/ HCONC
826 HELSE HEND HEQ /*HEQV*/ HEXTERNAL
830 HIF /*HIMP*/ HIN HINNER HINSPECT HINTEGER HIS
832 HNAME HNE HNEW HNONE /*HNOT*/ HNOTEXT
834 HPRIOR HPROCEDURE HPROTECTED
836 HREACTIVATE HREAL HREF
838 HTEXT HTHEN HTHIS HTO
843 HASSIGNVALUE HASSIGNREF
844 /*HDOT*/ HPAREXPSEPARATOR HLABELSEPARATOR HSTATEMENTSEPARATOR
847 HADD HSUB HMUL HDIV HINTDIV HEXP
851 %token HBOOLEANKONST HINTEGERKONST HCHARACTERKONST
866 %left HVALRELOPERATOR HREFRELOPERATOR HOBJRELOPERATOR
872 %left HFACTOROPERATOR
873 %left HPRIMARYOPERATOR
882 /* GRAMATIKK FOR PROGRAM MODULES */
885 | error HSTATEMENTSEPARATOR MBEE_DECLSTMS
887 EXT_DECLARATION : HEXTERNAL
905 EXTERNAL_KIND_ITEM: EXT_IDENT
918 MBEE_REST_EXT_LIST: /* EMPTY
919 | HPAREXPSEPARATOR EXT_KIND_LIST
921 EXT_KIND_LIST : EXT_KIND_ITEM
922 | EXT_KIND_LIST HPAREXPSEPARATOR EXT_KIND_ITEM
924 EXT_KIND_ITEM : HIDENTIFIER
928 EMPTY_BLOCK : /*EMPT*/
932 | EXT_LIST HPAREXPSEPARATOR EXT_ITEM
934 EXT_ITEM : HIDENTIFIER
937 EXT_IDENT : /* EMPTY */
941 /* GRAMATIKK FOR TYPER */
960 /* GRAMATIKK FOR DEL AV SETNINGER */
961 MBEE_ELSE_PART : /*EMPT*/
971 FOR_LIST : FOR_LIST_ELEMENT
976 FOR_LIST_ELEMENT: EXPRESSION
979 MBEE_F_L_EL_R_PT: /*EMPT*/
991 CONN_STATE_R_PT : WHEN_CLAUSE_LIST
995 WHEN_CLAUSE_LIST: HWHEN
1005 MBEE_OTWI_CLAUS : /*EMPT*/
1010 ACTIVATOR : HACTIVATE
1014 | ATDELAY EXPRESSION {}
1022 BEFOREAFTER : HBEFORE
1028 /* GRAMATIKK FOR SETNINGER OG DEKLARASJONER */
1029 MODULSTATEMENT : HWHILE
1063 | EXPRESSION_SIMP HBEGIN error HSTATEMENTSEPARATOR
1065 | EXPRESSION_SIMP HBEGIN error HEND
1067 | ACTIVATOR EXPRESSION SCHEDULE
1072 | MBEE_TYPE HPROCEDURE
1096 DECLSTATEMENT : MODULSTATEMENT
1114 BLOCK : DECLSTATEMENT
1115 | HBEGIN MBEE_DECLSTMS HEND
1116 | HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND
1119 MBEE_DECLSTMS : MBEE_DECLSTMSU
1121 MBEE_DECLSTMSU : DECLSTATEMENT
1126 MODULS : MODULSTATEMENT
1127 | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT
1129 /* GRAMATIKK FOR DEL AV DEKLARASJONER */
1130 ARR_SEGMENT_LIST: ARR_SEGMENT
1135 ARR_SEGMENT : ARRAY_SEGMENT
1137 BAUND_PAIR_LIST HENDPAR
1139 ARRAY_SEGMENT : ARRAY_SEGMENT_EL {}
1145 ARRAY_SEGMENT_EL: HIDENTIFIER
1147 BAUND_PAIR_LIST : BAUND_PAIR
1152 BAUND_PAIR : EXPRESSION
1156 SWITCH_LIST : EXPRESSION
1161 HEADING : MBEE_FMAL_PAR_P HSTATEMENTSEPARATOR {}
1167 MBEE_FMAL_PAR_P : /*EMPT*/
1170 FMAL_PAR_PART : HBEGPAR NO_TYPE
1173 MBEE_LISTV : /*EMPT*/
1177 | FPP_CATEG HDOTDOTDOT
1179 HPAREXPSEPARATOR LISTV
1182 HPAREXPSEPARATOR LISTV
1184 FPP_HEADING : HBEGPAR NO_TYPE
1185 FPP_MBEE_LISTV HENDPAR
1187 FPP_MBEE_LISTV : /*EMPT*/
1190 FPP_LISTV : FPP_CATEG HDOTDOTDOT
1193 HPAREXPSEPARATOR LISTV
1195 FPP_SPEC : FPP_CATEG SPECIFIER HIDENTIFIER
1196 | FPP_CATEG FPP_PROC_DECL_IN_SPEC
1198 FPP_CATEG : HNAME HLABELSEPARATOR
1199 | HVALUE HLABELSEPARATOR
1200 | HVAR HLABELSEPARATOR
1203 FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
1206 FPP_HEADING {} { /* Yes, two "final" actions. */ }
1208 IDENTIFIER_LISTV: HIDENTIFIER
1211 HPAREXPSEPARATOR IDENTIFIER_LISTV
1213 MBEE_MODE_PART : /*EMPT*/
1216 MODE_PART : NAME_PART
1219 | NAME_PART VALUE_PART
1220 | VALUE_PART NAME_PART
1221 | NAME_PART VAR_PART
1222 | VAR_PART NAME_PART
1223 | VALUE_PART VAR_PART
1224 | VAR_PART VALUE_PART
1225 | VAR_PART NAME_PART VALUE_PART
1226 | NAME_PART VAR_PART VALUE_PART
1227 | NAME_PART VALUE_PART VAR_PART
1228 | VAR_PART VALUE_PART NAME_PART
1229 | VALUE_PART VAR_PART NAME_PART
1230 | VALUE_PART NAME_PART VAR_PART
1232 NAME_PART : HNAME {}
1240 VALUE_PART : HVALUE {}
1241 IDENTIFIER_LISTV HSTATEMENTSEPARATOR
1243 MBEE_SPEC_PART : /*EMPT*/
1246 SPEC_PART : ONE_SPEC
1247 | SPEC_PART ONE_SPEC
1249 ONE_SPEC : SPECIFIER IDENTIFIER_LIST HSTATEMENTSEPARATOR
1250 | NO_TYPE HPROCEDURE HIDENTIFIER HOBJRELOPERATOR
1252 PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
1253 | FPP_PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
1254 | MBEE_TYPE HPROCEDURE HIDENTIFIER HSTATEMENTSEPARATOR
1255 | MBEE_TYPE HPROCEDURE HIDENTIFIER HPAREXPSEPARATOR
1256 IDENTIFIER_LIST HSTATEMENTSEPARATOR
1264 PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
1271 MBEE_BEGIN_END : /* EMPTY */
1274 MBEE_PROT_PART : /*EMPT*/
1277 PROTECTION_PART : PROT_SPECIFIER IDENTIFIER_LIST
1279 | PROTECTION_PART PROT_SPECIFIER
1280 IDENTIFIER_LIST HSTATEMENTSEPARATOR
1282 PROT_SPECIFIER : HHIDDEN
1289 MBEE_VIRT_PART : /*EMPT*/
1292 VIRTUAL_PART : HVIRTUAL
1296 IDENTIFIER_LIST : HIDENTIFIER
1297 | IDENTIFIER_LIST HPAREXPSEPARATOR
1300 IDENTIFIER_LISTC: HIDENTIFIER
1302 | IDENTIFIER_LISTC HPAREXPSEPARATOR
1306 MBEE_CONSTANT : /* EMPTY */
1312 /* GRAMATIKK FOR UTTRYKK */
1313 EXPRESSION : EXPRESSION_SIMP
1321 EXPRESSION_SIMP : EXPRESSION_SIMP
1329 | EXPRESSION_SIMP HOR
1333 | EXPRESSION_SIMP HAND
1338 HEQV EXPRESSION_SIMP
1340 HIMP EXPRESSION_SIMP
1344 HAND EXPRESSION_SIMP
1345 | HNOT EXPRESSION_SIMP
1356 EXPRESSION_SIMP %prec UNEAR
1387 ARG_R_PT : /*EMPTY*/
1389 ARGUMENT_LIST HENDPAR
1391 MBEE_ARG_R_PT : /*EMPTY*/
1393 ARGUMENT_LIST HENDPAR
1395 ARGUMENT_LIST : EXPRESSION
1406 [AT_COND_CASE([[canonical LR]],
1407 [[input.y: warning: 1876 shift/reduce conflicts [-Wconflicts-sr]
1408 input.y: warning: 144 reduce/reduce conflicts [-Wconflicts-rr]
1409 input.y:32.9-12: warning: useless associativity for HQUA [-Wother]
1410 input.y:53.8-14: warning: useless associativity for HASSIGN [-Wother]
1411 input.y:54.9-15: warning: useless associativity for HORELSE [-Wother]
1412 input.y:55.9-16: warning: useless associativity for HANDTHEN [-Wother]
1413 input.y:61.9-12: warning: useless associativity for HNOT [-Wother]
1414 input.y:68.7-11: warning: useless associativity for UNEAR [-Wother]]],
1415 [[input.y: warning: 78 shift/reduce conflicts [-Wconflicts-sr]
1416 input.y: warning: 10 reduce/reduce conflicts [-Wconflicts-rr]
1417 input.y:32.9-12: warning: useless associativity for HQUA [-Wother]
1418 input.y:53.8-14: warning: useless associativity for HASSIGN [-Wother]
1419 input.y:54.9-15: warning: useless associativity for HORELSE [-Wother]
1420 input.y:55.9-16: warning: useless associativity for HANDTHEN [-Wother]
1421 input.y:61.9-12: warning: useless associativity for HNOT [-Wother]
1422 input.y:68.7-11: warning: useless associativity for UNEAR [-Wother]]])[
1426 [AT_COND_CASE([[canonical LR]], [[10425]], [[442]])],
1428 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
1432 [AT_COND_CASE([[canonical LR]], [[]],
1433 [AT_CHECK([[grep '^State.*conflicts:' input.output]], [[0]],
1434 [[State 64 conflicts: 14 shift/reduce
1435 State 164 conflicts: 1 shift/reduce
1436 State 201 conflicts: 33 shift/reduce, 4 reduce/reduce
1437 State 206 conflicts: 1 shift/reduce
1438 State 240 conflicts: 1 shift/reduce
1439 State 335 conflicts: 9 shift/reduce, 2 reduce/reduce
1440 State 356 conflicts: 1 shift/reduce
1441 State 360 conflicts: 9 shift/reduce, 2 reduce/reduce
1442 State 427 conflicts: 9 shift/reduce, 2 reduce/reduce
1445 ## -------------------------------- ##
1446 ## GNU pic (Groff 1.18.1) Grammar. ##
1447 ## -------------------------------- ##
1449 # GNU pic, part of groff.
1451 # Bison once reported shift/reduce conflicts that it shouldn't have.
1453 AT_TEST_EXISTING_GRAMMAR([[GNU pic (Groff 1.18.1) Grammar]],
1464 %token LEFT_ARROW_HEAD
1465 %token RIGHT_ARROW_HEAD
1466 %token DOUBLE_ARROW_HEAD
1576 /* this ensures that plot 17 "%g" parses as (plot 17 "%g") */
1580 /* give text adjustments higher precedence than TEXT, so that
1581 box "foo" above ljust == box ("foo" above ljust)
1584 %left LJUST RJUST ABOVE BELOW
1587 /* Give attributes that take an optional expression a higher
1588 precedence than left and right, so that eg `line chop left'
1590 %left CHOP SOLID DASHED DOTTED UP DOWN FILL COLORED OUTLINED
1593 %left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND SRAND LAST
1594 %left ORDINAL HERE '`'
1596 %left BOX CIRCLE ELLIPSE ARC LINE ARROW SPLINE '[' /* ] */
1598 /* these need to be lower than '-' */
1599 %left HEIGHT RADIUS WIDTH DIAMETER FROM TO AT THICKNESS
1601 /* these must have higher precedence than CHOP so that `label %prec CHOP'
1603 %left DOT_N DOT_E DOT_W DOT_S DOT_NE DOT_SE DOT_NW DOT_SW DOT_C
1604 %left DOT_START DOT_END TOP BOTTOM LEFT_CORNER RIGHT_CORNER
1605 %left UPPER LOWER NORTH SOUTH EAST WEST CENTER START END
1610 %left EQUALEQUAL NOTEQUAL
1611 %left '<' '>' LESSEQUAL GREATEREQUAL
1628 optional_separator middle_element_list optional_separator
1631 middle_element_list:
1633 | middle_element_list separator element
1647 VARIABLE '=' any_expr
1648 | VARIABLE ':' '=' any_expr
1654 | COMMAND print_args
1670 | FOR VARIABLE '=' expr TO expr optional_by DO
1683 | reset_variables VARIABLE
1684 | reset_variables ',' VARIABLE
1689 | print_args print_arg
1695 | position %prec ','
1715 text EQUALEQUAL text
1716 | text NOTEQUAL text
1717 | text_expr ANDAND text_expr
1718 | text_expr ANDAND expr
1719 | expr ANDAND text_expr
1720 | text_expr OROR text_expr
1721 | text_expr OROR expr
1722 | expr OROR text_expr
1734 | LABEL ':' optional_separator element
1735 | LABEL ':' optional_separator position_not_place
1736 | LABEL ':' optional_separator place
1737 | '{' {} element_list '}'
1763 | object_spec HEIGHT expr
1764 | object_spec RADIUS expr
1765 | object_spec WIDTH expr
1766 | object_spec DIAMETER expr
1767 | object_spec expr %prec HEIGHT
1769 | object_spec UP expr
1771 | object_spec DOWN expr
1773 | object_spec RIGHT expr
1775 | object_spec LEFT expr
1776 | object_spec FROM position
1777 | object_spec TO position
1778 | object_spec AT position
1779 | object_spec WITH path
1780 | object_spec WITH position %prec ','
1781 | object_spec BY expr_pair
1784 | object_spec DOTTED
1785 | object_spec DOTTED expr
1786 | object_spec DASHED
1787 | object_spec DASHED expr
1789 | object_spec FILL expr
1790 | object_spec SHADED text
1791 | object_spec COLORED text
1792 | object_spec OUTLINED text
1794 | object_spec CHOP expr
1796 | object_spec INVISIBLE
1797 | object_spec LEFT_ARROW_HEAD
1798 | object_spec RIGHT_ARROW_HEAD
1799 | object_spec DOUBLE_ARROW_HEAD
1802 | object_spec text %prec TEXT
1807 | object_spec THICKNESS expr
1808 | object_spec ALIGNED
1813 | SPRINTF '(' TEXT sprintf_args ')'
1818 | sprintf_args ',' expr
1828 | position '+' expr_pair
1829 | position '-' expr_pair
1830 | '(' position ',' position ')'
1831 | expr between position AND position
1832 | expr '<' position ',' position '>'
1837 | OF THE WAY BETWEEN
1846 /* line at A left == line (at A) left */
1865 optional_ordinal_last:
1872 | optional_ordinal_last object_type
1889 | label_path '.' LABEL
1894 /* give this a lower precedence than LEFT and RIGHT so that
1895 [A: box] with .A left == [A: box] with (.A left) */
1896 | label_path %prec TEXT
1902 | '(' relative_path ',' relative_path ')'
1904 /* The rest of these rules are a compatibility sop. */
1905 | ORDINAL LAST object_type relative_path
1906 | LAST object_type relative_path
1907 | ORDINAL object_type relative_path
1908 | LABEL relative_path
1935 | UPPER RIGHT_CORNER
1936 | LOWER RIGHT_CORNER
1960 | '-' expr %prec '!'
1962 | SIN '(' any_expr ')'
1963 | COS '(' any_expr ')'
1964 | ATAN2 '(' any_expr ',' any_expr ')'
1965 | LOG '(' any_expr ')'
1966 | EXP '(' any_expr ')'
1967 | SQRT '(' any_expr ')'
1968 | K_MAX '(' any_expr ',' any_expr ')'
1969 | K_MIN '(' any_expr ',' any_expr ')'
1970 | INT '(' any_expr ')'
1971 | RAND '(' any_expr ')'
1973 | SRAND '(' any_expr ')'
1975 | expr LESSEQUAL expr
1977 | expr GREATEREQUAL expr
1978 | expr EQUALEQUAL expr
1979 | expr NOTEQUAL expr
1988 dnl For example, in pic:
1996 dnl Even using groff 1.19.2, the 3rd line above is a syntax error. Change
1997 dnl "left" to "right", and it still is. However, add "upper" or "lower" before
1998 dnl "left or "right" and it's accepted to mean ".nw", ".ne", ".sw", or ".se".
1999 dnl (There seem to be no aliases for "north" and "south" that can stand alone
2000 dnl without being followed by "of".)
2001 [[VARIABLE, '=', LABEL, LEFT, DOT_X]],
2004 [[input.y:471.11-48: warning: rule useless in parser due to conflicts: path: ORDINAL LAST object_type relative_path [-Wother]
2005 input.y:19.8-12: warning: useless associativity for LABEL [-Wother]
2006 input.y:20.8-15: warning: useless associativity for VARIABLE [-Wother]
2007 input.y:21.8-13: warning: useless associativity for NUMBER [-Wother]
2008 input.y:22.8-11: warning: useless associativity for TEXT [-Wother]
2009 input.y:25.8-14: warning: useless associativity for ORDINAL [-Wother]
2010 input.y:30.8-11: warning: useless associativity for LAST [-Wother]
2011 input.y:31.8-9: warning: useless associativity for UP [-Wother]
2012 input.y:32.8-11: warning: useless associativity for DOWN [-Wother]
2013 input.y:35.8-10: warning: useless associativity for BOX [-Wother]
2014 input.y:36.8-13: warning: useless associativity for CIRCLE [-Wother]
2015 input.y:37.8-14: warning: useless associativity for ELLIPSE [-Wother]
2016 input.y:38.8-10: warning: useless associativity for ARC [-Wother]
2017 input.y:39.8-11: warning: useless associativity for LINE [-Wother]
2018 input.y:40.8-12: warning: useless associativity for ARROW [-Wother]
2019 input.y:42.8-13: warning: useless associativity for SPLINE [-Wother]
2020 input.y:43.8-13: warning: useless associativity for HEIGHT [-Wother]
2021 input.y:44.8-13: warning: useless associativity for RADIUS [-Wother]
2022 input.y:45.8-12: warning: useless associativity for WIDTH [-Wother]
2023 input.y:46.8-15: warning: useless associativity for DIAMETER [-Wother]
2024 input.y:47.8-11: warning: useless associativity for FROM [-Wother]
2025 input.y:48.8-9: warning: useless associativity for TO [-Wother]
2026 input.y:49.8-9: warning: useless associativity for AT [-Wother]
2027 input.y:53.8-12: warning: useless associativity for SOLID [-Wother]
2028 input.y:54.8-13: warning: useless associativity for DOTTED [-Wother]
2029 input.y:55.8-13: warning: useless associativity for DASHED [-Wother]
2030 input.y:56.8-11: warning: useless associativity for CHOP [-Wother]
2031 input.y:59.8-12: warning: useless associativity for LJUST [-Wother]
2032 input.y:60.8-12: warning: useless associativity for RJUST [-Wother]
2033 input.y:61.8-12: warning: useless associativity for ABOVE [-Wother]
2034 input.y:62.8-12: warning: useless associativity for BELOW [-Wother]
2035 input.y:63.8-9: warning: useless associativity for OF [-Wother]
2036 input.y:66.8-14: warning: useless associativity for BETWEEN [-Wother]
2037 input.y:67.8-10: warning: useless associativity for AND [-Wother]
2038 input.y:68.8-11: warning: useless associativity for HERE [-Wother]
2039 input.y:69.8-12: warning: useless associativity for DOT_N [-Wother]
2040 input.y:70.8-12: warning: useless associativity for DOT_E [-Wother]
2041 input.y:71.8-12: warning: useless associativity for DOT_W [-Wother]
2042 input.y:72.8-12: warning: useless associativity for DOT_S [-Wother]
2043 input.y:73.8-13: warning: useless associativity for DOT_NE [-Wother]
2044 input.y:74.8-13: warning: useless associativity for DOT_SE [-Wother]
2045 input.y:75.8-13: warning: useless associativity for DOT_NW [-Wother]
2046 input.y:76.8-13: warning: useless associativity for DOT_SW [-Wother]
2047 input.y:77.8-12: warning: useless associativity for DOT_C [-Wother]
2048 input.y:78.8-16: warning: useless associativity for DOT_START [-Wother]
2049 input.y:79.8-14: warning: useless associativity for DOT_END [-Wother]
2050 input.y:85.8-10: warning: useless associativity for SIN [-Wother]
2051 input.y:86.8-10: warning: useless associativity for COS [-Wother]
2052 input.y:87.8-12: warning: useless associativity for ATAN2 [-Wother]
2053 input.y:88.8-10: warning: useless associativity for LOG [-Wother]
2054 input.y:89.8-10: warning: useless associativity for EXP [-Wother]
2055 input.y:90.8-11: warning: useless associativity for SQRT [-Wother]
2056 input.y:91.8-12: warning: useless associativity for K_MAX [-Wother]
2057 input.y:92.8-12: warning: useless associativity for K_MIN [-Wother]
2058 input.y:93.8-10: warning: useless associativity for INT [-Wother]
2059 input.y:94.8-11: warning: useless associativity for RAND [-Wother]
2060 input.y:95.8-12: warning: useless associativity for SRAND [-Wother]
2061 input.y:98.8-10: warning: useless associativity for TOP [-Wother]
2062 input.y:99.8-13: warning: useless associativity for BOTTOM [-Wother]
2063 input.y:100.8-12: warning: useless associativity for UPPER [-Wother]
2064 input.y:101.8-12: warning: useless associativity for LOWER [-Wother]
2065 input.y:116.8-18: warning: useless associativity for LEFT_CORNER [-Wother]
2066 input.y:117.8-19: warning: useless associativity for RIGHT_CORNER [-Wother]
2067 input.y:118.8-12: warning: useless associativity for NORTH [-Wother]
2068 input.y:119.8-12: warning: useless associativity for SOUTH [-Wother]
2069 input.y:120.8-11: warning: useless associativity for EAST [-Wother]
2070 input.y:121.8-11: warning: useless associativity for WEST [-Wother]
2071 input.y:122.8-13: warning: useless associativity for CENTER [-Wother]
2072 input.y:123.8-10: warning: useless associativity for END [-Wother]
2073 input.y:124.8-12: warning: useless associativity for START [-Wother]
2074 input.y:127.8-11: warning: useless associativity for PLOT [-Wother]
2075 input.y:128.8-16: warning: useless associativity for THICKNESS [-Wother]
2076 input.y:129.8-11: warning: useless associativity for FILL [-Wother]
2077 input.y:130.8-14: warning: useless associativity for COLORED [-Wother]
2078 input.y:131.8-15: warning: useless associativity for OUTLINED [-Wother]
2079 input.y:134.8-14: warning: useless associativity for SPRINTF [-Wother]
2080 input.y:137.7-9: warning: useless associativity for '.' [-Wother]
2081 input.y:156.23-25: warning: useless associativity for '(' [-Wother]
2082 input.y:157.20-22: warning: useless associativity for '`' [-Wother]
2083 input.y:159.48-50: warning: useless associativity for '@<:@' [-Wother]
2084 input.y:170.7-9: warning: useless associativity for ',' [-Wother]
2085 input.y:181.8-10: warning: useless associativity for '!' [-Wother]
2089 [AT_COND_CASE([[LALR]], [[422]], [[canonical LR]], [[4833]], [[427]])],
2091 dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge.
2092 dnl Isocore map from LALR(1) state number to new state number plus descriptions
2093 dnl of any change in the actions resulting in a change in accepted language:
2094 dnl - 102 -> 423: reduce -> shift on LEFT and RIGHT
2099 [AT_COND_CASE([[LALR]], [],
2100 [[@@ -1223,7 +1223,7 @@
2101 text_expr go to state 112
2102 text go to state 113
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 @@ -1377,7 +1377,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 @@ -1854,7 +1854,7 @@
2120 text go to state 162
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 @@ -2047,7 +2047,7 @@
2128 text_expr go to state 112
2129 text go to state 113
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 @@ -2571,7 +2571,7 @@
2137 position_not_place go to state 99
2138 expr_pair go to state 191
2139 place go to state 101
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 @@ -2732,7 +2732,7 @@
2146 text_expr go to state 112
2147 text go to state 113
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 @@ -2875,7 +2875,7 @@
2155 '!' shift, and go to state 94
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 @@ -3018,7 +3018,7 @@
2164 '!' shift, and go to state 94
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 @@ -3256,7 +3256,7 @@
2176 - 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, '(', '`', ',', '>', '+', '-', '!', ';', '}', '@:>@', ')']
2177 + 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, '(', '`', '+', '-', '!', ';', '}', '@:>@']
2178 147 | label . corner
2179 153 label: label . '.' LABEL
2181 @@ -3645,7 +3645,7 @@
2182 text_expr go to state 112
2183 text go to state 113
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 @@ -3804,7 +3804,7 @@
2191 text_expr go to state 239
2192 text go to state 113
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 @@ -4481,7 +4481,7 @@
2200 $default reduce using rule 89 (object_spec)
2202 place go to state 114
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 @@ -4673,7 +4673,7 @@
2209 $default reduce using rule 91 (object_spec)
2211 place go to state 114
2212 - label go to state 102
2213 + label go to state 423
2214 ordinal go to state 103
2215 optional_ordinal_last go to state 104
2216 nth_primitive go to state 105
2217 @@ -4867,7 +4867,7 @@
2218 $default reduce using rule 95 (object_spec)
2220 place go to state 114
2221 - label go to state 102
2222 + label go to state 423
2223 ordinal go to state 103
2224 optional_ordinal_last go to state 104
2225 nth_primitive go to state 105
2226 @@ -5065,7 +5065,7 @@
2227 $default reduce using rule 93 (object_spec)
2229 place go to state 114
2230 - label go to state 102
2231 + label go to state 423
2232 ordinal go to state 103
2233 optional_ordinal_last go to state 104
2234 nth_primitive go to state 105
2235 @@ -5260,7 +5260,7 @@
2236 '!' shift, and go to state 94
2238 place go to state 114
2239 - label go to state 102
2240 + label go to state 423
2241 ordinal go to state 103
2242 optional_ordinal_last go to state 104
2243 nth_primitive go to state 105
2244 @@ -5403,7 +5403,7 @@
2245 '!' shift, and go to state 94
2247 place go to state 114
2248 - label go to state 102
2249 + label go to state 423
2250 ordinal go to state 103
2251 optional_ordinal_last go to state 104
2252 nth_primitive go to state 105
2253 @@ -5546,7 +5546,7 @@
2254 '!' shift, and go to state 94
2256 place go to state 114
2257 - label go to state 102
2258 + label go to state 423
2259 ordinal go to state 103
2260 optional_ordinal_last go to state 104
2261 nth_primitive go to state 105
2262 @@ -5689,7 +5689,7 @@
2263 '!' shift, and go to state 94
2265 place go to state 114
2266 - label go to state 102
2267 + label go to state 423
2268 ordinal go to state 103
2269 optional_ordinal_last go to state 104
2270 nth_primitive go to state 105
2271 @@ -6475,7 +6475,7 @@
2273 expr_pair go to state 280
2274 place go to state 114
2275 - label go to state 102
2276 + label go to state 423
2277 ordinal go to state 103
2278 optional_ordinal_last go to state 104
2279 nth_primitive go to state 105
2280 @@ -6633,7 +6633,7 @@
2281 $default reduce using rule 105 (object_spec)
2283 place go to state 114
2284 - label go to state 102
2285 + label go to state 423
2286 ordinal go to state 103
2287 optional_ordinal_last go to state 104
2288 nth_primitive go to state 105
2289 @@ -6825,7 +6825,7 @@
2290 $default reduce using rule 107 (object_spec)
2292 place go to state 114
2293 - label go to state 102
2294 + label go to state 423
2295 ordinal go to state 103
2296 optional_ordinal_last go to state 104
2297 nth_primitive go to state 105
2298 @@ -7017,7 +7017,7 @@
2299 $default reduce using rule 114 (object_spec)
2301 place go to state 114
2302 - label go to state 102
2303 + label go to state 423
2304 ordinal go to state 103
2305 optional_ordinal_last go to state 104
2306 nth_primitive go to state 105
2307 @@ -7264,7 +7264,7 @@
2308 '!' shift, and go to state 94
2310 place go to state 114
2311 - label go to state 102
2312 + label go to state 423
2313 ordinal go to state 103
2314 optional_ordinal_last go to state 104
2315 nth_primitive go to state 105
2316 @@ -7408,7 +7408,7 @@
2317 $default reduce using rule 109 (object_spec)
2319 place go to state 114
2320 - label go to state 102
2321 + label go to state 423
2322 ordinal go to state 103
2323 optional_ordinal_last go to state 104
2324 nth_primitive go to state 105
2325 @@ -7819,12 +7819,12 @@
2326 position_not_place go to state 296
2327 expr_pair go to state 100
2328 place go to state 297
2329 - label go to state 102
2330 + label go to state 423
2331 ordinal go to state 103
2332 optional_ordinal_last go to state 104
2333 nth_primitive go to state 105
2334 corner go to state 106
2335 - expr go to state 266
2336 + expr go to state 424
2340 @@ -7987,7 +7987,7 @@
2341 text_expr go to state 112
2342 text go to state 113
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 @@ -8172,7 +8172,7 @@
2350 text_expr go to state 112
2351 text go to state 113
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 @@ -8333,7 +8333,7 @@
2359 text_expr go to state 112
2360 text go to state 113
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 @@ -8494,7 +8494,7 @@
2368 text_expr go to state 112
2369 text go to state 113
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 @@ -8655,7 +8655,7 @@
2377 text_expr go to state 112
2378 text go to state 113
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 @@ -8816,7 +8816,7 @@
2386 text_expr go to state 112
2387 text go to state 113
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 @@ -8977,7 +8977,7 @@
2395 text_expr go to state 112
2396 text go to state 113
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 @@ -9138,7 +9138,7 @@
2404 text_expr go to state 112
2405 text go to state 113
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 @@ -9299,7 +9299,7 @@
2413 text_expr go to state 112
2414 text go to state 113
2415 place go to state 114
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 @@ -9460,7 +9460,7 @@
2422 text_expr go to state 112
2423 text go to state 113
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 @@ -9623,7 +9623,7 @@
2431 text_expr go to state 112
2432 text go to state 113
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 @@ -9784,7 +9784,7 @@
2440 text_expr go to state 112
2441 text go to state 113
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 @@ -9921,7 +9921,7 @@
2450 $default reduce using rule 47 (any_expr)
2452 - between go to state 237
2453 + between go to state 425
2457 @@ -10152,7 +10152,7 @@
2459 expr_pair go to state 317
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 @@ -10298,7 +10298,7 @@
2468 expr_pair go to state 318
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 @@ -10622,7 +10622,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 @@ -10765,7 +10765,7 @@
2485 '!' shift, and go to state 94
2487 place go to state 114
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 @@ -10908,7 +10908,7 @@
2494 '!' shift, and go to state 94
2496 place go to state 114
2497 - label go to state 102
2498 + label go to state 423
2499 ordinal go to state 103
2500 optional_ordinal_last go to state 104
2501 nth_primitive go to state 105
2502 @@ -11051,7 +11051,7 @@
2503 '!' shift, and go to state 94
2505 place go to state 114
2506 - label go to state 102
2507 + label go to state 423
2508 ordinal go to state 103
2509 optional_ordinal_last go to state 104
2510 nth_primitive go to state 105
2511 @@ -11194,7 +11194,7 @@
2512 '!' shift, and go to state 94
2514 place go to state 114
2515 - label go to state 102
2516 + label go to state 423
2517 ordinal go to state 103
2518 optional_ordinal_last go to state 104
2519 nth_primitive go to state 105
2520 @@ -11337,7 +11337,7 @@
2521 '!' shift, and go to state 94
2523 place go to state 114
2524 - label go to state 102
2525 + label go to state 423
2526 ordinal go to state 103
2527 optional_ordinal_last go to state 104
2528 nth_primitive go to state 105
2529 @@ -11480,7 +11480,7 @@
2530 '!' shift, and go to state 94
2532 place go to state 114
2533 - label go to state 102
2534 + label go to state 423
2535 ordinal go to state 103
2536 optional_ordinal_last go to state 104
2537 nth_primitive go to state 105
2538 @@ -11637,7 +11637,7 @@
2539 position_not_place go to state 99
2540 expr_pair go to state 100
2541 place go to state 101
2542 - label go to state 102
2543 + label go to state 423
2544 ordinal go to state 103
2545 optional_ordinal_last go to state 104
2546 nth_primitive go to state 105
2547 @@ -11780,7 +11780,7 @@
2548 '!' shift, and go to state 94
2550 place go to state 114
2551 - label go to state 102
2552 + label go to state 423
2553 ordinal go to state 103
2554 optional_ordinal_last go to state 104
2555 nth_primitive go to state 105
2556 @@ -11923,7 +11923,7 @@
2557 '!' shift, and go to state 94
2559 place go to state 114
2560 - label go to state 102
2561 + label go to state 423
2562 ordinal go to state 103
2563 optional_ordinal_last go to state 104
2564 nth_primitive go to state 105
2565 @@ -12066,7 +12066,7 @@
2566 '!' shift, and go to state 94
2568 place go to state 114
2569 - label go to state 102
2570 + label go to state 423
2571 ordinal go to state 103
2572 optional_ordinal_last go to state 104
2573 nth_primitive go to state 105
2574 @@ -12209,7 +12209,7 @@
2575 '!' shift, and go to state 94
2577 place go to state 114
2578 - label go to state 102
2579 + label go to state 423
2580 ordinal go to state 103
2581 optional_ordinal_last go to state 104
2582 nth_primitive go to state 105
2583 @@ -12352,7 +12352,7 @@
2584 '!' shift, and go to state 94
2586 place go to state 114
2587 - label go to state 102
2588 + label go to state 423
2589 ordinal go to state 103
2590 optional_ordinal_last go to state 104
2591 nth_primitive go to state 105
2592 @@ -12495,7 +12495,7 @@
2593 '!' shift, and go to state 94
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 @@ -12638,7 +12638,7 @@
2602 '!' shift, and go to state 94
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 @@ -12794,12 +12794,12 @@
2611 position_not_place go to state 99
2612 expr_pair go to state 100
2613 place go to state 101
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 corner go to state 106
2620 - expr go to state 266
2621 + expr go to state 424
2625 @@ -12937,7 +12937,7 @@
2626 '!' shift, and go to state 94
2628 place go to state 114
2629 - label go to state 102
2630 + label go to state 423
2631 ordinal go to state 103
2632 optional_ordinal_last go to state 104
2633 nth_primitive go to state 105
2634 @@ -13160,7 +13160,7 @@
2635 text_expr go to state 342
2636 text go to state 113
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 @@ -13319,7 +13319,7 @@
2644 text_expr go to state 344
2645 text go to state 113
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 @@ -13502,7 +13502,7 @@
2653 text_expr go to state 348
2654 text go to state 113
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 @@ -13661,7 +13661,7 @@
2662 text_expr go to state 350
2663 text go to state 113
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 @@ -13804,7 +13804,7 @@
2671 '!' shift, and go to state 94
2673 place go to state 114
2674 - label go to state 102
2675 + label go to state 423
2676 ordinal go to state 103
2677 optional_ordinal_last go to state 104
2678 nth_primitive go to state 105
2679 @@ -14747,7 +14747,7 @@
2680 position_not_place go to state 99
2681 expr_pair go to state 191
2682 place go to state 101
2683 - label go to state 102
2684 + label go to state 423
2685 ordinal go to state 103
2686 optional_ordinal_last go to state 104
2687 nth_primitive go to state 105
2688 @@ -15074,7 +15074,7 @@
2689 text go to state 113
2690 expr_pair go to state 365
2691 place go to state 114
2692 - label go to state 102
2693 + label go to state 423
2694 ordinal go to state 103
2695 optional_ordinal_last go to state 104
2696 nth_primitive go to state 105
2697 @@ -15693,12 +15693,12 @@
2698 position_not_place go to state 99
2699 expr_pair go to state 100
2700 place go to state 101
2701 - label go to state 102
2702 + label go to state 423
2703 ordinal go to state 103
2704 optional_ordinal_last go to state 104
2705 nth_primitive go to state 105
2706 corner go to state 106
2707 - expr go to state 266
2708 + expr go to state 424
2712 @@ -16124,7 +16124,7 @@
2714 $default reduce using rule 239 (expr)
2716 - between go to state 237
2717 + between go to state 425
2719 Conflict between rule 239 and token OF resolved as shift ('<' < OF).
2720 Conflict between rule 239 and token BETWEEN resolved as shift ('<' < BETWEEN).
2721 @@ -17234,7 +17234,7 @@
2722 text_expr go to state 112
2723 text go to state 113
2724 place go to state 114
2725 - label go to state 102
2726 + label go to state 423
2727 ordinal go to state 103
2728 optional_ordinal_last go to state 104
2729 nth_primitive go to state 105
2730 @@ -17416,7 +17416,7 @@
2731 text_expr go to state 112
2732 text go to state 113
2733 place go to state 114
2734 - label go to state 102
2735 + label go to state 423
2736 ordinal go to state 103
2737 optional_ordinal_last go to state 104
2738 nth_primitive go to state 105
2739 @@ -17577,7 +17577,7 @@
2740 text_expr go to state 112
2741 text go to state 113
2742 place go to state 114
2743 - label go to state 102
2744 + label go to state 423
2745 ordinal go to state 103
2746 optional_ordinal_last go to state 104
2747 nth_primitive go to state 105
2748 @@ -17772,12 +17772,12 @@
2749 position_not_place go to state 99
2750 expr_pair go to state 100
2751 place go to state 101
2752 - label go to state 102
2753 + label go to state 423
2754 ordinal go to state 103
2755 optional_ordinal_last go to state 104
2756 nth_primitive go to state 105
2757 corner go to state 106
2758 - expr go to state 266
2759 + expr go to state 424
2763 @@ -18071,7 +18071,7 @@
2764 '!' shift, and go to state 94
2766 place go to state 114
2767 - label go to state 102
2768 + label go to state 423
2769 ordinal go to state 103
2770 optional_ordinal_last go to state 104
2771 nth_primitive go to state 105
2772 @@ -18221,7 +18221,7 @@
2773 '!' shift, and go to state 94
2775 place go to state 114
2776 - label go to state 102
2777 + label go to state 423
2778 ordinal go to state 103
2779 optional_ordinal_last go to state 104
2780 nth_primitive go to state 105
2781 @@ -18830,7 +18830,7 @@
2782 '!' shift, and go to state 94
2784 place go to state 114
2785 - label go to state 102
2786 + label go to state 423
2787 ordinal go to state 103
2788 optional_ordinal_last go to state 104
2789 nth_primitive go to state 105
2790 @@ -18987,7 +18987,7 @@
2791 '!' shift, and go to state 94
2793 place go to state 114
2794 - label go to state 102
2795 + label go to state 423
2796 ordinal go to state 103
2797 optional_ordinal_last go to state 104
2798 nth_primitive go to state 105
2799 @@ -19089,3 +19089,440 @@
2800 29 placeless_element: FOR VARIABLE '=' expr TO expr optional_by DO $@6 DELIMITED .
2802 $default reduce using rule 29 (placeless_element)
2807 + 146 place: label . [$end, AND, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, ',', '>', '+', '-', ';', '}', '@:>@', ')']
2808 + 147 | label . corner
2809 + 153 label: label . '.' LABEL
2810 + 180 corner: . DOT_N
2825 + 195 | . UPPER LEFT
2826 + 196 | . LOWER LEFT
2827 + 197 | . UPPER RIGHT
2828 + 198 | . LOWER RIGHT
2829 + 199 | . LEFT_CORNER
2830 + 200 | . RIGHT_CORNER
2831 + 201 | . UPPER LEFT_CORNER
2832 + 202 | . LOWER LEFT_CORNER
2833 + 203 | . UPPER RIGHT_CORNER
2834 + 204 | . LOWER RIGHT_CORNER
2843 + LEFT shift, and go to state 53
2844 + RIGHT shift, and go to state 54
2845 + DOT_N shift, and go to state 56
2846 + DOT_E shift, and go to state 57
2847 + DOT_W shift, and go to state 58
2848 + DOT_S shift, and go to state 59
2849 + DOT_NE shift, and go to state 60
2850 + DOT_SE shift, and go to state 61
2851 + DOT_NW shift, and go to state 62
2852 + DOT_SW shift, and go to state 63
2853 + DOT_C shift, and go to state 64
2854 + DOT_START shift, and go to state 65
2855 + DOT_END shift, and go to state 66
2856 + TOP shift, and go to state 78
2857 + BOTTOM shift, and go to state 79
2858 + UPPER shift, and go to state 80
2859 + LOWER shift, and go to state 81
2860 + LEFT_CORNER shift, and go to state 82
2861 + RIGHT_CORNER shift, and go to state 83
2862 + NORTH shift, and go to state 84
2863 + SOUTH shift, and go to state 85
2864 + EAST shift, and go to state 86
2865 + WEST shift, and go to state 87
2866 + CENTER shift, and go to state 88
2867 + END shift, and go to state 89
2868 + START shift, and go to state 90
2869 + '.' shift, and go to state 204
2871 + $default reduce using rule 146 (place)
2873 + corner go to state 205
2878 + 140 position_not_place: expr . between position AND position
2879 + 141 | expr . '<' position ',' position '>'
2880 + 142 between: . BETWEEN
2881 + 143 | . OF THE WAY BETWEEN
2882 + 144 expr_pair: expr . ',' expr
2883 + 219 expr: expr . '+' expr
2884 + 220 | expr . '-' expr
2885 + 221 | expr . '*' expr
2886 + 222 | expr . '/' expr
2887 + 223 | expr . '%' expr
2888 + 224 | expr . '^' expr
2889 + 239 | expr . '<' expr
2890 + 240 | expr . LESSEQUAL expr
2891 + 241 | expr . '>' expr
2892 + 242 | expr . GREATEREQUAL expr
2893 + 243 | expr . EQUALEQUAL expr
2894 + 244 | expr . NOTEQUAL expr
2895 + 245 | expr . ANDAND expr
2896 + 246 | expr . OROR expr
2898 + OF shift, and go to state 220
2899 + BETWEEN shift, and go to state 221
2900 + ANDAND shift, and go to state 222
2901 + OROR shift, and go to state 223
2902 + NOTEQUAL shift, and go to state 224
2903 + EQUALEQUAL shift, and go to state 225
2904 + LESSEQUAL shift, and go to state 226
2905 + GREATEREQUAL shift, and go to state 227
2906 + ',' shift, and go to state 228
2907 + '<' shift, and go to state 229
2908 + '>' shift, and go to state 230
2909 + '+' shift, and go to state 231
2910 + '-' shift, and go to state 232
2911 + '*' shift, and go to state 233
2912 + '/' shift, and go to state 234
2913 + '%' shift, and go to state 235
2914 + '^' shift, and go to state 236
2916 + between go to state 425
2921 + 134 position: . position_not_place
2923 + 136 position_not_place: . expr_pair
2924 + 137 | . position '+' expr_pair
2925 + 138 | . position '-' expr_pair
2926 + 139 | . '(' position ',' position ')'
2927 + 140 | . expr between position AND position
2928 + 140 | expr between . position AND position
2929 + 141 | . expr '<' position ',' position '>'
2930 + 144 expr_pair: . expr ',' expr
2931 + 145 | . '(' expr_pair ')'
2932 + 146 place: . label
2933 + 147 | . label corner
2934 + 148 | . corner label
2935 + 149 | . corner OF label
2937 + 151 label: . LABEL
2938 + 152 | . nth_primitive
2939 + 153 | . label '.' LABEL
2940 + 154 ordinal: . ORDINAL
2941 + 155 | . '`' any_expr TH
2942 + 156 optional_ordinal_last: . LAST
2943 + 157 | . ordinal LAST
2944 + 158 nth_primitive: . ordinal object_type
2945 + 159 | . optional_ordinal_last object_type
2946 + 180 corner: . DOT_N
2961 + 195 | . UPPER LEFT
2962 + 196 | . LOWER LEFT
2963 + 197 | . UPPER RIGHT
2964 + 198 | . LOWER RIGHT
2965 + 199 | . LEFT_CORNER
2966 + 200 | . RIGHT_CORNER
2967 + 201 | . UPPER LEFT_CORNER
2968 + 202 | . LOWER LEFT_CORNER
2969 + 203 | . UPPER RIGHT_CORNER
2970 + 204 | . LOWER RIGHT_CORNER
2978 + 212 expr: . VARIABLE
2980 + 214 | . place DOT_X
2981 + 215 | . place DOT_Y
2982 + 216 | . place DOT_HT
2983 + 217 | . place DOT_WID
2984 + 218 | . place DOT_RAD
2985 + 219 | . expr '+' expr
2986 + 220 | . expr '-' expr
2987 + 221 | . expr '*' expr
2988 + 222 | . expr '/' expr
2989 + 223 | . expr '%' expr
2990 + 224 | . expr '^' expr
2992 + 226 | . '(' any_expr ')'
2993 + 227 | . SIN '(' any_expr ')'
2994 + 228 | . COS '(' any_expr ')'
2995 + 229 | . ATAN2 '(' any_expr ',' any_expr ')'
2996 + 230 | . LOG '(' any_expr ')'
2997 + 231 | . EXP '(' any_expr ')'
2998 + 232 | . SQRT '(' any_expr ')'
2999 + 233 | . K_MAX '(' any_expr ',' any_expr ')'
3000 + 234 | . K_MIN '(' any_expr ',' any_expr ')'
3001 + 235 | . INT '(' any_expr ')'
3002 + 236 | . RAND '(' any_expr ')'
3003 + 237 | . RAND '(' ')'
3004 + 238 | . SRAND '(' any_expr ')'
3005 + 239 | . expr '<' expr
3006 + 240 | . expr LESSEQUAL expr
3007 + 241 | . expr '>' expr
3008 + 242 | . expr GREATEREQUAL expr
3009 + 243 | . expr EQUALEQUAL expr
3010 + 244 | . expr NOTEQUAL expr
3011 + 245 | . expr ANDAND expr
3012 + 246 | . expr OROR expr
3015 + LABEL shift, and go to state 48
3016 + VARIABLE shift, and go to state 49
3017 + NUMBER shift, and go to state 50
3018 + ORDINAL shift, and go to state 51
3019 + LAST shift, and go to state 52
3020 + LEFT shift, and go to state 53
3021 + RIGHT shift, and go to state 54
3022 + HERE shift, and go to state 55
3023 + DOT_N shift, and go to state 56
3024 + DOT_E shift, and go to state 57
3025 + DOT_W shift, and go to state 58
3026 + DOT_S shift, and go to state 59
3027 + DOT_NE shift, and go to state 60
3028 + DOT_SE shift, and go to state 61
3029 + DOT_NW shift, and go to state 62
3030 + DOT_SW shift, and go to state 63
3031 + DOT_C shift, and go to state 64
3032 + DOT_START shift, and go to state 65
3033 + DOT_END shift, and go to state 66
3034 + SIN shift, and go to state 67
3035 + COS shift, and go to state 68
3036 + ATAN2 shift, and go to state 69
3037 + LOG shift, and go to state 70
3038 + EXP shift, and go to state 71
3039 + SQRT shift, and go to state 72
3040 + K_MAX shift, and go to state 73
3041 + K_MIN shift, and go to state 74
3042 + INT shift, and go to state 75
3043 + RAND shift, and go to state 76
3044 + SRAND shift, and go to state 77
3045 + TOP shift, and go to state 78
3046 + BOTTOM shift, and go to state 79
3047 + UPPER shift, and go to state 80
3048 + LOWER shift, and go to state 81
3049 + LEFT_CORNER shift, and go to state 82
3050 + RIGHT_CORNER shift, and go to state 83
3051 + NORTH shift, and go to state 84
3052 + SOUTH shift, and go to state 85
3053 + EAST shift, and go to state 86
3054 + WEST shift, and go to state 87
3055 + CENTER shift, and go to state 88
3056 + END shift, and go to state 89
3057 + START shift, and go to state 90
3058 + '(' shift, and go to state 91
3059 + '`' shift, and go to state 92
3060 + '-' shift, and go to state 93
3061 + '!' shift, and go to state 94
3063 + position go to state 426
3064 + position_not_place go to state 99
3065 + expr_pair go to state 100
3066 + place go to state 101
3067 + label go to state 423
3068 + ordinal go to state 103
3069 + optional_ordinal_last go to state 104
3070 + nth_primitive go to state 105
3071 + corner go to state 106
3072 + expr go to state 424
3077 + 137 position_not_place: position . '+' expr_pair
3078 + 138 | position . '-' expr_pair
3079 + 140 | expr between position . AND position
3081 + AND shift, and go to state 427
3082 + '+' shift, and go to state 197
3083 + '-' shift, and go to state 198
3088 + 134 position: . position_not_place
3090 + 136 position_not_place: . expr_pair
3091 + 137 | . position '+' expr_pair
3092 + 138 | . position '-' expr_pair
3093 + 139 | . '(' position ',' position ')'
3094 + 140 | . expr between position AND position
3095 + 140 | expr between position AND . position
3096 + 141 | . expr '<' position ',' position '>'
3097 + 144 expr_pair: . expr ',' expr
3098 + 145 | . '(' expr_pair ')'
3099 + 146 place: . label
3100 + 147 | . label corner
3101 + 148 | . corner label
3102 + 149 | . corner OF label
3104 + 151 label: . LABEL
3105 + 152 | . nth_primitive
3106 + 153 | . label '.' LABEL
3107 + 154 ordinal: . ORDINAL
3108 + 155 | . '`' any_expr TH
3109 + 156 optional_ordinal_last: . LAST
3110 + 157 | . ordinal LAST
3111 + 158 nth_primitive: . ordinal object_type
3112 + 159 | . optional_ordinal_last object_type
3113 + 180 corner: . DOT_N
3128 + 195 | . UPPER LEFT
3129 + 196 | . LOWER LEFT
3130 + 197 | . UPPER RIGHT
3131 + 198 | . LOWER RIGHT
3132 + 199 | . LEFT_CORNER
3133 + 200 | . RIGHT_CORNER
3134 + 201 | . UPPER LEFT_CORNER
3135 + 202 | . LOWER LEFT_CORNER
3136 + 203 | . UPPER RIGHT_CORNER
3137 + 204 | . LOWER RIGHT_CORNER
3145 + 212 expr: . VARIABLE
3147 + 214 | . place DOT_X
3148 + 215 | . place DOT_Y
3149 + 216 | . place DOT_HT
3150 + 217 | . place DOT_WID
3151 + 218 | . place DOT_RAD
3152 + 219 | . expr '+' expr
3153 + 220 | . expr '-' expr
3154 + 221 | . expr '*' expr
3155 + 222 | . expr '/' expr
3156 + 223 | . expr '%' expr
3157 + 224 | . expr '^' expr
3159 + 226 | . '(' any_expr ')'
3160 + 227 | . SIN '(' any_expr ')'
3161 + 228 | . COS '(' any_expr ')'
3162 + 229 | . ATAN2 '(' any_expr ',' any_expr ')'
3163 + 230 | . LOG '(' any_expr ')'
3164 + 231 | . EXP '(' any_expr ')'
3165 + 232 | . SQRT '(' any_expr ')'
3166 + 233 | . K_MAX '(' any_expr ',' any_expr ')'
3167 + 234 | . K_MIN '(' any_expr ',' any_expr ')'
3168 + 235 | . INT '(' any_expr ')'
3169 + 236 | . RAND '(' any_expr ')'
3170 + 237 | . RAND '(' ')'
3171 + 238 | . SRAND '(' any_expr ')'
3172 + 239 | . expr '<' expr
3173 + 240 | . expr LESSEQUAL expr
3174 + 241 | . expr '>' expr
3175 + 242 | . expr GREATEREQUAL expr
3176 + 243 | . expr EQUALEQUAL expr
3177 + 244 | . expr NOTEQUAL expr
3178 + 245 | . expr ANDAND expr
3179 + 246 | . expr OROR expr
3182 + LABEL shift, and go to state 48
3183 + VARIABLE shift, and go to state 49
3184 + NUMBER shift, and go to state 50
3185 + ORDINAL shift, and go to state 51
3186 + LAST shift, and go to state 52
3187 + LEFT shift, and go to state 53
3188 + RIGHT shift, and go to state 54
3189 + HERE shift, and go to state 55
3190 + DOT_N shift, and go to state 56
3191 + DOT_E shift, and go to state 57
3192 + DOT_W shift, and go to state 58
3193 + DOT_S shift, and go to state 59
3194 + DOT_NE shift, and go to state 60
3195 + DOT_SE shift, and go to state 61
3196 + DOT_NW shift, and go to state 62
3197 + DOT_SW shift, and go to state 63
3198 + DOT_C shift, and go to state 64
3199 + DOT_START shift, and go to state 65
3200 + DOT_END shift, and go to state 66
3201 + SIN shift, and go to state 67
3202 + COS shift, and go to state 68
3203 + ATAN2 shift, and go to state 69
3204 + LOG shift, and go to state 70
3205 + EXP shift, and go to state 71
3206 + SQRT shift, and go to state 72
3207 + K_MAX shift, and go to state 73
3208 + K_MIN shift, and go to state 74
3209 + INT shift, and go to state 75
3210 + RAND shift, and go to state 76
3211 + SRAND shift, and go to state 77
3212 + TOP shift, and go to state 78
3213 + BOTTOM shift, and go to state 79
3214 + UPPER shift, and go to state 80
3215 + LOWER shift, and go to state 81
3216 + LEFT_CORNER shift, and go to state 82
3217 + RIGHT_CORNER shift, and go to state 83
3218 + NORTH shift, and go to state 84
3219 + SOUTH shift, and go to state 85
3220 + EAST shift, and go to state 86
3221 + WEST shift, and go to state 87
3222 + CENTER shift, and go to state 88
3223 + END shift, and go to state 89
3224 + START shift, and go to state 90
3225 + '(' shift, and go to state 91
3226 + '`' shift, and go to state 92
3227 + '-' shift, and go to state 93
3228 + '!' shift, and go to state 94
3230 + position go to state 402
3231 + position_not_place go to state 99
3232 + expr_pair go to state 100
3233 + place go to state 101
3234 + label go to state 423
3235 + ordinal go to state 103
3236 + optional_ordinal_last go to state 104
3237 + nth_primitive go to state 105
3238 + corner go to state 106
3239 + expr go to state 424
3245 dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
3246 [AT_COND_CASE([[LALR]], [[1]], [[0]])],
3248 [AT_COND_CASE([[LALR]],
3249 [[syntax error, unexpected LEFT