mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
Move comma_terminates global to parser_state
This moves the comma_terminates global to parser_state. gdb/ChangeLog 2019-04-04 Tom Tromey <tom@tromey.com> * rust-exp.y (rustyylex, rust_lex_tests): Update. * parser-defs.h (struct parser_state) <parser_state>: Add new parameter. <comma_terminates>: New member. (comma_terminates): Don't declare global. * parse.c (comma_terminates): Remove global. (parse_exp_in_context): Update. * p-exp.y (yylex): Update. * m2-exp.y (yylex): Update. * go-exp.y (lex_one_token): Update. * f-exp.y (yylex): Update. * d-exp.y (lex_one_token): Update. * c-exp.y (lex_one_token): Update. * ada-lex.l: Update.
This commit is contained in:
parent
28aaf3fdf9
commit
8621b685bf
@ -1,3 +1,20 @@
|
||||
2019-04-04 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* rust-exp.y (rustyylex, rust_lex_tests): Update.
|
||||
* parser-defs.h (struct parser_state) <parser_state>: Add new
|
||||
parameter.
|
||||
<comma_terminates>: New member.
|
||||
(comma_terminates): Don't declare global.
|
||||
* parse.c (comma_terminates): Remove global.
|
||||
(parse_exp_in_context): Update.
|
||||
* p-exp.y (yylex): Update.
|
||||
* m2-exp.y (yylex): Update.
|
||||
* go-exp.y (lex_one_token): Update.
|
||||
* f-exp.y (yylex): Update.
|
||||
* d-exp.y (lex_one_token): Update.
|
||||
* c-exp.y (lex_one_token): Update.
|
||||
* ada-lex.l: Update.
|
||||
|
||||
2019-04-04 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* rust-exp.y (struct rust_parser) <paren_depth>: New member.
|
||||
|
@ -232,7 +232,7 @@ false { return FALSEKEYWORD; }
|
||||
|
||||
[-&*+./:<>=|;\[\]] { return yytext[0]; }
|
||||
|
||||
"," { if (paren_depth == 0 && comma_terminates)
|
||||
"," { if (paren_depth == 0 && pstate->comma_terminates)
|
||||
{
|
||||
rewind_to_char (',');
|
||||
return 0;
|
||||
|
@ -2637,7 +2637,7 @@ lex_one_token (struct parser_state *par_state, bool *is_quoted_name)
|
||||
return c;
|
||||
|
||||
case ',':
|
||||
if (comma_terminates
|
||||
if (pstate->comma_terminates
|
||||
&& paren_depth == 0
|
||||
&& ! scanning_macro_expansion ())
|
||||
return 0;
|
||||
|
@ -1098,7 +1098,7 @@ lex_one_token (struct parser_state *par_state)
|
||||
return c;
|
||||
|
||||
case ',':
|
||||
if (comma_terminates && paren_depth == 0)
|
||||
if (pstate->comma_terminates && paren_depth == 0)
|
||||
return 0;
|
||||
lexptr++;
|
||||
return c;
|
||||
|
@ -1115,7 +1115,7 @@ yylex (void)
|
||||
return c;
|
||||
|
||||
case ',':
|
||||
if (comma_terminates && paren_depth == 0)
|
||||
if (pstate->comma_terminates && paren_depth == 0)
|
||||
return 0;
|
||||
lexptr++;
|
||||
return c;
|
||||
|
@ -1077,7 +1077,7 @@ lex_one_token (struct parser_state *par_state)
|
||||
return c;
|
||||
|
||||
case ',':
|
||||
if (comma_terminates
|
||||
if (pstate->comma_terminates
|
||||
&& paren_depth == 0)
|
||||
return 0;
|
||||
lexptr++;
|
||||
|
@ -819,7 +819,7 @@ yylex (void)
|
||||
return c;
|
||||
|
||||
case ',':
|
||||
if (comma_terminates && paren_depth == 0)
|
||||
if (pstate->comma_terminates && paren_depth == 0)
|
||||
return 0;
|
||||
lexptr++;
|
||||
return c;
|
||||
|
@ -1218,7 +1218,7 @@ yylex (void)
|
||||
return c;
|
||||
|
||||
case ',':
|
||||
if (comma_terminates && paren_depth == 0)
|
||||
if (pstate->comma_terminates && paren_depth == 0)
|
||||
return 0;
|
||||
lexptr++;
|
||||
return c;
|
||||
|
@ -71,7 +71,6 @@ int arglist_len;
|
||||
static struct type_stack type_stack;
|
||||
const char *lexptr;
|
||||
const char *prev_lexptr;
|
||||
int comma_terminates;
|
||||
|
||||
/* True if parsing an expression to attempt completion. */
|
||||
int parse_completion;
|
||||
@ -1122,8 +1121,6 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
|
||||
expout_completion_name.reset ();
|
||||
innermost_block.reset (tracker_types);
|
||||
|
||||
comma_terminates = comma;
|
||||
|
||||
if (lexptr == 0 || *lexptr == 0)
|
||||
error_no_arg (_("expression to compute"));
|
||||
|
||||
@ -1187,7 +1184,7 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
|
||||
to the value matching SELECTED_FRAME as set by get_current_arch. */
|
||||
|
||||
parser_state ps (lang, get_current_arch (), expression_context_block,
|
||||
expression_context_pc);
|
||||
expression_context_pc, comma);
|
||||
|
||||
scoped_restore_current_language lang_saver;
|
||||
set_language (lang->la_language);
|
||||
|
@ -88,10 +88,12 @@ struct parser_state : public expr_builder
|
||||
parser_state (const struct language_defn *lang,
|
||||
struct gdbarch *gdbarch,
|
||||
const struct block *context_block,
|
||||
CORE_ADDR context_pc)
|
||||
CORE_ADDR context_pc,
|
||||
int comma)
|
||||
: expr_builder (lang, gdbarch),
|
||||
expression_context_block (context_block),
|
||||
expression_context_pc (context_pc)
|
||||
expression_context_pc (context_pc),
|
||||
comma_terminates (comma)
|
||||
{
|
||||
}
|
||||
|
||||
@ -108,6 +110,10 @@ struct parser_state : public expr_builder
|
||||
at, and then look up the macro definitions active at that
|
||||
point. */
|
||||
const CORE_ADDR expression_context_pc;
|
||||
|
||||
/* Nonzero means stop parsing on first comma (if not within parentheses). */
|
||||
|
||||
int comma_terminates;
|
||||
};
|
||||
|
||||
/* When parsing expressions we track the innermost block that was
|
||||
@ -355,10 +361,6 @@ extern const char *lexptr;
|
||||
/* After a token has been recognized, this variable points to it.
|
||||
Currently used only for error reporting. */
|
||||
extern const char *prev_lexptr;
|
||||
|
||||
/* Nonzero means stop parsing on first comma (if not within parentheses). */
|
||||
|
||||
extern int comma_terminates;
|
||||
|
||||
/* These codes indicate operator precedences for expression printing,
|
||||
least tightly binding first. */
|
||||
|
@ -1674,7 +1674,8 @@ rustyylex (YYSTYPE *lvalp, rust_parser *parser)
|
||||
/* Falls through to lex_operator. */
|
||||
++parser->paren_depth;
|
||||
}
|
||||
else if (lexptr[0] == ',' && comma_terminates && parser->paren_depth == 0)
|
||||
else if (lexptr[0] == ',' && parser->pstate->comma_terminates
|
||||
&& parser->paren_depth == 0)
|
||||
return 0;
|
||||
|
||||
return lex_operator (lvalp);
|
||||
@ -2713,7 +2714,7 @@ rust_lex_tests (void)
|
||||
|
||||
// Set up dummy "parser", so that rust_type works.
|
||||
struct parser_state ps (&rust_language_defn, target_gdbarch (),
|
||||
nullptr, 0);
|
||||
nullptr, 0, 0);
|
||||
rust_parser parser (&ps);
|
||||
|
||||
rust_lex_test_one (&parser, "", 0);
|
||||
|
Loading…
Reference in New Issue
Block a user