1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-17 10:26:15 +00:00

Import byacc 20140409

This commit is contained in:
Baptiste Daroussin 2014-04-22 22:11:22 +00:00
parent e0ae66db63
commit 4ecea33a98
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/byacc/dist/; revision=264790
svn path=/vendor/byacc/20140409/; revision=264791; tag=vendor/byacc/20140409
627 changed files with 89458 additions and 7060 deletions

721
CHANGES
View File

@ -1,9 +1,648 @@
2014-04-09 Rick.Spates
* main.c, defs.h: patch to allow DEBUG build with WIN32 system
2014-04-09 Thomas E. Dickey <tom@invisible-island.net>
* output.c, reader.c: gcc warnings
* reader.c: fix const-cast warnings
* test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/ok_syntax1.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/code_error.tab.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/error.tab.c, test/btyacc/rename_debug.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.tab.c, output.c:
fix a few clang --analyze warnings; one was a case where output_ctable emitted
an empty table (which should be an error).
* reader.c: appease clang --analyze
* defs.h: mark two functions as no-return.
* package/debian/changelog: reason for release
* VERSION, package/byacc.spec, package/debian/changelog, package/mingw-byacc.spec, package/pkgsrc/Makefile:
bump
* makefile.in: use $LINT_OPTS from environment via configure script
* test/btyacc/ok_syntax1.output, test/btyacc/ok_syntax1.tab.c, test/yacc/ok_syntax1.tab.c, test/ok_syntax1.y, test/yacc/ok_syntax1.output:
tweaks to make generated files from ok_syntax1.y compile with check_make rule
* test/btyacc/rename_debug.c, test/btyacc/rename_debug.error, test/btyacc/rename_debug.h, test/btyacc/rename_debug.i, test/btyacc/rename_debug.output, test/yacc/rename_debug.c:
reference output for testing
* test/run_test.sh:
retain the renaming done for code_debug.y so that check_make will work.
* test/yacc/rename_debug.error, test/yacc/rename_debug.h, test/yacc/rename_debug.i, test/yacc/rename_debug.output:
reference output for testing
* test/btyacc/ok_syntax1.error: RCS_BASE
* test/yacc/quote_calc4-s.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/ok_syntax1.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, yaccpar.c:
regen
* yacc.1:
clarify relationship of btyacc features to default configuration.
2014-04-08 Thomas E. Dickey <tom@invisible-island.net>
* test/yacc/ok_syntax1.output, test/yacc/ok_syntax1.tab.c, test/yacc/ok_syntax1.tab.h, test/btyacc/ok_syntax1.output, test/btyacc/ok_syntax1.tab.c, test/btyacc/ok_syntax1.tab.h:
reference output for testing
* test/ok_syntax1.y: RCS_BASE
* test/yacc/ok_syntax1.error: reference output for testing
* test/yacc/big_b.error, test/yacc/big_b.output, test/yacc/big_l.error, test/yacc/big_l.output, test/btyacc/big_b.error, test/btyacc/big_b.output, test/btyacc/big_l.error, test/btyacc/big_l.output, test/run_test.sh:
exercise -L/-B options
* test/yacc/code_debug.c, test/btyacc/code_debug.c, test/yacc/err_syntax15.tab.c, test/yacc/err_syntax16.tab.c, test/yacc/err_syntax17.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax19.tab.c, test/yacc/err_syntax2.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/err_syntax21.tab.c, test/yacc/err_syntax22.tab.c, test/yacc/err_syntax23.tab.c, test/yacc/err_syntax24.tab.c, test/yacc/err_syntax25.tab.c, test/yacc/err_syntax26.tab.c, test/yacc/err_syntax27.tab.c, test/yacc/err_syntax3.tab.c, test/yacc/err_syntax4.tab.c, test/yacc/err_syntax5.tab.c, test/yacc/err_syntax6.tab.c, test/yacc/err_syntax7.tab.c, test/yacc/err_syntax7a.tab.c, test/yacc/err_syntax7b.tab.c, test/yacc/err_syntax8.tab.c, test/yacc/err_syntax8a.tab.c, test/yacc/err_syntax9.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax1.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax13.tab.c, test/yacc/err_syntax14.tab.c, test/btyacc/err_syntax13.tab.c, test/btyacc/err_syntax14.tab.c, test/btyacc/err_syntax15.tab.c, test/btyacc/err_syntax16.tab.c, test/btyacc/err_syntax17.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax19.tab.c, test/btyacc/err_syntax2.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/err_syntax21.tab.c, test/btyacc/err_syntax22.tab.c, test/btyacc/err_syntax23.tab.c, test/btyacc/err_syntax24.tab.c, test/btyacc/err_syntax25.tab.c, test/btyacc/err_syntax26.tab.c, test/btyacc/err_syntax27.tab.c, test/btyacc/err_syntax3.tab.c, test/btyacc/err_syntax4.tab.c, test/btyacc/err_syntax5.tab.c, test/btyacc/err_syntax6.tab.c, test/btyacc/err_syntax7.tab.c, test/btyacc/err_syntax7a.tab.c, test/btyacc/err_syntax7b.tab.c, test/btyacc/err_syntax8.tab.c, test/btyacc/err_syntax8a.tab.c, test/btyacc/err_syntax9.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit1.tab.c, test/btyacc/err_inherit2.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_inherit5.tab.c, test/btyacc/err_syntax1.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/run_test.sh, test/yacc/no_b_opt1.output:
use a better renaming of the YYPATCH definition (none of the test-cases rely
upon it, but redefinition in the "make check_make" rule is a problem).
* test/btyacc/err_syntax1.tab.c, test/btyacc/err_syntax13.tab.c, test/btyacc/err_syntax2.tab.c, test/btyacc/err_syntax25.tab.c, test/btyacc/err_syntax26.tab.c, test/btyacc/err_syntax27.tab.c, test/btyacc/err_syntax3.tab.c, test/btyacc/err_syntax4.tab.c, test/btyacc/err_syntax5.tab.c, test/btyacc/err_syntax6.tab.c, test/btyacc/err_syntax7.tab.c, test/btyacc/err_syntax7a.tab.c, test/btyacc/err_syntax7b.tab.c, test/btyacc/err_syntax8.tab.c, test/btyacc/err_syntax8a.tab.c, test/btyacc/err_syntax9.tab.c, test/btyacc/varsyntax_calc1.tab.c:
undid temporary reordering in reader() by Tom Shields to align with byacc outputs
* test/run_test.sh: remove a repeated test-case
* mstring.c: minor reformatting to make coverage analysis simpler
2014-04-07 Thomas E. Dickey <tom@invisible-island.net>
* test/run_test.sh: tidy
* test/yacc/help.error, test/yacc/help.output, test/yacc/no_b_opt.error, test/yacc/no_b_opt.output, test/yacc/no_b_opt1.error, test/yacc/no_b_opt1.output, test/yacc/no_code_c.error, test/yacc/no_code_c.output, test/yacc/no_defines.error, test/yacc/no_defines.output, test/yacc/no_graph.error, test/yacc/no_graph.output, test/yacc/no_include.error, test/yacc/no_include.output, test/yacc/no_opts.error, test/yacc/no_opts.output, test/yacc/no_output.error, test/yacc/no_output.output, test/yacc/no_output1.error, test/yacc/no_output1.output, test/yacc/no_output2.error, test/yacc/no_output2.output, test/yacc/no_p_opt.error, test/yacc/no_p_opt.output, test/yacc/no_p_opt1.error, test/yacc/no_p_opt1.output, test/yacc/no_verbose.error, test/yacc/no_verbose.output, test/yacc/nostdin.error, test/yacc/nostdin.output, test/yacc/test-no_b_opt1.output:
reference output for testing
* test/run_test.sh:
add special checks for flags which depend on writable/existing files
* test/btyacc/no_b_opt1.output, test/btyacc/no_p_opt1.output, test/btyacc/no_b_opt.error, test/btyacc/no_b_opt.output, test/btyacc/no_b_opt1.error, test/btyacc/no_code_c.output, test/btyacc/no_p_opt.error, test/btyacc/no_p_opt.output, test/btyacc/no_p_opt1.error, test/btyacc/no_output2.output, test/btyacc/no_code_c.error, test/btyacc/no_output2.error, test/btyacc/no_include.error, test/btyacc/no_include.output, test/btyacc/no_defines.output, test/btyacc/no_defines.error, test/btyacc/no_verbose.output, test/btyacc/no_graph.output, test/btyacc/no_graph.error, test/btyacc/no_opts.error, test/btyacc/no_opts.output, test/btyacc/no_verbose.error, test/btyacc/nostdin.error, test/btyacc/nostdin.output, test/btyacc/no_output.error, test/btyacc/no_output.output, test/btyacc/no_output1.error, test/btyacc/no_output1.output:
reference output for testing
* main.c:
change CREATE_FILE_NAMES() to use local function rather than inline code,
to simplify coverage analysis.
* test/btyacc/err_syntax27.error, test/btyacc/err_syntax27.output, test/btyacc/err_syntax27.tab.c, test/btyacc/err_syntax27.tab.h, test/btyacc/help.error, test/btyacc/help.output, test/yacc/err_syntax27.error, test/yacc/err_syntax27.output, test/yacc/err_syntax27.tab.c, test/yacc/err_syntax27.tab.h:
reference output for testing
* test/err_syntax27.y: testcase for missing_brace()
* error.c: ifdef'd non-btyacc function
* lr0.c: ifdef'd debug-code
* yaccpar.skel: use YYINT's to replace short's as in btyaccpar.skel
* test/btyacc/code_debug.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax14.tab.c, test/btyacc/err_syntax15.tab.c, test/btyacc/err_syntax16.tab.c, test/btyacc/err_syntax17.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax19.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/err_syntax21.tab.c, test/btyacc/err_syntax22.tab.c, test/btyacc/err_syntax23.tab.c, test/btyacc/err_syntax24.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit1.tab.c, test/btyacc/err_inherit2.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_inherit5.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_debug.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, output.c, test/yacc/err_syntax1.tab.c, test/yacc/err_syntax13.tab.c, test/yacc/err_syntax14.tab.c, test/yacc/err_syntax15.tab.c, test/yacc/err_syntax16.tab.c, test/yacc/err_syntax17.tab.c, test/yacc/err_syntax19.tab.c, test/yacc/err_syntax2.tab.c, test/yacc/err_syntax21.tab.c, test/yacc/err_syntax22.tab.c, test/yacc/err_syntax23.tab.c, test/yacc/err_syntax24.tab.c, test/yacc/err_syntax25.tab.c, test/yacc/err_syntax26.tab.c, test/yacc/err_syntax3.tab.c, test/yacc/err_syntax4.tab.c, test/yacc/err_syntax5.tab.c, test/yacc/err_syntax6.tab.c, test/yacc/err_syntax7.tab.c, test/yacc/err_syntax7a.tab.c, test/yacc/err_syntax7b.tab.c, test/yacc/err_syntax8.tab.c, test/yacc/err_syntax8a.tab.c, test/yacc/err_syntax9.tab.c, test/run_test.sh:
2010/11/26 simplification of output.c using putc_code() and putl_code()
omitted an adjustment of the #line value used for code-file. Fix that.
Also, amend 2005/05/04 change to run_test.sh to retain a dummy line for
YYPATCH #define's to make test-outputs easier to compare #line's (report
by Tom Shields)
2014-04-06 Thomas E. Dickey <tom@invisible-island.net>
* reader.c: fix for valgrind
(the calloc's are intentional - valgrind reported use of uninitialized memory)
* lr0.c, output.c: fix for valgrind
* test/btyacc/code_debug.c, test/btyacc/code_debug.error, test/btyacc/code_debug.h, test/btyacc/code_debug.i, test/btyacc/code_debug.output:
RCS_BASE
* test/yacc/code_debug.c, test/yacc/code_debug.h:
exercise the -i option
* test/yacc/code_debug.i: reference output for testing
* test/run_test.sh: exercise the -i option
* test/yacc/code_debug.c: reference output for testing
* test/run_test.sh: exercise the "-o" option
* test/yacc/code_debug.error, test/yacc/code_debug.h, test/yacc/code_debug.output:
reference output for testing
* output.c: don't call exit() without giving a chance to cleanup.
* mstring.c: ifdef'd functions not used in byacc
* btyaccpar.c: generated from btyaccpar.skel
* yaccpar.c: generated from yaccpar.skel
* skel2c:
change the generated-by comment to show which version of this script (and
which version of the given skeleton file) were used to produce the C-file.
* configure: regen
* makefile.in:
add rules to generate byacc and btyacc parser skeleton files independently
* aclocal.m4: CF_PROG_AWK - add to byacc's configure script
CF_INTEL_COMPILER
cleanup the -no-gcc option which was leftover from testing - prcs does
not build with this option.
CF_MAKE_DOCS
protect $2 from substitution, for luit's "$(manext)"
CF_XOPEN_SOURCE
for Solaris (tested with gcc/g++ 3.4.3 on Solaris 10 and gcc/g++ 4.5.2
on Solaris 11), suppress the followup check for defining _XOPEN_SOURCE
because it is not needed, as well as because g++ 4.7.3 (no package,
used in Sage for Solaris 10) has some unspecified header breakage which
is triggered by the duplicate definition.
* configure.in:
modify so skeleton-source is determined by configure options rather than by
having developer rename yaccpar.skel.old to yaccpar.skel
* descrip.mms: rename skeleton
* vmsbuild.com:
fwiw, renamed the skeleton for consistency with makefile
* skel2c, skeleton.c: resync skeleton and its generating files
* yaccpar.skel:
renamed yaccpar.skel.old to yaccpar.skel, to allow using makefile suffix rules
* yaccpar.skel.old: resync skeleton and its generating files
* test/run_make.sh: improve cleanup after error recovery
* test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, output.c, skeleton.c, defs.h:
use improvement from Tom Shield's btyacc changes, getting rid of special cases for generating two yyerror calls in skeleton
* output.c: simplify output_yyerror_decl()
* test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.tab.c, test/yacc/code_error.tab.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, output.c:
add second "const" to string-table declarations, from Tom Shield's btyacc changes
* test/btyacc/err_syntax20.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax18.tab.c:
discard unnecessary call on write_code_lineno() from Tom Shield's changes
* test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_calc.tab.c, test/yacc/code_error.code.c, test/yacc/code_error.tab.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax20.tab.c, output.c:
use YYINT typedef from Tom Shield's btyacc changes to replace explicit "short"
* test/yacc/code_calc.code.c, test/yacc/code_error.code.c, output.c:
use fix from Tom Shield's btyacc changes: remove redundant extern-declaration for YYPARSE_DECL()
* test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c:
discard unnecessary call on write_code_lineno() from Tom Shield's changes
* output.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/code_calc.tab.c, test/yacc/code_error.tab.c:
use fix from Tom Shield's btyacc changes: prefix-definitions went to the
output (.tab.c) file in a case where they should have gone to the code
(.code.c) file. Remove now-redundant call to output_prefix().
* main.c: do the same for help-message
* main.c: use OUTPUT_SUFFIX symbol in an overlooked case
* test/run_make.sh:
modify to avoid use of VPATH, which has no standard implementation
2014-04-05 Thomas E. Dickey <tom@invisible-island.net>
* test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/error.tab.c:
discard a change which merged CountLines() with explicit comparisons against
code_file because that adds extra to the #line values
* test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/calc.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/error.tab.c, output.c:
add Tom Shield's change to allow definition of YYSTYPE_IS_DECLARED symbol to
override fallback typedef for YYSTYPE when that symbol is undefined
* test/btyacc/error.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax18.tab.c:
minor tweak to coding style - use parenthesis for "defined" operator's parameter
* test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c:
regen to make YYMAXTOKEN and YYUNDFTOKEN adjacent
* test/yacc/err_syntax20.tab.c, test/yacc/grammar.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_calc.tab.c, test/yacc/code_error.code.c, test/yacc/code_error.tab.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c:
regen after adding the YYUNDFTOKEN symbol
* output.c:
integrate Tom Shield's btyacc changes which introduce the YYUNDFTOKEN symbol
(I changed order of output to keep this adjacent to YYMAXTOKEN)
* reader.c:
merge all but one small change from Tom Shield's btyacc changes - that
changes the order of code-file in the tests.
* test/btyacc/btyacc_demo.tab.c: regen
* test/btyacc_demo.y: fix prototypes
2014-04-04 Thomas E. Dickey <tom@invisible-island.net>
* reader.c, defs.h, main.c:
more merging of Tom Shield's btyacc changes. In the merge, I moved the
symbol_pval inside the btyacc ifdef's and added some more btyacc ifdefs
2014-04-03 Thomas E. Dickey <tom@invisible-island.net>
* reader.c:
merge-in 3/4 of btyacc's changes, deferring those which change test-outputs.
Tom Shield's changes split-out copy_string() and copy_comment() functions
to simplify some logic, as well as adding btyacc-only chunks
* makefile.in: build mstring.o, needed for changes in reader.c
* output.c:
merge-in all of btyacc's changes which do not change byacc's test-output.
Some of the merge uses ifdef-changes which I applied to ongoing resync,
e.g., the introduction of PER_STATE.
2014-04-02 Thomas E. Dickey <tom@invisible-island.net>
* test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c: regen
* output.c: fix typo
* output.c, reader.c:
merge in some chunks of reader and output files which do not affect byacc tests
* test/yacc/calc2.tab.c, test/yacc/calc3.tab.c: regen
* test/yacc/err_syntax6.tab.c, test/yacc/err_syntax7.tab.c, test/yacc/err_syntax7a.tab.c, test/yacc/err_syntax7b.tab.c, test/yacc/err_syntax8.tab.c, test/yacc/err_syntax8a.tab.c, test/yacc/err_syntax9.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax1.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax13.tab.c, test/yacc/err_syntax14.tab.c, test/yacc/err_syntax15.tab.c, test/yacc/err_syntax16.tab.c, test/yacc/err_syntax17.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax19.tab.c, test/yacc/err_syntax2.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/err_syntax21.tab.c, test/yacc/err_syntax22.tab.c, test/yacc/err_syntax23.tab.c, test/yacc/err_syntax24.tab.c, test/yacc/err_syntax25.tab.c, test/yacc/err_syntax26.tab.c, test/yacc/err_syntax3.tab.c, test/yacc/err_syntax4.tab.c, test/yacc/err_syntax5.tab.c, skeleton.c:
incorporate YYENOMEM and YYEOF symbols from btyacc
* output.c: merge chunk from btyacc changes for header-guards
* btyaccpar.skel: RCS_BASE
* yaccpar.skel: comment-out yysccsid[], for FreeBSD build-issues
remove GCC_UNUSED to reduce name-pollution as well as being simpler
* main.c:
move a btyacc symbol outside ifdef to work around current state of merge
* defs.h:
add USE_HEADER_GUARDS to defer whether to modify byacc's header-output
* test/run_make.sh:
do not try to compile files used for testing syntax-errors, since they are
likely to be incomplete
2014-04-02 Tom.Shields
* main.c: changes for btyacc
2014-04-01 Thomas E. Dickey <tom@invisible-island.net>
* reader.c:
integrate change by Tom Shields to use bsearch rather than successive
calls to matchec()
* defs.h: typedef __compar_fn_t is unnecessary
* test/btyacc/err_syntax20.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax18.tab.c:
omit the GCC_UNUSED, as noted by Tom Shields not really essential
2014-04-01 Tom.Shields
* verbose.c: changes for btyacc, ifdef'd
2014-04-01 Thomas E. Dickey <tom@invisible-island.net>
* mkpar.c: eliminate most of the ifdef's using macros
2014-04-01 Tom.Shields
* mkpar.c: merge btyacc changes (ifdef'd - no change to byacc)
* error.c:
new functions used for reporting errors from the btyacc configuration
(I reordered some, and ifdef'd the new ones -TD)
2014-03-31 Thomas E. Dickey <tom@invisible-island.net>
* test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c:
omit the GCC_UNUSED, as noted by Tom Shields not really essential
* test/btyacc/empty.tab.c, test/btyacc/err_inherit1.tab.c, test/btyacc/err_inherit2.tab.c, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.tab.c, test/btyacc/err_inherit5.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax14.tab.c, test/btyacc/err_syntax15.tab.c, test/btyacc/err_syntax16.tab.c, test/btyacc/err_syntax17.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax19.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/err_syntax21.tab.c, test/btyacc/err_syntax22.tab.c, test/btyacc/err_syntax23.tab.c, test/btyacc/err_syntax24.tab.c:
regen
2014-03-29 Thomas E. Dickey <tom@invisible-island.net>
* test/yacc/err_syntax22.tab.c, test/yacc/err_syntax23.tab.c, test/yacc/err_syntax24.tab.c, test/yacc/err_syntax25.tab.c, test/yacc/err_syntax26.tab.c, test/yacc/err_syntax3.tab.c, test/yacc/err_syntax4.tab.c, test/yacc/err_syntax5.tab.c, test/yacc/err_syntax6.tab.c, test/yacc/err_syntax7.tab.c, test/yacc/err_syntax7a.tab.c, test/yacc/err_syntax7b.tab.c, test/yacc/err_syntax8.tab.c, test/yacc/err_syntax8a.tab.c, test/yacc/err_syntax9.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax1.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax13.tab.c, test/yacc/err_syntax14.tab.c, test/yacc/err_syntax15.tab.c, test/yacc/err_syntax16.tab.c, test/yacc/err_syntax17.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax19.tab.c, test/yacc/err_syntax2.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/err_syntax21.tab.c, skeleton.c:
comment-out yysccsid in the banner because it produces unnecessary compiler
warnings. The suggested alternative (using #pragma ident) in the preceding
comment is also obsolete; remove that comment (request by Gleb Smirnoff).
* test/run_test.sh:
for yacc, ignore the inherit testcases, since they are btyacc-specific
2014-03-28 Thomas E. Dickey <tom@invisible-island.net>
* test/yacc/varsyntax_calc1.error, test/yacc/varsyntax_calc1.output, test/yacc/varsyntax_calc1.tab.c, test/yacc/varsyntax_calc1.tab.h, test/yacc/err_inherit3.error, test/yacc/err_inherit3.output, test/yacc/err_inherit3.tab.c, test/yacc/err_inherit3.tab.h, test/yacc/err_inherit4.error, test/yacc/err_inherit4.output, test/yacc/err_inherit4.tab.c, test/yacc/err_inherit4.tab.h, test/yacc/err_inherit5.error, test/yacc/err_inherit5.output, test/yacc/err_inherit5.tab.c, test/yacc/err_inherit5.tab.h, test/yacc/inherit0.error, test/yacc/inherit0.output, test/yacc/inherit0.tab.c, test/yacc/inherit0.tab.h, test/yacc/inherit1.error, test/yacc/inherit1.output, test/yacc/inherit1.tab.c, test/yacc/inherit1.tab.h, test/yacc/inherit2.error, test/yacc/inherit2.output, test/yacc/inherit2.tab.c, test/yacc/inherit2.tab.h, test/yacc/empty.error, test/yacc/empty.output, test/yacc/empty.tab.c, test/yacc/empty.tab.h, test/yacc/err_inherit1.error, test/yacc/err_inherit1.output, test/yacc/err_inherit1.tab.c, test/yacc/err_inherit1.tab.h, test/yacc/err_inherit2.error, test/yacc/err_inherit2.output, test/yacc/err_inherit2.tab.c, test/yacc/err_inherit2.tab.h:
reference output for testing
* test/run_lint.sh, test/run_make.sh, test/run_test.sh:
moving #define's out of makefile broke check for yacc vs btyacc (fix)
2014-03-28 Tom.Shields
* test/btyacc/btyacc_demo.tab.c, test/btyacc/err_inherit3.error, test/btyacc/err_inherit3.output, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit3.tab.h, test/btyacc/err_inherit2.error, test/btyacc/err_inherit2.output, test/btyacc/err_inherit2.tab.c, test/btyacc/err_inherit2.tab.h, test/btyacc/err_inherit4.error, test/btyacc/err_inherit4.output, test/btyacc/err_inherit4.tab.c, test/btyacc/err_inherit4.tab.h, test/btyacc/err_inherit5.error, test/btyacc/err_inherit5.output, test/btyacc/err_inherit5.tab.c, test/btyacc/err_inherit5.tab.h, test/btyacc/inherit0.error, test/btyacc/inherit0.output, test/btyacc/inherit0.tab.c, test/btyacc/inherit0.tab.h, test/btyacc/inherit1.error, test/btyacc/inherit1.output, test/btyacc/inherit1.tab.c, test/btyacc/inherit1.tab.h, test/btyacc/inherit2.error, test/btyacc/inherit2.output, test/btyacc/inherit2.tab.c, test/btyacc/inherit2.tab.h, test/btyacc/calc.error, test/btyacc/err_inherit1.error, test/btyacc/err_inherit1.output, test/btyacc/err_inherit1.tab.c, test/btyacc/err_inherit1.tab.h:
reference output for testing
* defs.h: new functions/variables for btyacc
(I reordered and ifdef'd -TD)
* test/inherit0.y, test/inherit1.y: testcase for btyacc
2014-03-27 Tom.Shields
* test/err_inherit5.y, test/err_inherit4.y, test/err_inherit3.y, test/err_inherit2.y, test/err_inherit1.y, test/inherit2.y:
testcase for btyacc
2014-03-25 Tom.Shields
* symtab.c: extra initialization needed for btyacc
(I ifdef'd -TD)
* yacc.1: document -L/-B features from btyacc
2014-03-25 Thomas E. Dickey <tom@invisible-island.net>
* yacc.1: typo
* configure: regen
* configure.in:
modified new options to act like those in my other configure-scripts, e.g.,
showing what option is being tested, and the resulting value. Put the
definitions in config.h rather than in the makefile.
2014-03-25 Tom.Shields
* makefile.in: add/use LINTFLAGS variable
make all of the objects (not just skeleton) rebuild if makefile changes
modify check-rule to reflect updates to run_test.sh vs subdirectory
* mstring.c: byacc-btyacc-20140323
2014-03-25 Thomas E. Dickey <tom@invisible-island.net>
* test/btyacc/RCS, test/yacc/RCS: PERMIT FILE
* config_h.in: updated with autoheader-252
2014-03-25 Tom.Shields
* README.BTYACC: byacc-btyacc-20140323
2014-03-24 Tom.Shields
* test/btyacc/err_syntax1.output, test/btyacc/err_syntax1.tab.c, test/btyacc/err_syntax1.tab.h, test/btyacc/err_syntax10.error, test/btyacc/err_syntax10.output, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax10.tab.h, test/btyacc/err_syntax11.error, test/btyacc/err_syntax11.output, test/btyacc/err_syntax11.tab.c, test/btyacc/err_syntax11.tab.h, test/btyacc/err_syntax12.error, test/btyacc/err_syntax12.output, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax12.tab.h, test/btyacc/err_syntax13.error, test/btyacc/err_syntax13.output, test/btyacc/err_syntax13.tab.c, test/btyacc/err_syntax13.tab.h, test/btyacc/err_syntax14.error, test/btyacc/err_syntax14.output, test/btyacc/err_syntax14.tab.c, test/btyacc/err_syntax14.tab.h, test/btyacc/err_syntax15.error, test/btyacc/err_syntax15.output, test/btyacc/err_syntax15.tab.c, test/btyacc/err_syntax15.tab.h, test/btyacc/err_syntax16.error, test/btyacc/err_syntax16.output, test/btyacc/err_syntax16.tab.c, test/btyacc/err_syntax16.tab.h, test/btyacc/err_syntax17.error, test/btyacc/err_syntax17.output, test/btyacc/err_syntax17.tab.c, test/btyacc/err_syntax17.tab.h, test/btyacc/err_syntax18.error, test/btyacc/err_syntax18.output, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax18.tab.h, test/btyacc/err_syntax19.error, test/btyacc/err_syntax19.output, test/btyacc/err_syntax19.tab.c, test/btyacc/err_syntax19.tab.h, test/btyacc/err_syntax2.output, test/btyacc/err_syntax2.tab.c, test/btyacc/err_syntax2.tab.h, test/btyacc/err_syntax20.error, test/btyacc/err_syntax20.output, test/btyacc/err_syntax20.tab.c, test/btyacc/err_syntax20.tab.h, test/btyacc/err_syntax21.error, test/btyacc/err_syntax21.output, test/btyacc/err_syntax21.tab.c, test/btyacc/err_syntax21.tab.h, test/btyacc/err_syntax22.error, test/btyacc/err_syntax22.output, test/btyacc/err_syntax22.tab.c, test/btyacc/err_syntax22.tab.h, test/btyacc/err_syntax23.error, test/btyacc/err_syntax23.output, test/btyacc/err_syntax23.tab.c, test/btyacc/err_syntax23.tab.h, test/btyacc/err_syntax24.error, test/btyacc/err_syntax24.output, test/btyacc/err_syntax24.tab.c, test/btyacc/err_syntax24.tab.h, test/btyacc/err_syntax25.error, test/btyacc/err_syntax25.output, test/btyacc/err_syntax25.tab.c, test/btyacc/err_syntax25.tab.h, test/btyacc/err_syntax26.error, test/btyacc/err_syntax26.output, test/btyacc/err_syntax26.tab.c, test/btyacc/err_syntax26.tab.h, test/btyacc/err_syntax3.output, test/btyacc/err_syntax3.tab.c, test/btyacc/err_syntax3.tab.h, test/btyacc/err_syntax4.output, test/btyacc/err_syntax4.tab.c, test/btyacc/err_syntax4.tab.h, test/btyacc/err_syntax5.output, test/btyacc/err_syntax5.tab.c, test/btyacc/err_syntax5.tab.h, test/btyacc/err_syntax6.output, test/btyacc/err_syntax6.tab.c, test/btyacc/err_syntax6.tab.h, test/btyacc/err_syntax7.output, test/btyacc/err_syntax7.tab.c, test/btyacc/err_syntax7.tab.h, test/btyacc/err_syntax7a.output, test/btyacc/err_syntax7a.tab.c, test/btyacc/err_syntax7a.tab.h, test/btyacc/err_syntax7b.output, test/btyacc/err_syntax7b.tab.c, test/btyacc/err_syntax7b.tab.h, test/btyacc/err_syntax8.output, test/btyacc/err_syntax8.tab.c, test/btyacc/err_syntax8.tab.h, test/btyacc/err_syntax8a.output, test/btyacc/err_syntax8a.tab.c, test/btyacc/err_syntax8a.tab.h, test/btyacc/err_syntax9.output, test/btyacc/err_syntax9.tab.c, test/btyacc/err_syntax9.tab.h:
reference output for testing
2014-03-24 Thomas E. Dickey <tom@invisible-island.net>
* defs.h: fix compiler warnings due to mputc()
2014-03-23 Tom.Shields
* test/btyacc_demo.y: testcase for btyacc
* test/btyacc/varsyntax_calc1.error, test/btyacc/varsyntax_calc1.output, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/varsyntax_calc1.tab.h:
reference output for testing
* test/varsyntax_calc1.y, test/btyacc_calc1.y: testcase for btyacc
2014-03-23 Thomas E. Dickey <tom@invisible-island.net>
* test/err_syntax26.error, test/err_syntax26.output, test/err_syntax26.tab.c, test/err_syntax26.tab.h, test/yacc/err_syntax26.error, test/yacc/err_syntax26.output, test/yacc/err_syntax26.tab.c, test/yacc/err_syntax26.tab.h:
reference output for testing
* test/err_syntax26.y: testcase for missing_brace()
* test/err_syntax25.error, test/err_syntax25.output, test/err_syntax25.tab.c, test/err_syntax25.tab.h, test/yacc/err_syntax25.error, test/yacc/err_syntax25.output, test/yacc/err_syntax25.tab.c, test/yacc/err_syntax25.tab.h:
reference output for testing
* test/err_syntax25.y: testcase for over_unionized()
* test/err_syntax24.error, test/err_syntax24.output, test/err_syntax24.tab.c, test/err_syntax24.tab.h, test/yacc/err_syntax24.error, test/yacc/err_syntax24.output, test/yacc/err_syntax24.tab.c, test/yacc/err_syntax24.tab.h:
reference output for testing
* test/err_syntax24.y: testcase for default_action_warning()
2014-03-23 Tom.Shields
* test/btyacc/quote_calc3-s.error, test/btyacc/quote_calc4-s.error, test/btyacc/quote_calc4.error, test/btyacc/grammar.dot, test/btyacc/grammar.error, test/btyacc/pure_calc.error, test/btyacc/pure_error.error, test/btyacc/quote_calc-s.error, test/btyacc/quote_calc.error, test/btyacc/quote_calc2-s.error, test/btyacc/quote_calc2.error, test/btyacc/quote_calc3.error, test/btyacc/err_syntax2.error, test/btyacc/err_syntax3.error, test/btyacc/err_syntax4.error, test/btyacc/err_syntax5.error, test/btyacc/err_syntax6.error, test/btyacc/err_syntax7.error, test/btyacc/err_syntax7a.error, test/btyacc/err_syntax7b.error, test/btyacc/err_syntax8.error, test/btyacc/err_syntax8a.error, test/btyacc/err_syntax9.error, test/btyacc/error.error, test/btyacc/calc1.error, test/btyacc/calc2.error, test/btyacc/calc3.error, test/btyacc/code_calc.error, test/btyacc/code_error.error, test/btyacc/empty.error, test/btyacc/err_syntax1.error, test/btyacc/btyacc_calc1.error, test/btyacc/btyacc_demo.error:
reference output for testing
2014-03-23 Thomas E. Dickey <tom@invisible-island.net>
* test/err_syntax23.error, test/err_syntax23.output, test/err_syntax23.tab.c, test/err_syntax23.tab.h, test/yacc/err_syntax23.error, test/yacc/err_syntax23.output, test/yacc/err_syntax23.tab.c, test/yacc/err_syntax23.tab.h:
reference output for testing
* test/err_syntax23.y: testcase for untyped_lhs()
2014-03-23 Tom.Shields
* test/run_test.sh:
move test-outputs into subdirectories to keep btyacc/yacc results separate
2014-03-23 Thomas E. Dickey <tom@invisible-island.net>
* test/err_syntax22.error, test/err_syntax22.output, test/err_syntax22.tab.c, test/err_syntax22.tab.h, test/yacc/err_syntax22.error, test/yacc/err_syntax22.output, test/yacc/err_syntax22.tab.c, test/yacc/err_syntax22.tab.h:
reference output for testing
* test/err_syntax22.y: testcase for untyped_rhs()
* test/err_syntax21.error, test/err_syntax21.output, test/err_syntax21.tab.c, test/err_syntax21.tab.h, test/yacc/err_syntax21.error, test/yacc/err_syntax21.output, test/yacc/err_syntax21.tab.c, test/yacc/err_syntax21.tab.h, test/err_syntax20.error, test/err_syntax20.output, test/err_syntax20.tab.c, test/err_syntax20.tab.h, test/yacc/err_syntax20.error, test/yacc/err_syntax20.output, test/yacc/err_syntax20.tab.c, test/yacc/err_syntax20.tab.h:
reference output for testing
* test/err_syntax20.y: testcase for undefined_symbol_warning()
* test/err_syntax21.y: testcase for unknown_rhs()
* test/err_syntax19.error, test/err_syntax19.output, test/err_syntax19.tab.c, test/err_syntax19.tab.h, test/yacc/err_syntax19.error, test/yacc/err_syntax19.output, test/yacc/err_syntax19.tab.c, test/yacc/err_syntax19.tab.h:
reference output for testing
* test/err_syntax19.y: testcase for dollar_error()
* test/err_syntax18.error, test/err_syntax18.output, test/err_syntax18.tab.c, test/err_syntax18.tab.h, test/yacc/err_syntax18.error, test/yacc/err_syntax18.output, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax18.tab.h:
reference output for testing
* test/err_syntax18.y: testcase for dollar_warning()
* test/err_syntax17.error, test/err_syntax17.output, test/err_syntax17.tab.c, test/err_syntax17.tab.h, test/yacc/err_syntax17.error, test/yacc/err_syntax17.output, test/yacc/err_syntax17.tab.c, test/yacc/err_syntax17.tab.h:
reference output for testing
* test/err_syntax17.y: testcase for unterminated_action()
2014-03-22 Thomas E. Dickey <tom@invisible-island.net>
* test/err_syntax16.error, test/err_syntax16.output, test/err_syntax16.tab.c, test/err_syntax16.tab.h, test/yacc/err_syntax16.error, test/yacc/err_syntax16.output, test/yacc/err_syntax16.tab.c, test/yacc/err_syntax16.tab.h:
reference output for testing
* test/err_syntax16.y: testcase for terminal_lhs()
* test/err_syntax15.error, test/err_syntax15.output, test/err_syntax15.tab.c, test/err_syntax15.tab.h, test/yacc/err_syntax15.error, test/yacc/err_syntax15.output, test/yacc/err_syntax15.tab.c, test/yacc/err_syntax15.tab.h:
reference output for testing
* test/err_syntax15.y: testcase for no_grammar()
* test/err_syntax14.error, test/err_syntax14.output, test/err_syntax14.tab.c, test/err_syntax14.tab.h, test/yacc/err_syntax14.error, test/yacc/err_syntax14.output, test/yacc/err_syntax14.tab.c, test/yacc/err_syntax14.tab.h:
reference output for testing
* test/err_syntax14.y:
testcase for restarted_warning() and undefined_goal()
* test/err_syntax13.error, test/err_syntax13.output, test/err_syntax13.tab.c, test/err_syntax13.tab.h, test/yacc/err_syntax13.error, test/yacc/err_syntax13.output, test/yacc/err_syntax13.tab.c, test/yacc/err_syntax13.tab.h:
reference output for testing
* test/err_syntax13.y: testcase for terminal_start()
* test/err_syntax12.error, test/err_syntax12.output, test/err_syntax12.tab.c, test/err_syntax12.tab.h, test/yacc/err_syntax12.error, test/yacc/err_syntax12.output, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax12.tab.h:
reference output for testing
* test/err_syntax12.y: testcase for revalued_warning()
* test/err_syntax11.error, test/err_syntax11.output, test/err_syntax11.tab.c, test/err_syntax11.tab.h, test/yacc/err_syntax11.error, test/yacc/err_syntax11.output, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax11.tab.h:
reference output for testing
* test/err_syntax11.y: testcase for reprec_warning()
* test/err_syntax10.error, test/err_syntax10.output, test/err_syntax10.tab.c, test/err_syntax10.tab.h, test/yacc/err_syntax10.error, test/yacc/err_syntax10.output, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax10.tab.h:
reference output for testing
* test/err_syntax10.y: testcase for retyped_warning()
2014-03-21 Thomas E. Dickey <tom@invisible-island.net>
* test/err_syntax9.error, test/err_syntax9.output, test/err_syntax9.tab.c, test/err_syntax9.tab.h, test/yacc/err_syntax9.error, test/yacc/err_syntax9.output, test/yacc/err_syntax9.tab.c, test/yacc/err_syntax9.tab.h:
reference output for testing
* test/err_syntax9.y: testcase for tokenized_start()
* test/err_syntax8.error, test/err_syntax8.output, test/err_syntax8.tab.c, test/err_syntax8.tab.h, test/err_syntax8a.error, test/err_syntax8a.output, test/err_syntax8a.tab.c, test/err_syntax8a.tab.h, test/yacc/err_syntax8.error, test/yacc/err_syntax8.output, test/yacc/err_syntax8.tab.c, test/yacc/err_syntax8.tab.h, test/yacc/err_syntax8a.error, test/yacc/err_syntax8a.output, test/yacc/err_syntax8a.tab.c, test/yacc/err_syntax8a.tab.h:
reference output for testing
* test/err_syntax8a.y, test/err_syntax8.y: testcase for used_reserved()
* test/err_syntax7.error, test/err_syntax7.output, test/err_syntax7.tab.c, test/err_syntax7.tab.h, test/err_syntax7a.error, test/err_syntax7a.output, test/err_syntax7a.tab.c, test/err_syntax7a.tab.h, test/err_syntax7b.error, test/err_syntax7b.output, test/err_syntax7b.tab.c, test/err_syntax7b.tab.h, test/yacc/err_syntax7.error, test/yacc/err_syntax7.output, test/yacc/err_syntax7.tab.c, test/yacc/err_syntax7.tab.h, test/yacc/err_syntax7a.error, test/yacc/err_syntax7a.output, test/yacc/err_syntax7a.tab.c, test/yacc/err_syntax7a.tab.h, test/yacc/err_syntax7b.error, test/yacc/err_syntax7b.output, test/yacc/err_syntax7b.tab.c, test/yacc/err_syntax7b.tab.h:
reference output for testing
* test/err_syntax7b.y, test/err_syntax7a.y, test/err_syntax7.y:
testcase for illegal_character()
* test/err_syntax6.error, test/err_syntax6.output, test/err_syntax6.tab.c, test/err_syntax6.tab.h, test/yacc/err_syntax6.error, test/yacc/err_syntax6.output, test/yacc/err_syntax6.tab.c, test/yacc/err_syntax6.tab.h:
reference output for testing
* test/err_syntax6.y: testcase for illegal_tag()
* test/err_syntax5.error, test/err_syntax5.output, test/err_syntax5.tab.c, test/err_syntax5.tab.h, test/yacc/err_syntax5.error, test/yacc/err_syntax5.output, test/yacc/err_syntax5.tab.c, test/yacc/err_syntax5.tab.h:
reference output for testing
* test/err_syntax5.y: testcase for unterminated_union()
* test/err_syntax4.error, test/err_syntax4.output, test/err_syntax4.tab.c, test/err_syntax4.tab.h, test/yacc/err_syntax4.error, test/yacc/err_syntax4.output, test/yacc/err_syntax4.tab.c, test/yacc/err_syntax4.tab.h:
reference output for testing
* test/err_syntax4.y: testcase for unterminated_text()
* test/err_syntax3.error, test/err_syntax3.output, test/err_syntax3.tab.c, test/err_syntax3.tab.h, test/yacc/err_syntax3.error, test/yacc/err_syntax3.output, test/yacc/err_syntax3.tab.c, test/yacc/err_syntax3.tab.h:
reference output for testing
* test/err_syntax3.y: testcase for unterminated_string()
* test/err_syntax2.error, test/err_syntax2.output, test/err_syntax2.tab.c, test/err_syntax2.tab.h, test/yacc/err_syntax2.error, test/yacc/err_syntax2.output, test/yacc/err_syntax2.tab.c, test/yacc/err_syntax2.tab.h:
reference output for testing
* test/err_syntax2.y: testcase for unterminated_comment()
* test/err_syntax1.error, test/yacc/err_syntax1.error:
reference output for testing
* test/err_syntax1.y:
test-case with syntax error (and nonprinting character)
* test/calc.error, test/calc1.error, test/calc2.error, test/calc3.error, test/code_calc.error, test/code_error.error, test/err_syntax1.error, test/error.error, test/grammar.error, test/pure_calc.error, test/pure_error.error, test/quote_calc-s.error, test/quote_calc.error, test/quote_calc2-s.error, test/quote_calc2.error, test/quote_calc3-s.error, test/quote_calc3.error, test/quote_calc4-s.error, test/quote_calc4.error, test/yacc/calc.error, test/yacc/calc1.error, test/yacc/calc2.error, test/yacc/calc3.error, test/yacc/code_calc.error, test/yacc/code_error.error, test/yacc/error.error, test/yacc/grammar.error, test/yacc/pure_calc.error, test/yacc/pure_error.error, test/yacc/quote_calc-s.error, test/yacc/quote_calc.error, test/yacc/quote_calc2-s.error, test/yacc/quote_calc2.error, test/yacc/quote_calc3-s.error, test/yacc/quote_calc3.error, test/yacc/quote_calc4-s.error, test/yacc/quote_calc4.error:
reference output for testing
* test/run_test.sh:
save stderr to reference files, to capture shift/reduce messages as well
as syntax-error messages
* test/err_syntax1.output, test/err_syntax1.tab.c, test/err_syntax1.tab.h, test/yacc/err_syntax1.output, test/yacc/err_syntax1.tab.c, test/yacc/err_syntax1.tab.h:
reference output for testing
* test/run_test.sh: generate a ".dot" file for the grammar file
* test/grammar.dot: RCS_BASE
* test/yacc/grammar.dot: reference output for testing
2014-03-19 Tom.Shields
* output.c: rename MAXSHORT to MAXYYINT
2014-03-18 Tom.Shields
* yaccpar.skel: skeleton with btyacc additions
* NOTES-btyacc-Changes: byacc-btyacc-20140323
* test/btyacc/btyacc_calc1.output, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_calc1.tab.h:
reference output for testing
* test/run_make.sh:
move test-outputs into subdirectories to keep btyacc/yacc results separate
* test/btyacc/pure_calc.tab.c, test/btyacc/pure_calc.tab.h, test/btyacc/pure_error.output, test/btyacc/pure_error.tab.c, test/btyacc/pure_error.tab.h, test/btyacc/quote_calc-s.output, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc-s.tab.h, test/btyacc/quote_calc.output, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc.tab.h, test/btyacc/quote_calc2-s.output, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2-s.tab.h, test/btyacc/quote_calc2.output, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc2.tab.h, test/btyacc/quote_calc3-s.output, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3-s.tab.h, test/btyacc/quote_calc3.output, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc3.tab.h, test/btyacc/quote_calc4-s.output, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4-s.tab.h, test/btyacc/quote_calc4.output, test/btyacc/quote_calc4.tab.c, test/btyacc/quote_calc4.tab.h, test/btyacc/calc1.output, test/btyacc/calc1.tab.c, test/btyacc/calc1.tab.h, test/btyacc/calc2.output, test/btyacc/calc2.tab.c, test/btyacc/calc2.tab.h, test/btyacc/calc3.output, test/btyacc/calc3.tab.c, test/btyacc/calc3.tab.h, test/btyacc/code_calc.code.c, test/btyacc/code_calc.output, test/btyacc/code_calc.tab.c, test/btyacc/code_calc.tab.h, test/btyacc/code_error.code.c, test/btyacc/code_error.output, test/btyacc/code_error.tab.c, test/btyacc/code_error.tab.h, test/btyacc/empty.output, test/btyacc/empty.tab.c, test/btyacc/empty.tab.h, test/btyacc/error.output, test/btyacc/error.tab.c, test/btyacc/error.tab.h, test/btyacc/grammar.output, test/btyacc/grammar.tab.c, test/btyacc/grammar.tab.h, test/btyacc/pure_calc.output, test/btyacc/btyacc_demo.output, test/btyacc/btyacc_demo.tab.h, test/btyacc/calc.output, test/btyacc/calc.tab.c, test/btyacc/calc.tab.h:
reference output for testing
* defs.h:
several changes to help decouple the use of 'short' as the type of value
used in yacc parsers.
* NOTES-btyacc-Disposition: byacc-btyacc-20140323
2014-03-17 Tom.Shields
* skel2c, yaccpar.skel, yaccpar.skel.old: RCS_BASE
* test/run_lint.sh:
move test-outputs into subdirectories to keep btyacc/yacc results separate
* configure.in: add --with-max-table-size and --enable-btyacc options
2014-03-16 Tom.Shields
* main.c: use Value_t rather than short
2014-03-11 Tom.Shields
* test/empty.y: testcase for btyacc
2014-03-10 Tom.Shields
* test/calc3.y, test/calc2.y: fix unused-variable warning
2014-02-18 Tom.Shields
* lr0.c, graph.c: use Value_t rather than short
* closure.c: use Value_t rather than short
ifdef'd forward-reference prototypes to match ifdef'ing of the actual functions
* lalr.c: rename MAXSHORT to MAXYYINT
2014-01-01 Thomas E. Dickey <tom@invisible-island.net>
* yacc.1: document %token-table, improve presentation of double-quotes
* VERSION, package/byacc.spec, package/debian/changelog: bump
* test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_calc.tab.c, test/yacc/code_error.code.c, test/yacc/code_error.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c:
reference output for testing
* test/calc.tab.c, test/calc1.tab.c, test/calc2.tab.c, test/calc3.tab.c, test/code_calc.code.c, test/code_calc.tab.c, test/code_error.code.c, test/code_error.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c, test/pure_calc.tab.c, test/pure_error.tab.c, test/quote_calc-s.tab.c, test/quote_calc.tab.c, test/quote_calc2-s.tab.c, test/quote_calc2.tab.c, test/quote_calc3-s.tab.c, test/quote_calc3.tab.c, test/quote_calc4-s.tab.c, test/quote_calc4.tab.c:
regen
@ -248,6 +887,8 @@
* VERSION, package/debian/changelog, package/byacc.spec: bump
* test/yacc/calc1.output: reference output for testing
* test/calc1.output, test/calc1.tab.c: regen
* test/calc1.y:
@ -267,6 +908,8 @@
* test/calc2.tab.c, test/calc3.tab.c, test/code_error.code.c, test/ftp.tab.c, test/pure_calc.tab.c, test/pure_error.tab.c:
regen
* test/code_debug.y: RCS_BASE
* test/calc2.y, test/calc3.y, test/code_error.y, test/ftp.y:
byacc already declares yyerror
@ -359,6 +1002,9 @@
* test/quote_calc-s.output, test/quote_calc-s.tab.c, test/quote_calc-s.tab.h, test/quote_calc2-s.output, test/quote_calc2-s.tab.c, test/quote_calc2-s.tab.h, test/quote_calc3-s.output, test/quote_calc3-s.tab.c, test/quote_calc3-s.tab.h, test/quote_calc4-s.output, test/quote_calc4-s.tab.c, test/quote_calc4-s.tab.h:
RCS_BASE
* test/yacc/quote_calc-s.output, test/yacc/quote_calc-s.tab.h, test/yacc/quote_calc2-s.output, test/yacc/quote_calc2-s.tab.h, test/yacc/quote_calc3-s.output, test/yacc/quote_calc3-s.tab.h, test/yacc/quote_calc4-s.output, test/yacc/quote_calc4-s.tab.h:
reference output for testing
* test/run_test.sh: generate/test with "-s" option applied.
2012-01-13 Thomas E. Dickey <tom@invisible-island.net>
@ -371,9 +1017,24 @@
* main.c: add -s option to usage message.
* test/quote_calc3.output, test/quote_calc3.tab.c, test/quote_calc4.output, test/quote_calc4.tab.c, test/quote_calc4.tab.h, test/quote_calc3.y, test/quote_calc.tab.h, test/quote_calc.output, test/quote_calc.tab.c, test/quote_calc2.output, test/quote_calc2.tab.c, test/quote_calc2.tab.h, test/quote_calc3.tab.h, test/quote_calc4.y, test/quote_calc.y, test/quote_calc2.y:
* test/quote_calc3.output, test/quote_calc3.tab.c, test/quote_calc4.output, test/quote_calc4.tab.c, test/quote_calc4.tab.h:
RCS_BASE
* test/yacc/quote_calc3.output, test/yacc/quote_calc4.output, test/yacc/quote_calc4.tab.h:
reference output for testing
* test/quote_calc3.y, test/quote_calc.tab.h: RCS_BASE
* test/yacc/quote_calc.tab.h: reference output for testing
* test/quote_calc.output, test/quote_calc.tab.c, test/quote_calc2.output, test/quote_calc2.tab.c, test/quote_calc2.tab.h, test/quote_calc3.tab.h:
RCS_BASE
* test/yacc/quote_calc.output, test/yacc/quote_calc2.output, test/yacc/quote_calc2.tab.h, test/yacc/quote_calc3.tab.h:
reference output for testing
* test/quote_calc4.y, test/quote_calc.y, test/quote_calc2.y: RCS_BASE
* configure: regen
* aclocal.m4: resync with my-autoconf, i.e., fixes for CF_XOPEN_SOURCE
@ -556,6 +1217,8 @@
* output.c: simplified a little, using putc_code() and putl_code()
* test/yacc/calc1.tab.h: reference output for testing
* test/calc1.tab.h: regen
* reader.c:
@ -637,9 +1300,20 @@
improve %lex-param / %parse-param implementation by allowing for arrays to
be passed as parameters, e.g., "int regs[26]".
* test/calc3.tab.c, test/calc3.y, test/calc3.output, test/calc3.tab.h, test/calc2.tab.c, test/calc2.y, test/calc2.tab.h, test/calc2.output:
* test/calc3.tab.c, test/calc3.y, test/calc3.output, test/calc3.tab.h:
RCS_BASE
* test/yacc/calc3.output, test/yacc/calc3.tab.h:
reference output for testing
* test/calc2.tab.c, test/calc2.y, test/calc2.tab.h: RCS_BASE
* test/yacc/calc2.tab.h: reference output for testing
* test/calc2.output: RCS_BASE
* test/yacc/calc2.output: reference output for testing
* output.c:
improve %lex-param / %parse-param implementation by allowing for arrays to
be passed as parameters, e.g., "int regs[26]".
@ -699,9 +1373,27 @@
provide for testing -r and -P options by checking if the ".y" filename
begins with "code_" or "pure_", respectively.
* test/code_error.code.c, test/code_error.tab.c, test/code_error.tab.h, test/code_calc.code.c, test/code_calc.tab.c, test/code_calc.tab.h, test/pure_calc.output, test/pure_calc.tab.h, test/pure_error.output, test/pure_error.tab.h, test/code_calc.output, test/code_error.output:
* test/code_error.code.c, test/code_error.tab.c, test/code_error.tab.h:
RCS_BASE
* test/yacc/code_error.tab.h: reference output for testing
* test/code_calc.code.c, test/code_calc.tab.c, test/code_calc.tab.h:
RCS_BASE
* test/yacc/code_calc.tab.h: reference output for testing
* test/pure_calc.output, test/pure_calc.tab.h, test/pure_error.output, test/pure_error.tab.h:
RCS_BASE
* test/yacc/pure_calc.output, test/yacc/pure_calc.tab.h, test/yacc/pure_error.output, test/yacc/pure_error.tab.h:
reference output for testing
* test/code_calc.output, test/code_error.output: RCS_BASE
* test/yacc/code_calc.output, test/yacc/code_error.output:
reference output for testing
* test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c: regen
* test/run_test.sh:
@ -1250,9 +1942,18 @@
* test/grammar.output, test/grammar.tab.c, test/grammar.tab.h: RCS_BASE
* test/yacc/grammar.output, test/yacc/grammar.tab.h:
reference output for testing
* makefile.in: turn on "make check" rule
* test/calc.output, test/run_test.sh, test/calc.tab.h: RCS_BASE
* test/calc.output: RCS_BASE
* test/yacc/calc.output: reference output for testing
* test/run_test.sh, test/calc.tab.h: RCS_BASE
* test/yacc/calc.tab.h: reference output for testing
* test/ftp.tab.c: yyparse() is now yyparse(void)
@ -1338,8 +2039,16 @@
1993-02-22 unknown
* test/ftp.output, test/ftp.tab.c, test/ftp.tab.h, test/error.output, test/error.tab.c, test/error.tab.h:
RCS_BASE
* test/ftp.output, test/ftp.tab.c, test/ftp.tab.h: RCS_BASE
1993-02-22 Thomas E. Dickey <tom@invisible-island.net>
* test/yacc/error.output, test/yacc/error.tab.h:
reference output for testing
1993-02-22 unknown
* test/error.output, test/error.tab.c, test/error.tab.h: RCS_BASE
* skeleton.c, warshall.c, main.c, output.c, reader.c, closure.c, NOTES:
original version

669
MANIFEST Normal file
View File

@ -0,0 +1,669 @@
MANIFEST for byacc-20140409, version t20140409
--------------------------------------------------------------------------------
MANIFEST this file
ACKNOWLEDGEMENTS original version of byacc - 1993
AUTHORS nicknames for some contributors (see CHANGES for details)
Makefile.old renamed from Makefile
NEW_FEATURES original version of byacc - 1993
NOTES original version of byacc - 1993
NOTES-btyacc-Changes byacc-btyacc-20140323
NOTES-btyacc-Disposition byacc-btyacc-20140323
NO_WARRANTY original version of byacc - 1993
README original version of byacc - 1993
README.BTYACC byacc-btyacc-20140323
VERSION patch-level
aclocal.m4 macros for configure-script
btyaccpar.c generated from btyaccpar.skel
btyaccpar.skel bytacc's parser skeleton (renamed from yaccpar.skel)
closure.c original version of byacc - 1993
config.guess configure-script utility
config.sub configure-script utility
config_h.in template for config.h
configure snapshot 2004/3/28
configure.in template for configure-script
defs.h original version of byacc - 1993
descrip.mms build-script for VMS
error.c original version of byacc - 1993
graph.c write the file y.dot in graphviz format
install-sh install-script
lalr.c original version of byacc - 1993
lr0.c original version of byacc - 1993
main.c original version of byacc - 1993
makefile.in template for makefile
mkpar.c original version of byacc - 1993
mstring.c string-utilities
output.c original version of byacc - 1993
reader.c original version of byacc - 1993
skel2c awk script to transform yaccpar.skel into skeleton.c
symtab.c original version of byacc - 1993
verbose.c original version of byacc - 1993
vmsbuild.com build-script for VMS
warshall.c original version of byacc - 1993
yacc.1 original version of byacc - 1993
yaccpar.c generated from yaccpar.skel
yaccpar.skel data which can be transformed into skeleton.c
package subdirectory
package/byacc.spec RPM file for byacc
package/debian subdirectory
package/debian/changelog scripts from Debian package
package/debian/compat scripts from Debian package
package/debian/control scripts from Debian package
package/debian/copyright scripts from Debian package
package/debian/docs scripts from Debian package
package/debian/postinst scripts from Debian package
package/debian/prerm scripts from Debian package
package/debian/rules scripts from Debian package
package/debian/source subdirectory
package/debian/source/format scripts from Debian package
package/debian subdirectory
package/debian/watch scripts from Debian package
package subdirectory
package/mingw-byacc.spec mingw spec-file, for cross-compiles
package/pkgsrc subdirectory
package/pkgsrc/DESCR scripts from NetBSD pkgsrc, for test-builds
package/pkgsrc/Makefile scripts from NetBSD pkgsrc, for test-builds
package/pkgsrc/PLIST scripts from NetBSD pkgsrc, for test-builds
package/pkgsrc/distinfo scripts from NetBSD pkgsrc, for test-builds
test subdirectory
test/README describe contents of "test" subdirectory
test/btyacc subdirectory
test/btyacc/big_b.error exercise -L/-B options
test/btyacc/big_b.output exercise -L/-B options
test/btyacc/big_l.error exercise -L/-B options
test/btyacc/big_l.output exercise -L/-B options
test/btyacc/btyacc_calc1.error reference output for testing
test/btyacc/btyacc_calc1.output reference output for testing
test/btyacc/btyacc_calc1.tab.c reference output for testing
test/btyacc/btyacc_calc1.tab.h reference output for testing
test/btyacc/btyacc_demo.error reference output for testing
test/btyacc/btyacc_demo.output reference output for testing
test/btyacc/btyacc_demo.tab.c reference output for testing
test/btyacc/btyacc_demo.tab.h reference output for testing
test/btyacc/calc.error reference output for testing
test/btyacc/calc.output reference output for testing
test/btyacc/calc.tab.c reference output for testing
test/btyacc/calc.tab.h reference output for testing
test/btyacc/calc1.error reference output for testing
test/btyacc/calc1.output reference output for testing
test/btyacc/calc1.tab.c reference output for testing
test/btyacc/calc1.tab.h reference output for testing
test/btyacc/calc2.error reference output for testing
test/btyacc/calc2.output reference output for testing
test/btyacc/calc2.tab.c reference output for testing
test/btyacc/calc2.tab.h reference output for testing
test/btyacc/calc3.error reference output for testing
test/btyacc/calc3.output reference output for testing
test/btyacc/calc3.tab.c reference output for testing
test/btyacc/calc3.tab.h reference output for testing
test/btyacc/code_calc.code.c reference output for testing
test/btyacc/code_calc.error reference output for testing
test/btyacc/code_calc.output reference output for testing
test/btyacc/code_calc.tab.c reference output for testing
test/btyacc/code_calc.tab.h reference output for testing
test/btyacc/code_debug.c reference for test-output
test/btyacc/code_debug.error reference for test-output
test/btyacc/code_debug.h reference for test-output
test/btyacc/code_debug.i reference for test-output
test/btyacc/code_debug.output reference for test-output
test/btyacc/code_error.code.c reference output for testing
test/btyacc/code_error.error reference output for testing
test/btyacc/code_error.output reference output for testing
test/btyacc/code_error.tab.c reference output for testing
test/btyacc/code_error.tab.h reference output for testing
test/btyacc/empty.error reference output for testing
test/btyacc/empty.output reference output for testing
test/btyacc/empty.tab.c reference output for testing
test/btyacc/empty.tab.h reference output for testing
test/btyacc/err_inherit1.error reference output for testing
test/btyacc/err_inherit1.output reference output for testing
test/btyacc/err_inherit1.tab.c reference output for testing
test/btyacc/err_inherit1.tab.h reference output for testing
test/btyacc/err_inherit2.error reference output for testing
test/btyacc/err_inherit2.output reference output for testing
test/btyacc/err_inherit2.tab.c reference output for testing
test/btyacc/err_inherit2.tab.h reference output for testing
test/btyacc/err_inherit3.error reference output for testing
test/btyacc/err_inherit3.output reference output for testing
test/btyacc/err_inherit3.tab.c reference output for testing
test/btyacc/err_inherit3.tab.h reference output for testing
test/btyacc/err_inherit4.error reference output for testing
test/btyacc/err_inherit4.output reference output for testing
test/btyacc/err_inherit4.tab.c reference output for testing
test/btyacc/err_inherit4.tab.h reference output for testing
test/btyacc/err_inherit5.error reference output for testing
test/btyacc/err_inherit5.output reference output for testing
test/btyacc/err_inherit5.tab.c reference output for testing
test/btyacc/err_inherit5.tab.h reference output for testing
test/btyacc/err_syntax1.error reference output for testing
test/btyacc/err_syntax1.output reference output for testing
test/btyacc/err_syntax1.tab.c reference output for testing
test/btyacc/err_syntax1.tab.h reference output for testing
test/btyacc/err_syntax10.error reference output for testing
test/btyacc/err_syntax10.output reference output for testing
test/btyacc/err_syntax10.tab.c reference output for testing
test/btyacc/err_syntax10.tab.h reference output for testing
test/btyacc/err_syntax11.error reference output for testing
test/btyacc/err_syntax11.output reference output for testing
test/btyacc/err_syntax11.tab.c reference output for testing
test/btyacc/err_syntax11.tab.h reference output for testing
test/btyacc/err_syntax12.error reference output for testing
test/btyacc/err_syntax12.output reference output for testing
test/btyacc/err_syntax12.tab.c reference output for testing
test/btyacc/err_syntax12.tab.h reference output for testing
test/btyacc/err_syntax13.error reference output for testing
test/btyacc/err_syntax13.output reference output for testing
test/btyacc/err_syntax13.tab.c reference output for testing
test/btyacc/err_syntax13.tab.h reference output for testing
test/btyacc/err_syntax14.error reference output for testing
test/btyacc/err_syntax14.output reference output for testing
test/btyacc/err_syntax14.tab.c reference output for testing
test/btyacc/err_syntax14.tab.h reference output for testing
test/btyacc/err_syntax15.error reference output for testing
test/btyacc/err_syntax15.output reference output for testing
test/btyacc/err_syntax15.tab.c reference output for testing
test/btyacc/err_syntax15.tab.h reference output for testing
test/btyacc/err_syntax16.error reference output for testing
test/btyacc/err_syntax16.output reference output for testing
test/btyacc/err_syntax16.tab.c reference output for testing
test/btyacc/err_syntax16.tab.h reference output for testing
test/btyacc/err_syntax17.error reference output for testing
test/btyacc/err_syntax17.output reference output for testing
test/btyacc/err_syntax17.tab.c reference output for testing
test/btyacc/err_syntax17.tab.h reference output for testing
test/btyacc/err_syntax18.error reference output for testing
test/btyacc/err_syntax18.output reference output for testing
test/btyacc/err_syntax18.tab.c reference output for testing
test/btyacc/err_syntax18.tab.h reference output for testing
test/btyacc/err_syntax19.error reference output for testing
test/btyacc/err_syntax19.output reference output for testing
test/btyacc/err_syntax19.tab.c reference output for testing
test/btyacc/err_syntax19.tab.h reference output for testing
test/btyacc/err_syntax2.error reference output for testing
test/btyacc/err_syntax2.output reference output for testing
test/btyacc/err_syntax2.tab.c reference output for testing
test/btyacc/err_syntax2.tab.h reference output for testing
test/btyacc/err_syntax20.error reference output for testing
test/btyacc/err_syntax20.output reference output for testing
test/btyacc/err_syntax20.tab.c reference output for testing
test/btyacc/err_syntax20.tab.h reference output for testing
test/btyacc/err_syntax21.error reference output for testing
test/btyacc/err_syntax21.output reference output for testing
test/btyacc/err_syntax21.tab.c reference output for testing
test/btyacc/err_syntax21.tab.h reference output for testing
test/btyacc/err_syntax22.error reference output for testing
test/btyacc/err_syntax22.output reference output for testing
test/btyacc/err_syntax22.tab.c reference output for testing
test/btyacc/err_syntax22.tab.h reference output for testing
test/btyacc/err_syntax23.error reference output for testing
test/btyacc/err_syntax23.output reference output for testing
test/btyacc/err_syntax23.tab.c reference output for testing
test/btyacc/err_syntax23.tab.h reference output for testing
test/btyacc/err_syntax24.error reference output for testing
test/btyacc/err_syntax24.output reference output for testing
test/btyacc/err_syntax24.tab.c reference output for testing
test/btyacc/err_syntax24.tab.h reference output for testing
test/btyacc/err_syntax25.error reference output for testing
test/btyacc/err_syntax25.output reference output for testing
test/btyacc/err_syntax25.tab.c reference output for testing
test/btyacc/err_syntax25.tab.h reference output for testing
test/btyacc/err_syntax26.error reference output for testing
test/btyacc/err_syntax26.output reference output for testing
test/btyacc/err_syntax26.tab.c reference output for testing
test/btyacc/err_syntax26.tab.h reference output for testing
test/btyacc/err_syntax27.error reference output for testing
test/btyacc/err_syntax27.output reference output for testing
test/btyacc/err_syntax27.tab.c reference output for testing
test/btyacc/err_syntax27.tab.h reference output for testing
test/btyacc/err_syntax3.error reference output for testing
test/btyacc/err_syntax3.output reference output for testing
test/btyacc/err_syntax3.tab.c reference output for testing
test/btyacc/err_syntax3.tab.h reference output for testing
test/btyacc/err_syntax4.error reference output for testing
test/btyacc/err_syntax4.output reference output for testing
test/btyacc/err_syntax4.tab.c reference output for testing
test/btyacc/err_syntax4.tab.h reference output for testing
test/btyacc/err_syntax5.error reference output for testing
test/btyacc/err_syntax5.output reference output for testing
test/btyacc/err_syntax5.tab.c reference output for testing
test/btyacc/err_syntax5.tab.h reference output for testing
test/btyacc/err_syntax6.error reference output for testing
test/btyacc/err_syntax6.output reference output for testing
test/btyacc/err_syntax6.tab.c reference output for testing
test/btyacc/err_syntax6.tab.h reference output for testing
test/btyacc/err_syntax7.error reference output for testing
test/btyacc/err_syntax7.output reference output for testing
test/btyacc/err_syntax7.tab.c reference output for testing
test/btyacc/err_syntax7.tab.h reference output for testing
test/btyacc/err_syntax7a.error reference output for testing
test/btyacc/err_syntax7a.output reference output for testing
test/btyacc/err_syntax7a.tab.c reference output for testing
test/btyacc/err_syntax7a.tab.h reference output for testing
test/btyacc/err_syntax7b.error reference output for testing
test/btyacc/err_syntax7b.output reference output for testing
test/btyacc/err_syntax7b.tab.c reference output for testing
test/btyacc/err_syntax7b.tab.h reference output for testing
test/btyacc/err_syntax8.error reference output for testing
test/btyacc/err_syntax8.output reference output for testing
test/btyacc/err_syntax8.tab.c reference output for testing
test/btyacc/err_syntax8.tab.h reference output for testing
test/btyacc/err_syntax8a.error reference output for testing
test/btyacc/err_syntax8a.output reference output for testing
test/btyacc/err_syntax8a.tab.c reference output for testing
test/btyacc/err_syntax8a.tab.h reference output for testing
test/btyacc/err_syntax9.error reference output for testing
test/btyacc/err_syntax9.output reference output for testing
test/btyacc/err_syntax9.tab.c reference output for testing
test/btyacc/err_syntax9.tab.h reference output for testing
test/btyacc/error.error reference output for testing
test/btyacc/error.output reference output for testing
test/btyacc/error.tab.c reference output for testing
test/btyacc/error.tab.h reference output for testing
test/btyacc/grammar.dot reference output for testing
test/btyacc/grammar.error reference output for testing
test/btyacc/grammar.output reference output for testing
test/btyacc/grammar.tab.c reference output for testing
test/btyacc/grammar.tab.h reference output for testing
test/btyacc/help.error reference output for testing
test/btyacc/help.output reference output for testing
test/btyacc/inherit0.error reference output for testing
test/btyacc/inherit0.output reference output for testing
test/btyacc/inherit0.tab.c reference output for testing
test/btyacc/inherit0.tab.h reference output for testing
test/btyacc/inherit1.error reference output for testing
test/btyacc/inherit1.output reference output for testing
test/btyacc/inherit1.tab.c reference output for testing
test/btyacc/inherit1.tab.h reference output for testing
test/btyacc/inherit2.error reference output for testing
test/btyacc/inherit2.output reference output for testing
test/btyacc/inherit2.tab.c reference output for testing
test/btyacc/inherit2.tab.h reference output for testing
test/btyacc/no_b_opt.error reference output for testing
test/btyacc/no_b_opt.output reference output for testing
test/btyacc/no_b_opt1.error reference output for testing
test/btyacc/no_b_opt1.output reference output for testing
test/btyacc/no_code_c.error reference output for testing
test/btyacc/no_code_c.output reference output for testing
test/btyacc/no_defines.error reference output for testing
test/btyacc/no_defines.output reference output for testing
test/btyacc/no_graph.error reference output for testing
test/btyacc/no_graph.output reference output for testing
test/btyacc/no_include.error reference output for testing
test/btyacc/no_include.output reference output for testing
test/btyacc/no_opts.error reference output for testing
test/btyacc/no_opts.output reference output for testing
test/btyacc/no_output.error reference output for testing
test/btyacc/no_output.output reference output for testing
test/btyacc/no_output1.error reference output for testing
test/btyacc/no_output1.output reference output for testing
test/btyacc/no_output2.error reference output for testing
test/btyacc/no_output2.output reference output for testing
test/btyacc/no_p_opt.error reference output for testing
test/btyacc/no_p_opt.output reference output for testing
test/btyacc/no_p_opt1.error reference output for testing
test/btyacc/no_p_opt1.output reference output for testing
test/btyacc/no_verbose.error reference output for testing
test/btyacc/no_verbose.output reference output for testing
test/btyacc/nostdin.error reference output for testing
test/btyacc/nostdin.output reference output for testing
test/btyacc/ok_syntax1.error reference output for testing
test/btyacc/ok_syntax1.output reference output for testing
test/btyacc/ok_syntax1.tab.c reference output for testing
test/btyacc/ok_syntax1.tab.h reference output for testing
test/btyacc/pure_calc.error reference output for testing
test/btyacc/pure_calc.output reference output for testing
test/btyacc/pure_calc.tab.c reference output for testing
test/btyacc/pure_calc.tab.h reference output for testing
test/btyacc/pure_error.error reference output for testing
test/btyacc/pure_error.output reference output for testing
test/btyacc/pure_error.tab.c reference output for testing
test/btyacc/pure_error.tab.h reference output for testing
test/btyacc/quote_calc-s.error reference output for testing
test/btyacc/quote_calc-s.output reference output for testing
test/btyacc/quote_calc-s.tab.c reference output for testing
test/btyacc/quote_calc-s.tab.h reference output for testing
test/btyacc/quote_calc.error reference output for testing
test/btyacc/quote_calc.output reference output for testing
test/btyacc/quote_calc.tab.c reference output for testing
test/btyacc/quote_calc.tab.h reference output for testing
test/btyacc/quote_calc2-s.error reference output for testing
test/btyacc/quote_calc2-s.output reference output for testing
test/btyacc/quote_calc2-s.tab.c reference output for testing
test/btyacc/quote_calc2-s.tab.h reference output for testing
test/btyacc/quote_calc2.error reference output for testing
test/btyacc/quote_calc2.output reference output for testing
test/btyacc/quote_calc2.tab.c reference output for testing
test/btyacc/quote_calc2.tab.h reference output for testing
test/btyacc/quote_calc3-s.error reference output for testing
test/btyacc/quote_calc3-s.output reference output for testing
test/btyacc/quote_calc3-s.tab.c reference output for testing
test/btyacc/quote_calc3-s.tab.h reference output for testing
test/btyacc/quote_calc3.error reference output for testing
test/btyacc/quote_calc3.output reference output for testing
test/btyacc/quote_calc3.tab.c reference output for testing
test/btyacc/quote_calc3.tab.h reference output for testing
test/btyacc/quote_calc4-s.error reference output for testing
test/btyacc/quote_calc4-s.output reference output for testing
test/btyacc/quote_calc4-s.tab.c reference output for testing
test/btyacc/quote_calc4-s.tab.h reference output for testing
test/btyacc/quote_calc4.error reference output for testing
test/btyacc/quote_calc4.output reference output for testing
test/btyacc/quote_calc4.tab.c reference output for testing
test/btyacc/quote_calc4.tab.h reference output for testing
test/btyacc/rename_debug.c reference output for testing
test/btyacc/rename_debug.error reference output for testing
test/btyacc/rename_debug.h reference output for testing
test/btyacc/rename_debug.i reference output for testing
test/btyacc/rename_debug.output reference output for testing
test/btyacc/varsyntax_calc1.error reference output for testing
test/btyacc/varsyntax_calc1.output reference output for testing
test/btyacc/varsyntax_calc1.tab.c reference output for testing
test/btyacc/varsyntax_calc1.tab.h reference output for testing
test subdirectory
test/btyacc_calc1.y testcase for btyacc
test/btyacc_demo.y testcase for btyacc
test/calc.y example from VMS freeware version of byacc
test/calc1.y advanced example from Steve Johnson's paper.
test/calc2.y test-cases and reference files for %lex-param / %parse-param
test/calc3.y test-cases and reference files for %lex-param / %parse-param
test/code_calc.y reference input for testing
test/code_debug.y test-input, for -i, -o, -d options
test/code_error.y reference input for testing
test/empty.y testcase for btyacc
test/err_inherit1.y testcase for btyacc
test/err_inherit2.y testcase for btyacc
test/err_inherit3.y testcase for btyacc
test/err_inherit4.y testcase for btyacc
test/err_inherit5.y testcase for btyacc
test/err_syntax1.y test-case with syntax error (and nonprinting character)
test/err_syntax10.y testcase for retyped_warning()
test/err_syntax11.y testcase for reprec_warning()
test/err_syntax12.y testcase for revalued_warning()
test/err_syntax13.y testcase for terminal_start()
test/err_syntax14.y testcase for restarted_warning() and undefined_goal()
test/err_syntax15.y testcase for no_grammar()
test/err_syntax16.y testcase for terminal_lhs()
test/err_syntax17.y testcase for unterminated_action()
test/err_syntax18.y testcase for dollar_warning()
test/err_syntax19.y testcase for dollar_error()
test/err_syntax2.y testcase for unterminated_comment()
test/err_syntax20.y testcase for undefined_symbol_warning()
test/err_syntax21.y testcase for unknown_rhs()
test/err_syntax22.y testcase for untyped_rhs()
test/err_syntax23.y testcase for untyped_lhs()
test/err_syntax24.y testcase for default_action_warning()
test/err_syntax25.y testcase for over_unionized()
test/err_syntax26.y testcase for unexpected_EOF()
test/err_syntax27.y testcase for missing_brace()
test/err_syntax3.y testcase for unterminated_string()
test/err_syntax4.y testcase for unterminated_text()
test/err_syntax5.y testcase for unterminated_union()
test/err_syntax6.y testcase for illegal_tag()
test/err_syntax7.y testcase for illegal_character()
test/err_syntax7a.y testcase for illegal_character()
test/err_syntax7b.y testcase for illegal_character()
test/err_syntax8.y testcase for used_reserved()
test/err_syntax8a.y testcase for used_reserved()
test/err_syntax9.y testcase for tokenized_start()
test/error.y original version of byacc - 1993
test/grammar.y grammar from cproto
test/inherit0.y testcase for btyacc
test/inherit1.y testcase for btyacc
test/inherit2.y testcase for btyacc
test/ok_syntax1.y testcase for valid literal syntax
test/pure_calc.y reference input for testing
test/pure_error.y reference input for testing
test/quote_calc.y test-case for %token using quoted name
test/quote_calc2.y test-case for %token using quoted name
test/quote_calc3.y test-case for %token using quoted name
test/quote_calc4.y test-case for %token using quoted name
test/run_lint.sh run lint, using the build-directory's makefile, on each ".c" file in test-directory
test/run_make.sh do a test-compile of each ".c" file in the test-directory
test/run_test.sh test-script for byacc
test/varsyntax_calc1.y testcase for btyacc
test/yacc subdirectory
test/yacc/big_b.error exercise -L/-B options
test/yacc/big_b.output exercise -L/-B options
test/yacc/big_l.error exercise -L/-B options
test/yacc/big_l.output exercise -L/-B options
test/yacc/calc.error reference output for testing
test/yacc/calc.output reference output for testing
test/yacc/calc.tab.c reference output for testing
test/yacc/calc.tab.h reference output for testing
test/yacc/calc1.error reference output for testing
test/yacc/calc1.output reference output for testing
test/yacc/calc1.tab.c reference output for testing
test/yacc/calc1.tab.h reference output for testing
test/yacc/calc2.error reference output for testing
test/yacc/calc2.output reference output for testing
test/yacc/calc2.tab.c reference output for testing
test/yacc/calc2.tab.h reference output for testing
test/yacc/calc3.error reference output for testing
test/yacc/calc3.output reference output for testing
test/yacc/calc3.tab.c reference output for testing
test/yacc/calc3.tab.h reference output for testing
test/yacc/code_calc.code.c reference output for testing
test/yacc/code_calc.error reference output for testing
test/yacc/code_calc.output reference output for testing
test/yacc/code_calc.tab.c reference output for testing
test/yacc/code_calc.tab.h reference output for testing
test/yacc/code_error.code.c reference output for testing
test/yacc/code_error.error reference output for testing
test/yacc/code_error.output reference output for testing
test/yacc/code_error.tab.c reference output for testing
test/yacc/code_error.tab.h reference output for testing
test/yacc/empty.error reference output for testing
test/yacc/empty.output reference output for testing
test/yacc/empty.tab.c reference output for testing
test/yacc/empty.tab.h reference output for testing
test/yacc/err_syntax1.error reference output for testing
test/yacc/err_syntax1.output reference output for testing
test/yacc/err_syntax1.tab.c reference output for testing
test/yacc/err_syntax1.tab.h reference output for testing
test/yacc/err_syntax10.error reference output for testing
test/yacc/err_syntax10.output reference output for testing
test/yacc/err_syntax10.tab.c reference output for testing
test/yacc/err_syntax10.tab.h reference output for testing
test/yacc/err_syntax11.error reference output for testing
test/yacc/err_syntax11.output reference output for testing
test/yacc/err_syntax11.tab.c reference output for testing
test/yacc/err_syntax11.tab.h reference output for testing
test/yacc/err_syntax12.error reference output for testing
test/yacc/err_syntax12.output reference output for testing
test/yacc/err_syntax12.tab.c reference output for testing
test/yacc/err_syntax12.tab.h reference output for testing
test/yacc/err_syntax13.error reference output for testing
test/yacc/err_syntax13.output reference output for testing
test/yacc/err_syntax13.tab.c reference output for testing
test/yacc/err_syntax13.tab.h reference output for testing
test/yacc/err_syntax14.error reference output for testing
test/yacc/err_syntax14.output reference output for testing
test/yacc/err_syntax14.tab.c reference output for testing
test/yacc/err_syntax14.tab.h reference output for testing
test/yacc/err_syntax15.error reference output for testing
test/yacc/err_syntax15.output reference output for testing
test/yacc/err_syntax15.tab.c reference output for testing
test/yacc/err_syntax15.tab.h reference output for testing
test/yacc/err_syntax16.error reference output for testing
test/yacc/err_syntax16.output reference output for testing
test/yacc/err_syntax16.tab.c reference output for testing
test/yacc/err_syntax16.tab.h reference output for testing
test/yacc/err_syntax17.error reference output for testing
test/yacc/err_syntax17.output reference output for testing
test/yacc/err_syntax17.tab.c reference output for testing
test/yacc/err_syntax17.tab.h reference output for testing
test/yacc/err_syntax18.error reference output for testing
test/yacc/err_syntax18.output reference output for testing
test/yacc/err_syntax18.tab.c reference output for testing
test/yacc/err_syntax18.tab.h reference output for testing
test/yacc/err_syntax19.error reference output for testing
test/yacc/err_syntax19.output reference output for testing
test/yacc/err_syntax19.tab.c reference output for testing
test/yacc/err_syntax19.tab.h reference output for testing
test/yacc/err_syntax2.error reference output for testing
test/yacc/err_syntax2.output reference output for testing
test/yacc/err_syntax2.tab.c reference output for testing
test/yacc/err_syntax2.tab.h reference output for testing
test/yacc/err_syntax20.error reference output for testing
test/yacc/err_syntax20.output reference output for testing
test/yacc/err_syntax20.tab.c reference output for testing
test/yacc/err_syntax20.tab.h reference output for testing
test/yacc/err_syntax21.error reference output for testing
test/yacc/err_syntax21.output reference output for testing
test/yacc/err_syntax21.tab.c reference output for testing
test/yacc/err_syntax21.tab.h reference output for testing
test/yacc/err_syntax22.error reference output for testing
test/yacc/err_syntax22.output reference output for testing
test/yacc/err_syntax22.tab.c reference output for testing
test/yacc/err_syntax22.tab.h reference output for testing
test/yacc/err_syntax23.error reference output for testing
test/yacc/err_syntax23.output reference output for testing
test/yacc/err_syntax23.tab.c reference output for testing
test/yacc/err_syntax23.tab.h reference output for testing
test/yacc/err_syntax24.error reference output for testing
test/yacc/err_syntax24.output reference output for testing
test/yacc/err_syntax24.tab.c reference output for testing
test/yacc/err_syntax24.tab.h reference output for testing
test/yacc/err_syntax25.error reference output for testing
test/yacc/err_syntax25.output reference output for testing
test/yacc/err_syntax25.tab.c reference output for testing
test/yacc/err_syntax25.tab.h reference output for testing
test/yacc/err_syntax26.error reference output for testing
test/yacc/err_syntax26.output reference output for testing
test/yacc/err_syntax26.tab.c reference output for testing
test/yacc/err_syntax26.tab.h reference output for testing
test/yacc/err_syntax27.error reference output for testing
test/yacc/err_syntax27.output reference output for testing
test/yacc/err_syntax27.tab.c reference output for testing
test/yacc/err_syntax27.tab.h reference output for testing
test/yacc/err_syntax3.error reference output for testing
test/yacc/err_syntax3.output reference output for testing
test/yacc/err_syntax3.tab.c reference output for testing
test/yacc/err_syntax3.tab.h reference output for testing
test/yacc/err_syntax4.error reference output for testing
test/yacc/err_syntax4.output reference output for testing
test/yacc/err_syntax4.tab.c reference output for testing
test/yacc/err_syntax4.tab.h reference output for testing
test/yacc/err_syntax5.error reference output for testing
test/yacc/err_syntax5.output reference output for testing
test/yacc/err_syntax5.tab.c reference output for testing
test/yacc/err_syntax5.tab.h reference output for testing
test/yacc/err_syntax6.error reference output for testing
test/yacc/err_syntax6.output reference output for testing
test/yacc/err_syntax6.tab.c reference output for testing
test/yacc/err_syntax6.tab.h reference output for testing
test/yacc/err_syntax7.error reference output for testing
test/yacc/err_syntax7.output reference output for testing
test/yacc/err_syntax7.tab.c reference output for testing
test/yacc/err_syntax7.tab.h reference output for testing
test/yacc/err_syntax7a.error reference output for testing
test/yacc/err_syntax7a.output reference output for testing
test/yacc/err_syntax7a.tab.c reference output for testing
test/yacc/err_syntax7a.tab.h reference output for testing
test/yacc/err_syntax7b.error reference output for testing
test/yacc/err_syntax7b.output reference output for testing
test/yacc/err_syntax7b.tab.c reference output for testing
test/yacc/err_syntax7b.tab.h reference output for testing
test/yacc/err_syntax8.error reference output for testing
test/yacc/err_syntax8.output reference output for testing
test/yacc/err_syntax8.tab.c reference output for testing
test/yacc/err_syntax8.tab.h reference output for testing
test/yacc/err_syntax8a.error reference output for testing
test/yacc/err_syntax8a.output reference output for testing
test/yacc/err_syntax8a.tab.c reference output for testing
test/yacc/err_syntax8a.tab.h reference output for testing
test/yacc/err_syntax9.error reference output for testing
test/yacc/err_syntax9.output reference output for testing
test/yacc/err_syntax9.tab.c reference output for testing
test/yacc/err_syntax9.tab.h reference output for testing
test/yacc/error.error reference output for testing
test/yacc/error.output reference output for testing
test/yacc/error.tab.c reference output for testing
test/yacc/error.tab.h reference output for testing
test/yacc/grammar.dot reference output for testing
test/yacc/grammar.error reference output for testing
test/yacc/grammar.output reference output for testing
test/yacc/grammar.tab.c reference output for testing
test/yacc/grammar.tab.h reference output for testing
test/yacc/help.error reference output for testing
test/yacc/help.output reference output for testing
test/yacc/no_b_opt.error reference output for testing
test/yacc/no_b_opt.output reference output for testing
test/yacc/no_b_opt1.error reference output for testing
test/yacc/no_b_opt1.output reference output for testing
test/yacc/no_code_c.error reference output for testing
test/yacc/no_code_c.output reference output for testing
test/yacc/no_defines.error reference output for testing
test/yacc/no_defines.output reference output for testing
test/yacc/no_graph.error reference output for testing
test/yacc/no_graph.output reference output for testing
test/yacc/no_include.error reference output for testing
test/yacc/no_include.output reference output for testing
test/yacc/no_opts.error reference output for testing
test/yacc/no_opts.output reference output for testing
test/yacc/no_output.error reference output for testing
test/yacc/no_output.output reference output for testing
test/yacc/no_output1.error reference output for testing
test/yacc/no_output1.output reference output for testing
test/yacc/no_output2.error reference output for testing
test/yacc/no_output2.output reference output for testing
test/yacc/no_p_opt.error reference output for testing
test/yacc/no_p_opt.output reference output for testing
test/yacc/no_p_opt1.error reference output for testing
test/yacc/no_p_opt1.output reference output for testing
test/yacc/no_verbose.error reference output for testing
test/yacc/no_verbose.output reference output for testing
test/yacc/nostdin.error reference output for testing
test/yacc/nostdin.output reference output for testing
test/yacc/ok_syntax1.error reference output for testing
test/yacc/ok_syntax1.output reference output for testing
test/yacc/ok_syntax1.tab.c reference output for testing
test/yacc/ok_syntax1.tab.h reference output for testing
test/yacc/pure_calc.error reference output for testing
test/yacc/pure_calc.output reference output for testing
test/yacc/pure_calc.tab.c reference output for testing
test/yacc/pure_calc.tab.h reference output for testing
test/yacc/pure_error.error reference output for testing
test/yacc/pure_error.output reference output for testing
test/yacc/pure_error.tab.c reference output for testing
test/yacc/pure_error.tab.h reference output for testing
test/yacc/quote_calc-s.error reference output for testing
test/yacc/quote_calc-s.output reference output for testing
test/yacc/quote_calc-s.tab.c reference output for testing
test/yacc/quote_calc-s.tab.h reference output for testing
test/yacc/quote_calc.error reference output for testing
test/yacc/quote_calc.output reference output for testing
test/yacc/quote_calc.tab.c reference output for testing
test/yacc/quote_calc.tab.h reference output for testing
test/yacc/quote_calc2-s.error reference output for testing
test/yacc/quote_calc2-s.output reference output for testing
test/yacc/quote_calc2-s.tab.c reference output for testing
test/yacc/quote_calc2-s.tab.h reference output for testing
test/yacc/quote_calc2.error reference output for testing
test/yacc/quote_calc2.output reference output for testing
test/yacc/quote_calc2.tab.c reference output for testing
test/yacc/quote_calc2.tab.h reference output for testing
test/yacc/quote_calc3-s.error reference output for testing
test/yacc/quote_calc3-s.output reference output for testing
test/yacc/quote_calc3-s.tab.c reference output for testing
test/yacc/quote_calc3-s.tab.h reference output for testing
test/yacc/quote_calc3.error reference output for testing
test/yacc/quote_calc3.output reference output for testing
test/yacc/quote_calc3.tab.c reference output for testing
test/yacc/quote_calc3.tab.h reference output for testing
test/yacc/quote_calc4-s.error reference output for testing
test/yacc/quote_calc4-s.output reference output for testing
test/yacc/quote_calc4-s.tab.c reference output for testing
test/yacc/quote_calc4-s.tab.h reference output for testing
test/yacc/quote_calc4.error reference output for testing
test/yacc/quote_calc4.output reference output for testing
test/yacc/quote_calc4.tab.c reference output for testing
test/yacc/quote_calc4.tab.h reference output for testing
test/yacc/rename_debug.c reference output for testing
test/yacc/rename_debug.error reference output for testing
test/yacc/rename_debug.h reference output for testing
test/yacc/rename_debug.i reference output for testing
test/yacc/rename_debug.output reference output for testing
test/yacc/varsyntax_calc1.error reference output for testing
test/yacc/varsyntax_calc1.output reference output for testing
test/yacc/varsyntax_calc1.tab.c reference output for testing
test/yacc/varsyntax_calc1.tab.h reference output for testing

385
NOTES-btyacc-Changes Normal file
View File

@ -0,0 +1,385 @@
Tom Shields, March 17, 2014
PARKING LOT ISSUES:
-------------------
- verify debian packaging still works?
- there are no #line directives in y.tab.i, other than those that come
from the input file and the skeleton file; to fix this, would need to
count output lines in externs_file and add 'write_externs_lineno()'
similar to 'write_code_lineno()'
- if there are no defined symbols, the .tab.h file isn't empty (weird case,
may not be worth fixing)
- consider: treat []-actions identical to {}-actions if not processing a
backtracking parser (avoids test case error)?
BTYACC CHANGES CURRENTLY DEFERRED, BY FILE:
-------------------------------------------
push.skel
- skeleton for a 'push' parser
- needs to be upgraded match the structure of yaccpar.skel
defs.h
- adopt '%include' changes
- adopt '%define'/'%ifdef'/'%endif'
- adopt -E flag to print preprocessed grammar to stdout
error.c
- adopt '%include' changes
- NOTE: there is a btyacc change that might be worth adopting in byacc
[FileError() refactoring to eliminate duplicated code in most of the
error message functions]
main.c
- adopt '%define' changes
- adopt '-DNAME' command line option to define preprocessor variable NAME
- adopt -E flag to print preprocessed grammar to stdout
- adopt '-S skeleton_file' command line option to select an alternate parser
skeleton file
- the skeleton file named by the -S flag is used as provided to open the
file; consider a change to this behavior to check whether the named file
has a path prefix, and if not, look in 'installation' directory if the
file is not found in the working directory
output.c
- adopt '%include' changes
reader.c
- adopt '%include' changes
- adopt '%define'/'%ifdef'/'%endif' changes
- adopt -E flag to print preprocessed grammar to stdout
- NOTE: there is a btyacc change that might be worth adopting in byacc
[copy_string() & copy_comment() refactoring to eliminate duplicated
code in copy_text() and copy_union()]
warshall.c
- NOTE: there is a btyacc change that might be worth adopting in byacc
[shifting 'mask' incrementally rather than literal '1' by a variable
amount each time thru the loop]
================================================================================
new files:
----------
skel2c
- modified from btyacc distribution: don't generate #include defs.h
- extended syntax recognized to include '%% insert VERSION here', generating
the defines for YYMAJOR, YYMINOR and YYPATCH at that point
- made generated tables type 'const char *const' to match skelton.c from
byacc-20130925 baseline
- added code to append text for write_section() to end of generated skeleton.c
- remove conversion of tab to \t in generated skeleton.c
- extended syntax recognized to include '%%ifdef', '%%ifndef', '%%else' and
'%%endif'; used in yaccpar.skel to bracket code that is specific to
backtracking
yaccpar.skel.old
- created from skeleton.c in byacc-20140101 baseline; use of this skeleton
will create a version of skeleton.c that is close to that in the
byacc-20140101 baseline
- eliminated 'body_3' and 'trailer_2' skeleton segments - no need to generate
yyerror() invocation dynamically; YYERROR_CALL() is already generated
earlier, and so can be used in the skeleton to simplify
- added 'const' to types in '%% tables' section to match what skel2c,
start_int_table() and state_str_table() generate
- added a few cosmetic changes (e.g., added some additional comments,
reworded debugging output to match yaccpar.skel, changed yygrowstack()
to return YYENOMEM for 'out of memory' error, rather than -1, to match
yaccpar.skel; changed yyparse() return value from 1 to 2 for the
'out of memory' error to match yaccpar.skel)
- added '#ifndef'/'#endif' around '#define YYINITSTACKSIZE 200' to allow
the value to be changed at compile time
- changed 'printf(' to 'fprintf(stderr, '; added stack depth (yydepth) to
debugging output from yaccpar.skel
- use 'YYINT' rather than 'short' for integer table types
yaccpar.skel
- renamed from btyaccpa.ske, merged with btyacc-c.ske
- modified from btyacc distribution to match the latest byacc-20140101
skeleton structure & data structures
- make local functions static
- change "virtual memory exceeded" to "memory exhausted" for bison
compatibility
- change debug output generation from printf/puts/putc onto stdout to use
fprintf/fputs/fputc onto stderr; include
stack depth and whether or not in trial parsing
- changed types of generated string tables to be 'const pointer to const char'
- check all malloc()/realloc() return values, ensure return value of
yyparse() = 2 if parsing failed due to memory exhaustion
- change YYDBPR() macro to YYSTYPE_TOSTRING(); define semantics as delivering
a char* value representing a semantic value (e.g., yylval or yyval, or the
contents of an entry on the semantic stack); additional parameter passed:
grammar symbol # (to assist interpretation of semantic value)
- change YYPOSN to YYLTYPE and yyposn to yylloc (position corresponding to
yylval) for bison compatibility; add yyloc (corresponding to yyval)
- move default definition of YYLTYPE into output.c, generating a typedef
- add '#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)'/'#endif' around
all lines specific to position processing
- add '#if defined(YYDESTRUCT_CALL)'/'#endif' around all lines specific to
semantic & position stack processing to reclaim memory associated with
discarded symbols
- add '%%ifdef YYBTYACC'/'%%endif' around all lines specific to backtrack
parsing; converted by skel2c into '#if defined(YYBTYACC)'/'#endif'
- distinguish between "yacc stack overflow" and "memory exhausted" situations
- consolidated termination cleanup code; introduced yyreturn, set to 2 after
labels yyoverflow/yyenomem, set to 1 after label yyabort, set to 0 after
label yyaccept; all termination cases jump to label yyreturn, which does
any cleanup then returns yyreturn value
- replaced YYDELETEVAL & YYDELETEPOSN user-supplied macro capability by
implementation of byacc-generated yydestruct() as defined by bison
compatible %destructor mechanism
- moved invocation of 'YYREDUCEPOSNFUNC' macro to immediately prior to, rather
than after, execution of final rule action (so that, at some future
date, implementation extensions can be added to enable custom calculation
of locations associated with non-terminals within rule actions); deleted
unnecessary flag 'reduce_posn'; deleted 'YYCALLREDUCEPOSN' macro; deleted
C++ variant of 'YYREDUCEPOSNFUNC' invocation
- adopt approach similar to bison for default computation of yyloc; change
macro 'YYREDUCEPOSNFUNC' name to 'YYLLOC_DEFAULT' for bison compatibility;
added 'yyerror_loc_range[2]' to hold start & end locations for error
situations that pop the stack
- use 'YYINT' rather than 'short' for integer table types, and for indexing
parser tables
readskel.c
http://www.verisign.com/index.html- replaced error() with fprintf()
mstring.h
- moved contents of mstring.h to defs.h - mstring.h is obsolete
mstring.c
- replaced include of mstring.h with defs.h
- changed 'START' to 'HEAD' to remove conflict with 'START' used for
the start symbol defined in defs.h
modified byacc files:
---------------------
skeleton.c
- skeleton.c is now generated from the appropriate skeleton file by 'skel2c'
configure.in
- added configuration for --enable-btyacc option; if 'yes' add '-DYYBTYACC'
to DEFINES in makefile.in; --enable-btyacc defaults to 'no'
- added configuration for --with-max-table-size option; if present,
overrides the value of MAXTABLE defined in defs.h
- regenerate configure using autoconf
makefile.in
- added mstring.c to C_FILES
- added mstring$o to OBJS
- added @DEFINES@ as value of DEFINES make variable
- added new make variable SKELETON with value 'yaccpar.skel'
- added rule to generate skeleton.c from $(SKELETON), depending on skel2c
and makefile
- added rm -f skeleton.c distclean rule
- moved dependency on makefile from only main$o & skeleton$o to $(OBJS),
since if ./configure is run changing, for example, from --enable-btyacc
to --disable-btyacc, all files must be recompiled to ensure a clean
executable
- add @MAXTABLE@ for optional '-DMAXTABLE=nnn' if configured using
--with-max-table-size=nnn
- changed 'cd test && rn 0f test-*'to 'rm -f $(testdir)/test-*'
test/run_test.sh
- ???
test/run_make.sh
- ???
defs.h
- moved contents of mstring.h to defs.h - mstring.h is obsolete
- added <limits.h> to get the various system defined machine limits;
changed definitions of MAXCHAR, MAXSHORT, MINSHORT & BITS_PER_WORD to use
defines from <limits.h>; changed definitions of BIT and SETBIT to use
value of BITS_PER_WORD
- added typedef for __compar_fn_t, conditioned on _COMPAR_FN_T being
undefined (at least for Mac OSX environment)
- adopt new symbol class values ACTION and ARGUMENT
- adopt changes/additions used by inherited attribute processing
- clean up locations of extern function definitions to match where they
actually live in source files
- adopt error functions from inherited attribute processing; added new error
functions
- added keyword code LOCATIONS for %locations
- added keyword code DESTRUCTOR for %destructor
- added extern decl for 'int locations'; true if %locations present
- added extern decl for 'int backtrack'; initialized to 0 (= false), set to
1 (= true) if -B flag is present
- added extern decl for 'int destructor'; true if at least one %destructor
present in grammar spec file
- define 'YYINT' as the smallest C type that can be used to address a
table of size 'MAXTABLE'; define 'YYINT' based on the value of
'MAXTABLE' using the standard system type size definitions from <limits.h>;
define 'MAXYYINT' and 'MINYYINT' accordingly
- change 'Value_t' and 'Index_t' to 'YYINT' from 'short'
- allow 'MAXTABLE' to be defined by '-DMAXTABLE=nnn' at compile-time
closure.c
- changed print_closure(), print_EFF() and print_first_derives() to 'static';
added fwd declarations
- changed 'short' to 'Value_t' (in some instances, 'Value_t' was already
used for variables/parameters that were related to variables/parameters
declared as 'short'
error.c
- adopt error functions from inherited attribute processing; added a few
additional inherited attribute error functions
graph.c
- changed 'short' to 'Value_t' (in some instances, 'Value_t' was already
used for variables/parameters that were related to variables/parameters
declared as 'short'
lalr.c
- changed MAXSHORT to MAXYYINT
lr0.c
- changed MAXSHORT to MAXYYINT
- changed 'short' to 'Value_t' (in some instances, 'Value_t' was already
used for variables/parameters that were related to variables/parameters
declared as 'short'
main.c
- changed 'short' to 'Value_t' (in some instances, 'Value_t' was already
used for variables/parameters that were related to variables/parameters
declared as 'short'
mkpar.c
- backtracking attempts to resolve shift/reduce and reduce/reduce conflicts
output.c
- generate prefix & YYPREFIX defines into externs file (-i, .tab.i) and
code file (-r, .code.c); generate into output file (.tab.c) only if not
using -r option; eliminates doubled output of prefix aliases if -r with
no -i in y.tab.c and y.code.c or if -r & -i in y.tab.i and y.code.c
- changed types of generated string tables to be 'const pointer to const char'
- adopt backtracking as an alternative in cases where otherwise we have a
conflict in the parsing actions (3, rather than 2, choices)
- wrap defines file with (where "yy" is value of 'symbol_prefix')
#ifndef __yy_defines_h_
#define _yy_defines_h_
<defines>
#endif
- avoid writing %%xdecls skeleton section twice if -r used
- eliminated 'body_3' and 'trailer_2' skeleton segments - no need to generate
yyerror() invocation dynamically; YYERROR_CALL() is already generated
earlier, and can be used in the pareser skeleton
- if -P flag (pure_parser), add yylloc as 2nd parameter to yylex()
(declaration & call)
- change YYPOSN to YYLTYPE and yyposn to yylloc (position corresponding to
yylval) for bison compatibility; add yyloc (corresponding to yyval)
- generate yylloc parameters for yylex & yyerror if %locations present
- add location as 1st parameter to declaraion & invocation of yyerror() if
%locations present
- output backtrack parsing tables if -B flag is present
- added generation of yystos[] with output_accessing_symbols() to allow
translation from a parser internal state number to the corresponding
grammar symbol number [0 .. nsyms) of the accessing symbol of that parser
state; used in the generated code for YYDESTRUCT_CALL() &
YYSTYPE_TOSTRING() to enable the correct semantic value union tag to be
determined when executing the implementation of YYDESTRUCT_CALL() or
YYSTYPE_TOSTRING() (similar to yystos[] in bison)
- added to output_prefix(): yystos; yycindex & yyctable if compiling
backtracking; yyloc & yylloc if %locations used
- extended yyname[] to include all grammar symbols, not just the terminal
symbols: '$end', 'error', '$accept', all non-terminals, including internally
generated non-terminals for embedded actions in rules, and 'illegal-symbol'
(which bison spells '$undefined'); '$end' already defined as a symbol 0,
rathern than adding 'end-of-file' as the name of symbol 0; added
'illegal-symbol' from byacc-20140101 (NOTE: the comment in the code that
says byacc does not predefine '$end' and '$error' is incorrect; however,
both bison and byacc spell '$error' as 'error')
- added generation of #define YYTRANSLATE() from byacc-20140101, but changed
the definition for the undefined symbol case because it is no longer in
yyname[YYMAXTOKEN+1] but rather occurs after the last non-terminal symbol;
added #define YYUNDFTOKEN to contain the index in yyname of 'illegal-symbol'
- generate YYLTYPE in output_ltype() as a struct like for bison rather than
using #define in yaccpar.skel
- added 'write_code_lineno' invocation at start of 'output_prefix'
- added 'write_code_lineno' invocation at start of 'output_pure_parser'
- added 'write_code_lineno' invocation prior to generation of #include
for externs file
- added 'write_code_lineno' invocation after 1st 'write_section(fp, xdecls)'
- added '++outline;' prior to output of '#define YYTRANSLATE' - this was
actually causing almost all of the invocations of 'write_code_lineno' to
put out the correct #line directive
- corrected 'write_code_lineno' - the line number in a #line directive is
the number of the next line, not the number of the #line line
- changed MAXSHORT to MAXYYINT; changed 'high' local static from 'int' to
'long' so that it can get higher than 'MAXYYINT' without machine-dependent
behavior; changed related formats from '%d' to '%ld'
- generate 'YYINT' rather than 'short' for integer table types
- generate YYDESTRUCT_DECL & YYDESTRUCT_CALL macros, similar to YYERROR_DECL
and YYERROR_CALL macros, that can be redefined by user, if desired, to add
additional parameters to yydestruct() (and even change the 'yydestruct'
function name)
- if at least one %destructor present, generate yydestruct(); 1st parameter
is a string indicating the context in which yydestruct() is invoked
(e.g., discarding input token, discarding state on stack, cleanup when
aborting); 2nd parameter is the internal grammar symbol number [0..nsyms)
of the accessing symbol of the parser state on the top of the stack; 3rd
parameter is a pointer to the semantic value to be reclaimed associated
with the grammar symbol in the 2nd parameter; if %locations is defined,
the 4th parameter is a pointer to the position value to be reclaimed
associated with the grammar symbol in the 2nd parameter
reader.c
- adopt []-actions, similar to {}-actions; {}-actions are only executed when
not in trial mode, but []-actions are executed regardless of mode
- adopt new symbol class values ACTION and ARGUMENT
- adopt inherited attributes (syntax resembles arguments to non-terminal
symbols)
- adopt keyword table lookup from btyacc, modified to handle equivalence
of '-' and '_' in spelling of keywords
- adopt refactoring of tag table creation into cache_tag() for use in
multiple locations
- added new error functions in place of btyacc's generic error() function
- changed '0' to 'NULL' for pointer initialization
- reworked for-loop at end of get_line (part of DEFERRED '%ifdef/%endif' change)
- added %locations directive for bison compatibility to enable position
processing
- added decl for 'int locations'; true if %locations present
- added decl 'int backtrack'; initialized to 0 (= false), set to
1 (= true) if -B flag is present
- process %locations if present, set location = 1
- only process []-actions and only generate 'if (!yytrial)' prefix for
{}-actions if backtracking is enabled
- add decl for 'int destructor'; true if at least one %destructor is present
- add %destructor directive to enable semantic & position stack processing to
reclaim memory associated with discarded symbols
- process bison compatible %destructor (set destructor = 1); support @$ in
%destructor code to reference the position value if %locations is defined
- changed 'short' to 'Value_t' (in some instances, 'Value_t' was already
used for variables/parameters that were related to variables/parameters
declared as 'short'
- if %locations present, support @N and @$ syntax as for bison to reference
the locations associated with the N-th rhs symbol and the lhs symbol,
respectively
symtab.c
- initialize fields added to 'struct bucket' for non-terminal symbol
inherited attributes
verbose.c
- for parse states with conflicts, the contents of the y.output file include
the trial shift and/or trial reduce actions
- added output to the end of the verbose report showing the correspondance
between grammar symbol #, internal parser symbol #, and grammar symbol name
- changed 'short' to 'Value_t' (in some instances, 'Value_t' was already
used for variables/parameters that were related to variables/parameters
declared as 'short'
yacc.1
- added options 'P', 'V', 'y' and '-o output_file' to the yacc command
synopsis (already covered in the description section)
- added options 'B', 'D' and 'L' to the yacc command synopsis; added text in
the description section
- added %locations description to the extensions section

80
NOTES-btyacc-Disposition Normal file
View File

@ -0,0 +1,80 @@
Tom Shields, March 17, 2014
NOTE: README.BTYACC needs to be re-written (or another README file created)
to explain how the extensions were adopted into the byacc-20140101 baseline.
bytacc changes adopted; see README.BTYACC for details.
------------------------------------------------------
Changes to the skeleton to send debugging output to stderr.
Changes to the types of the grammar tables from 'short' to 'int' if
MAXTABLE is defined to be > MAXSHORT for generation of large grammar tables
for large grammars. This can be set with the invocation of configure
using the --with-max-table-size=N option
Changes to add syntactic sugaring for definition and semantic processing
of inherited attributes associated with non-terminal symbols on the rhs of
rules. Inherited attributes are implemented as {}-actions, and as such may
introduce reduce/reduce conflicts. The advantage over manual {}-actions is
that checking is performed on the number and types of inherited attributes,
and the positions on the semantic stack are automatically calculated.
Identical actions produced by the inherited attribute syntax are collapsed
into a single action, reducing reduce/reduce conflicts.
The %type specification is extended to define the types of inherited
attributes associated with non-terminal symbols on the lhs of rules, in
addition to its original purpose in yacc for specifying the type of the
symbol itself on the parser's value stack. In order to permit the two
aspects to be used independently, the <type> specification following
%type is optional.
Added a mechanism to the parser skeleton for computing and propagating
the text position of grammar symbols if %locations directive is present in
the grammar specificaion, or if yacc is invoked with the -L flag. Includes
support for "@$" and "@N" (for N an integer) in actions to refer to symbol
locations.
Added a bison compatible %destructor directive to define a memory
management mechanism to the parser skeleton that enables cleanup of semantic
values and text positions associated with the parsing stack that are
automatically discarded during error processing.
The following is only available if configure is invoked with the
--enable-btyacc=yes:
Changes to enable backtracking with semantic disambiguation, if yacc is
invoked with the -B flag. A yacc parser disambiguates shift/reduce conflicts
by choosing to shift, and reduce/reduce conflicts by reducing using the
earliest grammar rule (in the grammar specification). A btyacc parser handles
a conflict by remembering the current parse point and entering into trial parse
mode. In trial parse mode, the parser tries each of the conflicting options
until the first successs or until all options are exhausted. If the parser
runs into an error while in trial parse mode, it backtracks to the most recent
conflict point and tries the next alternative. If the parser finds a
successful parse, it backtracks to the point where it first entered trial parse
mode and continues with normal parsing, using the action at the start of the
successful trial path. Success in trial parse mode is achieved either by
successfully reducing the start symbol at the end of input or by invocation of
YYVALID (or YYVALID_NESTED). Semantic disambiguation is supported within
[]-actions, which are always executed, with invocation of YYERROR to terminate
a trial path or YYVALID (and YYVALID_NESTED). Yacc {}-actions are only
executed during normal parsing.
btyacc changes deferred:
------------------------
The -S command line flag to enable use of an alternate parser skeleton,
read from an external file.
Preprocessor statements: %define, %ifdef/%endif, %include.
btyacc changes rejected:
------------------------
The yyerror_detailed() option for error messages is replaced by the
byacc feature for specifying options paramters to yyerror().
C++-specific features in the parser skeleton.

603
README.BTYACC Normal file
View File

@ -0,0 +1,603 @@
-- $Id: README.BTYACC,v 1.1 2014/03/25 19:21:31 Tom.Shields Exp $
The original README from btyacc is below.
The backtracking enhancements to byacc have been merged into Thomas Dickey's
byacc baseline.
The %include and %define/%ifdef enhancements described below are not currently
incorporated.
-------------------------------------------------------------------------------
BTYACC -- backtracking yacc
===========================
BTYACC was created by Chris Dodd using ideas from many
places and lots of code from the Berkeley Yacc
distribution, which is a public domain yacc clone put
together by the good folks at Berkeley. This code is
distributed with NO WARRANTY and is public domain.
It is certain to contain bugs, which you should
report to: chrisd@collins.com.
Vadim Maslov of Siber Systems <vadik@siber.com>
considerably modified BTYACC to make it suitable
for production environment.
Several people have suggested bug fixes that
were incorporated into BtYacc.
See the README.BYACC files for more about
Berkeley Yacc and other sources of info.
http://www.siber.com/btyacc/ is the current home of BtYacc.
It is provided courtesy of Siber Systems http://www.siber.com/.
Version 3.0 changes
-------------------
by Vadim Maslov
Changes mostly occurred in btyaccpa.ske file that
contains the parsing shift/reduce/backtrack algorithm.
Version 3.0 innovations focus on:
- text position computation and propagation,
- industrial-strength error processing and recovery.
** Added mechanism for computing and propagating
text position of tokens and non-terminals.
Compilers often need to build AST trees such that every node
in a tree can relate to the parsed program source it came from.
The following applications are very likely to need this:
- debuggers that show actual source of the debugged program,
- source-to-source translators that want
unchanged parts of the tree to generate the unchanged code.
The new YYPOSN mechanism added in this version of BtYacc
helps you in automating the text position computation
and in assigning the computed text positions to the AST.
This mechanism is successfully used in commercial
parsers and source-to-source translators.
In standard Yaccs every token and every non-terminal
has an YYSTYPE semantic value attached to it.
In this new version every token and every non-terminal
also has an YYPOSN text position attached to it.
YYPOSN is a user-defined type that can be anything and
that has a meaning of text position attached to
token or non-terminal.
In addition to semantic value stack BtYacc now maintains
text position stack. Behavior of the text position stack
is similar to the behavior of the semantic value stack.
If using text position mechanism,
you need to define the following:
YYPOSN Preprocessor variable that contains C/C++ type of
the text position attached to
every token and non-terminal.
yyposn Global variable of type YYPOSN.
The lexer must assign text position of
the returned token to yyposn, just like it assigns
semantic value of the returned token to yylval.
YYREDUCEPOSNFUNC
Preprocessor variable that points to function that
is called after the grammar rule reduction
to reduce text positions located on the stack.
This function is called by BtYacc to reduce text
positions. The function is called immediately after
the regular rule reduction occurs.
The function has the following prototype:
void ReducePosn(YYPOSN &ret,
YYPOSN *terms,
YYSTYPE *term_vals,
int term_no,
int stk_pos,
int yychar,
YYPOSN &yyposn,
UserType extra);
The function arguments are:
- ret
Reference to the text position returned by
the rule. The function must write the computed
text position returned by the rule to ret.
This is analogue of the $$ semantic value.
- term_posns
Array of the right-hand side rule components
YYPOSN text positions. These are analogues of
$1, $2, ..., $N in the text position world.
- term_vals
Array of the right-hand side (RHS) rule components
YYSTYPE values. These are the $1,...,$N themselves.
- term_no
Number of the components in RHS of the reduced rule.
Equal to size of arrays term_posns and term_vals.
Also equal to N in $1,...,$N in the reduced rule.
- stk_pos
YYSTYPE/YYPOSN stack position before the reduction.
- yychar
Lookahead token that immediately follows
the reduced RHS components.
- yyposn
YYPOSN of the token that immediately follows
the reduced RHS components.
- extra
User-defined extra argument passed to ReducePosn.
Typically this function extracts text positions from
the right-hand side rule components and either
assigns them to the returned $$ structure/tree or
if no $$ value is returned, puts them into
the ret text position from where
it will be picked up by the later reduced rules.
YYREDUCEPOSNFUNCARG
Extra user-defined argument passed to
the ReducePosn function. This argument can use
any variables defined in btyaccpa.ske.
** Added code to btyaccpa.ske that automatically cleans up
semantic semantic values and text positions of tokens
and non-terminals that are discarded and deleted as
a result of error processing.
In the previous versions the discarded token and non-terminal
semantic values were not cleaned that caused quite severe
leaks. The only way to fix it was to add garbage collection
to YYSTYPE class.
Now BtYacc skeleton calls delete functions for semantic
values and positions of the discarded tokens and
non-terminals.
You need to define the following functions that BtYacc
calls when it needs to delete semantic value or text position.
YYDELETEVAL
User-defined function that is called by BtYacc
to delete semantic value of the token or non-terminal.
The user-defined function must have the prototype:
void DeleteYYval(YYSTYPE v, int type);
v is semantic value to delete,
type is one of the following:
0 discarding token
1 discarding state
2 cleaning up stack when aborting
YYDELETEPOSN
User-defined function that is called by BtYacc
to delete text position of the token or non-terminal.
The user-defined function must have the prototype:
void DeleteYYposn(YYPOSN p, int type);
v is semantic value to delete,
type is one of the following:
0 discarding token
1 discarding state
2 cleaning up stack when aborting
** User can define "detailed" syntax error processing
function that reports an *exact* position of
the token that caused the error.
If you define preprocessor variable YYERROR_DETAILED in
your grammar then you need define the following
error processing function:
void yyerror_detailed(char *text,
int errt,
YYSTYPE &errt_value,
YYPOSN &errt_posn);
It receives the following arguments:
text Error message.
errt Code of the token that caused the error.
errt_value Value of the token that caused the error.
errt_posn Text position of token that caused error.
** Dropped compatibility with C.
Compatibility with C became increasingly difficult
to maintain as new features were added to btyaccpa.ske.
So we dropped it. If anybody wants to make the new version
compatible with C, we would gladly accept the changes.
Meanwhile we expect that you use C++ to write grammar
actions and everything else in grammar files.
Since C is (in a sense) subset of C++, your C-based
grammar may work if you use C++ compiler to compile it.
Version 3.0 bugs fixed
----------------------
Matthias Meixner <meixner@mes.th-darmstadt.de> fixed a bug:
BtYacc does not correctly handle typenames, if one typename
is a prefix of another one and if this type is used after
the longer one. In this case BTYacc produces invalid code.
Version 2.1 changes
-------------------
by Vadim Maslov
** Added preprocessor statements to BtYacc that are similar
in function and behavior to C/C++ preprocessor statements.
These statements are used to:
- Introduce modularity into a grammar by breaking it
into several *.y files and assembling different
grammars from the *.y modules using %include and %ifdef.
- Have several versions of the same grammar
by using %ifdef and $endif.
- To include automatically generated grammar fragment.
For instance, we use %include to include
automatically generated list of tokens.
Preprocessor statements are:
%define <var-name>
Define preprocessor variable named <var-name>.
%ifdef <var-name>
If preprocessor variable named <var-name>
is defined by %define, then process the text from
this %ifdef to the closing %endif.
%endif
Closing bracket for %ifdef preprocessor statement.
Only one nesting level of %ifdef-%endif is allowed.
%include <file-name>
Process contents of the file named <file-name>.
If <file-name> is a relative name, it is looked up
in a directory in which btyacc was started.
Only one nesting level of %include is allowed.
Version 2.0 changes
-------------------
by Vadim Maslov
** Changed 16-bit short numbers to 32-bit int numbers in
grammar tables, so that huge grammar tables (tables that
are larger than 32768 elements) resulting from huge
grammars (Cobol grammar, for instance) can work correctly.
You need to have 32-bit integer to index table bigger than
32768 elements, 16-bit integer is not enough.
The original BtYacc just generated non-working tables
larger than 32768 elements without even notifying about
the table overflow.
** Make error recovery work correctly when error happens
while processing nested conflicts. Original BtYacc could
infinitely cycle in certain situations that involved error
recovery while in nested conflict.
More detailed explanation: when we have nested conflicts
(conflict that happens while trial-processing another
conflict), it leads btyacc into NP-complete searching of
conflict tree. The ultimate goal is YYVALID operator that
selects a particular branch of that tree as a valid one.
If no YYVALID is found on the tree, then error recovery
takes over. The problem with this is that error recovery
is started in the same state context that exists on the
last surveyed branch of the conflict tree. Sometimes this
last branch may be of zero length and it results in
recovering to exactly the same state as existed before
entering the conflict. BtYacc cycles then.
We solved this problem by memorizing the longest path in
the conflict tree while browsing it. If we ever get into
error recovery, we restore state that existed on the
longest path. Effectively we say: if we have an error,
let us move forward as far as we possibly could while we
were browsing the conflict tree.
** Introduce YYVALID_NESTED operation in addition to
simply YYVALID. When we have a nested conflict (conflict
while processing in trial mode for another conflict), we
want to relate YYVALID to a particular level of conflict
being in trial.
Since we mostly anticipate only 2-level nested conflicts
YYVALID_NESTED tells the parser to satisfy only the
internal conflict. Therefore, in 1-level conflict
situation YYVALID_NESTED acts like a regular YYVALID, but
in 2-level conflict it is a no-op and the other YYVALID
for outer conflict will be searched for.
** Improved handling of situation where /tmp directory is
missing. Original btyacc just died quietly when /tmp
directory was missing. We added code that states the
problem explicitly. While on UNIX /tmp directory is always
present, it may be missing on WIN32 systems, therefore
diagnosing this situation is important.
Version 1.0 changes: BackTracking
=================================
by Chris Dodd
BTYACC is a modified version of yacc that supports
automatic backtracking and semantic disambiguation to
parse ambiguous grammars, as well as syntactic sugar for
inherited attributes (which tend to introduce conflicts).
Whenever a btyacc generated parser runs into a
shift-reduce or reduce-reduce error in the parse table, it
remembers the current parse point (yacc stack and input
stream state), and goes into trial parse mode. It then
continues parsing, ignoring most rule actions. If it runs
into an error (either through the parse table or through
an action calling YYERROR), it backtracks to the most
recent conflict point and tries a different alternative.
If it finds a successful parse (reaches the end of the
input or an action calls YYVALID), it backtracks to the
point where it first entered trial parse mode, and
continues with a full parse (executing all actions),
following the path of the successful trial.
Actions in btyacc come in two flavors -- {}-actions, which
are only executed when not in trial mode, and []-actions
which are executed regardless of mode. There are also
inherited attributes, which look like arguments (they are
enclosed in "()") and act like []-actions.
What this buys you:
* No more lexer feedback hack. In yacc grammars for C, a
standard hack, know as the "lexer feedback hack" is used
to find typedef names. The lexer uses semantic
information to decide if any given identifier is a
typedef-name or not and returns a special token. With
btyacc, you no longer need to do this; the lexer should
just always return an identifier. The btyacc grammar then
needs a rule of the form:
typename: ID [ if (!IsTypeName(LookupId($1))) YYERROR; ]
While the hack works adequately well for parsing C, it
becomes a nightmare when you try to parse something like
C++, where treating an ID as a typedef becomes heavily
dependent on context.
* Easy disambiguation via simple ordering. Btyacc runs
its trials via the rule "try shifting first, then try
reducing by the order that the conflicting rules appear in
the input file". This means you can deal with semantic a
disambiguation rule like:
[1] If it looks like a declaration it is, otherwise
[2] If it looks like an expression it is, otherwise
[3] it is a syntax error
[Ellis&Stroustrup, Annotated C++ Reference Manual, p93]
To deal with this, you need only put all the rules for
declarations before the rules for expressions in the
grammar file.
* No extra cost if you do not use it. Backtracking is
only triggered when the parse hits a shift/reduce or
reduce/reduce conflict in the table. If you have no
conflicts in your grammar, there is no extra cost, other
than some extra code which will never be invoked.
* C++ and ANSI C compatible parsers. The parsers produced
by btyacc can be compiled with C++ correctly. If you
"#define" YYSTYPE to be some C++ type with constructor and
destructor, everything will work fine. My favorite is
"#define YYSTYPE SmartPointer", where SmartPointer is a
smart pointer type that does garbage collection on the
pointed to objects.
BTYACC was originally written to make it easy to write a
C++ parser (my goal was to be able to use the grammar out
of the back of the ARM with as few modifications as
possible). Anyone who has ever looked at Jim Roskind
public domain C++ yacc grammar, or the yacc-based grammar
used in g++ knows how difficult this is. BTYACC is very
useful for parsing any ambiguous grammar, particularly
ones that come from trying to merge two (or more) complete
grammars.
Limitations of the backtracking: Currently, the generated
parser does NO pruning of alternate parsing paths. To
avoid an exponential explosion of possible paths (and
parsing time), you need to manually tell the parser when
it can throw away saved paths using YYVALID. In practice,
this turns out to be fairly easy to do. A C++ parser (for
example) can just put a [YYVALID;] after every complete
declaration and statement rule, corresponding to pruning
the backtracking state after seeing a ';' or '}' -- there
will never be a situation in which it is useful to
backtrack past either of these.
Inherited attributes in btyacc:
Inherited attributes look a lot like function arguments to
non-terminals, which is what they end up being in a
recursive descent parser, but NOT how they are implemented
in btyacc. Basically they are just syntactic sugar for
embedded semantic actions and $0, $-1, ... in normal yacc.
btyacc gives you two big advantages besides just the
syntax:
1. it does type checking on the inherited attributes,
so you do not have to specify $<type>0 and makes sure
you give the correct number of arguments (inherited
attributes) to every use of a non-terminal.
2. It "collapses" identical actions from that are produced
from inherited attributes. This eliminates many
potential reduce-reduce conflicts arising from
the inherited attributes.
You use inherited attributes by declaring the types of the
attributes in the preamble with a type declaration and
declaring names of the attributes on the lhs of the yacc
rule. You can of course have more than one rule with the
same lhs, and you can even give them different names in
each, but the type and number must be the same.
Here is a small example:
/* lhs takes 2 inherited attributes */
%type <t1> lhs(<t1>, <t2>)
stuff(<t1>, <t2>)
%%
lhs($i1, $i2) : { $$ = $i1 }
| lhs($i1, $i2) stuff($1,$i2) { $$ = $2; }
This is roughly equivalent to the following yacc code:
lhs :
{ $$ = $<t1>-1; }
| lhs [ $<t1>$ = $-1; ] [ $<t2>$ = $<t2>0; ] stuff
{ $$ = $4; }
;
See the file "test/t2.y" for a longer and more complete
example. At the current time, the start symbol cannot
have any arguments.
Variant parsers:
Btyacc supports the -S flag to use a different parser
skeleton, changing the way that the parser is called and
used. The skeleton "push.skel" is included to produce a
"passive" parser that you feed tokens to (rather than
having the parser call a separate yylex routine). With
push.skel, yyparse is defined as follows:
int yyparse(int token, YYSTYPE yylval)
You should call yyparse repeatedly with successive tokens
of input. It returns 0 if more input is needed, 1 for a
successful parse, and -1 for an unrecoverable parse error.
Miscellaneous Features in ver. 1.0
----------------------------------
by Chris Dodd
The -r option has been implemented. The -r option tells
Yacc to put the read-only tables in y.tab.c and the code and
variables in y.code.c. Keith Bostic asked for this option so
that :yyfix could be eliminated.
The -l and -t options have been implemented. The -l
option tells Yacc not to include #line directives in the code
it produces. The -t option causes debugging code to be
included in the compiled parser.
The code for error recovery has been changed to
implement the same algorithm as AT&T Yacc. There will still
be differences in the way error recovery works because AT&T
Yacc uses more default reductions than Berkeley Yacc.
The environment variable TMPDIR determines the directory
where temporary files will be created. If TMPDIR is defined,
temporary files will be created in the directory whose
pathname is the value of TMPDIR. By default, temporary files
are created in /tmp.
The keywords are now case-insensitive. For example,
%nonassoc, %NONASSOC, %NonAssoc, and %nOnAsSoC are
all equivalent.
Commas and semicolons that are not part of C code are
treated as commentary.
Line-end comments, as in BCPL, are permitted. Line-end
comments begin with // and end at the next end-of-line.
Line-end comments are permitted in C code; they are converted
to C comments on output.
The form of y.output files has been changed to look more
like those produced by AT&T Yacc.
A new kind of declaration has been added.
The form of the declaration is
%ident string
where string is a sequence of characters beginning with a
double quote and ending with either a double quote or the
next end-of-line, whichever comes first. The declaration
will cause a #ident directive to be written near the start
of the output file.
If a parser has been compiled with debugging code, that
code can be enabled by setting an environment variable.
If the environment variable YYDEBUG is set to 0, debugging
output is suppressed. If it is set to 1, debugging output
is written to standard output.
Building BtYacc
---------------
by Chris Dodd and Vadim Maslov
We used GCC and GNU make to compile BtYacc both on UNIX and
WIN32 paltforms. You are welcome to try different
combinations of makes and compilers. Most likely it will
work, but it may require Makefile changes.
There is no config script.
Just type "make" and it should compile.
AWK. If you want to change file btyaccpa.ske (backtracking
parser skeleton), you will need awk to compile it into
skeleton.c file. We used GNU AWK (gawk) version 3.0.
It is known that using older versions of gawk
may create problems in compilation, because older awks
have problems with backslashes at the end of a line.
For MSDOS, there a "makefile.dos" that should do the trick.
Note: makefile.dos was not tested for a long time.
The result of compilation should be a single executable called
"btyacc" which you can install anywhere you like;
it does not require any other files in the distribution to run.
Legal Stuff
-----------
by Chris Dodd and Vadim Maslov
In English: BtYacc is freeware. BtYacc is distributed with
no warranty whatsoever. The author and any other contributors
take no responsibility for any and all consequences of its use.
In Legalese: LIMITATION OF LIABILITY. NEITHER SIBER SYSTEMS
NOR ANY OF ITS LICENSORS NOR ANY BTYACC CONTRIBUTOR SHALL BE
LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL
DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR
DATA USE, CAUSED BY BTYACC AND INCURRED BY CUSTOMER OR ANY
THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT, EVEN
IF SIBER SYSTEMS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

View File

@ -1 +1 @@
20140101
20140409

26
aclocal.m4 vendored
View File

@ -1,4 +1,4 @@
dnl $Id: aclocal.m4,v 1.33 2014/01/01 14:08:07 tom Exp $
dnl $Id: aclocal.m4,v 1.34 2014/04/06 19:16:18 tom Exp $
dnl Macros for byacc configure script (Thomas E. Dickey)
dnl ---------------------------------------------------------------------------
dnl Copyright 2004-2013,2014 Thomas E. Dickey
@ -600,7 +600,7 @@ make an error
test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_INTEL_COMPILER version: 5 updated: 2013/02/10 10:41:05
dnl CF_INTEL_COMPILER version: 6 updated: 2014/03/17 13:13:07
dnl -----------------
dnl Check if the given compiler is really the Intel compiler for Linux. It
dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@ -629,7 +629,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
make an error
#endif
],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
cf_save_CFLAGS="$cf_save_CFLAGS -we147"
],[])
ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
@ -638,7 +638,7 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_MAKE_DOCS version: 2 updated: 2013/01/02 20:04:08
dnl CF_MAKE_DOCS version: 3 updated: 2014/01/05 13:21:25
dnl ------------
dnl $1 = name(s) to generate rules for
dnl $2 = suffix of corresponding manpages used as input.
@ -684,10 +684,10 @@ clean \\
docs-clean ::
rm -f $cf_name.html $cf_name.pdf $cf_name.ps $cf_name.txt
$cf_name.html : $cf_name.$2
$cf_name.html : $cf_name.\$2
$cf_name.pdf : $cf_name.ps
$cf_name.ps : $cf_name.$2
$cf_name.txt : $cf_name.$2
$cf_name.ps : $cf_name.\$2
$cf_name.txt : $cf_name.\$2
CF_EOF
done
])dnl
@ -919,6 +919,15 @@ if test "$cf_cv_posix_c_source" != no ; then
CF_ADD_CFLAGS($cf_cv_posix_c_source)
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
dnl -----------
dnl Check for awk, ensure that the check found something.
AC_DEFUN([CF_PROG_AWK],
[
AC_PROG_AWK
test -z "$AWK" && AC_MSG_ERROR(No awk program found)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PROG_CC version: 3 updated: 2012/10/06 15:31:55
@ -1076,7 +1085,7 @@ fi
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_XOPEN_SOURCE version: 45 updated: 2013/09/07 14:06:25
dnl CF_XOPEN_SOURCE version: 46 updated: 2014/02/09 19:30:15
dnl ---------------
dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
dnl or adapt to the vendor's definitions to get equivalent functionality,
@ -1154,6 +1163,7 @@ sco*) #(vi
;;
solaris2.*) #(vi
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
*)
CF_TRY_XOPEN_SOURCE

1246
btyaccpar.c Normal file

File diff suppressed because it is too large Load Diff

1125
btyaccpar.skel Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/* $Id: closure.c,v 1.9 2010/06/09 08:21:47 tom Exp $ */
/* $Id: closure.c,v 1.10 2014/02/19 00:45:42 Tom.Shields Exp $ */
#include "defs.h"
@ -9,12 +9,18 @@ unsigned *ruleset;
static unsigned *first_derives;
static unsigned *EFF;
#ifdef DEBUG
static void print_closure(int);
static void print_EFF(void);
static void print_first_derives(void);
#endif
static void
set_EFF(void)
{
unsigned *row;
int symbol;
short *sp;
Value_t *sp;
int rowsize;
int i;
int rule;
@ -53,7 +59,7 @@ set_first_derives(void)
int j;
unsigned k;
unsigned cword = 0;
short *rp;
Value_t *rp;
int rule;
int i;
@ -100,7 +106,7 @@ set_first_derives(void)
}
void
closure(short *nucleus, int n)
closure(Value_t *nucleus, int n)
{
unsigned ruleno;
unsigned word;
@ -175,17 +181,17 @@ finalize_closure(void)
#ifdef DEBUG
void
static void
print_closure(int n)
{
short *isp;
Value_t *isp;
printf("\n\nn = %d\n\n", n);
for (isp = itemset; isp < itemsetend; isp++)
printf(" %d\n", *isp);
}
void
static void
print_EFF(void)
{
int i, j;
@ -216,7 +222,7 @@ print_EFF(void)
}
}
void
static void
print_first_derives(void)
{
int i;

View File

@ -30,6 +30,9 @@
/* Define to 1 if mkstemp() is available and working. */
#undef HAVE_MKSTEMP
/* Define to maximum table size (default: 32500) */
#undef MAXTABLE
/* Define to 1 if filesystem supports mixed-case filenames. */
#undef MIXEDCASE_FILENAMES
@ -48,5 +51,8 @@
/* "Define to 1 if you want to use valgrind for testing." */
#undef USE_VALGRIND
/* Define to 1 to enable backtracking extension */
#undef YYBTYACC
/* Define to 1 if you want to perform memory-leak testing. */
#undef YY_NO_LEAKS

827
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
dnl Process this file with 'autoconf' to produce a 'configure' script
dnl $Id: configure.in,v 1.15 2014/01/01 14:07:34 tom Exp $
dnl $Id: configure.in,v 1.18 2014/04/06 19:11:51 tom Exp $
AC_PREREQ(2.52.20011201)
AC_REVISION($Revision: 1.15 $)
AC_REVISION($Revision: 1.18 $)
AC_INIT(main.c)
AC_CONFIG_HEADER(config.h:config_h.in)
@ -12,12 +12,43 @@ CF_PROG_CC
AC_PROG_MAKE_SET
AC_PROG_INSTALL
CF_MAKE_TAGS
CF_PROG_AWK
CF_PROG_LINT
CF_XOPEN_SOURCE
AC_CHECK_HEADERS(fcntl.h)
CF_MKSTEMP
AC_MSG_CHECKING(for maximum table size)
AC_ARG_WITH([max-table-size],
[AC_HELP_STRING([--with-max-table-size=N],
[set the maximum table size = N (no default)])])
if test -n "$with_max_table_size"
then
AC_MSG_RESULT($with_max_table_size)
check=`expr "$with_max_table_size" + 0`
if test "x$check" != "x$with_max_table_size"
then
AC_MSG_ERROR([invalid value for --with-max-table-size: $with_max_table_size])
fi
AC_DEFINE_UNQUOTED(MAXTABLE,$with_max_table_size,[Define to maximum table size (default: 32500)])
else
AC_MSG_RESULT(default)
fi
AC_MSG_CHECKING(if backtracking extension is wanted)
AC_ARG_ENABLE([btyacc],
[AC_HELP_STRING([--enable-btyacc],
[turn on support for the btyacc backtracking extension (default: no)])])
AC_MSG_RESULT($enable_btyacc)
if test "$enable_btyacc" = "yes"; then
AC_DEFINE(YYBTYACC,1,[Define to 1 to enable backtracking extension])
SKELETON=btyaccpar
else
SKELETON=yaccpar
fi
AC_SUBST(SKELETON)
CF_WITH_WARNINGS(Wwrite-strings)
CF_DISABLE_ECHO
CF_DISABLE_LEAKS

145
defs.h
View File

@ -1,9 +1,10 @@
/* $Id: defs.h,v 1.38 2014/01/01 14:23:27 Christos.Zoulas Exp $ */
/* $Id: defs.h,v 1.47 2014/04/09 21:23:45 Rick.Spates Exp $ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
@ -30,14 +31,14 @@
#define VERSION VSTRING(YYMAJOR, YYMINOR)
/* machine-dependent definitions */
/* the following definitions are for the Tahoe */
/* they might have to be changed for other machines */
/* machine-dependent definitions: */
/* MAXCHAR is the largest unsigned character value */
/* MAXSHORT is the largest value of a C short */
/* MINSHORT is the most negative value of a C short */
/* MAXTABLE is the maximum table size */
/* YYINT is the smallest C integer type that can be */
/* used to address a table of size MAXTABLE */
/* MAXYYINT is the largest value of a YYINT */
/* MINYYINT is the most negative value of a YYINT */
/* BITS_PER_WORD is the number of bits in a C unsigned */
/* WORDSIZE computes the number of words needed to */
/* store n bits */
@ -45,14 +46,26 @@
/* from r (0-indexed) */
/* SETBIT sets the n-th bit starting from r */
#define MAXCHAR 255
#define MAXSHORT 32767
#define MINSHORT -32768
#define MAXCHAR UCHAR_MAX
#ifndef MAXTABLE
#define MAXTABLE 32500
#define BITS_PER_WORD 32
#define WORDSIZE(n) (((n)+(BITS_PER_WORD-1))/BITS_PER_WORD)
#define BIT(r, n) ((((r)[(n)>>5])>>((n)&31))&1)
#define SETBIT(r, n) ((r)[(n)>>5]|=((unsigned)1<<((n)&31)))
#endif
#if MAXTABLE <= SHRT_MAX
#define YYINT short
#define MAXYYINT SHRT_MAX
#define MINYYINT SHRT_MIN
#elif MAXTABLE <= INT_MAX
#define YYINT int
#define MAXYYINT INT_MAX
#define MINYYINT INT_MIN
#else
#error "MAXTABLE is too large for this machine architecture!"
#endif
#define BITS_PER_WORD ((int) sizeof (unsigned) * CHAR_BIT)
#define WORDSIZE(n) (((n)+(BITS_PER_WORD-1))/BITS_PER_WORD)
#define BIT(r, n) ((((r)[(n)/BITS_PER_WORD])>>((n)&(BITS_PER_WORD-1)))&1)
#define SETBIT(r, n) ((r)[(n)/BITS_PER_WORD]|=((unsigned)1<<((n)&(BITS_PER_WORD-1))))
/* character names */
@ -106,11 +119,18 @@
#define POSIX_YACC 15
#define TOKEN_TABLE 16
#if defined(YYBTYACC)
#define LOCATIONS 17
#define DESTRUCTOR 18
#endif
/* symbol classes */
#define UNKNOWN 0
#define TERM 1
#define NONTERM 2
#define ACTION 3
#define ARGUMENT 4
/* the undefined value */
@ -150,10 +170,20 @@
/* messages */
#define PLURAL(n) ((n) > 1 ? "s" : "")
/*
* Features which depend indirectly on the btyacc configuration, but are not
* essential.
*/
#if defined(YYBTYACC)
#define USE_HEADER_GUARDS 1
#else
#define USE_HEADER_GUARDS 0
#endif
typedef char Assoc_t;
typedef char Class_t;
typedef short Index_t;
typedef short Value_t;
typedef YYINT Index_t;
typedef YYINT Value_t;
/* the structure of a symbol table entry */
@ -164,6 +194,12 @@ struct bucket
struct bucket *next;
char *name;
char *tag;
#if defined(YYBTYACC)
char **argnames;
char **argtags;
int args;
char *destructor;
#endif
Value_t value;
Index_t index;
Value_t prec;
@ -250,6 +286,11 @@ extern int outline;
extern int exit_code;
extern int pure_parser;
extern int token_table;
#if defined(YYBTYACC)
extern int locations;
extern int backtrack;
extern int destructor;
#endif
extern const char *const banner[];
extern const char *const xdecls[];
@ -261,9 +302,7 @@ extern const char *const hdr_vars[];
extern const char *const body_1[];
extern const char *const body_vars[];
extern const char *const body_2[];
extern const char *const body_3[];
extern const char *const trailer[];
extern const char *const trailer_2[];
extern char *code_file_name;
extern char *input_file_name;
@ -281,11 +320,11 @@ extern FILE *union_file;
extern FILE *verbose_file;
extern FILE *graph_file;
extern int nitems;
extern int nrules;
extern int nsyms;
extern int ntokens;
extern int nvars;
extern Value_t nitems;
extern Value_t nrules;
extern Value_t nsyms;
extern Value_t ntokens;
extern Value_t nvars;
extern int ntags;
extern char unionized;
@ -298,6 +337,12 @@ extern Value_t *symbol_value;
extern Value_t *symbol_prec;
extern char *symbol_assoc;
#if defined(YYBTYACC)
extern Value_t *symbol_pval;
extern char **symbol_destructor;
extern char **symbol_type_tag;
#endif
extern Value_t *ritem;
extern Value_t *rlhs;
extern Value_t *rrhs;
@ -346,9 +391,6 @@ extern param *parse_param;
/* global functions */
extern bucket *lookup(const char *);
extern bucket *make_bucket(const char *);
#ifndef GCC_NORETURN
#if defined(__dead2)
#define GCC_NORETURN __dead2
@ -373,7 +415,13 @@ extern void finalize_closure(void);
extern void set_first_derives(void);
/* error.c */
extern void arg_number_disagree_warning(int a_lineno, char *a_name);
extern void arg_type_disagree_warning(int a_lineno, int i, char *a_name);
extern void at_error(int a_lineno, char *a_line, char *a_cptr) GCC_NORETURN;
extern void at_warning(int a_lineno, int i);
extern void bad_formals(void) GCC_NORETURN;
extern void default_action_warning(void);
extern void destructor_redeclared_warning(int a_lineno, char *a_line, char *a_cptr);
extern void dollar_error(int a_lineno, char *a_line, char *a_cptr) GCC_NORETURN;
extern void dollar_warning(int a_lineno, int i);
extern void fatal(const char *msg) GCC_NORETURN;
@ -389,6 +437,7 @@ extern void reprec_warning(char *s);
extern void restarted_warning(void);
extern void retyped_warning(char *s);
extern void revalued_warning(char *s);
extern void start_requires_args(char *a_name);
extern void syntax_error(int st_lineno, char *st_line, char *st_cptr) GCC_NORETURN;
extern void terminal_lhs(int s_lineno) GCC_NORETURN;
extern void terminal_start(char *s) GCC_NORETURN;
@ -396,24 +445,25 @@ extern void tokenized_start(char *s) GCC_NORETURN;
extern void undefined_goal(char *s) GCC_NORETURN;
extern void undefined_symbol_warning(char *s);
extern void unexpected_EOF(void) GCC_NORETURN;
extern void unknown_arg_warning(int d_lineno, const char *dlr_opt, const char *d_arg, const char *d_line, const char *d_cptr);
extern void unknown_rhs(int i) GCC_NORETURN;
extern void unsupported_flag_warning(const char *flag, const char *details);
extern void unterminated_action(int a_lineno, char *a_line, char *a_cptr) GCC_NORETURN;
extern void unterminated_comment(int c_lineno, char *c_line, char *c_cptr) GCC_NORETURN;
extern void unterminated_string(int s_lineno, char *s_line, char *s_cptr) GCC_NORETURN;
extern void unterminated_text(int t_lineno, char *t_line, char *t_cptr) GCC_NORETURN;
extern void unterminated_union(int u_lineno, char *u_line, char *u_cptr) GCC_NORETURN;
extern void untyped_arg_warning(int a_lineno, const char *dlr_opt, const char *a_name);
extern void untyped_lhs(void) GCC_NORETURN;
extern void untyped_rhs(int i, char *s) GCC_NORETURN;
extern void used_reserved(char *s) GCC_NORETURN;
extern void unterminated_arglist(int a_lineno, char *a_line, char *a_cptr) GCC_NORETURN;
extern void wrong_number_args_warning(const char *which, const char *a_name);
extern void wrong_type_for_arg_warning(int i, char *a_name);
/* graph.c */
extern void graph(void);
/* lalr.c */
extern void create_symbol_table(void);
extern void free_symbol_table(void);
extern void free_symbols(void);
/* lalr.c */
extern void lalr(void);
@ -432,21 +482,54 @@ extern void done(int k) GCC_NORETURN;
extern void free_parser(void);
extern void make_parser(void);
/* mstring.c */
struct mstring
{
char *base, *ptr, *end;
};
extern void msprintf(struct mstring *, const char *, ...);
extern int mputchar(struct mstring *, int);
extern struct mstring *msnew(void);
extern char *msdone(struct mstring *);
extern int strnscmp(const char *, const char *);
extern unsigned int strnshash(const char *);
#define mputc(m, ch) (((m)->ptr == (m)->end) \
? mputchar(m,ch) \
: (*(m)->ptr++ = (char) (ch)))
/* output.c */
extern void output(void);
/* reader.c */
extern void reader(void);
/* skeleton.c */
/* skeleton.c (generated by skel2c) */
extern void write_section(FILE * fp, const char *const section[]);
/* symtab.c */
extern bucket *make_bucket(const char *);
extern bucket *lookup(const char *);
extern void create_symbol_table(void);
extern void free_symbol_table(void);
extern void free_symbols(void);
/* verbose.c */
extern void verbose(void);
/* warshall.c */
extern void reflexive_transitive_closure(unsigned *R, int n);
#ifdef DEBUG
/* closure.c */
extern void print_closure(int n);
extern void print_EFF(void);
extern void print_first_derives(void);
/* lr0.c */
extern void print_derives(void);
#endif
#ifdef NO_LEAKS
extern void lr0_leaks(void);
extern void lalr_leaks(void);

View File

@ -12,7 +12,7 @@ OBJS = closure.obj, \
mkpar.obj, \
output.obj, \
reader.obj, \
skeleton.obj, \
yaccpar.obj, \
symtab.obj, \
verbose.obj, \
warshall.obj

120
error.c
View File

@ -1,4 +1,4 @@
/* $Id: error.c,v 1.9 2011/09/05 23:27:43 tom Exp $ */
/* $Id: error.c,v 1.11 2014/04/07 22:22:49 tom Exp $ */
/* routines for printing error messages */
@ -42,9 +42,9 @@ unexpected_EOF(void)
}
static void
print_pos(char *st_line, char *st_cptr)
print_pos(const char *st_line, const char *st_cptr)
{
char *s;
const char *s;
if (st_line == 0)
return;
@ -286,3 +286,117 @@ undefined_symbol_warning(char *s)
{
fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
}
#if ! defined(YYBTYACC)
void
unsupported_flag_warning(const char *flag, const char *details)
{
fprintf(stderr, "%s: w - %s flag unsupported, %s\n",
myname, flag, details);
}
#endif
#if defined(YYBTYACC)
void
at_warning(int a_lineno, int i)
{
fprintf(stderr, "%s: w - line %d of \"%s\", @%d references beyond the \
end of the current rule\n", myname, a_lineno, input_file_name, i);
}
void
at_error(int a_lineno, char *a_line, char *a_cptr)
{
fprintf(stderr,
"%s: e - line %d of \"%s\", illegal @$ or @N reference\n",
myname, a_lineno, input_file_name);
print_pos(a_line, a_cptr);
done(1);
}
void
unterminated_arglist(int a_lineno, char *a_line, char *a_cptr)
{
fprintf(stderr,
"%s: e - line %d of \"%s\", unterminated argument list\n",
myname, a_lineno, input_file_name);
print_pos(a_line, a_cptr);
done(1);
}
void
arg_number_disagree_warning(int a_lineno, char *a_name)
{
fprintf(stderr, "%s: w - line %d of \"%s\", number of arguments of %s "
"doesn't agree with previous declaration\n",
myname, a_lineno, input_file_name, a_name);
}
void
bad_formals(void)
{
fprintf(stderr, "%s: e - line %d of \"%s\", bad formal argument list\n",
myname, lineno, input_file_name);
print_pos(line, cptr);
done(1);
}
void
arg_type_disagree_warning(int a_lineno, int i, char *a_name)
{
fprintf(stderr, "%s: w - line %d of \"%s\", type of argument %d "
"to %s doesn't agree with previous declaration\n",
myname, a_lineno, input_file_name, i, a_name);
}
void
unknown_arg_warning(int d_lineno, const char *dlr_opt, const char *d_arg, const char
*d_line, const char *d_cptr)
{
fprintf(stderr, "%s: w - line %d of \"%s\", unknown argument %s%s\n",
myname, d_lineno, input_file_name, dlr_opt, d_arg);
print_pos(d_line, d_cptr);
}
void
untyped_arg_warning(int a_lineno, const char *dlr_opt, const char *a_name)
{
fprintf(stderr, "%s: w - line %d of \"%s\", untyped argument %s%s\n",
myname, a_lineno, input_file_name, dlr_opt, a_name);
}
void
wrong_number_args_warning(const char *which, const char *a_name)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", wrong number of %sarguments for %s\n",
myname, lineno, input_file_name, which, a_name);
print_pos(line, cptr);
}
void
wrong_type_for_arg_warning(int i, char *a_name)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", wrong type for default argument %d to %s\n",
myname, lineno, input_file_name, i, a_name);
print_pos(line, cptr);
}
void
start_requires_args(char *a_name)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", start symbol %s requires arguments\n",
myname, 0, input_file_name, a_name);
}
void
destructor_redeclared_warning(int a_lineno, char *a_line, char *a_cptr)
{
fprintf(stderr, "%s: w - line %d of \"%s\", destructor redeclared\n",
myname, a_lineno, input_file_name);
print_pos(a_line, a_cptr);
}
#endif

View File

@ -1,4 +1,4 @@
/* $Id: graph.c,v 1.7 2009/10/27 09:25:20 tom Exp $ */
/* $Id: graph.c,v 1.8 2014/02/19 00:46:57 Tom.Shields Exp $ */
#include "defs.h"
@ -51,10 +51,10 @@ graph(void)
static void
graph_state(int stateno)
{
short *isp;
Value_t *isp;
int rule;
short *sp;
short *sp1;
Value_t *sp;
Value_t *sp1;
larno = (unsigned)lookaheads[stateno];
fprintf(graph_file, "\n\tq%d [label=\"%d:\\l", stateno, stateno);

4
lalr.c
View File

@ -1,4 +1,4 @@
/* $Id: lalr.c,v 1.9 2009/10/27 09:49:27 tom Exp $ */
/* $Id: lalr.c,v 1.10 2014/02/19 00:35:17 Tom.Shields Exp $ */
#include "defs.h"
@ -196,7 +196,7 @@ set_goto_map(void)
if (ISTOKEN(symbol))
break;
if (ngotos == MAXSHORT)
if (ngotos == MAXYYINT)
fatal("too many gotos");
ngotos++;

84
lr0.c
View File

@ -1,4 +1,4 @@
/* $Id: lr0.c,v 1.13 2012/05/26 00:40:47 tom Exp $ */
/* $Id: lr0.c,v 1.16 2014/04/07 21:53:50 tom Exp $ */
#include "defs.h"
@ -28,7 +28,7 @@ static shifts *last_shift;
static reductions *last_reduction;
static int nshifts;
static short *shift_symbol;
static Value_t *shift_symbol;
static Value_t *redset;
static Value_t *shiftset;
@ -40,16 +40,16 @@ static Value_t *kernel_items;
static void
allocate_itemsets(void)
{
short *itemp;
short *item_end;
Value_t *itemp;
Value_t *item_end;
int symbol;
int i;
int count;
int max;
short *symbol_count;
Value_t *symbol_count;
count = 0;
symbol_count = NEW2(nsyms, short);
symbol_count = NEW2(nsyms, Value_t);
item_end = ritem + nitems;
for (itemp = ritem; itemp < item_end; itemp++)
@ -62,8 +62,8 @@ allocate_itemsets(void)
}
}
kernel_base = NEW2(nsyms, short *);
kernel_items = NEW2(count, short);
kernel_base = NEW2(nsyms, Value_t *);
kernel_items = NEW2(count, Value_t);
count = 0;
max = 0;
@ -76,15 +76,15 @@ allocate_itemsets(void)
}
shift_symbol = symbol_count;
kernel_end = NEW2(nsyms, short *);
kernel_end = NEW2(nsyms, Value_t *);
}
static void
allocate_storage(void)
{
allocate_itemsets();
shiftset = NEW2(nsyms, short);
redset = NEW2(nrules + 1, short);
shiftset = NEW2(nsyms, Value_t);
redset = NEW2(nrules + 1, Value_t);
state_set = NEW2(nitems, core *);
}
@ -133,7 +133,7 @@ static void
generate_states(void)
{
allocate_storage();
itemset = NEW2(nitems, short);
itemset = NEW2(nitems, Value_t);
ruleset = NEW2(WORDSIZE(nrules), unsigned);
set_first_derives();
initialize_states();
@ -158,9 +158,9 @@ static Value_t
get_state(int symbol)
{
int key;
short *isp1;
short *isp2;
short *iend;
Value_t *isp1;
Value_t *isp2;
Value_t *iend;
core *sp;
int found;
int n;
@ -220,14 +220,14 @@ static void
initialize_states(void)
{
unsigned i;
short *start_derives;
Value_t *start_derives;
core *p;
start_derives = derives[start_symbol];
for (i = 0; start_derives[i] >= 0; ++i)
continue;
p = (core *)MALLOC(sizeof(core) + i * sizeof(short));
p = (core *)MALLOC(sizeof(core) + i * sizeof(Value_t));
NO_SPACE(p);
p->next = 0;
@ -248,8 +248,8 @@ new_itemsets(void)
{
Value_t i;
int shiftcount;
short *isp;
short *ksp;
Value_t *isp;
Value_t *ksp;
Value_t symbol;
for (i = 0; i < nsyms; i++)
@ -283,22 +283,22 @@ new_state(int symbol)
{
unsigned n;
core *p;
short *isp1;
short *isp2;
short *iend;
Value_t *isp1;
Value_t *isp2;
Value_t *iend;
#ifdef TRACE
fprintf(stderr, "Entering new_state(%d)\n", symbol);
#endif
if (nstates >= MAXSHORT)
if (nstates >= MAXYYINT)
fatal("too many states");
isp1 = kernel_base[symbol];
iend = kernel_end[symbol];
n = (unsigned)(iend - isp1);
p = (core *)allocate((sizeof(core) + (n - 1) * sizeof(short)));
p = (core *)allocate((sizeof(core) + (n - 1) * sizeof(Value_t)));
p->accessing_symbol = (Value_t) symbol;
p->number = (Value_t) nstates;
p->nitems = (Value_t) n;
@ -316,7 +316,7 @@ new_state(int symbol)
}
/* show_cores is used for debugging */
#ifdef DEBUG
void
show_cores(void)
{
@ -393,17 +393,18 @@ show_shifts(void)
printf("\t%d\n", p->shift[i]);
}
}
#endif
static void
save_shifts(void)
{
shifts *p;
short *sp1;
short *sp2;
short *send;
Value_t *sp1;
Value_t *sp2;
Value_t *send;
p = (shifts *)allocate((sizeof(shifts) +
(unsigned)(nshifts - 1) * sizeof(short)));
(unsigned)(nshifts - 1) * sizeof(Value_t)));
p->number = this_state->number;
p->nshifts = (Value_t) nshifts;
@ -430,13 +431,13 @@ save_shifts(void)
static void
save_reductions(void)
{
short *isp;
short *rp1;
short *rp2;
Value_t *isp;
Value_t *rp1;
Value_t *rp2;
int item;
Value_t count;
reductions *p;
short *rend;
Value_t *rend;
count = 0;
for (isp = itemset; isp < itemsetend; isp++)
@ -452,7 +453,7 @@ save_reductions(void)
{
p = (reductions *)allocate((sizeof(reductions) +
(unsigned)(count - 1) *
sizeof(short)));
sizeof(Value_t)));
p->number = this_state->number;
p->nreds = count;
@ -482,10 +483,10 @@ set_derives(void)
{
Value_t i, k;
int lhs;
short *rules;
Value_t *rules;
derives = NEW2(nsyms, short *);
rules = NEW2(nvars + nrules, short);
derives = NEW2(nsyms, Value_t *);
rules = NEW2(nvars + nrules, Value_t);
k = 0;
for (lhs = start_symbol; lhs < nsyms; lhs++)
@ -513,7 +514,7 @@ void
print_derives(void)
{
int i;
short *sp;
Value_t *sp;
printf("\nDERIVES\n\n");
@ -592,8 +593,11 @@ lr0(void)
void
lr0_leaks(void)
{
DO_FREE(derives[start_symbol]);
DO_FREE(derives);
if (derives)
{
DO_FREE(derives[start_symbol]);
DO_FREE(derives);
}
DO_FREE(nullable);
}
#endif

75
main.c
View File

@ -1,7 +1,11 @@
/* $Id: main.c,v 1.41 2014/01/01 14:23:27 Christos.Zoulas Exp $ */
/* $Id: main.c,v 1.49 2014/04/09 21:25:20 Rick.Spates Exp $ */
#include <signal.h>
#ifndef _WIN32
#include <unistd.h> /* for _exit() */
#else
#include <stdlib.h> /* for _exit() */
#endif
#include "defs.h"
@ -73,21 +77,30 @@ FILE *union_file; /* a temp file, used to save the union */
FILE *verbose_file; /* y.output */
FILE *graph_file; /* y.dot */
int nitems;
int nrules;
int nsyms;
int ntokens;
int nvars;
Value_t nitems;
Value_t nrules;
Value_t nsyms;
Value_t ntokens;
Value_t nvars;
Value_t start_symbol;
char **symbol_name;
char **symbol_pname;
Value_t *symbol_value;
short *symbol_prec;
Value_t *symbol_prec;
char *symbol_assoc;
int pure_parser;
int token_table;
#if defined(YYBTYACC)
Value_t *symbol_pval;
char **symbol_destructor;
char **symbol_type_tag;
int locations = 0; /* default to no position processing */
int backtrack = 0; /* default is no backtracking */
#endif
int exit_code;
Value_t *ritem;
@ -116,6 +129,10 @@ done(int k)
{
DO_CLOSE(input_file);
DO_CLOSE(output_file);
if (iflag)
DO_CLOSE(externs_file);
if (rflag)
DO_CLOSE(code_file);
DO_CLOSE(action_file);
DO_CLOSE(defines_file);
@ -153,9 +170,6 @@ done(int k)
reader_leaks();
#endif
if (rflag)
DO_CLOSE(code_file);
exit(k);
}
@ -191,11 +205,14 @@ usage(void)
""
,"Options:"
," -b file_prefix set filename prefix (default \"y.\")"
," -d write definitions (y.tab.h)"
," -B create a backtracking parser"
," -d write definitions (" DEFINES_SUFFIX ")"
," -D enable value stack memory reclamation"
," -i write interface (y.tab.i)"
," -g write a graphical description"
," -l suppress #line directives"
," -o output_file (default \"y.tab.c\")"
," -L enable position processing, e.g., \"%locations\""
," -o output_file (default \"" OUTPUT_SUFFIX "\")"
," -p symbol_prefix set symbol prefix (default \"yy\")"
," -P create a reentrant parser, e.g., \"%pure-parser\""
," -r produce separate code and table files (y.code.c)"
@ -219,6 +236,14 @@ setflag(int ch)
{
switch (ch)
{
case 'B':
#if defined(YYBTYACC)
backtrack = 1;
#else
unsupported_flag_warning("-B", "reconfigure with --enable-btyacc");
#endif
break;
case 'd':
dflag = 1;
break;
@ -235,6 +260,14 @@ setflag(int ch)
lflag = 1;
break;
case 'L':
#if defined(YYBTYACC)
locations = 1;
#else
unsupported_flag_warning("-B", "reconfigure with --enable-btyacc");
#endif
break;
case 'P':
pure_parser = 1;
break;
@ -364,10 +397,18 @@ allocate(size_t n)
}
#define CREATE_FILE_NAME(dest, suffix) \
dest = TMALLOC(char, len + strlen(suffix) + 1); \
NO_SPACE(dest); \
strcpy(dest, file_prefix); \
strcpy(dest + len, suffix)
dest = alloc_file_name(len, suffix)
static char *
alloc_file_name(size_t len, const char *suffix)
{
char *result = TMALLOC(char, len + strlen(suffix) + 1);
if (result == 0)
no_space();
strcpy(result, file_prefix);
strcpy(result + len, suffix);
return result;
}
static void
create_file_names(void)
@ -384,7 +425,7 @@ create_file_names(void)
/* compute the file_prefix from the user provided output_file_name */
if (output_file_name != 0)
{
if (!(prefix = strstr(output_file_name, ".tab.c"))
if (!(prefix = strstr(output_file_name, OUTPUT_SUFFIX))
&& (prefix = strstr(output_file_name, ".c")))
{
defines_suffix = ".h";

View File

@ -1,4 +1,4 @@
# $Id: makefile.in,v 1.19 2014/01/01 14:09:43 tom Exp $
# $Id: makefile.in,v 1.23 2014/04/09 12:15:52 tom Exp $
#
# UNIX template-makefile for Berkeley Yacc
@ -24,9 +24,11 @@ CFLAGS = @CFLAGS@ $(CPPFLAGS) $(EXTRA_CFLAGS)
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
AWK = @AWK@
CTAGS = @CTAGS@
ETAGS = @ETAGS@
LINT = @LINT@
LINTFLAGS = @LINT_OPTS@
prefix = @prefix@
exec_prefix = @exec_prefix@
@ -38,6 +40,7 @@ manext = 1
testdir = $(srcdir)/test
SKELETON = @SKELETON@
x = @EXEEXT@
o = .@OBJEXT@
@ -57,9 +60,10 @@ C_FILES = \
lr0.c \
main.c \
mkpar.c \
mstring.c \
output.c \
reader.c \
skeleton.c \
$(SKELETON).c \
symtab.c \
verbose.c \
warshall.c
@ -72,13 +76,18 @@ OBJS = \
lr0$o \
main$o \
mkpar$o \
mstring$o \
output$o \
reader$o \
skeleton$o \
$(SKELETON)$o \
symtab$o \
verbose$o \
warshall$o
YACCPAR = \
btyaccpar.c \
yaccpar.c
TRANSFORM_BIN = sed 's/$x$$//' |sed '$(transform)'|sed 's/$$/$x/'
TRANSFORM_MAN = sed 's/$(manext)$$//'|sed '$(transform)'|sed 's/$$/$(manext)/'
@ -100,7 +109,7 @@ uninstall:
- rm -f $(mandir)/$(actual_man)
################################################################################
.SUFFIXES : $o .i
.SUFFIXES : .c $o .i .skel
.c$o:
@RULE_CC@
@ -110,6 +119,9 @@ uninstall:
@RULE_CC@
@ECHO_CC@$(CPP) -C $(CPPFLAGS) $*.c >$@
.skel.c :
$(AWK) -f $(srcdir)/skel2c $*.skel > $@
################################################################################
$(THIS)$x : $(OBJS)
@ -123,11 +135,16 @@ clean :: mostlyclean
distclean :: clean
- rm -f config.log config.cache config.status config.h makefile
- cd test && rm -f test-*
- rm -f $(testdir)/yacc/test-* $(testdir)/btyacc/test-*
realclean :: distclean
- rm -f tags TAGS
sources : $(YACCPAR)
maintainer-clean :: realclean
rm -f $(YACCPAR)
################################################################################
check: $(THIS)$x
$(SHELL) $(testdir)/run_test.sh $(testdir)
@ -142,7 +159,7 @@ tags: $(H_FILES) $(C_FILES)
$(CTAGS) $(C_FILES) $(H_FILES)
lint: $(C_FILES)
$(LINT) $(CPPFLAGS) $(C_FILES)
$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(C_FILES)
@MAKE_UPPER_TAGS@TAGS: $(H_FILES) $(C_FILES)
@MAKE_UPPER_TAGS@ $(ETAGS) $(C_FILES) $(H_FILES)
@ -150,9 +167,9 @@ lint: $(C_FILES)
depend:
makedepend -- $(CPPFLAGS) -- $(C_FILES)
$(OBJS) : defs.h
$(OBJS) : defs.h makefile
main$o \
skeleton$o : makefile VERSION
$(SKELETON)$o : VERSION
# DO NOT DELETE THIS LINE -- make depend depends on it.

27
mkpar.c
View File

@ -1,7 +1,18 @@
/* $Id: mkpar.c,v 1.12 2012/05/26 00:42:18 tom Exp $ */
/* $Id: mkpar.c,v 1.14 2014/04/01 23:05:37 tom Exp $ */
#include "defs.h"
#define NotSuppressed(p) ((p)->suppressed == 0)
#if defined(YYBTYACC)
#define MaySuppress(p) ((backtrack ? ((p)->suppressed <= 1) : (p)->suppressed == 0))
/* suppress the preferred action => enable backtracking */
#define StartBacktrack(p) if (backtrack && (p) != NULL && NotSuppressed(p)) (p)->suppressed = 1
#else
#define MaySuppress(p) ((p)->suppressed == 0)
#define StartBacktrack(p) /*nothing */
#endif
static action *add_reduce(action *actions, int ruleno, int symbol);
static action *add_reductions(int stateno, action *actions);
static action *get_shifts(int stateno);
@ -190,7 +201,7 @@ unused_rules(void)
{
for (p = parser[i]; p; p = p->next)
{
if (p->action_code == REDUCE && p->suppressed == 0)
if ((p->action_code == REDUCE) && MaySuppress(p))
rules_used[p->number] = 1;
}
}
@ -225,17 +236,23 @@ remove_conflicts(void)
SRcount = 0;
RRcount = 0;
symbol = -1;
#if defined(YYBTYACC)
pref = NULL;
#endif
for (p = parser[i]; p; p = p->next)
{
if (p->symbol != symbol)
{
/* the first parse action for each symbol is the preferred action */
pref = p;
symbol = p->symbol;
}
/* following conditions handle multiple, i.e., conflicting, parse actions */
else if (i == final_state && symbol == 0)
{
SRcount++;
p->suppressed = 1;
StartBacktrack(pref);
}
else if (pref != 0 && pref->action_code == SHIFT)
{
@ -269,12 +286,14 @@ remove_conflicts(void)
{
SRcount++;
p->suppressed = 1;
StartBacktrack(pref);
}
}
else
{
RRcount++;
p->suppressed = 1;
StartBacktrack(pref);
}
}
SRtotal += SRcount;
@ -329,9 +348,9 @@ sole_reduction(int stateno)
ruleno = 0;
for (p = parser[stateno]; p; p = p->next)
{
if (p->action_code == SHIFT && p->suppressed == 0)
if (p->action_code == SHIFT && MaySuppress(p))
return (0);
else if (p->action_code == REDUCE && p->suppressed == 0)
else if ((p->action_code == REDUCE) && MaySuppress(p))
{
if (ruleno > 0 && p->number != ruleno)
return (0);

152
mstring.c Normal file
View File

@ -0,0 +1,152 @@
/* $Id: mstring.c,v 1.3 2014/04/08 20:37:26 tom Exp $ */
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <ctype.h>
#include <string.h>
#include "defs.h"
/* parameters about string length. HEAD is the starting size and
** HEAD+TAIL should be a power of two */
#define HEAD 24
#define TAIL 8
#if defined(YYBTYACC)
void
msprintf(struct mstring *s, const char *fmt,...)
{
static char buf[4096]; /* a big static buffer */
va_list args;
size_t len;
if (!s || !s->base)
return;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
len = strlen(buf);
if (len > (size_t) (s->end - s->ptr))
{
size_t cp = (size_t) (s->ptr - s->base);
size_t cl = (size_t) (s->end - s->base);
size_t nl = cl;
while (len > (nl - cp))
nl = nl + nl + TAIL;
if ((s->base = realloc(s->base, nl)))
{
s->ptr = s->base + cp;
s->end = s->base + nl;
}
else
{
s->ptr = s->end = 0;
return;
}
}
memcpy(s->ptr, buf, len);
s->ptr += len;
}
#endif
int
mputchar(struct mstring *s, int ch)
{
if (!s || !s->base)
return ch;
if (s->ptr == s->end)
{
size_t len = (size_t) (s->end - s->base);
if ((s->base = realloc(s->base, len + len + TAIL)))
{
s->ptr = s->base + len;
s->end = s->base + len + len + TAIL;
}
else
{
s->ptr = s->end = 0;
return ch;
}
}
*s->ptr++ = (char)ch;
return ch;
}
struct mstring *
msnew(void)
{
struct mstring *n = malloc(sizeof(struct mstring));
if (n)
{
if ((n->base = n->ptr = malloc(HEAD)) != 0)
{
n->end = n->base + HEAD;
}
else
{
free(n);
n = 0;
}
}
return n;
}
char *
msdone(struct mstring *s)
{
char *r = 0;
if (s)
{
mputc(s, 0);
r = s->base;
free(s);
}
return r;
}
#if defined(YYBTYACC)
/* compare two strings, ignoring whitespace, except between two letters or
** digits (and treat all of these as equal) */
int
strnscmp(const char *a, const char *b)
{
while (1)
{
while (isspace(*a))
a++;
while (isspace(*b))
b++;
while (*a && *a == *b)
a++, b++;
if (isspace(*a))
{
if (isalnum(a[-1]) && isalnum(*b))
break;
}
else if (isspace(*b))
{
if (isalnum(b[-1]) && isalnum(*a))
break;
}
else
break;
}
return *a - *b;
}
unsigned int
strnshash(const char *s)
{
unsigned int h = 0;
while (*s)
{
if (!isspace(*s))
h = (h << 5) - h + (unsigned char)*s;
s++;
}
return h;
}
#endif

683
output.c

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
Summary: byacc - public domain Berkeley LALR Yacc parser generator
%define AppProgram byacc
%define AppVersion 20140101
%define AppVersion 20140409
%define UseProgram yacc
# $XTermId: byacc.spec,v 1.18 2014/01/01 17:26:25 tom Exp $
# $XTermId: byacc.spec,v 1.19 2014/04/09 19:53:59 tom Exp $
Name: %{AppProgram}
Version: %{AppVersion}
Release: 1

View File

@ -1,3 +1,10 @@
byacc (20140409) unstable; urgency=low
* integrate Tom Shield's btyacc-related changes
* add test-cases to fill in gaps reported by lcov
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 09 Apr 2014 15:53:59 -0400
byacc (20140101) unstable; urgency=low
* yytname[] changes

View File

@ -1,8 +1,8 @@
Summary: byacc - public domain Berkeley LALR Yacc parser generator
%define AppProgram byacc
%define AppVersion 20130925
%define AppVersion 20140409
%define UseProgram yacc
# $XTermId: mingw-byacc.spec,v 1.1 2013/09/25 23:12:06 tom Exp $
# $XTermId: mingw-byacc.spec,v 1.2 2014/04/09 19:53:59 tom Exp $
Name: %{AppProgram}
Version: %{AppVersion}
Release: 1

View File

@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.9 2008/07/24 17:13:00 tonnerre Exp $
#
DISTNAME= byacc-20050813
DISTNAME= byacc-20140409
PKGREVISION= 1
CATEGORIES= devel
MASTER_SITES= ftp://invisible-island.net/byacc/

1700
reader.c

File diff suppressed because it is too large Load Diff

112
skel2c Normal file
View File

@ -0,0 +1,112 @@
# vile: awkmode
function noident(given) {
gsub(/\$/,"@", given);
return given;
}
BEGIN { havesection = 0;
version = "$Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp $";
nsec = 0;
ifdef = "";
printf "/* This file generated automatically using\n * %s\n */\n\n",
noident(version);
}
/[$]Id[:][^$]*[$]/ {
printf "%s\n", noident($0);
next;
}
/^%% *insert *VERSION *here/ {
printf " CONCAT1(\"#define YYMAJOR \", YYMAJOR),\n";
printf " CONCAT1(\"#define YYMINOR \", YYMINOR),\n";
printf "#ifdef YYPATCH\n";
printf " CONCAT1(\"#define YYPATCH \", YYPATCH),\n";
printf "#endif\n";
next;
}
/^%%ifdef/ {
if (NF >= 2) {
printf "#if defined(%s)\n", $2;
printf " \"#if %s\",\n", $2;
} else {
_abort_exit = 1;
printf "skel2c: ill-formed %%ifdef in skeleton file on line %d\n", FNR > "/dev/stderr";
exit 2;
}
if (ifdef != "") {
printf "skel2c: nested %%ifdef in skeleton file on line %d\n", FNR > "/dev/stderr";
exit 2;
}
ifdef = $2;
next;
}
/^%%endif/ {
if (ifdef != "") {
if (NF >= 2) {
printf " \"#endif /* %s */\",\n", $2;
printf "#endif /* defined(%s) */\n", $2;
} else {
printf " \"#endif /* %s */\",\n", ifdef;
printf "#endif /* defined(%s) */\n", ifdef;
}
ifdef = "";
} else {
printf " \"#endif\",\n";
printf "#endif\n";
printf "skel2c: unmatched %endif in skeleton file on line %d\n", FNR > "/dev/stderr";
exit 2;
}
next;
}
/^%%/ { if (havesection) {
printf " 0\n};\n\n";
}
if (NF >= 2) {
havesection = 1;
section = $2;
seclist[nsec] = section;
nsec = nsec + 1;
printf "const char *const %s[] =\n{\n", $2;
} else {
havesection = 0;
}
next;
}
{ if (havesection) {
# Could use 'gsub(/\\/, "\\\\")' instead of the following
# two lines, but there's a bug in mawk and the original
# awk (not in gawk) which is triggered by that.
gsub(/\\/, "\\\1");
gsub(/\1/, "\\");
# gsub(/\t/, "\\t"); # change '\t' to "\\t"
gsub(/\"/, "\\\"");
printf " \"%s\",\n", $0;
} else {
print $0;
}
}
END { if (_abort_exit)
exit 2;
if (havesection) {
print " 0\n};\n";
}
if (nsec > 0) {
print "void";
print "write_section(FILE * fp, const char *const section[])";
print "{";
print " int i;";
print " const char *s;\n";
print " for (i = 0; (s = section[i]) != 0; ++i)";
print " {";
print "\tif (fp == code_file)";
print "\t ++outline;";
print "\tfprintf(fp, \"%s\\n\", s);";
print " }";
print "}";
} else {
print "skel2c: no sections defined in skeleton file" > "/dev/stderr";
exit 2;
}
if (ifdef != "") {
printf "skel2c: unmatched %%ifdef %s at end of skeleton file\n", $ifdef > "/dev/stderr";
exit 2;
}
}

View File

@ -1,4 +1,4 @@
/* $Id: symtab.c,v 1.10 2012/05/26 15:16:12 tom Exp $ */
/* $Id: symtab.c,v 1.11 2014/03/26 00:17:09 Tom.Shields Exp $ */
#include "defs.h"
@ -48,6 +48,12 @@ make_bucket(const char *name)
bp->prec = 0;
bp->class = UNKNOWN;
bp->assoc = TOKEN;
#if defined(YYBTYACC)
bp->args = -1;
bp->argnames = 0;
bp->argtags = 0;
bp->destructor = 0;
#endif
strcpy(bp->name, name);
return (bp);

19
test/btyacc/big_b.output Normal file
View File

@ -0,0 +1,19 @@
Usage: YACC [options] filename
Options:
-b file_prefix set filename prefix (default "y.")
-B create a backtracking parser
-d write definitions (.tab.h)
-D enable value stack memory reclamation
-i write interface (y.tab.i)
-g write a graphical description
-l suppress #line directives
-L enable position processing, e.g., "%locations"
-o output_file (default ".tab.c")
-p symbol_prefix set symbol prefix (default "yy")
-P create a reentrant parser, e.g., "%pure-parser"
-r produce separate code and table files (y.code.c)
-s suppress #define's for quoted names in %token lines
-t add debugging support
-v write description (y.output)
-V show version information and exit

19
test/btyacc/big_l.output Normal file
View File

@ -0,0 +1,19 @@
Usage: YACC [options] filename
Options:
-b file_prefix set filename prefix (default "y.")
-B create a backtracking parser
-d write definitions (.tab.h)
-D enable value stack memory reclamation
-i write interface (y.tab.i)
-g write a graphical description
-l suppress #line directives
-L enable position processing, e.g., "%locations"
-o output_file (default ".tab.c")
-p symbol_prefix set symbol prefix (default "yy")
-P create a reentrant parser, e.g., "%pure-parser"
-r produce separate code and table files (y.code.c)
-s suppress #define's for quoted names in %token lines
-t add debugging support
-v write description (y.output)
-V show version information and exit

View File

@ -0,0 +1 @@
YACC: 17 shift/reduce conflicts, 27 reduce/reduce conflicts.

View File

@ -0,0 +1,949 @@
0 $accept : lines $end
1 lines :
2 | lines line '\n'
3 | lines error '\n'
4 line : dexp
5 | vexp
6 | DREG '=' dexp
7 | VREG '=' vexp
8 dexp : CONST
9 | DREG
10 | dexp '+' dexp
11 | dexp '-' dexp
12 | dexp '*' dexp
13 | dexp '/' dexp
14 | '-' dexp
15 | '(' dexp ')'
16 vexp : dexp
17 | '(' dexp ',' dexp ')'
18 | VREG
19 | vexp '+' vexp
20 | dexp '+' vexp
21 | vexp '-' vexp
22 | dexp '-' vexp
23 | vexp '*' vexp
24 | dexp '*' vexp
25 | vexp '/' vexp
26 | dexp '/' vexp
27 | '-' vexp
28 | '(' vexp ')'
state 0
$accept : . lines $end (0)
lines : . (1)
. reduce 1
lines goto 1
state 1
$accept : lines . $end (0)
lines : lines . line '\n' (2)
lines : lines . error '\n' (3)
$end accept
error shift 2
DREG shift 3
VREG shift 4
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 8
vexp goto 9
line goto 10
state 2
lines : lines error . '\n' (3)
'\n' shift 11
. error
state 3
line : DREG . '=' dexp (6)
dexp : DREG . (9)
'=' shift 12
'+' reduce 9
'-' reduce 9
'*' reduce 9
'/' reduce 9
'\n' reduce 9
state 4
line : VREG . '=' vexp (7)
vexp : VREG . (18)
'=' shift 13
'+' reduce 18
'-' reduce 18
'*' reduce 18
'/' reduce 18
'\n' reduce 18
state 5
dexp : CONST . (8)
. reduce 8
state 6
dexp : '-' . dexp (14)
vexp : '-' . vexp (27)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 16
vexp goto 17
state 7
dexp : '(' . dexp ')' (15)
vexp : '(' . dexp ',' dexp ')' (17)
vexp : '(' . vexp ')' (28)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 18
vexp goto 19
8: shift/reduce conflict (shift 20, reduce 16) on '+'
8: shift/reduce conflict (shift 21, reduce 16) on '-'
8: shift/reduce conflict (shift 22, reduce 16) on '*'
8: shift/reduce conflict (shift 23, reduce 16) on '/'
8: reduce/reduce conflict (reduce 4, reduce 16) on '\n'
state 8
line : dexp . (4)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] shift 20
'-' [trial] shift 21
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 16
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' [trial] reduce 4
'\n' [trial] reduce 16
state 9
line : vexp . (5)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' reduce 5
state 10
lines : lines line . '\n' (2)
'\n' shift 28
. error
state 11
lines : lines error '\n' . (3)
. reduce 3
state 12
line : DREG '=' . dexp (6)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 31
state 13
line : VREG '=' . vexp (7)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 33
state 14
dexp : DREG . (9)
. reduce 9
state 15
vexp : VREG . (18)
. reduce 18
16: reduce/reduce conflict (reduce 14, reduce 16) on '+'
16: reduce/reduce conflict (reduce 14, reduce 16) on '-'
16: reduce/reduce conflict (reduce 14, reduce 16) on '*'
16: reduce/reduce conflict (reduce 14, reduce 16) on '/'
16: reduce/reduce conflict (reduce 14, reduce 16) on '\n'
16: reduce/reduce conflict (reduce 14, reduce 16) on ')'
state 16
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] reduce 14
'+' [trial] reduce 16
'-' [trial] reduce 14
'-' [trial] reduce 16
'*' [trial] reduce 14
'*' [trial] reduce 16
'/' [trial] reduce 14
'/' [trial] reduce 16
'\n' [trial] reduce 14
'\n' [trial] reduce 16
')' [trial] reduce 14
')' [trial] reduce 16
',' reduce 14
state 17
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '-' vexp . (27)
. reduce 27
18: shift/reduce conflict (shift 20, reduce 16) on '+'
18: shift/reduce conflict (shift 21, reduce 16) on '-'
18: shift/reduce conflict (shift 22, reduce 16) on '*'
18: shift/reduce conflict (shift 23, reduce 16) on '/'
18: shift/reduce conflict (shift 34, reduce 16) on ')'
state 18
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
vexp : dexp . (16)
vexp : '(' dexp . ',' dexp ')' (17)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] shift 20
'-' [trial] shift 21
'*' [trial] shift 22
'/' [trial] shift 23
')' [trial] shift 34
',' shift 35
'+' [trial] reduce 16
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
')' [trial] reduce 16
state 19
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '(' vexp . ')' (28)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
')' shift 36
. error
state 20
dexp : dexp '+' . dexp (10)
vexp : dexp '+' . vexp (20)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 37
vexp goto 38
state 21
dexp : dexp '-' . dexp (11)
vexp : dexp '-' . vexp (22)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 39
vexp goto 40
state 22
dexp : dexp '*' . dexp (12)
vexp : dexp '*' . vexp (24)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 41
vexp goto 42
state 23
dexp : dexp '/' . dexp (13)
vexp : dexp '/' . vexp (26)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 43
vexp goto 44
state 24
vexp : vexp '+' . vexp (19)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 45
state 25
vexp : vexp '-' . vexp (21)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 46
state 26
vexp : vexp '*' . vexp (23)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 47
state 27
vexp : vexp '/' . vexp (25)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 48
state 28
lines : lines line '\n' . (2)
. reduce 2
state 29
dexp : '-' . dexp (14)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 49
state 30
dexp : '(' . dexp ')' (15)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 50
state 31
line : DREG '=' dexp . (6)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
'\n' reduce 6
32: shift/reduce conflict (shift 20, reduce 16) on '+'
32: shift/reduce conflict (shift 21, reduce 16) on '-'
32: shift/reduce conflict (shift 22, reduce 16) on '*'
32: shift/reduce conflict (shift 23, reduce 16) on '/'
state 32
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] shift 20
'-' [trial] shift 21
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 16
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' reduce 16
')' reduce 16
state 33
line : VREG '=' vexp . (7)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' reduce 7
state 34
dexp : '(' dexp ')' . (15)
. reduce 15
state 35
vexp : '(' dexp ',' . dexp ')' (17)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 55
state 36
vexp : '(' vexp ')' . (28)
. reduce 28
37: reduce/reduce conflict (reduce 10, reduce 16) on '+'
37: reduce/reduce conflict (reduce 10, reduce 16) on '-'
37: shift/reduce conflict (shift 22, reduce 16) on '*'
37: shift/reduce conflict (shift 23, reduce 16) on '/'
37: reduce/reduce conflict (reduce 10, reduce 16) on '\n'
37: reduce/reduce conflict (reduce 10, reduce 16) on ')'
state 37
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 10
'+' [trial] reduce 16
'-' [trial] reduce 10
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' [trial] reduce 10
'\n' [trial] reduce 16
')' [trial] reduce 10
')' [trial] reduce 16
',' reduce 10
state 38
vexp : vexp . '+' vexp (19)
vexp : dexp '+' vexp . (20)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 20
'-' reduce 20
'\n' reduce 20
')' reduce 20
39: reduce/reduce conflict (reduce 11, reduce 16) on '+'
39: reduce/reduce conflict (reduce 11, reduce 16) on '-'
39: shift/reduce conflict (shift 22, reduce 16) on '*'
39: shift/reduce conflict (shift 23, reduce 16) on '/'
39: reduce/reduce conflict (reduce 11, reduce 16) on '\n'
39: reduce/reduce conflict (reduce 11, reduce 16) on ')'
state 39
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 11
'+' [trial] reduce 16
'-' [trial] reduce 11
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' [trial] reduce 11
'\n' [trial] reduce 16
')' [trial] reduce 11
')' [trial] reduce 16
',' reduce 11
state 40
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : dexp '-' vexp . (22)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 22
'-' reduce 22
'\n' reduce 22
')' reduce 22
41: reduce/reduce conflict (reduce 12, reduce 16) on '+'
41: reduce/reduce conflict (reduce 12, reduce 16) on '-'
41: reduce/reduce conflict (reduce 12, reduce 16) on '*'
41: reduce/reduce conflict (reduce 12, reduce 16) on '/'
41: reduce/reduce conflict (reduce 12, reduce 16) on '\n'
41: reduce/reduce conflict (reduce 12, reduce 16) on ')'
state 41
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] reduce 12
'+' [trial] reduce 16
'-' [trial] reduce 12
'-' [trial] reduce 16
'*' [trial] reduce 12
'*' [trial] reduce 16
'/' [trial] reduce 12
'/' [trial] reduce 16
'\n' [trial] reduce 12
'\n' [trial] reduce 16
')' [trial] reduce 12
')' [trial] reduce 16
',' reduce 12
state 42
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : dexp '*' vexp . (24)
vexp : vexp . '/' vexp (25)
. reduce 24
43: reduce/reduce conflict (reduce 13, reduce 16) on '+'
43: reduce/reduce conflict (reduce 13, reduce 16) on '-'
43: reduce/reduce conflict (reduce 13, reduce 16) on '*'
43: reduce/reduce conflict (reduce 13, reduce 16) on '/'
43: reduce/reduce conflict (reduce 13, reduce 16) on '\n'
43: reduce/reduce conflict (reduce 13, reduce 16) on ')'
state 43
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] reduce 13
'+' [trial] reduce 16
'-' [trial] reduce 13
'-' [trial] reduce 16
'*' [trial] reduce 13
'*' [trial] reduce 16
'/' [trial] reduce 13
'/' [trial] reduce 16
'\n' [trial] reduce 13
'\n' [trial] reduce 16
')' [trial] reduce 13
')' [trial] reduce 16
',' reduce 13
state 44
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : dexp '/' vexp . (26)
. reduce 26
state 45
vexp : vexp . '+' vexp (19)
vexp : vexp '+' vexp . (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 19
'-' reduce 19
'\n' reduce 19
')' reduce 19
state 46
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp '-' vexp . (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 21
'-' reduce 21
'\n' reduce 21
')' reduce 21
state 47
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp '*' vexp . (23)
vexp : vexp . '/' vexp (25)
. reduce 23
state 48
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : vexp '/' vexp . (25)
. reduce 25
state 49
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
. reduce 14
state 50
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 34
. error
state 51
dexp : dexp '+' . dexp (10)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 56
state 52
dexp : dexp '-' . dexp (11)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 57
state 53
dexp : dexp '*' . dexp (12)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 58
state 54
dexp : dexp '/' . dexp (13)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 59
state 55
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : '(' dexp ',' dexp . ')' (17)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 60
. error
state 56
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 10
'-' reduce 10
'\n' reduce 10
')' reduce 10
state 57
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 11
'-' reduce 11
'\n' reduce 11
')' reduce 11
state 58
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
. reduce 12
state 59
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
. reduce 13
state 60
vexp : '(' dexp ',' dexp ')' . (17)
. reduce 17
State 8 contains 4 shift/reduce conflicts, 1 reduce/reduce conflict.
State 16 contains 6 reduce/reduce conflicts.
State 18 contains 5 shift/reduce conflicts.
State 32 contains 4 shift/reduce conflicts.
State 37 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 39 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 41 contains 6 reduce/reduce conflicts.
State 43 contains 6 reduce/reduce conflicts.
15 terminals, 5 nonterminals
29 grammar rules, 61 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DREG
3 258 VREG
4 259 CONST
5 43 '+'
6 45 '-'
7 42 '*'
8 47 '/'
9 260 UMINUS
10 10 '\n'
11 61 '='
12 40 '('
13 41 ')'
14 44 ','
15 261 $accept
16 262 lines
17 263 dexp
18 264 vexp
19 265 line

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
#ifndef _calc1__defines_h_
#define _calc1__defines_h_
#define DREG 257
#define VREG 258
#define CONST 259
#define UMINUS 260
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union
{
int ival;
double dval;
INTERVAL vval;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE calc1_lval;
#endif /* _calc1__defines_h_ */

View File

@ -0,0 +1 @@
YACC: 7 shift/reduce conflicts, 5 reduce/reduce conflicts.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
#ifndef _demo__defines_h_
#define _demo__defines_h_
#define PREFIX 257
#define POSTFIX 258
#define ID 259
#define CONSTANT 260
#define EXTERN 261
#define REGISTER 262
#define STATIC 263
#define CONST 264
#define VOLATILE 265
#define IF 266
#define THEN 267
#define ELSE 268
#define CLCL 269
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union {
Scope *scope;
Expr *expr;
Expr_List *elist;
Type *type;
Decl *decl;
Decl_List *dlist;
Code *code;
char *id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE demo_lval;
#endif /* _demo__defines_h_ */

485
test/btyacc/calc.output Normal file
View File

@ -0,0 +1,485 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

1431
test/btyacc/calc.tab.c Normal file

File diff suppressed because it is too large Load Diff

8
test/btyacc/calc.tab.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef _calc__defines_h_
#define _calc__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc__defines_h_ */

2
test/btyacc/calc1.error Normal file
View File

@ -0,0 +1,2 @@
YACC: 2 rules never reduced
YACC: 18 shift/reduce conflicts, 26 reduce/reduce conflicts.

900
test/btyacc/calc1.output Normal file
View File

@ -0,0 +1,900 @@
0 $accept : line $end
1 lines :
2 | lines line
3 line : dexp '\n'
4 | vexp '\n'
5 | DREG '=' dexp '\n'
6 | VREG '=' vexp '\n'
7 | error '\n'
8 dexp : CONST
9 | DREG
10 | dexp '+' dexp
11 | dexp '-' dexp
12 | dexp '*' dexp
13 | dexp '/' dexp
14 | '-' dexp
15 | '(' dexp ')'
16 vexp : dexp
17 | '(' dexp ',' dexp ')'
18 | VREG
19 | vexp '+' vexp
20 | dexp '+' vexp
21 | vexp '-' vexp
22 | dexp '-' vexp
23 | vexp '*' vexp
24 | dexp '*' vexp
25 | vexp '/' vexp
26 | dexp '/' vexp
27 | '-' vexp
28 | '(' vexp ')'
state 0
$accept : . line $end (0)
error shift 1
DREG shift 2
VREG shift 3
CONST shift 4
'-' shift 5
'(' shift 6
. error
line goto 7
dexp goto 8
vexp goto 9
state 1
line : error . '\n' (7)
'\n' shift 10
. error
state 2
line : DREG . '=' dexp '\n' (5)
dexp : DREG . (9)
'=' shift 11
'+' reduce 9
'-' reduce 9
'*' reduce 9
'/' reduce 9
'\n' reduce 9
state 3
line : VREG . '=' vexp '\n' (6)
vexp : VREG . (18)
'=' shift 12
'+' reduce 18
'-' reduce 18
'*' reduce 18
'/' reduce 18
'\n' reduce 18
state 4
dexp : CONST . (8)
. reduce 8
state 5
dexp : '-' . dexp (14)
vexp : '-' . vexp (27)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 15
vexp goto 16
state 6
dexp : '(' . dexp ')' (15)
vexp : '(' . dexp ',' dexp ')' (17)
vexp : '(' . vexp ')' (28)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 17
vexp goto 18
state 7
$accept : line . $end (0)
$end accept
8: shift/reduce conflict (shift 19, reduce 16) on '+'
8: shift/reduce conflict (shift 20, reduce 16) on '-'
8: shift/reduce conflict (shift 21, reduce 16) on '*'
8: shift/reduce conflict (shift 22, reduce 16) on '/'
8: shift/reduce conflict (shift 23, reduce 16) on '\n'
state 8
line : dexp . '\n' (3)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' shift 19
'-' shift 20
'*' shift 21
'/' shift 22
'\n' shift 23
state 9
line : vexp . '\n' (4)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' shift 28
. error
state 10
line : error '\n' . (7)
. reduce 7
state 11
line : DREG '=' . dexp '\n' (5)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 31
state 12
line : VREG '=' . vexp '\n' (6)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 33
state 13
dexp : DREG . (9)
. reduce 9
state 14
vexp : VREG . (18)
. reduce 18
15: reduce/reduce conflict (reduce 14, reduce 16) on '+'
15: reduce/reduce conflict (reduce 14, reduce 16) on '-'
15: reduce/reduce conflict (reduce 14, reduce 16) on '*'
15: reduce/reduce conflict (reduce 14, reduce 16) on '/'
15: reduce/reduce conflict (reduce 14, reduce 16) on '\n'
15: reduce/reduce conflict (reduce 14, reduce 16) on ')'
state 15
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
. reduce 14
state 16
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '-' vexp . (27)
. reduce 27
17: shift/reduce conflict (shift 19, reduce 16) on '+'
17: shift/reduce conflict (shift 20, reduce 16) on '-'
17: shift/reduce conflict (shift 21, reduce 16) on '*'
17: shift/reduce conflict (shift 22, reduce 16) on '/'
17: shift/reduce conflict (shift 34, reduce 16) on ')'
state 17
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
vexp : dexp . (16)
vexp : '(' dexp . ',' dexp ')' (17)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' shift 19
'-' shift 20
'*' shift 21
'/' shift 22
')' shift 34
',' shift 35
state 18
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '(' vexp . ')' (28)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
')' shift 36
. error
state 19
dexp : dexp '+' . dexp (10)
vexp : dexp '+' . vexp (20)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 37
vexp goto 38
state 20
dexp : dexp '-' . dexp (11)
vexp : dexp '-' . vexp (22)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 39
vexp goto 40
state 21
dexp : dexp '*' . dexp (12)
vexp : dexp '*' . vexp (24)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 41
vexp goto 42
state 22
dexp : dexp '/' . dexp (13)
vexp : dexp '/' . vexp (26)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 43
vexp goto 44
state 23
line : dexp '\n' . (3)
. reduce 3
state 24
vexp : vexp '+' . vexp (19)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 45
state 25
vexp : vexp '-' . vexp (21)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 46
state 26
vexp : vexp '*' . vexp (23)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 47
state 27
vexp : vexp '/' . vexp (25)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 48
state 28
line : vexp '\n' . (4)
. reduce 4
state 29
dexp : '-' . dexp (14)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 49
state 30
dexp : '(' . dexp ')' (15)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 50
state 31
line : DREG '=' dexp . '\n' (5)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
'\n' shift 55
. error
32: shift/reduce conflict (shift 19, reduce 16) on '+'
32: shift/reduce conflict (shift 20, reduce 16) on '-'
32: shift/reduce conflict (shift 21, reduce 16) on '*'
32: shift/reduce conflict (shift 22, reduce 16) on '/'
state 32
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' shift 19
'-' shift 20
'*' shift 21
'/' shift 22
'\n' reduce 16
')' reduce 16
state 33
line : VREG '=' vexp . '\n' (6)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' shift 56
. error
state 34
dexp : '(' dexp ')' . (15)
. reduce 15
state 35
vexp : '(' dexp ',' . dexp ')' (17)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 57
state 36
vexp : '(' vexp ')' . (28)
. reduce 28
37: reduce/reduce conflict (reduce 10, reduce 16) on '+'
37: reduce/reduce conflict (reduce 10, reduce 16) on '-'
37: shift/reduce conflict (shift 21, reduce 16) on '*'
37: shift/reduce conflict (shift 22, reduce 16) on '/'
37: reduce/reduce conflict (reduce 10, reduce 16) on '\n'
37: reduce/reduce conflict (reduce 10, reduce 16) on ')'
state 37
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' shift 21
'/' shift 22
'+' reduce 10
'-' reduce 10
'\n' reduce 10
')' reduce 10
',' reduce 10
state 38
vexp : vexp . '+' vexp (19)
vexp : dexp '+' vexp . (20)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 20
'-' reduce 20
'\n' reduce 20
')' reduce 20
39: reduce/reduce conflict (reduce 11, reduce 16) on '+'
39: reduce/reduce conflict (reduce 11, reduce 16) on '-'
39: shift/reduce conflict (shift 21, reduce 16) on '*'
39: shift/reduce conflict (shift 22, reduce 16) on '/'
39: reduce/reduce conflict (reduce 11, reduce 16) on '\n'
39: reduce/reduce conflict (reduce 11, reduce 16) on ')'
state 39
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' shift 21
'/' shift 22
'+' reduce 11
'-' reduce 11
'\n' reduce 11
')' reduce 11
',' reduce 11
state 40
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : dexp '-' vexp . (22)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 22
'-' reduce 22
'\n' reduce 22
')' reduce 22
41: reduce/reduce conflict (reduce 12, reduce 16) on '+'
41: reduce/reduce conflict (reduce 12, reduce 16) on '-'
41: reduce/reduce conflict (reduce 12, reduce 16) on '*'
41: reduce/reduce conflict (reduce 12, reduce 16) on '/'
41: reduce/reduce conflict (reduce 12, reduce 16) on '\n'
41: reduce/reduce conflict (reduce 12, reduce 16) on ')'
state 41
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
. reduce 12
state 42
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : dexp '*' vexp . (24)
vexp : vexp . '/' vexp (25)
. reduce 24
43: reduce/reduce conflict (reduce 13, reduce 16) on '+'
43: reduce/reduce conflict (reduce 13, reduce 16) on '-'
43: reduce/reduce conflict (reduce 13, reduce 16) on '*'
43: reduce/reduce conflict (reduce 13, reduce 16) on '/'
43: reduce/reduce conflict (reduce 13, reduce 16) on '\n'
43: reduce/reduce conflict (reduce 13, reduce 16) on ')'
state 43
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
. reduce 13
state 44
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : dexp '/' vexp . (26)
. reduce 26
state 45
vexp : vexp . '+' vexp (19)
vexp : vexp '+' vexp . (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 19
'-' reduce 19
'\n' reduce 19
')' reduce 19
state 46
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp '-' vexp . (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 21
'-' reduce 21
'\n' reduce 21
')' reduce 21
state 47
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp '*' vexp . (23)
vexp : vexp . '/' vexp (25)
. reduce 23
state 48
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : vexp '/' vexp . (25)
. reduce 25
state 49
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
. reduce 14
state 50
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 34
. error
state 51
dexp : dexp '+' . dexp (10)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 58
state 52
dexp : dexp '-' . dexp (11)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 59
state 53
dexp : dexp '*' . dexp (12)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 60
state 54
dexp : dexp '/' . dexp (13)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 61
state 55
line : DREG '=' dexp '\n' . (5)
. reduce 5
state 56
line : VREG '=' vexp '\n' . (6)
. reduce 6
state 57
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : '(' dexp ',' dexp . ')' (17)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 62
. error
state 58
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 10
'-' reduce 10
'\n' reduce 10
')' reduce 10
state 59
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 11
'-' reduce 11
'\n' reduce 11
')' reduce 11
state 60
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
. reduce 12
state 61
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
. reduce 13
state 62
vexp : '(' dexp ',' dexp ')' . (17)
. reduce 17
Rules never reduced:
lines : (1)
lines : lines line (2)
State 8 contains 5 shift/reduce conflicts.
State 15 contains 6 reduce/reduce conflicts.
State 17 contains 5 shift/reduce conflicts.
State 32 contains 4 shift/reduce conflicts.
State 37 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 39 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 41 contains 6 reduce/reduce conflicts.
State 43 contains 6 reduce/reduce conflicts.
15 terminals, 5 nonterminals
29 grammar rules, 63 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DREG
3 258 VREG
4 259 CONST
5 43 '+'
6 45 '-'
7 42 '*'
8 47 '/'
9 260 UMINUS
10 10 '\n'
11 61 '='
12 40 '('
13 41 ')'
14 44 ','
15 261 $accept
16 262 line
17 263 dexp
18 264 vexp
19 265 lines

1677
test/btyacc/calc1.tab.c Normal file

File diff suppressed because it is too large Load Diff

23
test/btyacc/calc1.tab.h Normal file
View File

@ -0,0 +1,23 @@
#ifndef _calc1__defines_h_
#define _calc1__defines_h_
#define DREG 257
#define VREG 258
#define CONST 259
#define UMINUS 260
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union
{
int ival;
double dval;
INTERVAL vval;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE calc1_lval;
#endif /* _calc1__defines_h_ */

0
test/btyacc/calc2.error Normal file
View File

485
test/btyacc/calc2.output Normal file
View File

@ -0,0 +1,485 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

1444
test/btyacc/calc2.tab.c Normal file

File diff suppressed because it is too large Load Diff

8
test/btyacc/calc2.tab.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef _calc2__defines_h_
#define _calc2__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc2__defines_h_ */

0
test/btyacc/calc3.error Normal file
View File

485
test/btyacc/calc3.output Normal file
View File

@ -0,0 +1,485 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

1449
test/btyacc/calc3.tab.c Normal file

File diff suppressed because it is too large Load Diff

8
test/btyacc/calc3.tab.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef _calc3__defines_h_
#define _calc3__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc3__defines_h_ */

1328
test/btyacc/code_calc.code.c Normal file

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,485 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

137
test/btyacc/code_calc.tab.c Normal file
View File

@ -0,0 +1,137 @@
#undef YYBTYACC
#define YYBTYACC 0
#define YYDEBUGSTR YYPREFIX "debug"
typedef short YYINT;
const YYINT calc_lhs[] = { -1,
0, 0, 0, 1, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 3, 3,
};
const YYINT calc_len[] = { 2,
0, 3, 3, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 2, 1, 1, 1, 2,
};
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,
};
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,
};
const YYINT calc_dgoto[] = { 1,
7, 8, 9,
};
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,
};
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
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
const YYINT calc_gindex[] = { 0,
0, 65, 0,
};
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,
};
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,
};
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#if YYDEBUG
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",
};
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

View File

@ -0,0 +1,8 @@
#ifndef _calc__defines_h_
#define _calc__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc__defines_h_ */

1125
test/btyacc/code_debug.c Normal file

File diff suppressed because it is too large Load Diff

View File

6
test/btyacc/code_debug.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef _yy_defines_h_
#define _yy_defines_h_
#define YYERRCODE 256
#endif /* _yy_defines_h_ */

60
test/btyacc/code_debug.i Normal file
View File

@ -0,0 +1,60 @@
#define YYPREFIX "yy"
#define YYPURE 0
#line 2 "code_debug.y"
#ifdef YYBISON
int yylex(void);
static void yyerror(const char *);
#endif
#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();
extern int yydebug;
extern int yynerrs;
extern int yyerrflag;
extern int yychar;
extern YYSTYPE yyval;
extern YYSTYPE yylval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
extern YYLTYPE yyloc; /* position returned by actions */
extern YYLTYPE yylloc; /* position from the lexer */
#endif

View File

@ -0,0 +1,34 @@
0 $accept : S $end
1 S : error
state 0
$accept : . S $end (0)
error shift 1
. error
S goto 2
state 1
S : error . (1)
. reduce 1
state 2
$accept : S . $end (0)
$end accept
2 terminals, 2 nonterminals
2 grammar rules, 3 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 $accept
3 258 S

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,34 @@
0 $accept : S $end
1 S : error
state 0
$accept : . S $end (0)
error shift 1
. error
S goto 2
state 1
S : error . (1)
. reduce 1
state 2
$accept : S . $end (0)
$end accept
2 terminals, 2 nonterminals
2 grammar rules, 3 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 $accept
3 258 S

View File

@ -0,0 +1,55 @@
#undef YYBTYACC
#define YYBTYACC 0
#define YYDEBUGSTR YYPREFIX "debug"
typedef short YYINT;
const YYINT error_lhs[] = { -1,
0,
};
const YYINT error_len[] = { 2,
1,
};
const YYINT error_defred[] = { 0,
1, 0,
};
const YYINT error_stos[] = { 0,
256, 258,
};
const YYINT error_dgoto[] = { 2,
};
const YYINT error_sindex[] = { -256,
0, 0,
};
const YYINT error_rindex[] = { 0,
0, 0,
};
#if YYBTYACC
const YYINT error_cindex[] = { 0,
0, 0,
};
#endif
const YYINT error_gindex[] = { 0,
};
const YYINT error_table[] = { 1,
};
const YYINT error_check[] = { 256,
};
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#if YYDEBUG
const char *const error_name[] = {
"$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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","$accept","S","illegal-symbol",
};
const char *const error_rule[] = {
"$accept : S",
"S : error",
};
#endif

View File

@ -0,0 +1,5 @@
#ifndef _error__defines_h_
#define _error__defines_h_
#endif /* _error__defines_h_ */

0
test/btyacc/empty.error Normal file
View File

28
test/btyacc/empty.output Normal file
View File

@ -0,0 +1,28 @@
0 $accept : start $end
1 start :
state 0
$accept : . start $end (0)
start : . (1)
. reduce 1
start goto 1
state 1
$accept : start . $end (0)
$end accept
2 terminals, 2 nonterminals
2 grammar rules, 2 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 $accept
3 258 start

1254
test/btyacc/empty.tab.c Normal file

File diff suppressed because it is too large Load Diff

5
test/btyacc/empty.tab.h Normal file
View File

@ -0,0 +1,5 @@
#ifndef _empty__defines_h_
#define _empty__defines_h_
#endif /* _empty__defines_h_ */

View File

@ -0,0 +1,3 @@
YACC: e - line 64 of "./test/err_inherit1.y", unterminated argument list
namelist($c, $t
^

View File

View File

@ -0,0 +1,15 @@
/* 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 YYCHECK "yyyymmdd"
#define YYEMPTY (-1)
#define yyclearin (yychar = YYEMPTY)
#define yyerrok (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)
#define YYENOMEM (-2)
#define YYEOF 0

View File

View File

@ -0,0 +1,5 @@
YACC: w - line 64 of "./test/err_inherit2.y", number of arguments of namelist doesn't agree with previous declaration
YACC: w - line 64 of "./test/err_inherit2.y", type of argument 1 to namelist doesn't agree with previous declaration
YACC: e - line 64 of "./test/err_inherit2.y", bad formal argument list
namelist($<tval>c, $t, extra): namelist NAME
^

View File

View File

@ -0,0 +1,15 @@
/* 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 YYCHECK "yyyymmdd"
#define YYEMPTY (-1)
#define yyclearin (yychar = YYEMPTY)
#define yyerrok (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)
#define YYENOMEM (-2)
#define YYEOF 0

View File

View File

@ -0,0 +1,23 @@
YACC: w - line 64 of "./test/err_inherit3.y", number of arguments of namelist doesn't agree with previous declaration
YACC: w - line 64 of "./test/err_inherit3.y", wrong number of arguments for namelist
namelist: namelist($c) NAME
^
YACC: w - line 64 of "./test/err_inherit3.y", unknown argument $c
YACC: w - line 64 of "./test/err_inherit3.y", untyped argument $c
YACC: w - line 65 of "./test/err_inherit3.y", unknown argument $t
{ $$->s = mksymbol($<tval>t, $<cval>c, $2);
^
YACC: w - line 65 of "./test/err_inherit3.y", unknown argument $c
{ $$->s = mksymbol($<tval>t, $<cval>c, $2);
^
YACC: w - line 69 of "./test/err_inherit3.y", unknown argument $t
{ $$->s = mksymbol($t, $c, $1);
^
YACC: w - line 69 of "./test/err_inherit3.y", untyped argument $t
YACC: w - line 69 of "./test/err_inherit3.y", unknown argument $c
{ $$->s = mksymbol($t, $c, $1);
^
YACC: w - line 69 of "./test/err_inherit3.y", untyped argument $c
YACC: w - line 0 of "./test/err_inherit3.y", start symbol declaration requires arguments
YACC: 1 rule never reduced
YACC: 3 shift/reduce conflicts.

View File

@ -0,0 +1,229 @@
0 $accept : declaration $end
1 $$1 :
2 $$2 :
3 declaration : class type $$1 $$2 namelist
4 $$3 :
5 declaration : type $$3 locnamelist
6 class : GLOBAL
7 | LOCAL
8 type : REAL
9 | INTEGER
10 $$4 :
11 namelist : $$4 namelist NAME
12 | NAME
13 $$5 :
14 locnamelist : $$5 $$2 namelist
state 0
$accept : . declaration $end (0)
GLOBAL shift 1
LOCAL shift 2
REAL shift 3
INTEGER shift 4
. error
declaration goto 5
class goto 6
type goto 7
state 1
class : GLOBAL . (6)
. reduce 6
state 2
class : LOCAL . (7)
. reduce 7
state 3
type : REAL . (8)
. reduce 8
state 4
type : INTEGER . (9)
. reduce 9
state 5
$accept : declaration . $end (0)
$end accept
state 6
declaration : class . type $$1 $$2 namelist (3)
REAL shift 3
INTEGER shift 4
. error
type goto 8
state 7
declaration : type . $$3 locnamelist (5)
$$3 : . (4)
. reduce 4
$$3 goto 9
state 8
declaration : class type . $$1 $$2 namelist (3)
$$1 : . (1)
. reduce 1
$$1 goto 10
state 9
declaration : type $$3 . locnamelist (5)
$$5 : . (13)
. reduce 13
locnamelist goto 11
$$5 goto 12
state 10
declaration : class type $$1 . $$2 namelist (3)
$$2 : . (2)
. reduce 2
$$2 goto 13
state 11
declaration : type $$3 locnamelist . (5)
. reduce 5
state 12
locnamelist : $$5 . $$2 namelist (14)
$$2 : . (2)
. reduce 2
$$2 goto 14
13: shift/reduce conflict (shift 15, reduce 10) on NAME
state 13
declaration : class type $$1 $$2 . namelist (3)
$$4 : . (10)
NAME shift 15
namelist goto 16
$$4 goto 17
14: shift/reduce conflict (shift 15, reduce 10) on NAME
state 14
locnamelist : $$5 $$2 . namelist (14)
$$4 : . (10)
NAME shift 15
namelist goto 18
$$4 goto 17
state 15
namelist : NAME . (12)
. reduce 12
state 16
declaration : class type $$1 $$2 namelist . (3)
. reduce 3
17: shift/reduce conflict (shift 15, reduce 10) on NAME
state 17
namelist : $$4 . namelist NAME (11)
$$4 : . (10)
NAME shift 15
namelist goto 19
$$4 goto 17
state 18
locnamelist : $$5 $$2 namelist . (14)
. reduce 14
state 19
namelist : $$4 namelist . NAME (11)
NAME shift 20
. error
state 20
namelist : $$4 namelist NAME . (11)
. reduce 11
Rules never reduced:
$$4 : (10)
State 13 contains 1 shift/reduce conflict.
State 14 contains 1 shift/reduce conflict.
State 17 contains 1 shift/reduce conflict.
7 terminals, 11 nonterminals
15 grammar rules, 21 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 GLOBAL
3 258 LOCAL
4 259 REAL
5 260 INTEGER
6 261 NAME
7 262 $accept
8 263 declaration
9 264 namelist
10 265 locnamelist
11 266 class
12 267 type
13 268 $$1
14 269 $$2
15 270 $$3
16 271 $$4
17 272 $$5

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
#ifndef _err_inherit3__defines_h_
#define _err_inherit3__defines_h_
#define GLOBAL 257
#define LOCAL 258
#define REAL 259
#define INTEGER 260
#define NAME 261
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union
{
class cval;
type tval;
namelist * nlist;
name id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE err_inherit3_lval;
#endif /* _err_inherit3__defines_h_ */

View File

@ -0,0 +1,13 @@
YACC: w - line 32 of "./test/err_inherit4.y", destructor redeclared
%destructor {
^
YACC: w - line 77 of "./test/err_inherit4.y", wrong number of default arguments for namelist
{ $$ = $1; @$ = @2; }
^
YACC: w - line 77 of "./test/err_inherit4.y", wrong type for default argument 2 to namelist
{ $$ = $1; @$ = @2; }
^
YACC: w - line 77 of "./test/err_inherit4.y", wrong type for default argument 1 to namelist
{ $$ = $1; @$ = @2; }
^
YACC: w - line 77 of "./test/err_inherit4.y", @2 references beyond the end of the current rule

View File

@ -0,0 +1,178 @@
0 $accept : declaration $end
1 $$1 :
2 $$2 :
3 declaration : class type $$1 $$2 namelist
4 $$3 :
5 declaration : type $$3 locnamelist
6 class : GLOBAL
7 | LOCAL
8 type : REAL
9 | INTEGER
10 namelist : namelist NAME
11 | NAME
12 locnamelist : namelist
state 0
$accept : . declaration $end (0)
GLOBAL shift 1
LOCAL shift 2
REAL shift 3
INTEGER shift 4
. error
declaration goto 5
class goto 6
type goto 7
state 1
class : GLOBAL . (6)
. reduce 6
state 2
class : LOCAL . (7)
. reduce 7
state 3
type : REAL . (8)
. reduce 8
state 4
type : INTEGER . (9)
. reduce 9
state 5
$accept : declaration . $end (0)
$end accept
state 6
declaration : class . type $$1 $$2 namelist (3)
REAL shift 3
INTEGER shift 4
. error
type goto 8
state 7
declaration : type . $$3 locnamelist (5)
$$3 : . (4)
. reduce 4
$$3 goto 9
state 8
declaration : class type . $$1 $$2 namelist (3)
$$1 : . (1)
. reduce 1
$$1 goto 10
state 9
declaration : type $$3 . locnamelist (5)
NAME shift 11
. error
namelist goto 12
locnamelist goto 13
state 10
declaration : class type $$1 . $$2 namelist (3)
$$2 : . (2)
. reduce 2
$$2 goto 14
state 11
namelist : NAME . (11)
. reduce 11
state 12
namelist : namelist . NAME (10)
locnamelist : namelist . (12)
NAME shift 15
$end reduce 12
state 13
declaration : type $$3 locnamelist . (5)
. reduce 5
state 14
declaration : class type $$1 $$2 . namelist (3)
NAME shift 11
. error
namelist goto 16
state 15
namelist : namelist NAME . (10)
. reduce 10
state 16
declaration : class type $$1 $$2 namelist . (3)
namelist : namelist . NAME (10)
NAME shift 15
$end reduce 3
7 terminals, 9 nonterminals
13 grammar rules, 17 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 GLOBAL
3 258 LOCAL
4 259 REAL
5 260 INTEGER
6 261 NAME
7 262 $accept
8 263 declaration
9 264 namelist
10 265 locnamelist
11 266 class
12 267 type
13 268 $$1
14 269 $$2
15 270 $$3

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
#ifndef _err_inherit4__defines_h_
#define _err_inherit4__defines_h_
#define GLOBAL 257
#define LOCAL 258
#define REAL 259
#define INTEGER 260
#define NAME 261
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union
{
class cval;
type tval;
namelist * nlist;
name id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE err_inherit4_lval;
#endif /* _err_inherit4__defines_h_ */

View File

@ -0,0 +1 @@
YACC: e - line 74 of "./test/err_inherit5.y", illegal @$ or @N reference

View File

View File

@ -0,0 +1,15 @@
/* 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 YYCHECK "yyyymmdd"
#define YYEMPTY (-1)
#define yyclearin (yychar = YYEMPTY)
#define yyerrok (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)
#define YYENOMEM (-2)
#define YYEOF 0

View File

View File

@ -0,0 +1,3 @@
YACC: e - line 1 of "./test/err_syntax1.y", syntax error
?% {
^

View File

Some files were not shown because too many files have changed in this diff Show More