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

@@ -1,3 +1,17 @@
2009-04-06 Akim Demaille <demaille@gostai.com>
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.
2009-04-06 Akim Demaille <demaille@gostai.com> 2009-04-06 Akim Demaille <demaille@gostai.com>
Regen. Regen.

View File

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

View File

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

View File

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

View File

@@ -50,7 +50,6 @@
bool defines_flag; bool defines_flag;
bool graph_flag; bool graph_flag;
bool xml_flag; bool xml_flag;
bool locations_flag;
bool no_lines_flag; bool no_lines_flag;
bool token_table_flag; bool token_table_flag;
bool yacc_flag; /* for -y */ bool yacc_flag; /* for -y */
@@ -635,7 +634,8 @@ getargs (int argc, char *argv[])
break; break;
case LOCATIONS_OPTION: case LOCATIONS_OPTION:
locations_flag = true; muscle_percent_define_ensure ("locations",
command_line_location (), true);
break; break;
case PRINT_LOCALEDIR_OPTION: case PRINT_LOCALEDIR_OPTION:

View File

@@ -38,7 +38,6 @@ extern char const *include;
extern bool defines_flag; /* for -d */ extern bool defines_flag; /* for -d */
extern bool graph_flag; /* for -g */ extern bool graph_flag; /* for -g */
extern bool xml_flag; /* for -x */ extern bool xml_flag; /* for -x */
extern bool locations_flag;
extern bool no_lines_flag; /* for -l */ extern bool no_lines_flag; /* for -l */
extern bool token_table_flag; /* for -k */ extern bool token_table_flag; /* for -k */
extern bool yacc_flag; /* for -y */ extern bool yacc_flag; /* for -y */

View File

@@ -702,7 +702,6 @@ prepare (void)
/* Flags. */ /* Flags. */
MUSCLE_INSERT_BOOL ("defines_flag", defines_flag); MUSCLE_INSERT_BOOL ("defines_flag", defines_flag);
MUSCLE_INSERT_BOOL ("glr_flag", glr_parser); MUSCLE_INSERT_BOOL ("glr_flag", glr_parser);
MUSCLE_INSERT_BOOL ("locations_flag", locations_flag);
MUSCLE_INSERT_BOOL ("nondeterministic_flag", nondeterministic_parser); MUSCLE_INSERT_BOOL ("nondeterministic_flag", nondeterministic_parser);
MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag); MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag);
MUSCLE_INSERT_BOOL ("tag_seen_flag", tag_seen); MUSCLE_INSERT_BOOL ("tag_seen_flag", tag_seen);

View File

@@ -139,7 +139,6 @@ static int current_prec = 0;
PERCENT_INITIAL_ACTION "%initial-action" PERCENT_INITIAL_ACTION "%initial-action"
PERCENT_LANGUAGE "%language" PERCENT_LANGUAGE "%language"
PERCENT_LEX_PARAM "%lex-param" PERCENT_LEX_PARAM "%lex-param"
PERCENT_LOCATIONS "%locations"
PERCENT_NAME_PREFIX "%name-prefix" PERCENT_NAME_PREFIX "%name-prefix"
PERCENT_NO_DEFAULT_PREC "%no-default-prec" PERCENT_NO_DEFAULT_PREC "%no-default-prec"
PERCENT_NO_LINES "%no-lines" PERCENT_NO_LINES "%no-lines"
@@ -258,7 +257,6 @@ prologue_declaration:
} }
| "%language" STRING { language_argmatch ($2, grammar_prio, @1); } | "%language" STRING { language_argmatch ($2, grammar_prio, @1); }
| "%lex-param" "{...}" { add_param ("lex_param", $2, @2); } | "%lex-param" "{...}" { add_param ("lex_param", $2, @2); }
| "%locations" { locations_flag = true; }
| "%name-prefix" STRING { spec_name_prefix = $2; } | "%name-prefix" STRING { spec_name_prefix = $2; }
| "%name-prefix" "=" STRING { spec_name_prefix = $3; } /* deprecated */ | "%name-prefix" "=" STRING { spec_name_prefix = $3; } /* deprecated */
| "%no-lines" { no_lines_flag = true; } | "%no-lines" { no_lines_flag = true; }

View File

@@ -1,6 +1,6 @@
/* Bison Action Scanner -*- C -*- /* Bison Action Scanner -*- C -*-
Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -34,7 +34,7 @@
#include <src/getargs.h> #include <src/getargs.h>
#include <get-errno.h> #include <get-errno.h>
#include <quote.h> #include <quote.h>
#include <src/muscle_tab.h>
#include <src/scan-code.h> #include <src/scan-code.h>
#include <src/symlist.h> #include <src/symlist.h>
@@ -236,7 +236,7 @@ splice (\\[ \f\t\v]*\n)*
} }
"@$" { "@$" {
obstack_sgrow (&obstack_for_string, "]b4_at_dollar["); obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
locations_flag = true; muscle_percent_define_ensure("locations", the_location, true);
} }
} }
@@ -391,7 +391,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
? rule->midrule_parent_rhs_index - 1 ? rule->midrule_parent_rhs_index - 1
: symbol_list_length (rule->next)); : symbol_list_length (rule->next));
locations_flag = true; muscle_percent_define_ensure("locations", at_loc, true);
if (*cp == '$') if (*cp == '$')
obstack_sgrow (&obstack_for_string, "]b4_lhs_location["); obstack_sgrow (&obstack_for_string, "]b4_lhs_location[");

View File

@@ -191,7 +191,7 @@ splice (\\[ \f\t\v]*\n)*
"%language" return PERCENT_LANGUAGE; "%language" return PERCENT_LANGUAGE;
"%left" return PERCENT_LEFT; "%left" return PERCENT_LEFT;
"%lex-param" return PERCENT_LEX_PARAM; "%lex-param" return PERCENT_LEX_PARAM;
"%locations" return PERCENT_LOCATIONS; "%locations" RETURN_PERCENT_FLAG("locations");
"%merge" return PERCENT_MERGE; "%merge" return PERCENT_MERGE;
"%name"[-_]"prefix" return PERCENT_NAME_PREFIX; "%name"[-_]"prefix" return PERCENT_NAME_PREFIX;
"%no"[-_]"default"[-_]"prec" return PERCENT_NO_DEFAULT_PREC; "%no"[-_]"default"[-_]"prec" return PERCENT_NO_DEFAULT_PREC;