| # Exercising Bison on actual grammars. -*- Autotest -*- |
| |
| # Copyright (C) 1989-1992, 2000-2005, 2007, 2009-2012 Free Software |
| # Foundation, Inc. |
| |
| # This program is free software: you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation, either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| AT_BANNER([[Existing Grammars.]]) |
| |
| # AT_TEST_EXISTING_GRAMMAR(DESCRIPTION, |
| # DECLS, GRAMMAR, INPUT, |
| # BISON-STDERR, LAST-STATE, LALR1-DIFF, |
| # [OTHER-CHECKS], |
| # [PARSER-EXIT-VALUE], |
| # [PARSER-STDOUT], [PARSER-STDERR]) |
| # -------------------------------------------------------------- |
| m4_define([AT_TEST_EXISTING_GRAMMAR], [_AT_TEST_EXISTING_GRAMMAR([$][1], $@)]) |
| |
| m4_define([_AT_TEST_EXISTING_GRAMMAR], |
| [ |
| dnl See how the parser tables have changed. As the .output format evolves, the |
| dnl diff comments with line numbers might be a pain to maintain. When that |
| dnl time comes, just use sed to drop the line numbers. For now, as LR(1) |
| dnl support is rapidly evolving, let's keep that information to be careful. |
| dnl However, we don't do diffs for canonical LR(1) because the diff is huge. |
| m4_pushdef([AT_LALR1_DIFF_CHECK], |
| [dnl We need diff -u, which is not portable. |
| AT_CHECK([diff -u /dev/null /dev/null || exit 77], [0], [ignore]) |
| |
| AT_CHECK([[sed 's/^%define lr.type .*$//' input.y > input-lalr.y]]) |
| AT_BISON_CHECK([[--report=all input-lalr.y]], [[0]], [ignore], [ignore]) |
| AT_CHECK([[diff -u input-lalr.output input.output \ |
| | sed -n '/^@@/,$p' | sed 's/^ $//']], |
| [[0]], [$1])]) |
| |
| AT_TEST_TABLES_AND_PARSE([$2[: LALR(1)]], [[LALR]], [[last-state]], |
| [[%define lr.type lalr |
| ]$3], |
| [$4], [$5], [$6], [$7], |
| [AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12]) |
| AT_TEST_TABLES_AND_PARSE([$2[: IELR(1)]], [[IELR]], [[last-state]], |
| [[%define lr.type ielr |
| ]$3], |
| [$4], [$5], [$6], [$7], |
| [AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12]) |
| AT_TEST_TABLES_AND_PARSE([$2[: Canonical LR(1)]], [[canonical LR]], |
| [[last-state,no-xml]], |
| [[%define lr.type canonical-lr |
| ]$3], |
| [$4], [$5], [$6], [$7], |
| [$9], [$10], [$11], [$12]) |
| |
| m4_popdef([AT_LALR1_DIFF_CHECK]) |
| ]) |
| |
| |
| |
| ## ----------------------- ## |
| ## GNU AWK 3.1.0 Grammar. ## |
| ## ----------------------- ## |
| |
| # We have been careful to strip all the actions excepts the |
| # mid-rule actions. |
| # |
| # There are 65 SR conflicts. Bison was once wrong, due to an incorrect |
| # computation of nullable. It reported 485 SR conflicts! |
| |
| AT_TEST_EXISTING_GRAMMAR([[GNU AWK 3.1.0 Grammar]], |
| [[%error-verbose |
| |
| %token FUNC_CALL NAME REGEXP |
| %token ERROR |
| %token YNUMBER YSTRING |
| %token RELOP APPEND_OP |
| %token ASSIGNOP MATCHOP NEWLINE CONCAT_OP |
| %token LEX_BEGIN LEX_END LEX_IF LEX_ELSE LEX_RETURN LEX_DELETE |
| %token LEX_WHILE LEX_DO LEX_FOR LEX_BREAK LEX_CONTINUE |
| %token LEX_PRINT LEX_PRINTF LEX_NEXT LEX_EXIT LEX_FUNCTION |
| %token LEX_GETLINE LEX_NEXTFILE |
| %token LEX_IN |
| %token LEX_AND LEX_OR INCREMENT DECREMENT |
| %token LEX_BUILTIN LEX_LENGTH |
| |
| /* Lowest to highest */ |
| %right ASSIGNOP |
| %right '?' ':' |
| %left LEX_OR |
| %left LEX_AND |
| %left LEX_GETLINE |
| %nonassoc LEX_IN |
| %left FUNC_CALL LEX_BUILTIN LEX_LENGTH |
| %nonassoc ',' |
| %nonassoc MATCHOP |
| %nonassoc RELOP '<' '>' '|' APPEND_OP TWOWAYIO |
| %left CONCAT_OP |
| %left YSTRING YNUMBER |
| %left '+' '-' |
| %left '*' '/' '%' |
| %right '!' UNARY |
| %right '^' |
| %left INCREMENT DECREMENT |
| %left '$' |
| %left '(' ')' |
| ]], |
| [[ |
| start |
| : opt_nls program opt_nls |
| ; |
| |
| program |
| : rule |
| | program rule |
| | error |
| | program error |
| | /* empty */ |
| ; |
| |
| rule |
| : LEX_BEGIN {} action |
| | LEX_END {} action |
| | LEX_BEGIN statement_term |
| | LEX_END statement_term |
| | pattern action |
| | action |
| | pattern statement_term |
| | function_prologue function_body |
| ; |
| |
| func_name |
| : NAME |
| | FUNC_CALL |
| | lex_builtin |
| ; |
| |
| lex_builtin |
| : LEX_BUILTIN |
| | LEX_LENGTH |
| ; |
| |
| function_prologue |
| : LEX_FUNCTION {} func_name '(' opt_param_list r_paren opt_nls |
| ; |
| |
| function_body |
| : l_brace statements r_brace opt_semi opt_nls |
| | l_brace r_brace opt_semi opt_nls |
| ; |
| |
| pattern |
| : exp |
| | exp ',' exp |
| ; |
| |
| regexp |
| /* |
| * In this rule, want_regexp tells yylex that the next thing |
| * is a regexp so it should read up to the closing slash. |
| */ |
| : '/' {} REGEXP '/' |
| ; |
| |
| action |
| : l_brace statements r_brace opt_semi opt_nls |
| | l_brace r_brace opt_semi opt_nls |
| ; |
| |
| statements |
| : statement |
| | statements statement |
| | error |
| | statements error |
| ; |
| |
| statement_term |
| : nls |
| | semi opt_nls |
| ; |
| |
| statement |
| : semi opt_nls |
| | l_brace r_brace |
| | l_brace statements r_brace |
| | if_statement |
| | LEX_WHILE '(' exp r_paren opt_nls statement |
| | LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren opt_nls |
| | LEX_FOR '(' NAME LEX_IN NAME r_paren opt_nls statement |
| | LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement |
| | LEX_FOR '(' opt_exp semi opt_nls semi opt_nls opt_exp r_paren opt_nls statement |
| | LEX_BREAK statement_term |
| | LEX_CONTINUE statement_term |
| | print '(' expression_list r_paren output_redir statement_term |
| | print opt_rexpression_list output_redir statement_term |
| | LEX_NEXT statement_term |
| | LEX_NEXTFILE statement_term |
| | LEX_EXIT opt_exp statement_term |
| | LEX_RETURN {} opt_exp statement_term |
| | LEX_DELETE NAME '[' expression_list ']' statement_term |
| | LEX_DELETE NAME statement_term |
| | exp statement_term |
| ; |
| |
| print |
| : LEX_PRINT |
| | LEX_PRINTF |
| ; |
| |
| if_statement |
| : LEX_IF '(' exp r_paren opt_nls statement |
| | LEX_IF '(' exp r_paren opt_nls statement |
| LEX_ELSE opt_nls statement |
| ; |
| |
| nls |
| : NEWLINE |
| | nls NEWLINE |
| ; |
| |
| opt_nls |
| : /* empty */ |
| | nls |
| ; |
| |
| input_redir |
| : /* empty */ |
| | '<' simp_exp |
| ; |
| |
| output_redir |
| : /* empty */ |
| | '>' exp |
| | APPEND_OP exp |
| | '|' exp |
| | TWOWAYIO exp |
| ; |
| |
| opt_param_list |
| : /* empty */ |
| | param_list |
| ; |
| |
| param_list |
| : NAME |
| | param_list comma NAME |
| | error |
| | param_list error |
| | param_list comma error |
| ; |
| |
| /* optional expression, as in for loop */ |
| opt_exp |
| : /* empty */ |
| | exp |
| ; |
| |
| opt_rexpression_list |
| : /* empty */ |
| | rexpression_list |
| ; |
| |
| rexpression_list |
| : rexp |
| | rexpression_list comma rexp |
| | error |
| | rexpression_list error |
| | rexpression_list error rexp |
| | rexpression_list comma error |
| ; |
| |
| opt_expression_list |
| : /* empty */ |
| | expression_list |
| ; |
| |
| expression_list |
| : exp |
| | expression_list comma exp |
| | error |
| | expression_list error |
| | expression_list error exp |
| | expression_list comma error |
| ; |
| |
| /* Expressions, not including the comma operator. */ |
| exp : variable ASSIGNOP {} exp |
| | '(' expression_list r_paren LEX_IN NAME |
| | exp '|' LEX_GETLINE opt_variable |
| | exp TWOWAYIO LEX_GETLINE opt_variable |
| | LEX_GETLINE opt_variable input_redir |
| | exp LEX_AND exp |
| | exp LEX_OR exp |
| | exp MATCHOP exp |
| | regexp |
| | '!' regexp %prec UNARY |
| | exp LEX_IN NAME |
| | exp RELOP exp |
| | exp '<' exp |
| | exp '>' exp |
| | exp '?' exp ':' exp |
| | simp_exp |
| | exp simp_exp %prec CONCAT_OP |
| ; |
| |
| rexp |
| : variable ASSIGNOP {} rexp |
| | rexp LEX_AND rexp |
| | rexp LEX_OR rexp |
| | LEX_GETLINE opt_variable input_redir |
| | regexp |
| | '!' regexp %prec UNARY |
| | rexp MATCHOP rexp |
| | rexp LEX_IN NAME |
| | rexp RELOP rexp |
| | rexp '?' rexp ':' rexp |
| | simp_exp |
| | rexp simp_exp %prec CONCAT_OP |
| ; |
| |
| simp_exp |
| : non_post_simp_exp |
| /* Binary operators in order of decreasing precedence. */ |
| | simp_exp '^' simp_exp |
| | simp_exp '*' simp_exp |
| | simp_exp '/' simp_exp |
| | simp_exp '%' simp_exp |
| | simp_exp '+' simp_exp |
| | simp_exp '-' simp_exp |
| | variable INCREMENT |
| | variable DECREMENT |
| ; |
| |
| non_post_simp_exp |
| : '!' simp_exp %prec UNARY |
| | '(' exp r_paren |
| | LEX_BUILTIN |
| '(' opt_expression_list r_paren |
| | LEX_LENGTH '(' opt_expression_list r_paren |
| | LEX_LENGTH |
| | FUNC_CALL '(' opt_expression_list r_paren |
| | variable |
| | INCREMENT variable |
| | DECREMENT variable |
| | YNUMBER |
| | YSTRING |
| | '-' simp_exp %prec UNARY |
| | '+' simp_exp %prec UNARY |
| ; |
| |
| opt_variable |
| : /* empty */ |
| | variable |
| ; |
| |
| variable |
| : NAME |
| | NAME '[' expression_list ']' |
| | '$' non_post_simp_exp |
| ; |
| |
| l_brace |
| : '{' opt_nls |
| ; |
| |
| r_brace |
| : '}' opt_nls |
| ; |
| |
| r_paren |
| : ')' |
| ; |
| |
| opt_semi |
| : /* empty */ |
| | semi |
| ; |
| |
| semi |
| : ';' |
| ; |
| |
| comma : ',' opt_nls |
| ; |
| ]], |
| |
| dnl INPUT |
| dnl |
| dnl For example, in AWK: |
| dnl |
| dnl getline $!4*0; |
| dnl |
| dnl The grammar below (from GNU AWK 3.1.0) using canonical LR(1) or IELR(1) |
| dnl parses it as: |
| dnl |
| dnl getline $!(4*0); |
| dnl |
| dnl That is, they shift `*' immediately and make it part of the getline |
| dnl argument. |
| dnl |
| dnl The grammar below using LALR(1) parses it as a syntax error. So does |
| dnl GNU AWK 3.0.6, 3.1.0, and 3.1.1. They reduce the full getline expression |
| dnl before shifting `*' even though `*' is not a valid lookahead. |
| dnl |
| dnl GNU AWK 3.1.2, 3.1.3, 3.1.4, and 3.1.5 parse it as: |
| dnl |
| dnl (getline $!4)*0; |
| dnl |
| dnl That is, like the other versions of GNU AWK, they reduce the full getline |
| dnl expression before shifting `*'. However, because of a different LHS on the |
| dnl getline rule, `*' actually is a valid lookahead. Solaris /usr/xpg4/bin/awk |
| dnl and the Open Group awk specification seem to agree: |
| dnl |
| dnl http://www.opengroup.org/pubs/online/7908799/xcu/awk.html |
| dnl |
| dnl /bin/nawk and /bin/awk on Solaris 10 report it as a syntax error, but they |
| dnl don't like even `print $!4;'. |
| [[LEX_GETLINE, '$', '!', YNUMBER, '*', YNUMBER, ';']], |
| |
| dnl BISON-STDERR |
| [AT_COND_CASE([[canonical LR]], |
| [[input.y: conflicts: 265 shift/reduce]], |
| [[input.y: conflicts: 65 shift/reduce]])[ |
| ]], |
| |
| dnl LAST-STATE |
| [AT_COND_CASE([[LALR]], [[319]], [[canonical LR]], [[2358]], [[328]])], |
| |
| dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge. |
| dnl Isocore map from LALR(1) state number to new state number plus descriptions |
| dnl of any change in the actions resulting in a change in accepted language: |
| dnl - 24 -> 320 |
| dnl - 16 -> 321 |
| dnl - 17 -> 322 |
| dnl - 20 -> 323 |
| dnl - 21 -> 324 |
| dnl - 54 -> 325 |
| dnl - 56 -> 326: reduce -> shift on '*', '/', and '%' |
| dnl - 58 -> 327: reduce -> shift on '*', '/', and '%' |
| dnl - 61 -> 328: reduce -> shift on '*', '/', and '%' |
| [AT_COND_CASE([[LALR]], [], |
| [[@@ -712,7 +712,7 @@ |
| 156 | . '$' non_post_simp_exp |
| |
| NAME shift, and go to state 9 |
| - '$' shift, and go to state 24 |
| + '$' shift, and go to state 320 |
| |
| NAME [reduce using rule 152 (opt_variable)] |
| '$' [reduce using rule 152 (opt_variable)] |
| @@ -5379,7 +5379,7 @@ |
| 156 | . '$' non_post_simp_exp |
| |
| NAME shift, and go to state 9 |
| - '$' shift, and go to state 24 |
| + '$' shift, and go to state 320 |
| |
| NAME [reduce using rule 152 (opt_variable)] |
| '$' [reduce using rule 152 (opt_variable)] |
| @@ -5399,7 +5399,7 @@ |
| 156 | . '$' non_post_simp_exp |
| |
| NAME shift, and go to state 9 |
| - '$' shift, and go to state 24 |
| + '$' shift, and go to state 320 |
| |
| NAME [reduce using rule 152 (opt_variable)] |
| '$' [reduce using rule 152 (opt_variable)] |
| @@ -6214,7 +6214,7 @@ |
| 156 | . '$' non_post_simp_exp |
| |
| NAME shift, and go to state 9 |
| - '$' shift, and go to state 24 |
| + '$' shift, and go to state 320 |
| |
| NAME [reduce using rule 152 (opt_variable)] |
| '$' [reduce using rule 152 (opt_variable)] |
| @@ -11099,3 +11099,274 @@ |
| 45 statement: LEX_FOR '(' opt_exp semi opt_nls exp semi opt_nls opt_exp r_paren opt_nls statement . |
| |
| $default reduce using rule 45 (statement) |
| + |
| + |
| +State 320 |
| + |
| + 139 non_post_simp_exp: . '!' simp_exp |
| + 140 | . '(' exp r_paren |
| + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren |
| + 142 | . LEX_LENGTH '(' opt_expression_list r_paren |
| + 143 | . LEX_LENGTH |
| + 144 | . FUNC_CALL '(' opt_expression_list r_paren |
| + 145 | . variable |
| + 146 | . INCREMENT variable |
| + 147 | . DECREMENT variable |
| + 148 | . YNUMBER |
| + 149 | . YSTRING |
| + 150 | . '-' simp_exp |
| + 151 | . '+' simp_exp |
| + 154 variable: . NAME |
| + 155 | . NAME '[' expression_list ']' |
| + 156 | . '$' non_post_simp_exp |
| + 156 | '$' . non_post_simp_exp |
| + |
| + FUNC_CALL shift, and go to state 8 |
| + NAME shift, and go to state 9 |
| + YNUMBER shift, and go to state 10 |
| + YSTRING shift, and go to state 11 |
| + INCREMENT shift, and go to state 321 |
| + DECREMENT shift, and go to state 322 |
| + LEX_BUILTIN shift, and go to state 18 |
| + LEX_LENGTH shift, and go to state 19 |
| + '+' shift, and go to state 323 |
| + '-' shift, and go to state 324 |
| + '!' shift, and go to state 325 |
| + '$' shift, and go to state 320 |
| + '(' shift, and go to state 55 |
| + |
| + non_post_simp_exp go to state 62 |
| + variable go to state 63 |
| + |
| + |
| +State 321 |
| + |
| + 146 non_post_simp_exp: INCREMENT . variable |
| + 154 variable: . NAME |
| + 155 | . NAME '[' expression_list ']' |
| + 156 | . '$' non_post_simp_exp |
| + |
| + NAME shift, and go to state 9 |
| + '$' shift, and go to state 320 |
| + |
| + variable go to state 50 |
| + |
| + |
| +State 322 |
| + |
| + 147 non_post_simp_exp: DECREMENT . variable |
| + 154 variable: . NAME |
| + 155 | . NAME '[' expression_list ']' |
| + 156 | . '$' non_post_simp_exp |
| + |
| + NAME shift, and go to state 9 |
| + '$' shift, and go to state 320 |
| + |
| + variable go to state 51 |
| + |
| + |
| +State 323 |
| + |
| + 130 simp_exp: . non_post_simp_exp |
| + 131 | . simp_exp '^' simp_exp |
| + 132 | . simp_exp '*' simp_exp |
| + 133 | . simp_exp '/' simp_exp |
| + 134 | . simp_exp '%' simp_exp |
| + 135 | . simp_exp '+' simp_exp |
| + 136 | . simp_exp '-' simp_exp |
| + 137 | . variable INCREMENT |
| + 138 | . variable DECREMENT |
| + 139 non_post_simp_exp: . '!' simp_exp |
| + 140 | . '(' exp r_paren |
| + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren |
| + 142 | . LEX_LENGTH '(' opt_expression_list r_paren |
| + 143 | . LEX_LENGTH |
| + 144 | . FUNC_CALL '(' opt_expression_list r_paren |
| + 145 | . variable |
| + 146 | . INCREMENT variable |
| + 147 | . DECREMENT variable |
| + 148 | . YNUMBER |
| + 149 | . YSTRING |
| + 150 | . '-' simp_exp |
| + 151 | . '+' simp_exp |
| + 151 | '+' . simp_exp |
| + 154 variable: . NAME |
| + 155 | . NAME '[' expression_list ']' |
| + 156 | . '$' non_post_simp_exp |
| + |
| + FUNC_CALL shift, and go to state 8 |
| + NAME shift, and go to state 9 |
| + YNUMBER shift, and go to state 10 |
| + YSTRING shift, and go to state 11 |
| + INCREMENT shift, and go to state 16 |
| + DECREMENT shift, and go to state 17 |
| + LEX_BUILTIN shift, and go to state 18 |
| + LEX_LENGTH shift, and go to state 19 |
| + '+' shift, and go to state 20 |
| + '-' shift, and go to state 21 |
| + '!' shift, and go to state 54 |
| + '$' shift, and go to state 24 |
| + '(' shift, and go to state 55 |
| + |
| + simp_exp go to state 326 |
| + non_post_simp_exp go to state 35 |
| + variable go to state 57 |
| + |
| + |
| +State 324 |
| + |
| + 130 simp_exp: . non_post_simp_exp |
| + 131 | . simp_exp '^' simp_exp |
| + 132 | . simp_exp '*' simp_exp |
| + 133 | . simp_exp '/' simp_exp |
| + 134 | . simp_exp '%' simp_exp |
| + 135 | . simp_exp '+' simp_exp |
| + 136 | . simp_exp '-' simp_exp |
| + 137 | . variable INCREMENT |
| + 138 | . variable DECREMENT |
| + 139 non_post_simp_exp: . '!' simp_exp |
| + 140 | . '(' exp r_paren |
| + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren |
| + 142 | . LEX_LENGTH '(' opt_expression_list r_paren |
| + 143 | . LEX_LENGTH |
| + 144 | . FUNC_CALL '(' opt_expression_list r_paren |
| + 145 | . variable |
| + 146 | . INCREMENT variable |
| + 147 | . DECREMENT variable |
| + 148 | . YNUMBER |
| + 149 | . YSTRING |
| + 150 | . '-' simp_exp |
| + 150 | '-' . simp_exp |
| + 151 | . '+' simp_exp |
| + 154 variable: . NAME |
| + 155 | . NAME '[' expression_list ']' |
| + 156 | . '$' non_post_simp_exp |
| + |
| + FUNC_CALL shift, and go to state 8 |
| + NAME shift, and go to state 9 |
| + YNUMBER shift, and go to state 10 |
| + YSTRING shift, and go to state 11 |
| + INCREMENT shift, and go to state 16 |
| + DECREMENT shift, and go to state 17 |
| + LEX_BUILTIN shift, and go to state 18 |
| + LEX_LENGTH shift, and go to state 19 |
| + '+' shift, and go to state 20 |
| + '-' shift, and go to state 21 |
| + '!' shift, and go to state 54 |
| + '$' shift, and go to state 24 |
| + '(' shift, and go to state 55 |
| + |
| + simp_exp go to state 327 |
| + non_post_simp_exp go to state 35 |
| + variable go to state 57 |
| + |
| + |
| +State 325 |
| + |
| + 130 simp_exp: . non_post_simp_exp |
| + 131 | . simp_exp '^' simp_exp |
| + 132 | . simp_exp '*' simp_exp |
| + 133 | . simp_exp '/' simp_exp |
| + 134 | . simp_exp '%' simp_exp |
| + 135 | . simp_exp '+' simp_exp |
| + 136 | . simp_exp '-' simp_exp |
| + 137 | . variable INCREMENT |
| + 138 | . variable DECREMENT |
| + 139 non_post_simp_exp: . '!' simp_exp |
| + 139 | '!' . simp_exp |
| + 140 | . '(' exp r_paren |
| + 141 | . LEX_BUILTIN '(' opt_expression_list r_paren |
| + 142 | . LEX_LENGTH '(' opt_expression_list r_paren |
| + 143 | . LEX_LENGTH |
| + 144 | . FUNC_CALL '(' opt_expression_list r_paren |
| + 145 | . variable |
| + 146 | . INCREMENT variable |
| + 147 | . DECREMENT variable |
| + 148 | . YNUMBER |
| + 149 | . YSTRING |
| + 150 | . '-' simp_exp |
| + 151 | . '+' simp_exp |
| + 154 variable: . NAME |
| + 155 | . NAME '[' expression_list ']' |
| + 156 | . '$' non_post_simp_exp |
| + |
| + FUNC_CALL shift, and go to state 8 |
| + NAME shift, and go to state 9 |
| + YNUMBER shift, and go to state 10 |
| + YSTRING shift, and go to state 11 |
| + INCREMENT shift, and go to state 16 |
| + DECREMENT shift, and go to state 17 |
| + LEX_BUILTIN shift, and go to state 18 |
| + LEX_LENGTH shift, and go to state 19 |
| + '+' shift, and go to state 20 |
| + '-' shift, and go to state 21 |
| + '!' shift, and go to state 54 |
| + '$' shift, and go to state 24 |
| + '(' shift, and go to state 55 |
| + |
| + simp_exp go to state 328 |
| + non_post_simp_exp go to state 35 |
| + variable go to state 57 |
| + |
| + |
| +State 326 |
| + |
| + 131 simp_exp: simp_exp . '^' simp_exp |
| + 132 | simp_exp . '*' simp_exp |
| + 133 | simp_exp . '/' simp_exp |
| + 134 | simp_exp . '%' simp_exp |
| + 135 | simp_exp . '+' simp_exp |
| + 136 | simp_exp . '-' simp_exp |
| + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';'] |
| + |
| + '*' shift, and go to state 89 |
| + '/' shift, and go to state 90 |
| + '%' shift, and go to state 91 |
| + '^' shift, and go to state 92 |
| + |
| + $default reduce using rule 151 (non_post_simp_exp) |
| + |
| + Conflict between rule 151 and token '+' resolved as reduce ('+' < UNARY). |
| + Conflict between rule 151 and token '-' resolved as reduce ('-' < UNARY). |
| + |
| + |
| +State 327 |
| + |
| + 131 simp_exp: simp_exp . '^' simp_exp |
| + 132 | simp_exp . '*' simp_exp |
| + 133 | simp_exp . '/' simp_exp |
| + 134 | simp_exp . '%' simp_exp |
| + 135 | simp_exp . '+' simp_exp |
| + 136 | simp_exp . '-' simp_exp |
| + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';'] |
| + |
| + '*' shift, and go to state 89 |
| + '/' shift, and go to state 90 |
| + '%' shift, and go to state 91 |
| + '^' shift, and go to state 92 |
| + |
| + $default reduce using rule 150 (non_post_simp_exp) |
| + |
| + Conflict between rule 150 and token '+' resolved as reduce ('+' < UNARY). |
| + Conflict between rule 150 and token '-' resolved as reduce ('-' < UNARY). |
| + |
| + |
| +State 328 |
| + |
| + 131 simp_exp: simp_exp . '^' simp_exp |
| + 132 | simp_exp . '*' simp_exp |
| + 133 | simp_exp . '/' simp_exp |
| + 134 | simp_exp . '%' simp_exp |
| + 135 | simp_exp . '+' simp_exp |
| + 136 | simp_exp . '-' simp_exp |
| + 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, '+', '-', '!', '$', '(', ')', '@:>@', '{', ';'] |
| + |
| + '*' shift, and go to state 89 |
| + '/' shift, and go to state 90 |
| + '%' shift, and go to state 91 |
| + '^' shift, and go to state 92 |
| + |
| + $default reduce using rule 139 (non_post_simp_exp) |
| + |
| + Conflict between rule 139 and token '+' resolved as reduce ('+' < UNARY). |
| + Conflict between rule 139 and token '-' resolved as reduce ('-' < UNARY). |
| ]])], |
| |
| dnl OTHER-CHECKS |
| [], |
| |
| dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR |
| dnl In the case of the syntax error, the parser recovers, so it returns 0. |
| [[0]], |
| [], |
| [AT_COND_CASE([[LALR]], |
| [[syntax error, unexpected '*', expecting NEWLINE or '{' or ';' |
| ]])]) |
| |
| ## ----------------- ## |
| ## GNU Cim Grammar. ## |
| ## ----------------- ## |
| |
| # GNU Cim, the GNU Simula 87 Compiler. |
| |
| # Bison was once wrong, due to an incorrect computation of the RR conflicts. |
| # It reported 80 SR && 99 RR conflicts instead of 78/10!!! |
| |
| AT_TEST_EXISTING_GRAMMAR([[GNU Cim Grammar]], |
| [[ |
| %token |
| HACTIVATE HAFTER /*HAND*/ HARRAY HAT |
| HBEFORE HBEGIN HBOOLEAN |
| HCHARACTER HCLASS /*HCOMMENT*/ HCONC |
| HDELAY HDO |
| HELSE HEND HEQ /*HEQV*/ HEXTERNAL |
| HFOR |
| HGE HGO HGOTO HGT |
| HHIDDEN |
| HIF /*HIMP*/ HIN HINNER HINSPECT HINTEGER HIS |
| HLABEL HLE HLONG HLT |
| HNAME HNE HNEW HNONE /*HNOT*/ HNOTEXT |
| /*HOR*/ HOTHERWISE |
| HPRIOR HPROCEDURE HPROTECTED |
| HQUA |
| HREACTIVATE HREAL HREF |
| HSHORT HSTEP HSWITCH |
| HTEXT HTHEN HTHIS HTO |
| HUNTIL |
| HVALUE HVAR HVIRTUAL |
| HWHEN HWHILE |
| |
| HASSIGNVALUE HASSIGNREF |
| /*HDOT*/ HPAREXPSEPARATOR HLABELSEPARATOR HSTATEMENTSEPARATOR |
| HBEGPAR HENDPAR |
| HEQR HNER |
| HADD HSUB HMUL HDIV HINTDIV HEXP |
| HDOTDOTDOT |
| |
| %token HIDENTIFIER |
| %token HBOOLEANKONST HINTEGERKONST HCHARACTERKONST |
| %token HREALKONST |
| %token HTEXTKONST |
| |
| |
| %right HASSIGN |
| %left HORELSE |
| %left HANDTHEN |
| %left HEQV |
| %left HIMP |
| %left HOR |
| %left HAND |
| |
| %left HNOT |
| |
| %left HVALRELOPERATOR HREFRELOPERATOR HOBJRELOPERATOR |
| |
| %left HCONC |
| |
| %left HTERMOPERATOR |
| %left UNEAR |
| %left HFACTOROPERATOR |
| %left HPRIMARYOPERATOR |
| |
| %left HQUA |
| |
| %left HDOT |
| |
| %start MAIN_MODULE |
| ]], |
| [[ |
| /* GRAMATIKK FOR PROGRAM MODULES */ |
| MAIN_MODULE : {} |
| MODULS |
| | error HSTATEMENTSEPARATOR MBEE_DECLSTMS |
| ; |
| EXT_DECLARATION : HEXTERNAL |
| MBEE_TYPE |
| HPROCEDURE |
| {} |
| EXT_LIST |
| | |
| HEXTERNAL |
| HIDENTIFIER |
| HPROCEDURE |
| {} |
| HIDENTIFIER {} |
| EXTERNAL_KIND_ITEM |
| | HEXTERNAL |
| HCLASS |
| {} |
| EXT_LIST |
| |
| ; |
| EXTERNAL_KIND_ITEM: EXT_IDENT |
| HOBJRELOPERATOR |
| {} |
| MBEE_TYPE HPROCEDURE |
| HIDENTIFIER |
| {} |
| HEADING EMPTY_BLOCK |
| {} |
| /* | |
| EXT_IDENT |
| {} |
| MBEE_REST_EXT_LIST |
| ; |
| MBEE_REST_EXT_LIST: /* EMPTY |
| | HPAREXPSEPARATOR EXT_KIND_LIST |
| ; |
| EXT_KIND_LIST : EXT_KIND_ITEM |
| | EXT_KIND_LIST HPAREXPSEPARATOR EXT_KIND_ITEM |
| ; |
| EXT_KIND_ITEM : HIDENTIFIER |
| EXT_IDENT |
| {}*/ |
| ; |
| EMPTY_BLOCK : /*EMPT*/ |
| | HBEGIN HEND |
| ; |
| EXT_LIST : EXT_ITEM |
| | EXT_LIST HPAREXPSEPARATOR EXT_ITEM |
| ; |
| EXT_ITEM : HIDENTIFIER |
| EXT_IDENT |
| ; |
| EXT_IDENT : /* EMPTY */ |
| | HVALRELOPERATOR {} |
| HTEXTKONST |
| ; |
| /* GRAMATIKK FOR TYPER */ |
| NO_TYPE : /*EMPT*/ |
| ; |
| MBEE_TYPE : NO_TYPE |
| | TYPE |
| ; |
| TYPE : HREF HBEGPAR |
| HIDENTIFIER |
| {} |
| HENDPAR |
| | HTEXT |
| | HBOOLEAN |
| | HCHARACTER |
| | HSHORT HINTEGER |
| | HINTEGER |
| | HREAL |
| | HLONG HREAL |
| ; |
| |
| /* GRAMATIKK FOR DEL AV SETNINGER */ |
| MBEE_ELSE_PART : /*EMPT*/ |
| /* | HELSE |
| HIF |
| EXPRESSION |
| HTHEN {} |
| BLOCK {} |
| MBEE_ELSE_PART {}*/ |
| | HELSE {} |
| BLOCK |
| ; |
| FOR_LIST : FOR_LIST_ELEMENT |
| | FOR_LIST_ELEMENT |
| HPAREXPSEPARATOR |
| FOR_LIST |
| ; |
| FOR_LIST_ELEMENT: EXPRESSION |
| MBEE_F_L_EL_R_PT |
| ; |
| MBEE_F_L_EL_R_PT: /*EMPT*/ |
| | HWHILE |
| EXPRESSION |
| | HSTEP |
| EXPRESSION |
| HUNTIL |
| EXPRESSION |
| ; |
| GOTO : HGO |
| HTO |
| | HGOTO |
| ; |
| CONN_STATE_R_PT : WHEN_CLAUSE_LIST |
| | HDO {} |
| BLOCK |
| ; |
| WHEN_CLAUSE_LIST: HWHEN |
| HIDENTIFIER |
| HDO {} |
| BLOCK |
| | WHEN_CLAUSE_LIST |
| HWHEN |
| HIDENTIFIER |
| HDO {} |
| BLOCK |
| ; |
| MBEE_OTWI_CLAUS : /*EMPT*/ |
| | HOTHERWISE {} |
| |
| BLOCK |
| ; |
| ACTIVATOR : HACTIVATE |
| | HREACTIVATE |
| ; |
| SCHEDULE : /*EMPT*/ |
| | ATDELAY EXPRESSION {} |
| PRIOR |
| | BEFOREAFTER {} |
| EXPRESSION |
| ; |
| ATDELAY : HAT |
| | HDELAY |
| ; |
| BEFOREAFTER : HBEFORE |
| | HAFTER |
| ; |
| PRIOR : /*EMPT*/ |
| | HPRIOR |
| ; |
| /* GRAMATIKK FOR SETNINGER OG DEKLARASJONER */ |
| MODULSTATEMENT : HWHILE |
| EXPRESSION |
| HDO {} |
| BLOCK |
| | HIF |
| EXPRESSION |
| HTHEN {} |
| BLOCK {} |
| MBEE_ELSE_PART |
| | HFOR |
| HIDENTIFIER |
| HASSIGN {} |
| FOR_LIST |
| HDO {} |
| BLOCK |
| | GOTO |
| EXPRESSION |
| | HINSPECT |
| EXPRESSION {} |
| CONN_STATE_R_PT |
| {} |
| MBEE_OTWI_CLAUS |
| | HINNER |
| | HIDENTIFIER |
| HLABELSEPARATOR |
| {} |
| DECLSTATEMENT |
| | EXPRESSION_SIMP |
| HBEGIN |
| {} |
| IMPORT_SPEC_MODULE |
| {} |
| MBEE_DECLSTMS |
| HEND |
| | EXPRESSION_SIMP HBEGIN error HSTATEMENTSEPARATOR |
| MBEE_DECLSTMS HEND |
| | EXPRESSION_SIMP HBEGIN error HEND |
| | EXPRESSION_SIMP |
| | ACTIVATOR EXPRESSION SCHEDULE |
| | HBEGIN |
| {} |
| MBEE_DECLSTMS |
| HEND |
| | MBEE_TYPE HPROCEDURE |
| HIDENTIFIER |
| {} |
| HEADING BLOCK |
| | HIDENTIFIER |
| HCLASS |
| NO_TYPE |
| {} |
| IMPORT_SPEC_MODULE |
| HIDENTIFIER |
| {} |
| HEADING |
| BLOCK |
| | HCLASS |
| NO_TYPE |
| HIDENTIFIER |
| {} |
| HEADING |
| BLOCK |
| | EXT_DECLARATION |
| | /*EMPT*/ |
| ; |
| IMPORT_SPEC_MODULE: |
| ; |
| DECLSTATEMENT : MODULSTATEMENT |
| | TYPE |
| HIDENTIFIER |
| MBEE_CONSTANT |
| HPAREXPSEPARATOR |
| {} |
| IDENTIFIER_LISTC |
| | TYPE |
| HIDENTIFIER |
| MBEE_CONSTANT |
| | MBEE_TYPE |
| HARRAY {} |
| ARR_SEGMENT_LIST |
| | HSWITCH |
| HIDENTIFIER |
| HASSIGN {} |
| SWITCH_LIST |
| ; |
| BLOCK : DECLSTATEMENT |
| | HBEGIN MBEE_DECLSTMS HEND |
| | HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND |
| | HBEGIN error HEND |
| ; |
| MBEE_DECLSTMS : MBEE_DECLSTMSU |
| ; |
| MBEE_DECLSTMSU : DECLSTATEMENT |
| | MBEE_DECLSTMSU |
| HSTATEMENTSEPARATOR |
| DECLSTATEMENT |
| ; |
| MODULS : MODULSTATEMENT |
| | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT |
| ; |
| /* GRAMATIKK FOR DEL AV DEKLARASJONER */ |
| ARR_SEGMENT_LIST: ARR_SEGMENT |
| | ARR_SEGMENT_LIST |
| HPAREXPSEPARATOR |
| ARR_SEGMENT |
| ; |
| ARR_SEGMENT : ARRAY_SEGMENT |
| HBEGPAR |
| BAUND_PAIR_LIST HENDPAR |
| ; |
| ARRAY_SEGMENT : ARRAY_SEGMENT_EL {} |
| |
| | ARRAY_SEGMENT_EL |
| HPAREXPSEPARATOR |
| ARRAY_SEGMENT |
| ; |
| ARRAY_SEGMENT_EL: HIDENTIFIER |
| ; |
| BAUND_PAIR_LIST : BAUND_PAIR |
| | BAUND_PAIR |
| HPAREXPSEPARATOR |
| BAUND_PAIR_LIST |
| ; |
| BAUND_PAIR : EXPRESSION |
| HLABELSEPARATOR |
| EXPRESSION |
| ; |
| SWITCH_LIST : EXPRESSION |
| | EXPRESSION |
| HPAREXPSEPARATOR |
| SWITCH_LIST |
| ; |
| HEADING : MBEE_FMAL_PAR_P HSTATEMENTSEPARATOR {} |
| MBEE_MODE_PART {} |
| MBEE_SPEC_PART {} |
| MBEE_PROT_PART {} |
| MBEE_VIRT_PART |
| ; |
| MBEE_FMAL_PAR_P : /*EMPT*/ |
| | FMAL_PAR_PART |
| ; |
| FMAL_PAR_PART : HBEGPAR NO_TYPE |
| MBEE_LISTV HENDPAR |
| ; |
| MBEE_LISTV : /*EMPT*/ |
| | LISTV |
| ; |
| LISTV : HIDENTIFIER |
| | FPP_CATEG HDOTDOTDOT |
| | HIDENTIFIER {} |
| HPAREXPSEPARATOR LISTV |
| | FPP_SPEC |
| | FPP_SPEC |
| HPAREXPSEPARATOR LISTV |
| ; |
| FPP_HEADING : HBEGPAR NO_TYPE |
| FPP_MBEE_LISTV HENDPAR |
| ; |
| FPP_MBEE_LISTV : /*EMPT*/ |
| | FPP_LISTV |
| ; |
| FPP_LISTV : FPP_CATEG HDOTDOTDOT |
| | FPP_SPEC |
| | FPP_SPEC |
| HPAREXPSEPARATOR LISTV |
| ; |
| FPP_SPEC : FPP_CATEG SPECIFIER HIDENTIFIER |
| | FPP_CATEG FPP_PROC_DECL_IN_SPEC |
| ; |
| FPP_CATEG : HNAME HLABELSEPARATOR |
| | HVALUE HLABELSEPARATOR |
| | HVAR HLABELSEPARATOR |
| | /*EMPT*/ |
| ; |
| FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE |
| HIDENTIFIER |
| {} |
| FPP_HEADING {} { /* Yes, two "final" actions. */ } |
| ; |
| IDENTIFIER_LISTV: HIDENTIFIER |
| | HDOTDOTDOT |
| | HIDENTIFIER {} |
| HPAREXPSEPARATOR IDENTIFIER_LISTV |
| ; |
| MBEE_MODE_PART : /*EMPT*/ |
| | MODE_PART |
| ; |
| MODE_PART : NAME_PART |
| | VALUE_PART |
| | VAR_PART |
| | NAME_PART VALUE_PART |
| | VALUE_PART NAME_PART |
| | NAME_PART VAR_PART |
| | VAR_PART NAME_PART |
| | VALUE_PART VAR_PART |
| | VAR_PART VALUE_PART |
| | VAR_PART NAME_PART VALUE_PART |
| | NAME_PART VAR_PART VALUE_PART |
| | NAME_PART VALUE_PART VAR_PART |
| | VAR_PART VALUE_PART NAME_PART |
| | VALUE_PART VAR_PART NAME_PART |
| | VALUE_PART NAME_PART VAR_PART |
| ; |
| NAME_PART : HNAME {} |
| IDENTIFIER_LISTV |
| HSTATEMENTSEPARATOR |
| ; |
| VAR_PART : HVAR {} |
| IDENTIFIER_LISTV |
| HSTATEMENTSEPARATOR |
| ; |
| VALUE_PART : HVALUE {} |
| IDENTIFIER_LISTV HSTATEMENTSEPARATOR |
| ; |
| MBEE_SPEC_PART : /*EMPT*/ |
| | SPEC_PART |
| ; |
| SPEC_PART : ONE_SPEC |
| | SPEC_PART ONE_SPEC |
| ; |
| ONE_SPEC : SPECIFIER IDENTIFIER_LIST HSTATEMENTSEPARATOR |
| | NO_TYPE HPROCEDURE HIDENTIFIER HOBJRELOPERATOR |
| {} |
| PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR |
| | FPP_PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR |
| | MBEE_TYPE HPROCEDURE HIDENTIFIER HSTATEMENTSEPARATOR |
| | MBEE_TYPE HPROCEDURE HIDENTIFIER HPAREXPSEPARATOR |
| IDENTIFIER_LIST HSTATEMENTSEPARATOR |
| ; |
| SPECIFIER : TYPE |
| | MBEE_TYPE |
| HARRAY |
| | HLABEL |
| | HSWITCH |
| ; |
| PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE |
| HIDENTIFIER |
| {} |
| HEADING |
| {} |
| MBEE_BEGIN_END |
| ; |
| MBEE_BEGIN_END : /* EMPTY */ |
| | HBEGIN HEND |
| ; |
| MBEE_PROT_PART : /*EMPT*/ |
| | PROTECTION_PART |
| ; |
| PROTECTION_PART : PROT_SPECIFIER IDENTIFIER_LIST |
| HSTATEMENTSEPARATOR |
| | PROTECTION_PART PROT_SPECIFIER |
| IDENTIFIER_LIST HSTATEMENTSEPARATOR |
| ; |
| PROT_SPECIFIER : HHIDDEN |
| | HPROTECTED |
| | HHIDDEN |
| HPROTECTED |
| | HPROTECTED |
| HHIDDEN |
| ; |
| MBEE_VIRT_PART : /*EMPT*/ |
| | VIRTUAL_PART |
| ; |
| VIRTUAL_PART : HVIRTUAL |
| HLABELSEPARATOR |
| MBEE_SPEC_PART |
| ; |
| IDENTIFIER_LIST : HIDENTIFIER |
| | IDENTIFIER_LIST HPAREXPSEPARATOR |
| HIDENTIFIER |
| ; |
| IDENTIFIER_LISTC: HIDENTIFIER |
| MBEE_CONSTANT |
| | IDENTIFIER_LISTC HPAREXPSEPARATOR |
| HIDENTIFIER |
| MBEE_CONSTANT |
| ; |
| MBEE_CONSTANT : /* EMPTY */ |
| | HVALRELOPERATOR |
| {} |
| EXPRESSION |
| ; |
| |
| /* GRAMATIKK FOR UTTRYKK */ |
| EXPRESSION : EXPRESSION_SIMP |
| | HIF |
| EXPRESSION |
| HTHEN |
| EXPRESSION |
| HELSE |
| EXPRESSION |
| ; |
| EXPRESSION_SIMP : EXPRESSION_SIMP |
| HASSIGN |
| EXPRESSION |
| | |
| |
| EXPRESSION_SIMP |
| HCONC |
| EXPRESSION_SIMP |
| | EXPRESSION_SIMP HOR |
| HELSE |
| EXPRESSION_SIMP |
| %prec HORELSE |
| | EXPRESSION_SIMP HAND |
| HTHEN |
| EXPRESSION_SIMP |
| %prec HANDTHEN |
| | EXPRESSION_SIMP |
| HEQV EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HIMP EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HOR EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HAND EXPRESSION_SIMP |
| | HNOT EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HVALRELOPERATOR |
| EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HREFRELOPERATOR |
| EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HOBJRELOPERATOR |
| EXPRESSION_SIMP |
| | HTERMOPERATOR |
| EXPRESSION_SIMP %prec UNEAR |
| | EXPRESSION_SIMP |
| HTERMOPERATOR |
| EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HFACTOROPERATOR |
| EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HPRIMARYOPERATOR |
| EXPRESSION_SIMP |
| | HBEGPAR |
| EXPRESSION HENDPAR |
| | HTEXTKONST |
| | HCHARACTERKONST |
| | HREALKONST |
| | HINTEGERKONST |
| | HBOOLEANKONST |
| | HNONE |
| | HIDENTIFIER |
| {} |
| MBEE_ARG_R_PT |
| | HTHIS HIDENTIFIER |
| | HNEW |
| HIDENTIFIER |
| ARG_R_PT |
| | EXPRESSION_SIMP |
| HDOT |
| EXPRESSION_SIMP |
| | EXPRESSION_SIMP |
| HQUA HIDENTIFIER |
| ; |
| ARG_R_PT : /*EMPTY*/ |
| | HBEGPAR |
| ARGUMENT_LIST HENDPAR |
| ; |
| MBEE_ARG_R_PT : /*EMPTY*/ |
| | HBEGPAR |
| ARGUMENT_LIST HENDPAR |
| ; |
| ARGUMENT_LIST : EXPRESSION |
| | EXPRESSION |
| HPAREXPSEPARATOR |
| ARGUMENT_LIST |
| ; |
| ]], |
| |
| dnl INPUT |
| [[]], |
| |
| dnl BISON-STDERR |
| [AT_COND_CASE([[canonical LR]], |
| [[input.y: conflicts: 1876 shift/reduce, 144 reduce/reduce]], |
| [[input.y: conflicts: 78 shift/reduce, 10 reduce/reduce]])[ |
| ]], |
| |
| dnl LAST-STATE |
| [AT_COND_CASE([[canonical LR]], [[10425]], [[442]])], |
| |
| dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge. |
| [], |
| |
| dnl OTHER-CHECKS |
| [AT_COND_CASE([[canonical LR]], [[]], |
| [AT_CHECK([[grep '^State.*conflicts:' input.output]], [[0]], |
| [[State 64 conflicts: 14 shift/reduce |
| State 164 conflicts: 1 shift/reduce |
| State 201 conflicts: 33 shift/reduce, 4 reduce/reduce |
| State 206 conflicts: 1 shift/reduce |
| State 240 conflicts: 1 shift/reduce |
| State 335 conflicts: 9 shift/reduce, 2 reduce/reduce |
| State 356 conflicts: 1 shift/reduce |
| State 360 conflicts: 9 shift/reduce, 2 reduce/reduce |
| State 427 conflicts: 9 shift/reduce, 2 reduce/reduce |
| ]])])]) |
| |
| ## -------------------------------- ## |
| ## GNU pic (Groff 1.18.1) Grammar. ## |
| ## -------------------------------- ## |
| |
| # GNU pic, part of groff. |
| |
| # Bison once reported shift/reduce conflicts that it shouldn't have. |
| |
| AT_TEST_EXISTING_GRAMMAR([[GNU pic (Groff 1.18.1) Grammar]], |
| [[%error-verbose |
| |
| %token LABEL |
| %token VARIABLE |
| %token NUMBER |
| %token TEXT |
| %token COMMAND_LINE |
| %token DELIMITED |
| %token ORDINAL |
| %token TH |
| %token LEFT_ARROW_HEAD |
| %token RIGHT_ARROW_HEAD |
| %token DOUBLE_ARROW_HEAD |
| %token LAST |
| %token UP |
| %token DOWN |
| %token LEFT |
| %token RIGHT |
| %token BOX |
| %token CIRCLE |
| %token ELLIPSE |
| %token ARC |
| %token LINE |
| %token ARROW |
| %token MOVE |
| %token SPLINE |
| %token HEIGHT |
| %token RADIUS |
| %token WIDTH |
| %token DIAMETER |
| %token FROM |
| %token TO |
| %token AT |
| %token WITH |
| %token BY |
| %token THEN |
| %token SOLID |
| %token DOTTED |
| %token DASHED |
| %token CHOP |
| %token SAME |
| %token INVISIBLE |
| %token LJUST |
| %token RJUST |
| %token ABOVE |
| %token BELOW |
| %token OF |
| %token THE |
| %token WAY |
| %token BETWEEN |
| %token AND |
| %token HERE |
| %token DOT_N |
| %token DOT_E |
| %token DOT_W |
| %token DOT_S |
| %token DOT_NE |
| %token DOT_SE |
| %token DOT_NW |
| %token DOT_SW |
| %token DOT_C |
| %token DOT_START |
| %token DOT_END |
| %token DOT_X |
| %token DOT_Y |
| %token DOT_HT |
| %token DOT_WID |
| %token DOT_RAD |
| %token SIN |
| %token COS |
| %token ATAN2 |
| %token LOG |
| %token EXP |
| %token SQRT |
| %token K_MAX |
| %token K_MIN |
| %token INT |
| %token RAND |
| %token SRAND |
| %token COPY |
| %token THROUGH |
| %token TOP |
| %token BOTTOM |
| %token UPPER |
| %token LOWER |
| %token SH |
| %token PRINT |
| %token CW |
| %token CCW |
| %token FOR |
| %token DO |
| %token IF |
| %token ELSE |
| %token ANDAND |
| %token OROR |
| %token NOTEQUAL |
| %token EQUALEQUAL |
| %token LESSEQUAL |
| %token GREATEREQUAL |
| %token LEFT_CORNER |
| %token RIGHT_CORNER |
| %token NORTH |
| %token SOUTH |
| %token EAST |
| %token WEST |
| %token CENTER |
| %token END |
| %token START |
| %token RESET |
| %token UNTIL |
| %token PLOT |
| %token THICKNESS |
| %token FILL |
| %token COLORED |
| %token OUTLINED |
| %token SHADED |
| %token ALIGNED |
| %token SPRINTF |
| %token COMMAND |
| |
| %left '.' |
| |
| /* this ensures that plot 17 "%g" parses as (plot 17 "%g") */ |
| %left PLOT |
| %left TEXT SPRINTF |
| |
| /* give text adjustments higher precedence than TEXT, so that |
| box "foo" above ljust == box ("foo" above ljust) |
| */ |
| |
| %left LJUST RJUST ABOVE BELOW |
| |
| %left LEFT RIGHT |
| /* Give attributes that take an optional expression a higher |
| precedence than left and right, so that eg `line chop left' |
| parses properly. */ |
| %left CHOP SOLID DASHED DOTTED UP DOWN FILL COLORED OUTLINED |
| %left LABEL |
| |
| %left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND SRAND LAST |
| %left ORDINAL HERE '`' |
| |
| %left BOX CIRCLE ELLIPSE ARC LINE ARROW SPLINE '[' /* ] */ |
| |
| /* these need to be lower than '-' */ |
| %left HEIGHT RADIUS WIDTH DIAMETER FROM TO AT THICKNESS |
| |
| /* these must have higher precedence than CHOP so that `label %prec CHOP' |
| works */ |
| %left DOT_N DOT_E DOT_W DOT_S DOT_NE DOT_SE DOT_NW DOT_SW DOT_C |
| %left DOT_START DOT_END TOP BOTTOM LEFT_CORNER RIGHT_CORNER |
| %left UPPER LOWER NORTH SOUTH EAST WEST CENTER START END |
| |
| %left ',' |
| %left OROR |
| %left ANDAND |
| %left EQUALEQUAL NOTEQUAL |
| %left '<' '>' LESSEQUAL GREATEREQUAL |
| |
| %left BETWEEN OF |
| %left AND |
| |
| %left '+' '-' |
| %left '*' '/' '%' |
| %right '!' |
| %right '^' |
| ]], |
| [[ |
| top: |
| optional_separator |
| | element_list |
| ; |
| |
| element_list: |
| optional_separator middle_element_list optional_separator |
| ; |
| |
| middle_element_list: |
| element |
| | middle_element_list separator element |
| ; |
| |
| optional_separator: |
| /* empty */ |
| | separator |
| ; |
| |
| separator: |
| ';' |
| | separator ';' |
| ; |
| |
| placeless_element: |
| VARIABLE '=' any_expr |
| | VARIABLE ':' '=' any_expr |
| | UP |
| | DOWN |
| | LEFT |
| | RIGHT |
| | COMMAND_LINE |
| | COMMAND print_args |
| | PRINT print_args |
| | SH |
| {} |
| DELIMITED |
| | COPY TEXT |
| | COPY TEXT THROUGH |
| {} |
| DELIMITED |
| {} |
| until |
| | COPY THROUGH |
| {} |
| DELIMITED |
| {} |
| until |
| | FOR VARIABLE '=' expr TO expr optional_by DO |
| {} |
| DELIMITED |
| | simple_if |
| | simple_if ELSE |
| {} |
| DELIMITED |
| | reset_variables |
| | RESET |
| ; |
| |
| reset_variables: |
| RESET VARIABLE |
| | reset_variables VARIABLE |
| | reset_variables ',' VARIABLE |
| ; |
| |
| print_args: |
| print_arg |
| | print_args print_arg |
| ; |
| |
| print_arg: |
| expr %prec ',' |
| | text |
| | position %prec ',' |
| ; |
| |
| simple_if: |
| IF any_expr THEN |
| {} |
| DELIMITED |
| ; |
| |
| until: |
| /* empty */ |
| | UNTIL TEXT |
| ; |
| |
| any_expr: |
| expr |
| | text_expr |
| ; |
| |
| text_expr: |
| text EQUALEQUAL text |
| | text NOTEQUAL text |
| | text_expr ANDAND text_expr |
| | text_expr ANDAND expr |
| | expr ANDAND text_expr |
| | text_expr OROR text_expr |
| | text_expr OROR expr |
| | expr OROR text_expr |
| | '!' text_expr |
| ; |
| |
| optional_by: |
| /* empty */ |
| | BY expr |
| | BY '*' expr |
| ; |
| |
| element: |
| object_spec |
| | LABEL ':' optional_separator element |
| | LABEL ':' optional_separator position_not_place |
| | LABEL ':' optional_separator place |
| | '{' {} element_list '}' |
| {} |
| optional_element |
| | placeless_element |
| ; |
| |
| optional_element: |
| /* empty */ |
| | element |
| ; |
| |
| object_spec: |
| BOX |
| | CIRCLE |
| | ELLIPSE |
| | ARC |
| | LINE |
| | ARROW |
| | MOVE |
| | SPLINE |
| | text %prec TEXT |
| | PLOT expr |
| | PLOT expr text |
| | '[' |
| {} |
| element_list ']' |
| | object_spec HEIGHT expr |
| | object_spec RADIUS expr |
| | object_spec WIDTH expr |
| | object_spec DIAMETER expr |
| | object_spec expr %prec HEIGHT |
| | object_spec UP |
| | object_spec UP expr |
| | object_spec DOWN |
| | object_spec DOWN expr |
| | object_spec RIGHT |
| | object_spec RIGHT expr |
| | object_spec LEFT |
| | object_spec LEFT expr |
| | object_spec FROM position |
| | object_spec TO position |
| | object_spec AT position |
| | object_spec WITH path |
| | object_spec WITH position %prec ',' |
| | object_spec BY expr_pair |
| | object_spec THEN |
| | object_spec SOLID |
| | object_spec DOTTED |
| | object_spec DOTTED expr |
| | object_spec DASHED |
| | object_spec DASHED expr |
| | object_spec FILL |
| | object_spec FILL expr |
| | object_spec SHADED text |
| | object_spec COLORED text |
| | object_spec OUTLINED text |
| | object_spec CHOP |
| | object_spec CHOP expr |
| | object_spec SAME |
| | object_spec INVISIBLE |
| | object_spec LEFT_ARROW_HEAD |
| | object_spec RIGHT_ARROW_HEAD |
| | object_spec DOUBLE_ARROW_HEAD |
| | object_spec CW |
| | object_spec CCW |
| | object_spec text %prec TEXT |
| | object_spec LJUST |
| | object_spec RJUST |
| | object_spec ABOVE |
| | object_spec BELOW |
| | object_spec THICKNESS expr |
| | object_spec ALIGNED |
| ; |
| |
| text: |
| TEXT |
| | SPRINTF '(' TEXT sprintf_args ')' |
| ; |
| |
| sprintf_args: |
| /* empty */ |
| | sprintf_args ',' expr |
| ; |
| |
| position: |
| position_not_place |
| | place |
| ; |
| |
| position_not_place: |
| expr_pair |
| | position '+' expr_pair |
| | position '-' expr_pair |
| | '(' position ',' position ')' |
| | expr between position AND position |
| | expr '<' position ',' position '>' |
| ; |
| |
| between: |
| BETWEEN |
| | OF THE WAY BETWEEN |
| ; |
| |
| expr_pair: |
| expr ',' expr |
| | '(' expr_pair ')' |
| ; |
| |
| place: |
| /* line at A left == line (at A) left */ |
| label %prec CHOP |
| | label corner |
| | corner label |
| | corner OF label |
| | HERE |
| ; |
| |
| label: |
| LABEL |
| | nth_primitive |
| | label '.' LABEL |
| ; |
| |
| ordinal: |
| ORDINAL |
| | '`' any_expr TH |
| ; |
| |
| optional_ordinal_last: |
| LAST |
| | ordinal LAST |
| ; |
| |
| nth_primitive: |
| ordinal object_type |
| | optional_ordinal_last object_type |
| ; |
| |
| object_type: |
| BOX |
| | CIRCLE |
| | ELLIPSE |
| | ARC |
| | LINE |
| | ARROW |
| | SPLINE |
| | '[' ']' |
| | TEXT |
| ; |
| |
| label_path: |
| '.' LABEL |
| | label_path '.' LABEL |
| ; |
| |
| relative_path: |
| corner %prec CHOP |
| /* give this a lower precedence than LEFT and RIGHT so that |
| [A: box] with .A left == [A: box] with (.A left) */ |
| | label_path %prec TEXT |
| | label_path corner |
| ; |
| |
| path: |
| relative_path |
| | '(' relative_path ',' relative_path ')' |
| {} |
| /* The rest of these rules are a compatibility sop. */ |
| | ORDINAL LAST object_type relative_path |
| | LAST object_type relative_path |
| | ORDINAL object_type relative_path |
| | LABEL relative_path |
| ; |
| |
| corner: |
| DOT_N |
| | DOT_E |
| | DOT_W |
| | DOT_S |
| | DOT_NE |
| | DOT_SE |
| | DOT_NW |
| | DOT_SW |
| | DOT_C |
| | DOT_START |
| | DOT_END |
| | TOP |
| | BOTTOM |
| | LEFT |
| | RIGHT |
| | UPPER LEFT |
| | LOWER LEFT |
| | UPPER RIGHT |
| | LOWER RIGHT |
| | LEFT_CORNER |
| | RIGHT_CORNER |
| | UPPER LEFT_CORNER |
| | LOWER LEFT_CORNER |
| | UPPER RIGHT_CORNER |
| | LOWER RIGHT_CORNER |
| | NORTH |
| | SOUTH |
| | EAST |
| | WEST |
| | CENTER |
| | START |
| | END |
| ; |
| |
| expr: |
| VARIABLE |
| | NUMBER |
| | place DOT_X |
| | place DOT_Y |
| | place DOT_HT |
| | place DOT_WID |
| | place DOT_RAD |
| | expr '+' expr |
| | expr '-' expr |
| | expr '*' expr |
| | expr '/' expr |
| | expr '%' expr |
| | expr '^' expr |
| | '-' expr %prec '!' |
| | '(' any_expr ')' |
| | SIN '(' any_expr ')' |
| | COS '(' any_expr ')' |
| | ATAN2 '(' any_expr ',' any_expr ')' |
| | LOG '(' any_expr ')' |
| | EXP '(' any_expr ')' |
| | SQRT '(' any_expr ')' |
| | K_MAX '(' any_expr ',' any_expr ')' |
| | K_MIN '(' any_expr ',' any_expr ')' |
| | INT '(' any_expr ')' |
| | RAND '(' any_expr ')' |
| | RAND '(' ')' |
| | SRAND '(' any_expr ')' |
| | expr '<' expr |
| | expr LESSEQUAL expr |
| | expr '>' expr |
| | expr GREATEREQUAL expr |
| | expr EQUALEQUAL expr |
| | expr NOTEQUAL expr |
| | expr ANDAND expr |
| | expr OROR expr |
| | '!' expr |
| ; |
| ]], |
| |
| dnl INPUT |
| dnl |
| dnl For example, in pic: |
| dnl |
| dnl .PS |
| dnl A: circle "A" |
| dnl B: A left |
| dnl circle "B" at B |
| dnl .PE |
| dnl |
| dnl Even using groff 1.19.2, the 3rd line above is a syntax error. Change |
| dnl "left" to "right", and it still is. However, add "upper" or "lower" before |
| dnl "left or "right" and it's accepted to mean ".nw", ".ne", ".sw", or ".se". |
| dnl (There seem to be no aliases for "north" and "south" that can stand alone |
| dnl without being followed by "of".) |
| [[VARIABLE, '=', LABEL, LEFT, DOT_X]], |
| |
| dnl BISON-STDERR |
| [[input.y:470.11-48: warning: rule useless in parser due to conflicts: path: ORDINAL LAST object_type relative_path |
| ]], |
| |
| dnl LAST-STATE |
| [AT_COND_CASE([[LALR]], [[422]], [[canonical LR]], [[4833]], [[427]])], |
| |
| dnl LALR1-DIFF not used for canonical LR(1) because the diff is huge. |
| dnl Isocore map from LALR(1) state number to new state number plus descriptions |
| dnl of any change in the actions resulting in a change in accepted language: |
| dnl - 102 -> 423: reduce -> shift on LEFT and RIGHT |
| dnl - 237 -> 425 |
| dnl - 266 -> 424 |
| dnl - 339 -> 426 |
| dnl - 383 -> 427 |
| [AT_COND_CASE([[LALR]], [], |
| [[@@ -1223,7 +1223,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -1377,7 +1377,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -1854,7 +1854,7 @@ |
| |
| text go to state 162 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -2047,7 +2047,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -2571,7 +2571,7 @@ |
| position_not_place go to state 99 |
| expr_pair go to state 191 |
| place go to state 101 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -2732,7 +2732,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -2875,7 +2875,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -3018,7 +3018,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -3256,7 +3256,7 @@ |
| |
| State 102 |
| |
| - 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, '(', '`', ',', '>', '+', '-', '!', ';', '}', '@:>@', ')'] |
| + 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, '(', '`', '+', '-', '!', ';', '}', '@:>@'] |
| 147 | label . corner |
| 153 label: label . '.' LABEL |
| 180 corner: . DOT_N |
| @@ -3645,7 +3645,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -3804,7 +3804,7 @@ |
| text_expr go to state 239 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -4481,7 +4481,7 @@ |
| $default reduce using rule 89 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -4673,7 +4673,7 @@ |
| $default reduce using rule 91 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -4867,7 +4867,7 @@ |
| $default reduce using rule 95 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -5065,7 +5065,7 @@ |
| $default reduce using rule 93 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -5260,7 +5260,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -5403,7 +5403,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -5546,7 +5546,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -5689,7 +5689,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -6475,7 +6475,7 @@ |
| |
| expr_pair go to state 280 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -6633,7 +6633,7 @@ |
| $default reduce using rule 105 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -6825,7 +6825,7 @@ |
| $default reduce using rule 107 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -7017,7 +7017,7 @@ |
| $default reduce using rule 114 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -7264,7 +7264,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -7408,7 +7408,7 @@ |
| $default reduce using rule 109 (object_spec) |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -7819,12 +7819,12 @@ |
| position_not_place go to state 296 |
| expr_pair go to state 100 |
| place go to state 297 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| corner go to state 106 |
| - expr go to state 266 |
| + expr go to state 424 |
| |
| |
| State 165 |
| @@ -7987,7 +7987,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -8172,7 +8172,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -8333,7 +8333,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -8494,7 +8494,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -8655,7 +8655,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -8816,7 +8816,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -8977,7 +8977,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -9138,7 +9138,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -9299,7 +9299,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -9460,7 +9460,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -9623,7 +9623,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -9784,7 +9784,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -9921,7 +9921,7 @@ |
| |
| $default reduce using rule 47 (any_expr) |
| |
| - between go to state 237 |
| + between go to state 425 |
| |
| |
| State 193 |
| @@ -10152,7 +10152,7 @@ |
| |
| expr_pair go to state 317 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -10298,7 +10298,7 @@ |
| |
| expr_pair go to state 318 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -10622,7 +10622,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -10765,7 +10765,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -10908,7 +10908,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11051,7 +11051,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11194,7 +11194,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11337,7 +11337,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11480,7 +11480,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11637,7 +11637,7 @@ |
| position_not_place go to state 99 |
| expr_pair go to state 100 |
| place go to state 101 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11780,7 +11780,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -11923,7 +11923,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -12066,7 +12066,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -12209,7 +12209,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -12352,7 +12352,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -12495,7 +12495,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -12638,7 +12638,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -12794,12 +12794,12 @@ |
| position_not_place go to state 99 |
| expr_pair go to state 100 |
| place go to state 101 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| corner go to state 106 |
| - expr go to state 266 |
| + expr go to state 424 |
| |
| |
| State 238 |
| @@ -12937,7 +12937,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -13160,7 +13160,7 @@ |
| text_expr go to state 342 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -13319,7 +13319,7 @@ |
| text_expr go to state 344 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -13502,7 +13502,7 @@ |
| text_expr go to state 348 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -13661,7 +13661,7 @@ |
| text_expr go to state 350 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -13804,7 +13804,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -14747,7 +14747,7 @@ |
| position_not_place go to state 99 |
| expr_pair go to state 191 |
| place go to state 101 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -15074,7 +15074,7 @@ |
| text go to state 113 |
| expr_pair go to state 365 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -15693,12 +15693,12 @@ |
| position_not_place go to state 99 |
| expr_pair go to state 100 |
| place go to state 101 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| corner go to state 106 |
| - expr go to state 266 |
| + expr go to state 424 |
| |
| |
| State 315 |
| @@ -16124,7 +16124,7 @@ |
| |
| $default reduce using rule 239 (expr) |
| |
| - between go to state 237 |
| + between go to state 425 |
| |
| Conflict between rule 239 and token OF resolved as shift ('<' < OF). |
| Conflict between rule 239 and token BETWEEN resolved as shift ('<' < BETWEEN). |
| @@ -17234,7 +17234,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -17416,7 +17416,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -17577,7 +17577,7 @@ |
| text_expr go to state 112 |
| text go to state 113 |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -17772,12 +17772,12 @@ |
| position_not_place go to state 99 |
| expr_pair go to state 100 |
| place go to state 101 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| corner go to state 106 |
| - expr go to state 266 |
| + expr go to state 424 |
| |
| |
| State 383 |
| @@ -18071,7 +18071,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -18221,7 +18221,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -18830,7 +18830,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -18987,7 +18987,7 @@ |
| '!' shift, and go to state 94 |
| |
| place go to state 114 |
| - label go to state 102 |
| + label go to state 423 |
| ordinal go to state 103 |
| optional_ordinal_last go to state 104 |
| nth_primitive go to state 105 |
| @@ -19089,3 +19089,440 @@ |
| 29 placeless_element: FOR VARIABLE '=' expr TO expr optional_by DO $@6 DELIMITED . |
| |
| $default reduce using rule 29 (placeless_element) |
| + |
| + |
| +State 423 |
| + |
| + 146 place: label . [$end, AND, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, ',', '>', '+', '-', ';', '}', '@:>@', ')'] |
| + 147 | label . corner |
| + 153 label: label . '.' LABEL |
| + 180 corner: . DOT_N |
| + 181 | . DOT_E |
| + 182 | . DOT_W |
| + 183 | . DOT_S |
| + 184 | . DOT_NE |
| + 185 | . DOT_SE |
| + 186 | . DOT_NW |
| + 187 | . DOT_SW |
| + 188 | . DOT_C |
| + 189 | . DOT_START |
| + 190 | . DOT_END |
| + 191 | . TOP |
| + 192 | . BOTTOM |
| + 193 | . LEFT |
| + 194 | . RIGHT |
| + 195 | . UPPER LEFT |
| + 196 | . LOWER LEFT |
| + 197 | . UPPER RIGHT |
| + 198 | . LOWER RIGHT |
| + 199 | . LEFT_CORNER |
| + 200 | . RIGHT_CORNER |
| + 201 | . UPPER LEFT_CORNER |
| + 202 | . LOWER LEFT_CORNER |
| + 203 | . UPPER RIGHT_CORNER |
| + 204 | . LOWER RIGHT_CORNER |
| + 205 | . NORTH |
| + 206 | . SOUTH |
| + 207 | . EAST |
| + 208 | . WEST |
| + 209 | . CENTER |
| + 210 | . START |
| + 211 | . END |
| + |
| + LEFT shift, and go to state 53 |
| + RIGHT shift, and go to state 54 |
| + DOT_N shift, and go to state 56 |
| + DOT_E shift, and go to state 57 |
| + DOT_W shift, and go to state 58 |
| + DOT_S shift, and go to state 59 |
| + DOT_NE shift, and go to state 60 |
| + DOT_SE shift, and go to state 61 |
| + DOT_NW shift, and go to state 62 |
| + DOT_SW shift, and go to state 63 |
| + DOT_C shift, and go to state 64 |
| + DOT_START shift, and go to state 65 |
| + DOT_END shift, and go to state 66 |
| + TOP shift, and go to state 78 |
| + BOTTOM shift, and go to state 79 |
| + UPPER shift, and go to state 80 |
| + LOWER shift, and go to state 81 |
| + LEFT_CORNER shift, and go to state 82 |
| + RIGHT_CORNER shift, and go to state 83 |
| + NORTH shift, and go to state 84 |
| + SOUTH shift, and go to state 85 |
| + EAST shift, and go to state 86 |
| + WEST shift, and go to state 87 |
| + CENTER shift, and go to state 88 |
| + END shift, and go to state 89 |
| + START shift, and go to state 90 |
| + '.' shift, and go to state 204 |
| + |
| + $default reduce using rule 146 (place) |
| + |
| + corner go to state 205 |
| + |
| + |
| +State 424 |
| + |
| + 140 position_not_place: expr . between position AND position |
| + 141 | expr . '<' position ',' position '>' |
| + 142 between: . BETWEEN |
| + 143 | . OF THE WAY BETWEEN |
| + 144 expr_pair: expr . ',' expr |
| + 219 expr: expr . '+' expr |
| + 220 | expr . '-' expr |
| + 221 | expr . '*' expr |
| + 222 | expr . '/' expr |
| + 223 | expr . '%' expr |
| + 224 | expr . '^' expr |
| + 239 | expr . '<' expr |
| + 240 | expr . LESSEQUAL expr |
| + 241 | expr . '>' expr |
| + 242 | expr . GREATEREQUAL expr |
| + 243 | expr . EQUALEQUAL expr |
| + 244 | expr . NOTEQUAL expr |
| + 245 | expr . ANDAND expr |
| + 246 | expr . OROR expr |
| + |
| + OF shift, and go to state 220 |
| + BETWEEN shift, and go to state 221 |
| + ANDAND shift, and go to state 222 |
| + OROR shift, and go to state 223 |
| + NOTEQUAL shift, and go to state 224 |
| + EQUALEQUAL shift, and go to state 225 |
| + LESSEQUAL shift, and go to state 226 |
| + GREATEREQUAL shift, and go to state 227 |
| + ',' shift, and go to state 228 |
| + '<' shift, and go to state 229 |
| + '>' shift, and go to state 230 |
| + '+' shift, and go to state 231 |
| + '-' shift, and go to state 232 |
| + '*' shift, and go to state 233 |
| + '/' shift, and go to state 234 |
| + '%' shift, and go to state 235 |
| + '^' shift, and go to state 236 |
| + |
| + between go to state 425 |
| + |
| + |
| +State 425 |
| + |
| + 134 position: . position_not_place |
| + 135 | . place |
| + 136 position_not_place: . expr_pair |
| + 137 | . position '+' expr_pair |
| + 138 | . position '-' expr_pair |
| + 139 | . '(' position ',' position ')' |
| + 140 | . expr between position AND position |
| + 140 | expr between . position AND position |
| + 141 | . expr '<' position ',' position '>' |
| + 144 expr_pair: . expr ',' expr |
| + 145 | . '(' expr_pair ')' |
| + 146 place: . label |
| + 147 | . label corner |
| + 148 | . corner label |
| + 149 | . corner OF label |
| + 150 | . HERE |
| + 151 label: . LABEL |
| + 152 | . nth_primitive |
| + 153 | . label '.' LABEL |
| + 154 ordinal: . ORDINAL |
| + 155 | . '`' any_expr TH |
| + 156 optional_ordinal_last: . LAST |
| + 157 | . ordinal LAST |
| + 158 nth_primitive: . ordinal object_type |
| + 159 | . optional_ordinal_last object_type |
| + 180 corner: . DOT_N |
| + 181 | . DOT_E |
| + 182 | . DOT_W |
| + 183 | . DOT_S |
| + 184 | . DOT_NE |
| + 185 | . DOT_SE |
| + 186 | . DOT_NW |
| + 187 | . DOT_SW |
| + 188 | . DOT_C |
| + 189 | . DOT_START |
| + 190 | . DOT_END |
| + 191 | . TOP |
| + 192 | . BOTTOM |
| + 193 | . LEFT |
| + 194 | . RIGHT |
| + 195 | . UPPER LEFT |
| + 196 | . LOWER LEFT |
| + 197 | . UPPER RIGHT |
| + 198 | . LOWER RIGHT |
| + 199 | . LEFT_CORNER |
| + 200 | . RIGHT_CORNER |
| + 201 | . UPPER LEFT_CORNER |
| + 202 | . LOWER LEFT_CORNER |
| + 203 | . UPPER RIGHT_CORNER |
| + 204 | . LOWER RIGHT_CORNER |
| + 205 | . NORTH |
| + 206 | . SOUTH |
| + 207 | . EAST |
| + 208 | . WEST |
| + 209 | . CENTER |
| + 210 | . START |
| + 211 | . END |
| + 212 expr: . VARIABLE |
| + 213 | . NUMBER |
| + 214 | . place DOT_X |
| + 215 | . place DOT_Y |
| + 216 | . place DOT_HT |
| + 217 | . place DOT_WID |
| + 218 | . place DOT_RAD |
| + 219 | . expr '+' expr |
| + 220 | . expr '-' expr |
| + 221 | . expr '*' expr |
| + 222 | . expr '/' expr |
| + 223 | . expr '%' expr |
| + 224 | . expr '^' expr |
| + 225 | . '-' expr |
| + 226 | . '(' any_expr ')' |
| + 227 | . SIN '(' any_expr ')' |
| + 228 | . COS '(' any_expr ')' |
| + 229 | . ATAN2 '(' any_expr ',' any_expr ')' |
| + 230 | . LOG '(' any_expr ')' |
| + 231 | . EXP '(' any_expr ')' |
| + 232 | . SQRT '(' any_expr ')' |
| + 233 | . K_MAX '(' any_expr ',' any_expr ')' |
| + 234 | . K_MIN '(' any_expr ',' any_expr ')' |
| + 235 | . INT '(' any_expr ')' |
| + 236 | . RAND '(' any_expr ')' |
| + 237 | . RAND '(' ')' |
| + 238 | . SRAND '(' any_expr ')' |
| + 239 | . expr '<' expr |
| + 240 | . expr LESSEQUAL expr |
| + 241 | . expr '>' expr |
| + 242 | . expr GREATEREQUAL expr |
| + 243 | . expr EQUALEQUAL expr |
| + 244 | . expr NOTEQUAL expr |
| + 245 | . expr ANDAND expr |
| + 246 | . expr OROR expr |
| + 247 | . '!' expr |
| + |
| + LABEL shift, and go to state 48 |
| + VARIABLE shift, and go to state 49 |
| + NUMBER shift, and go to state 50 |
| + ORDINAL shift, and go to state 51 |
| + LAST shift, and go to state 52 |
| + LEFT shift, and go to state 53 |
| + RIGHT shift, and go to state 54 |
| + HERE shift, and go to state 55 |
| + DOT_N shift, and go to state 56 |
| + DOT_E shift, and go to state 57 |
| + DOT_W shift, and go to state 58 |
| + DOT_S shift, and go to state 59 |
| + DOT_NE shift, and go to state 60 |
| + DOT_SE shift, and go to state 61 |
| + DOT_NW shift, and go to state 62 |
| + DOT_SW shift, and go to state 63 |
| + DOT_C shift, and go to state 64 |
| + DOT_START shift, and go to state 65 |
| + DOT_END shift, and go to state 66 |
| + SIN shift, and go to state 67 |
| + COS shift, and go to state 68 |
| + ATAN2 shift, and go to state 69 |
| + LOG shift, and go to state 70 |
| + EXP shift, and go to state 71 |
| + SQRT shift, and go to state 72 |
| + K_MAX shift, and go to state 73 |
| + K_MIN shift, and go to state 74 |
| + INT shift, and go to state 75 |
| + RAND shift, and go to state 76 |
| + SRAND shift, and go to state 77 |
| + TOP shift, and go to state 78 |
| + BOTTOM shift, and go to state 79 |
| + UPPER shift, and go to state 80 |
| + LOWER shift, and go to state 81 |
| + LEFT_CORNER shift, and go to state 82 |
| + RIGHT_CORNER shift, and go to state 83 |
| + NORTH shift, and go to state 84 |
| + SOUTH shift, and go to state 85 |
| + EAST shift, and go to state 86 |
| + WEST shift, and go to state 87 |
| + CENTER shift, and go to state 88 |
| + END shift, and go to state 89 |
| + START shift, and go to state 90 |
| + '(' shift, and go to state 91 |
| + '`' shift, and go to state 92 |
| + '-' shift, and go to state 93 |
| + '!' shift, and go to state 94 |
| + |
| + position go to state 426 |
| + position_not_place go to state 99 |
| + expr_pair go to state 100 |
| + place go to state 101 |
| + label go to state 423 |
| + ordinal go to state 103 |
| + optional_ordinal_last go to state 104 |
| + nth_primitive go to state 105 |
| + corner go to state 106 |
| + expr go to state 424 |
| + |
| + |
| +State 426 |
| + |
| + 137 position_not_place: position . '+' expr_pair |
| + 138 | position . '-' expr_pair |
| + 140 | expr between position . AND position |
| + |
| + AND shift, and go to state 427 |
| + '+' shift, and go to state 197 |
| + '-' shift, and go to state 198 |
| + |
| + |
| +State 427 |
| + |
| + 134 position: . position_not_place |
| + 135 | . place |
| + 136 position_not_place: . expr_pair |
| + 137 | . position '+' expr_pair |
| + 138 | . position '-' expr_pair |
| + 139 | . '(' position ',' position ')' |
| + 140 | . expr between position AND position |
| + 140 | expr between position AND . position |
| + 141 | . expr '<' position ',' position '>' |
| + 144 expr_pair: . expr ',' expr |
| + 145 | . '(' expr_pair ')' |
| + 146 place: . label |
| + 147 | . label corner |
| + 148 | . corner label |
| + 149 | . corner OF label |
| + 150 | . HERE |
| + 151 label: . LABEL |
| + 152 | . nth_primitive |
| + 153 | . label '.' LABEL |
| + 154 ordinal: . ORDINAL |
| + 155 | . '`' any_expr TH |
| + 156 optional_ordinal_last: . LAST |
| + 157 | . ordinal LAST |
| + 158 nth_primitive: . ordinal object_type |
| + 159 | . optional_ordinal_last object_type |
| + 180 corner: . DOT_N |
| + 181 | . DOT_E |
| + 182 | . DOT_W |
| + 183 | . DOT_S |
| + 184 | . DOT_NE |
| + 185 | . DOT_SE |
| + 186 | . DOT_NW |
| + 187 | . DOT_SW |
| + 188 | . DOT_C |
| + 189 | . DOT_START |
| + 190 | . DOT_END |
| + 191 | . TOP |
| + 192 | . BOTTOM |
| + 193 | . LEFT |
| + 194 | . RIGHT |
| + 195 | . UPPER LEFT |
| + 196 | . LOWER LEFT |
| + 197 | . UPPER RIGHT |
| + 198 | . LOWER RIGHT |
| + 199 | . LEFT_CORNER |
| + 200 | . RIGHT_CORNER |
| + 201 | . UPPER LEFT_CORNER |
| + 202 | . LOWER LEFT_CORNER |
| + 203 | . UPPER RIGHT_CORNER |
| + 204 | . LOWER RIGHT_CORNER |
| + 205 | . NORTH |
| + 206 | . SOUTH |
| + 207 | . EAST |
| + 208 | . WEST |
| + 209 | . CENTER |
| + 210 | . START |
| + 211 | . END |
| + 212 expr: . VARIABLE |
| + 213 | . NUMBER |
| + 214 | . place DOT_X |
| + 215 | . place DOT_Y |
| + 216 | . place DOT_HT |
| + 217 | . place DOT_WID |
| + 218 | . place DOT_RAD |
| + 219 | . expr '+' expr |
| + 220 | . expr '-' expr |
| + 221 | . expr '*' expr |
| + 222 | . expr '/' expr |
| + 223 | . expr '%' expr |
| + 224 | . expr '^' expr |
| + 225 | . '-' expr |
| + 226 | . '(' any_expr ')' |
| + 227 | . SIN '(' any_expr ')' |
| + 228 | . COS '(' any_expr ')' |
| + 229 | . ATAN2 '(' any_expr ',' any_expr ')' |
| + 230 | . LOG '(' any_expr ')' |
| + 231 | . EXP '(' any_expr ')' |
| + 232 | . SQRT '(' any_expr ')' |
| + 233 | . K_MAX '(' any_expr ',' any_expr ')' |
| + 234 | . K_MIN '(' any_expr ',' any_expr ')' |
| + 235 | . INT '(' any_expr ')' |
| + 236 | . RAND '(' any_expr ')' |
| + 237 | . RAND '(' ')' |
| + 238 | . SRAND '(' any_expr ')' |
| + 239 | . expr '<' expr |
| + 240 | . expr LESSEQUAL expr |
| + 241 | . expr '>' expr |
| + 242 | . expr GREATEREQUAL expr |
| + 243 | . expr EQUALEQUAL expr |
| + 244 | . expr NOTEQUAL expr |
| + 245 | . expr ANDAND expr |
| + 246 | . expr OROR expr |
| + 247 | . '!' expr |
| + |
| + LABEL shift, and go to state 48 |
| + VARIABLE shift, and go to state 49 |
| + NUMBER shift, and go to state 50 |
| + ORDINAL shift, and go to state 51 |
| + LAST shift, and go to state 52 |
| + LEFT shift, and go to state 53 |
| + RIGHT shift, and go to state 54 |
| + HERE shift, and go to state 55 |
| + DOT_N shift, and go to state 56 |
| + DOT_E shift, and go to state 57 |
| + DOT_W shift, and go to state 58 |
| + DOT_S shift, and go to state 59 |
| + DOT_NE shift, and go to state 60 |
| + DOT_SE shift, and go to state 61 |
| + DOT_NW shift, and go to state 62 |
| + DOT_SW shift, and go to state 63 |
| + DOT_C shift, and go to state 64 |
| + DOT_START shift, and go to state 65 |
| + DOT_END shift, and go to state 66 |
| + SIN shift, and go to state 67 |
| + COS shift, and go to state 68 |
| + ATAN2 shift, and go to state 69 |
| + LOG shift, and go to state 70 |
| + EXP shift, and go to state 71 |
| + SQRT shift, and go to state 72 |
| + K_MAX shift, and go to state 73 |
| + K_MIN shift, and go to state 74 |
| + INT shift, and go to state 75 |
| + RAND shift, and go to state 76 |
| + SRAND shift, and go to state 77 |
| + TOP shift, and go to state 78 |
| + BOTTOM shift, and go to state 79 |
| + UPPER shift, and go to state 80 |
| + LOWER shift, and go to state 81 |
| + LEFT_CORNER shift, and go to state 82 |
| + RIGHT_CORNER shift, and go to state 83 |
| + NORTH shift, and go to state 84 |
| + SOUTH shift, and go to state 85 |
| + EAST shift, and go to state 86 |
| + WEST shift, and go to state 87 |
| + CENTER shift, and go to state 88 |
| + END shift, and go to state 89 |
| + START shift, and go to state 90 |
| + '(' shift, and go to state 91 |
| + '`' shift, and go to state 92 |
| + '-' shift, and go to state 93 |
| + '!' shift, and go to state 94 |
| + |
| + position go to state 402 |
| + position_not_place go to state 99 |
| + expr_pair go to state 100 |
| + place go to state 101 |
| + label go to state 423 |
| + ordinal go to state 103 |
| + optional_ordinal_last go to state 104 |
| + nth_primitive go to state 105 |
| + corner go to state 106 |
| + expr go to state 424 |
| ]])], |
| |
| dnl OTHER-CHECKS |
| [], |
| |
| dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR |
| [AT_COND_CASE([[LALR]], [[1]], [[0]])], |
| [], |
| [AT_COND_CASE([[LALR]], |
| [[syntax error, unexpected LEFT |
| ]])]) |