parser: handle %locations as %define locations.

* src/getargs.h, src/getargs.c (locations_flag): Remove.
	* src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
	to set "locations" to true.
	* src/output.c (prepare): Don't output "locations".
	* src/scan-gram.l (%locations): Handle it as a %<flag>.
	* src/parse-gram.y: It's no longer a token.
	Don't handle it.
	* data/bison.m4 (b4_locations_if): Define it with
	b4_percent_define_if_define.
	* data/c.m4, data/glr.cc: Adjust.
This commit is contained in:
Akim Demaille
2009-04-05 22:05:08 +02:00
parent 697c912fa4
commit bc0f573730
10 changed files with 26 additions and 16 deletions

View File

@@ -333,7 +333,6 @@ m4_define([b4_$3_if],
# Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise.
b4_define_flag_if([defines]) # Whether headers are requested.
b4_define_flag_if([glr]) # Whether a GLR parser is requested.
b4_define_flag_if([locations]) # Whether locations are tracked.
b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled.
b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
@@ -687,6 +686,7 @@ b4_percent_define_if_define([assert])
b4_percent_define_if_define([debug])
b4_percent_define_if_define([error_verbose])
b4_percent_define_if_define([lex_symbol])
b4_percent_define_if_define([locations]) # Whether locations are tracked.
b4_percent_define_if_define([variant])

View File

@@ -75,7 +75,7 @@ m4_define([b4_identification],
#define YYPULL ]b4_pull_flag])[
/* Using locations. */
#define YYLSP_NEEDED ]b4_locations_flag[
#define YYLSP_NEEDED ]b4_locations_if([1], [0])[
]])

View File

@@ -44,7 +44,7 @@
# filename member).
# We require a pure interface using locations.
m4_define([b4_locations_flag], [1])
m4_define([b4_percent_define(locations)], [])
m4_define([b4_pure_flag], [1])
# The header is mandatory.
@@ -228,7 +228,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
#include <iostream>
/* Using locations. */
#define YYLSP_NEEDED ]b4_locations_flag[
#define YYLSP_NEEDED ]b4_locations_if([1], [0])[
]b4_namespace_open[
class position;