Commit Graph

4 Commits

Author SHA1 Message Date
Joel E. Denny
945e396c8a Add maintainer-push-check to run maintainer-check using push parsing in
place of pull parsing where available.
* Makefile.am (maintainer-push-check): New.
* data/bison.m4 (b4_use_push_for_pull_if): New.
* data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if
appropriately based on their existing values.
(yypush_parse): Don't print push-parser-specific diagnostics if push
parsing is being used in place of pull parsing.
* data/yacc.c: If push parsing should replace pull parsing, redirect to
push.c.
* src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment
variable, and insert b4_use_push_for_pull_flag into muscles.
* tests/Makefile.am (maintainer-push-check): New.
2007-01-02 02:10:42 +00:00
Joel E. Denny
7172e23e8f For push mode, convert yyparse from a macro to a function, invoke yylex
instead of passing a yylexp argument to yypull_parse, and don't
generate yypull_parse or yyparse unless %push-pull-parser is declared.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>.
* data/bison.m4 (b4_pull_if): New.
* data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH.
* data/push.c: Improve M4 quoting a little.
(b4_generate_macro_args, b4_parenthesize): Remove.
(yyparse): If there's a b4_prefix, #define this to b4_prefix[parse]
any time a pull parser is requested.
Don't #define this as a wrapper around yypull_parse.  Instead, when
both push and pull are requested, make it a function that does that
same thing.
(yypull_parse): If there's a b4_prefix, #define this to
b4_prefix[pull_parse] when both push and pull are requested.
Don't define this as a function unless both push and pull are
requested.
Remove the yylexp argument and hard-code yylex invocation instead.
* etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of
%push-parser.
* src/getargs.c (pull_parser): New global initialized to true.
* getargs.h (pull_parser): extern it.
* src/output.c (prepare): Insert pull_flag muscle.
* src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token.
(prologue_declaration): Set both push_parser and pull_parser = true for
%push-pull-parser.  Set push_parser = true and pull_parser = false for
%push-parser.
* src/scan-gram.l: Don't accept %push_parser as an alternative to
%push-parser since there's no backward-compatibility concern here.
Scan %push-pull-parser.
* tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser
instead of %push-parser.
* tests/headers.at (export YYLTYPE): Make yylex static, and don't
prototype it in the module that calls yyparse.
* tests/input.at (Torturing the Scanner): Likewise.
* tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.
2006-12-31 20:29:48 +00:00
Paolo Bonzini
136a0f766b 2006-10-16 Paolo Bonzini <bonzini@gnu.org>
* data/bison.m4 (b4_user_requires, b4_user_provides): New.
	(b4_user_start_header): Remove.
	* data/glr.c: Use new macros instead of b4_*start_header
	and b4_*end_header.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/push.c: Likewise.
	* data/yacc.c: Likewise.

	* doc/bison.texinfo: Remove %before-header, rename
	%{start,end,after}-header to %requires, %provides, %code.

	* src/parse-gram.y: Likewise (also rename token names accordingly).
	* src/scan-gram.l: Likewise.
	* tests/actions.at: Likewise.
2006-10-15 12:37:07 +00:00
Paolo Bonzini
90b9908d8c 2006-10-08 Paolo Bonzini <bonzini@gnu.org>
* data/c.m4 (b4_copyright, b4_epilogue, b4_location_initial_column,
	b4_location_initial_line, p4_parse_param, b4_ints_in, b4_flag_if,
	b4_define_flag_if and uses, b4_basename, b4_syncline, b4_user_code,
	b4_define_user_cde and uses): Remove.
	(b4_comment, b4_prefix, b4_sync_start): New.
	* data/bison.m4: New file, with most of the content removed from c.m4.
	* src/muscle_tab.h: Use "do {...} while(0)" throughout.
	* src/output.c (output_skeleton): Pass bison.m4.
	(prepare): Pass glr_flag and nondeterministic_flag.  Pass prefix
	only if specified.
2006-10-08 11:07:02 +00:00