git: 8e022d3cdea1 - main - byacc: Update to 20230201.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 20 Feb 2023 22:37:31 UTC
The branch main has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=8e022d3cdea10ee1039a632f670c27fd93f65625
commit 8e022d3cdea10ee1039a632f670c27fd93f65625
Merge: b16a37eda8b1 cba5e8978cf6
Author: Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2023-02-20 22:35:32 +0000
Commit: Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2023-02-20 22:35:32 +0000
byacc: Update to 20230201.
Note that this enables the backtracking extension, which we had previously left disabled.
PR: 244149, 269425
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D38421
contrib/byacc/CHANGES | 2950 +++++++++++++++-
contrib/byacc/MANIFEST | 102 +-
contrib/byacc/VERSION | 2 +-
contrib/byacc/aclocal.m4 | 493 ++-
contrib/byacc/btyaccpar.c | 4 +-
contrib/byacc/btyaccpar.skel | 4 +-
contrib/byacc/closure.c | 36 +-
contrib/byacc/config.guess | 1203 ++++---
contrib/byacc/config.sub | 655 ++--
contrib/byacc/config_h.in | 6 +
contrib/byacc/configure | 3730 ++++++++++++--------
contrib/byacc/configure.in | 24 +-
contrib/byacc/defs.h | 136 +-
contrib/byacc/graph.c | 12 +-
contrib/byacc/install-sh | 671 ++--
contrib/byacc/lalr.c | 41 +-
contrib/byacc/lr0.c | 36 +-
contrib/byacc/main.c | 153 +-
contrib/byacc/makefile.in | 12 +-
contrib/byacc/mkpar.c | 30 +-
contrib/byacc/output.c | 101 +-
contrib/byacc/package/byacc.spec | 74 +-
contrib/byacc/package/debian/changelog | 103 +
contrib/byacc/package/debian/compat | 1 -
contrib/byacc/package/debian/control | 29 +-
contrib/byacc/package/debian/copyright | 115 +-
contrib/byacc/package/debian/docs | 4 -
contrib/byacc/package/debian/postinst | 15 -
contrib/byacc/package/debian/prerm | 12 -
contrib/byacc/package/debian/rules | 148 +-
contrib/byacc/package/debian/watch | 22 +-
contrib/byacc/package/mingw-byacc.spec | 45 +-
contrib/byacc/package/pkgsrc/Makefile | 14 +-
contrib/byacc/reader.c | 211 +-
contrib/byacc/test/btyacc/big_b.error | 11 +
contrib/byacc/test/btyacc/big_l.error | 11 +
contrib/byacc/test/btyacc/btyacc_calc1.tab.c | 36 +-
contrib/byacc/test/btyacc/btyacc_calc1.tab.h | 2 +-
contrib/byacc/test/btyacc/btyacc_demo.tab.c | 176 +-
contrib/byacc/test/btyacc/btyacc_demo.tab.h | 2 +-
contrib/byacc/test/btyacc/btyacc_destroy1.tab.c | 21 +-
contrib/byacc/test/btyacc/btyacc_destroy1.tab.h | 2 +-
contrib/byacc/test/btyacc/btyacc_destroy2.tab.c | 21 +-
contrib/byacc/test/btyacc/btyacc_destroy2.tab.h | 2 +-
contrib/byacc/test/btyacc/btyacc_destroy3.tab.c | 21 +-
contrib/byacc/test/btyacc/btyacc_destroy3.tab.h | 2 +-
contrib/byacc/test/btyacc/calc.tab.c | 23 +-
contrib/byacc/test/btyacc/calc1.tab.c | 35 +-
contrib/byacc/test/btyacc/calc1.tab.h | 2 +-
contrib/byacc/test/btyacc/calc2.tab.c | 23 +-
contrib/byacc/test/btyacc/calc3.tab.c | 23 +-
contrib/byacc/test/btyacc/calc_code_all.tab.c | 23 +-
contrib/byacc/test/btyacc/calc_code_default.tab.c | 23 +-
contrib/byacc/test/btyacc/calc_code_imports.tab.c | 23 +-
contrib/byacc/test/btyacc/calc_code_provides.tab.c | 23 +-
contrib/byacc/test/btyacc/calc_code_requires.tab.c | 23 +-
contrib/byacc/test/btyacc/calc_code_top.tab.c | 23 +-
contrib/byacc/test/btyacc/code_calc.code.c | 23 +-
contrib/byacc/test/btyacc/code_error.code.c | 6 +-
contrib/byacc/test/btyacc/defines1.calc.c | 23 +-
contrib/byacc/test/btyacc/defines2.calc.c | 23 +-
contrib/byacc/test/btyacc/defines3.calc.c | 23 +-
contrib/byacc/test/btyacc/empty.tab.c | 6 +-
contrib/byacc/test/btyacc/err_inherit1.tab.c | 4 +-
contrib/byacc/test/btyacc/err_inherit2.tab.c | 4 +-
contrib/byacc/test/btyacc/err_inherit3.tab.c | 29 +-
contrib/byacc/test/btyacc/err_inherit3.tab.h | 2 +-
contrib/byacc/test/btyacc/err_inherit4.tab.c | 27 +-
contrib/byacc/test/btyacc/err_inherit4.tab.h | 2 +-
contrib/byacc/test/btyacc/err_inherit5.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax1.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax10.tab.c | 6 +-
contrib/byacc/test/btyacc/err_syntax11.tab.c | 6 +-
contrib/byacc/test/btyacc/err_syntax12.tab.c | 6 +-
contrib/byacc/test/btyacc/err_syntax13.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax14.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax15.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax16.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax17.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax18.tab.c | 9 +-
contrib/byacc/test/btyacc/err_syntax19.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax2.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax20.tab.c | 9 +-
contrib/byacc/test/btyacc/err_syntax21.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax22.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax23.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax24.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax25.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax26.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax27.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax3.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax4.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax5.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax6.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax7.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax7a.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax7b.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax8.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax8a.tab.c | 4 +-
contrib/byacc/test/btyacc/err_syntax9.tab.c | 4 +-
contrib/byacc/test/btyacc/error.tab.c | 6 +-
contrib/byacc/test/btyacc/expr.oxout.tab.c | 114 +-
contrib/byacc/test/btyacc/expr.oxout.tab.h | 10 +-
contrib/byacc/test/btyacc/grammar.tab.c | 90 +-
contrib/byacc/test/btyacc/help.error | 11 +
contrib/byacc/test/btyacc/inherit0.tab.c | 19 +-
contrib/byacc/test/btyacc/inherit1.tab.c | 21 +-
contrib/byacc/test/btyacc/inherit1.tab.h | 2 +-
contrib/byacc/test/btyacc/inherit2.tab.c | 28 +-
contrib/byacc/test/btyacc/inherit2.tab.h | 2 +-
contrib/byacc/test/btyacc/no_b_opt.error | 11 +
contrib/byacc/test/btyacc/no_output2.error | 11 +
contrib/byacc/test/btyacc/no_p_opt.error | 11 +
contrib/byacc/test/btyacc/nostdin.error | 11 +
contrib/byacc/test/btyacc/ok_syntax1.tab.c | 25 +-
contrib/byacc/test/btyacc/ok_syntax1.tab.h | 2 +-
contrib/byacc/test/btyacc/pure_calc.tab.c | 23 +-
contrib/byacc/test/btyacc/pure_error.tab.c | 6 +-
contrib/byacc/test/btyacc/quote_calc-s.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc2-s.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc2.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc3-s.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc3.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc4-s.tab.c | 23 +-
contrib/byacc/test/btyacc/quote_calc4.tab.c | 23 +-
contrib/byacc/test/btyacc/rename_debug.c | 6 +-
contrib/byacc/test/btyacc/stdin1.calc.c | 23 +-
contrib/byacc/test/btyacc/stdin2.calc.c | 23 +-
contrib/byacc/test/btyacc/varsyntax_calc1.tab.c | 35 +-
contrib/byacc/test/btyacc/varsyntax_calc1.tab.h | 2 +-
contrib/byacc/test/expr.oxout.y | 18 +-
contrib/byacc/test/run_lint.sh | 11 +-
contrib/byacc/test/run_make.sh | 39 +-
contrib/byacc/test/run_test.sh | 69 +-
contrib/byacc/test/yacc/big_b.error | 11 +
contrib/byacc/test/yacc/big_l.error | 11 +
contrib/byacc/test/yacc/calc.tab.c | 25 +-
contrib/byacc/test/yacc/calc1.tab.c | 37 +-
contrib/byacc/test/yacc/calc1.tab.h | 2 +-
contrib/byacc/test/yacc/calc2.tab.c | 25 +-
contrib/byacc/test/yacc/calc3.tab.c | 25 +-
contrib/byacc/test/yacc/calc_code_all.tab.c | 25 +-
contrib/byacc/test/yacc/calc_code_default.tab.c | 25 +-
contrib/byacc/test/yacc/calc_code_imports.tab.c | 25 +-
contrib/byacc/test/yacc/calc_code_provides.tab.c | 25 +-
contrib/byacc/test/yacc/calc_code_requires.tab.c | 25 +-
contrib/byacc/test/yacc/calc_code_top.tab.c | 25 +-
contrib/byacc/test/yacc/code_calc.code.c | 25 +-
contrib/byacc/test/yacc/code_error.code.c | 8 +-
contrib/byacc/test/yacc/defines1.calc.c | 25 +-
contrib/byacc/test/yacc/defines2.calc.c | 25 +-
contrib/byacc/test/yacc/defines3.calc.c | 25 +-
contrib/byacc/test/yacc/empty.tab.c | 8 +-
contrib/byacc/test/yacc/err_syntax1.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax10.tab.c | 8 +-
contrib/byacc/test/yacc/err_syntax11.tab.c | 8 +-
contrib/byacc/test/yacc/err_syntax12.tab.c | 8 +-
contrib/byacc/test/yacc/err_syntax13.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax14.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax15.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax16.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax17.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax18.tab.c | 11 +-
contrib/byacc/test/yacc/err_syntax19.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax2.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax20.tab.c | 11 +-
contrib/byacc/test/yacc/err_syntax21.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax22.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax23.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax24.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax25.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax26.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax27.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax3.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax4.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax5.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax6.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax7.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax7a.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax7b.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax8.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax8a.tab.c | 4 +-
contrib/byacc/test/yacc/err_syntax9.tab.c | 4 +-
contrib/byacc/test/yacc/error.tab.c | 8 +-
contrib/byacc/test/yacc/expr.oxout.tab.c | 104 +-
contrib/byacc/test/yacc/expr.oxout.tab.h | 4 +-
contrib/byacc/test/yacc/grammar.tab.c | 92 +-
contrib/byacc/test/yacc/help.error | 11 +
contrib/byacc/test/yacc/no_b_opt.error | 11 +
contrib/byacc/test/yacc/no_output2.error | 11 +
contrib/byacc/test/yacc/no_p_opt.error | 11 +
contrib/byacc/test/yacc/nostdin.error | 11 +
contrib/byacc/test/yacc/ok_syntax1.tab.c | 27 +-
contrib/byacc/test/yacc/ok_syntax1.tab.h | 2 +-
contrib/byacc/test/yacc/pure_calc.tab.c | 25 +-
contrib/byacc/test/yacc/pure_error.tab.c | 8 +-
contrib/byacc/test/yacc/quote_calc-s.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc2-s.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc2.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc3-s.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc3.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc4-s.tab.c | 25 +-
contrib/byacc/test/yacc/quote_calc4.tab.c | 25 +-
contrib/byacc/test/yacc/rename_debug.c | 8 +-
contrib/byacc/test/yacc/stdin1.calc.c | 25 +-
contrib/byacc/test/yacc/stdin2.calc.c | 25 +-
contrib/byacc/test/yacc/varsyntax_calc1.tab.c | 37 +-
contrib/byacc/test/yacc/varsyntax_calc1.tab.h | 2 +-
contrib/byacc/verbose.c | 64 +-
contrib/byacc/warshall.c | 10 +-
contrib/byacc/yacc.1 | 67 +-
contrib/byacc/yaccpar.c | 6 +-
contrib/byacc/yaccpar.skel | 6 +-
usr.bin/yacc/config.h | 22 +-
216 files changed, 9925 insertions(+), 4290 deletions(-)
diff --cc contrib/byacc/reader.c
index 3bbf9a79c187,5e8ca67bc648..85d6506e0a1f
--- a/contrib/byacc/reader.c
+++ b/contrib/byacc/reader.c
@@@ -898,9 -907,8 +907,8 @@@ copy_union(void
puts_both("#ifndef YYSTYPE_IS_DECLARED\n");
puts_both("#define YYSTYPE_IS_DECLARED 1\n");
- if (!lflag)
- fprintf(text_file, line_format, lineno, input_file_name);
+ fprintf_lineno(text_file, lineno, input_file_name);
- puts_both("typedef union YYSTYPE");
+ puts_both("typedef union");
depth = 0;
loop:
diff --cc contrib/byacc/test/btyacc/calc.tab.c
index 906a4b4e04d8,000000000000..b90dc3b1c9db
mode 100644,000000..100644
--- a/contrib/byacc/test/btyacc/calc.tab.c
+++ b/contrib/byacc/test/btyacc/calc.tab.c
@@@ -1,1474 -1,0 +1,1489 @@@
+/* original parser id follows */
+/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
+/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
+
+#define YYBYACC 1
- #define YYMAJOR 1
- #define YYMINOR 9
++#define YYMAJOR 2
++#define YYMINOR 0
+#define YYCHECK "yyyymmdd"
+
+#define YYEMPTY (-1)
+#define yyclearin (yychar = YYEMPTY)
+#define yyerrok (yyerrflag = 0)
+#define YYRECOVERING() (yyerrflag != 0)
+#define YYENOMEM (-2)
+#define YYEOF 0
+#undef YYBTYACC
+#define YYBTYACC 0
+#define YYDEBUGSTR YYPREFIX "debug"
+
+#ifndef yyparse
+#define yyparse calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred calc_defred
+#endif /* yydefred */
+
+#ifndef yystos
+#define yystos calc_stos
+#endif /* yystos */
+
+#ifndef yydgoto
+#define yydgoto calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule calc_rule
+#endif /* yyrule */
+
+#if YYBTYACC
+
+#ifndef yycindex
+#define yycindex calc_cindex
+#endif /* yycindex */
+
+#ifndef yyctable
+#define yyctable calc_ctable
+#endif /* yyctable */
+
+#endif /* YYBTYACC */
+
+#define YYPREFIX "calc_"
+
+#define YYPURE 0
+
+#line 2 "calc.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+extern int yylex(void);
+static void yyerror(const char *s);
+
+#line 131 "calc.tab.c"
+
+#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
+/* Default: YYSTYPE is the semantic value type. */
+typedef int YYSTYPE;
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
+#define YYERRCODE 256
+typedef int YYINT;
+static const YYINT calc_lhs[] = { -1,
+ 0, 0, 0, 1, 1, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 3, 3,
+};
+static const YYINT calc_len[] = { 2,
+ 0, 3, 3, 1, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 2, 1, 1, 1, 2,
+};
+static const YYINT calc_defred[] = { 1,
+ 0, 0, 17, 0, 0, 0, 0, 0, 0, 3,
+ 0, 15, 14, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 18, 0, 6, 0, 0, 0, 0, 9,
+ 10, 11,
+};
+#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
+static const YYINT calc_stos[] = { 0,
+ 261, 256, 257, 258, 45, 40, 262, 263, 264, 10,
+ 61, 258, 263, 263, 10, 124, 38, 43, 45, 42,
+ 47, 37, 257, 263, 41, 263, 263, 263, 263, 263,
+ 263, 263,
+};
+#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
+static const YYINT calc_dgoto[] = { 1,
+ 7, 8, 9,
+};
+static const YYINT calc_sindex[] = { 0,
+ -40, -7, 0, -55, -38, -38, 1, -29, -247, 0,
+ -38, 0, 0, 22, 0, -38, -38, -38, -38, -38,
+ -38, -38, 0, -29, 0, 51, 60, -20, -20, 0,
+ 0, 0,
+};
+static const YYINT calc_rindex[] = { 0,
+ 0, 0, 0, 2, 0, 0, 0, 9, -9, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 10, 0, -6, 14, 5, 13, 0,
+ 0, 0,
+};
+#if YYBTYACC
+static const YYINT calc_cindex[] = { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,
+};
+#endif
+static const YYINT calc_gindex[] = { 0,
+ 0, 65, 0,
+};
+#define YYTABLESIZE 220
+static const YYINT calc_table[] = { 6,
+ 16, 6, 10, 13, 5, 11, 5, 22, 17, 23,
+ 15, 15, 20, 18, 7, 19, 22, 21, 4, 5,
+ 0, 20, 8, 12, 0, 0, 21, 16, 16, 0,
+ 0, 16, 16, 16, 13, 16, 0, 16, 15, 15,
+ 0, 0, 7, 15, 15, 7, 15, 7, 15, 7,
+ 8, 12, 0, 8, 12, 8, 0, 8, 22, 17,
+ 0, 0, 25, 20, 18, 0, 19, 0, 21, 13,
+ 14, 0, 0, 0, 0, 24, 0, 0, 0, 0,
+ 26, 27, 28, 29, 30, 31, 32, 22, 17, 0,
+ 0, 0, 20, 18, 16, 19, 22, 21, 0, 0,
+ 0, 20, 18, 0, 19, 0, 21, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 15, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 8, 12, 0, 0,
+ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 3, 4, 3, 12,
+};
+static const YYINT calc_check[] = { 40,
+ 10, 40, 10, 10, 45, 61, 45, 37, 38, 257,
+ 10, 10, 42, 43, 10, 45, 37, 47, 10, 10,
+ -1, 42, 10, 10, -1, -1, 47, 37, 38, -1,
+ -1, 41, 42, 43, 41, 45, -1, 47, 37, 38,
+ -1, -1, 38, 42, 43, 41, 45, 43, 47, 45,
+ 38, 38, -1, 41, 41, 43, -1, 45, 37, 38,
+ -1, -1, 41, 42, 43, -1, 45, -1, 47, 5,
+ 6, -1, -1, -1, -1, 11, -1, -1, -1, -1,
+ 16, 17, 18, 19, 20, 21, 22, 37, 38, -1,
+ -1, -1, 42, 43, 124, 45, 37, 47, -1, -1,
+ -1, 42, 43, -1, 45, -1, 47, -1, -1, -1,
+ -1, -1, -1, -1, 124, -1, -1, 124, -1, -1,
+ -1, -1, -1, -1, -1, 124, -1, -1, 124, -1,
+ -1, -1, -1, -1, -1, -1, 124, 124, -1, -1,
+ -1, -1, -1, -1, -1, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 256, 257, 258, 257, 258,
+};
+#if YYBTYACC
+static const YYINT calc_ctable[] = { -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+#endif
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 259
+#define YYUNDFTOKEN 265
+#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
+#if YYDEBUG
+static const char *const calc_name[] = {
+
+"$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
+0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",
+"illegal-symbol",
+};
+static const char *const calc_rule[] = {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=' expr",
+"expr : '(' expr ')'",
+"expr : expr '+' expr",
+"expr : expr '-' expr",
+"expr : expr '*' expr",
+"expr : expr '/' expr",
+"expr : expr '%' expr",
+"expr : expr '&' expr",
+"expr : expr '|' expr",
+"expr : '-' expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+#if YYDEBUG
+int yydebug;
+#endif
+
+int yyerrflag;
+int yychar;
+YYSTYPE yyval;
+YYSTYPE yylval;
+int yynerrs;
+
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+YYLTYPE yyloc; /* position returned by actions */
+YYLTYPE yylloc; /* position from the lexer */
+#endif
+
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+#ifndef YYLLOC_DEFAULT
+#define YYLLOC_DEFAULT(loc, rhs, n) \
+do \
+{ \
+ if (n == 0) \
+ { \
+ (loc).first_line = YYRHSLOC(rhs, 0).last_line; \
+ (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
+ (loc).last_line = YYRHSLOC(rhs, 0).last_line; \
+ (loc).last_column = YYRHSLOC(rhs, 0).last_column; \
+ } \
+ else \
+ { \
+ (loc).first_line = YYRHSLOC(rhs, 1).first_line; \
+ (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
+ (loc).last_line = YYRHSLOC(rhs, n).last_line; \
+ (loc).last_column = YYRHSLOC(rhs, n).last_column; \
+ } \
+} while (0)
+#endif /* YYLLOC_DEFAULT */
+#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
+#if YYBTYACC
+
+#ifndef YYLVQUEUEGROWTH
+#define YYLVQUEUEGROWTH 32
+#endif
+#endif /* YYBTYACC */
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 10000
+#define YYMAXDEPTH 10000
+#endif
+#endif
+
+#ifndef YYINITSTACKSIZE
+#define YYINITSTACKSIZE 200
+#endif
+
+typedef struct {
+ unsigned stacksize;
+ YYINT *s_base;
+ YYINT *s_mark;
+ YYINT *s_last;
+ YYSTYPE *l_base;
+ YYSTYPE *l_mark;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ YYLTYPE *p_base;
+ YYLTYPE *p_mark;
+#endif
+} YYSTACKDATA;
+#if YYBTYACC
+
+struct YYParseState_s
+{
+ struct YYParseState_s *save; /* Previously saved parser state */
+ YYSTACKDATA yystack; /* saved parser stack */
+ int state; /* saved parser state */
+ int errflag; /* saved error recovery status */
+ int lexeme; /* saved index of the conflict lexeme in the lexical queue */
+ YYINT ctry; /* saved index in yyctable[] for this conflict */
+};
+typedef struct YYParseState_s YYParseState;
+#endif /* YYBTYACC */
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#if YYBTYACC
+
+/* Current parser state */
+static YYParseState *yyps = 0;
+
+/* yypath != NULL: do the full parse, starting at *yypath parser state. */
+static YYParseState *yypath = 0;
+
+/* Base of the lexical value queue */
+static YYSTYPE *yylvals = 0;
+
+/* Current position at lexical value queue */
+static YYSTYPE *yylvp = 0;
+
+/* End position of lexical value queue */
+static YYSTYPE *yylve = 0;
+
+/* The last allocated position at the lexical value queue */
+static YYSTYPE *yylvlim = 0;
+
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+/* Base of the lexical position queue */
+static YYLTYPE *yylpsns = 0;
+
+/* Current position at lexical position queue */
+static YYLTYPE *yylpp = 0;
+
+/* End position of lexical position queue */
+static YYLTYPE *yylpe = 0;
+
+/* The last allocated position at the lexical position queue */
+static YYLTYPE *yylplim = 0;
+#endif
+
+/* Current position at lexical token queue */
+static YYINT *yylexp = 0;
+
+static YYINT *yylexemes = 0;
+#endif /* YYBTYACC */
+#line 66 "calc.y"
+ /* start of programs */
+
+int
+main (void)
+{
+ while(!feof(stdin)) {
+ yyparse();
+ }
+ return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+ fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+ /* lexical analysis routine */
+ /* returns LETTER for a lower case letter, yylval = 0 through 25 */
+ /* return DIGIT for a digit, yylval = 0 through 9 */
+ /* all other characters are returned immediately */
+
+ int c;
+
+ while( (c=getchar()) == ' ' ) { /* skip blanks */ }
+
+ /* c is now nonblank */
+
+ if( islower( c )) {
+ yylval = c - 'a';
+ return ( LETTER );
+ }
+ if( isdigit( c )) {
+ yylval = c - '0';
+ return ( DIGIT );
+ }
+ return( c );
+}
+#line 511 "calc.tab.c"
+
+/* For use in generated program */
+#define yydepth (int)(yystack.s_mark - yystack.s_base)
+#if YYBTYACC
+#define yytrial (yyps->save)
+#endif /* YYBTYACC */
+
+#if YYDEBUG
+#include <stdio.h> /* needed for printf */
+#endif
+
+#include <stdlib.h> /* needed for malloc, etc */
+#include <string.h> /* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+ int i;
+ unsigned newsize;
+ YYINT *newss;
+ YYSTYPE *newvs;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ YYLTYPE *newps;
+#endif
+
+ if ((newsize = data->stacksize) == 0)
+ newsize = YYINITSTACKSIZE;
+ else if (newsize >= YYMAXDEPTH)
+ return YYENOMEM;
+ else if ((newsize *= 2) > YYMAXDEPTH)
+ newsize = YYMAXDEPTH;
+
+ i = (int) (data->s_mark - data->s_base);
+ newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
+ if (newss == NULL)
+ return YYENOMEM;
+
+ data->s_base = newss;
+ data->s_mark = newss + i;
+
+ newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+ if (newvs == NULL)
+ return YYENOMEM;
+
+ data->l_base = newvs;
+ data->l_mark = newvs + i;
+
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
+ if (newps == NULL)
+ return YYENOMEM;
+
+ data->p_base = newps;
+ data->p_mark = newps + i;
+#endif
+
+ data->stacksize = newsize;
+ data->s_last = data->s_base + newsize - 1;
+
+#if YYDEBUG
+ if (yydebug)
+ fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
+#endif
+ return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+ free(data->s_base);
+ free(data->l_base);
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ free(data->p_base);
+#endif
+ memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif /* YYPURE || defined(YY_NO_LEAKS) */
+#if YYBTYACC
+
+static YYParseState *
+yyNewState(unsigned size)
+{
+ YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
+ if (p == NULL) return NULL;
+
+ p->yystack.stacksize = size;
+ if (size == 0)
+ {
+ p->yystack.s_base = NULL;
+ p->yystack.l_base = NULL;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ p->yystack.p_base = NULL;
+#endif
+ return p;
+ }
+ p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));
+ if (p->yystack.s_base == NULL) return NULL;
+ p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
+ if (p->yystack.l_base == NULL) return NULL;
+ memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
+ if (p->yystack.p_base == NULL) return NULL;
+ memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
+#endif
+
+ return p;
+}
+
+static void
+yyFreeState(YYParseState *p)
+{
+ yyfreestack(&p->yystack);
+ free(p);
+}
+#endif /* YYBTYACC */
+
+#define YYABORT goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR goto yyerrlab
+#if YYBTYACC
+#define YYVALID do { if (yyps->save) goto yyvalid; } while(0)
+#define YYVALID_NESTED do { if (yyps->save && \
+ yyps->save->save == 0) goto yyvalid; } while(0)
+#endif /* YYBTYACC */
+
+int
+YYPARSE_DECL()
+{
+ int yym, yyn, yystate, yyresult;
+#if YYBTYACC
+ int yynewerrflag;
+ YYParseState *yyerrctx = NULL;
+#endif /* YYBTYACC */
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */
+#endif
+#if YYDEBUG
+ const char *yys;
+
+ if ((yys = getenv("YYDEBUG")) != NULL)
+ {
+ yyn = *yys;
+ if (yyn >= '0' && yyn <= '9')
+ yydebug = yyn - '0';
+ }
+ if (yydebug)
+ fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
+#endif
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
+#endif
+
+#if YYBTYACC
+ yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
+ yyps->save = 0;
+#endif /* YYBTYACC */
+ yym = 0;
- yyn = 0;
++ /* yyn is set below */
+ yynerrs = 0;
+ yyerrflag = 0;
+ yychar = YYEMPTY;
+ yystate = 0;
+
+#if YYPURE
+ memset(&yystack, 0, sizeof(yystack));
+#endif
+
+ if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
+ yystack.s_mark = yystack.s_base;
+ yystack.l_mark = yystack.l_base;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ yystack.p_mark = yystack.p_base;
+#endif
+ yystate = 0;
+ *yystack.s_mark = 0;
+
+yyloop:
+ if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
+ if (yychar < 0)
+ {
+#if YYBTYACC
+ do {
+ if (yylvp < yylve)
+ {
+ /* we're currently re-reading tokens */
+ yylval = *yylvp++;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ yylloc = *yylpp++;
+#endif
+ yychar = *yylexp++;
+ break;
+ }
+ if (yyps->save)
+ {
+ /* in trial mode; save scanner results for future parse attempts */
+ if (yylvp == yylvlim)
+ { /* Enlarge lexical value queue */
+ size_t p = (size_t) (yylvp - yylvals);
+ size_t s = (size_t) (yylvlim - yylvals);
+
+ s += YYLVQUEUEGROWTH;
+ if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
+ if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
+#endif
+ yylvp = yylve = yylvals + p;
+ yylvlim = yylvals + s;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+ yylpp = yylpe = yylpsns + p;
+ yylplim = yylpsns + s;
*** 87059 LINES SKIPPED ***