mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 10:13:03 +00:00
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:
14
ChangeLog
14
ChangeLog
@@ -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.
|
||||||
|
|||||||
@@ -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])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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])[
|
||||||
]])
|
]])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@ splice (\\[ \f\t\v]*\n)*
|
|||||||
"#" STRING_GROW; in_cpp = true;
|
"#" STRING_GROW; in_cpp = true;
|
||||||
|
|
||||||
{splice} STRING_GROW;
|
{splice} STRING_GROW;
|
||||||
[\n\r] STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
|
[\n\r] STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
|
||||||
[ \t\f] STRING_GROW;
|
[ \t\f] STRING_GROW;
|
||||||
. STRING_GROW; need_semicolon = true;
|
. STRING_GROW; need_semicolon = true;
|
||||||
}
|
}
|
||||||
@@ -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[");
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user