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>
|
2019-04-04 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* rust-exp.y (struct rust_parser) <paren_depth>: New member.
|
* rust-exp.y (struct rust_parser) <paren_depth>: New member.
|
||||||
|
|
|
@ -232,7 +232,7 @@ false { return FALSEKEYWORD; }
|
||||||
|
|
||||||
[-&*+./:<>=|;\[\]] { return yytext[0]; }
|
[-&*+./:<>=|;\[\]] { return yytext[0]; }
|
||||||
|
|
||||||
"," { if (paren_depth == 0 && comma_terminates)
|
"," { if (paren_depth == 0 && pstate->comma_terminates)
|
||||||
{
|
{
|
||||||
rewind_to_char (',');
|
rewind_to_char (',');
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -2637,7 +2637,7 @@ lex_one_token (struct parser_state *par_state, bool *is_quoted_name)
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
if (comma_terminates
|
if (pstate->comma_terminates
|
||||||
&& paren_depth == 0
|
&& paren_depth == 0
|
||||||
&& ! scanning_macro_expansion ())
|
&& ! scanning_macro_expansion ())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1098,7 +1098,7 @@ lex_one_token (struct parser_state *par_state)
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
if (comma_terminates && paren_depth == 0)
|
if (pstate->comma_terminates && paren_depth == 0)
|
||||||
return 0;
|
return 0;
|
||||||
lexptr++;
|
lexptr++;
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -1115,7 +1115,7 @@ yylex (void)
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
if (comma_terminates && paren_depth == 0)
|
if (pstate->comma_terminates && paren_depth == 0)
|
||||||
return 0;
|
return 0;
|
||||||
lexptr++;
|
lexptr++;
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -1077,7 +1077,7 @@ lex_one_token (struct parser_state *par_state)
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
if (comma_terminates
|
if (pstate->comma_terminates
|
||||||
&& paren_depth == 0)
|
&& paren_depth == 0)
|
||||||
return 0;
|
return 0;
|
||||||
lexptr++;
|
lexptr++;
|
||||||
|
|
|
@ -819,7 +819,7 @@ yylex (void)
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
if (comma_terminates && paren_depth == 0)
|
if (pstate->comma_terminates && paren_depth == 0)
|
||||||
return 0;
|
return 0;
|
||||||
lexptr++;
|
lexptr++;
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -1218,7 +1218,7 @@ yylex (void)
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
if (comma_terminates && paren_depth == 0)
|
if (pstate->comma_terminates && paren_depth == 0)
|
||||||
return 0;
|
return 0;
|
||||||
lexptr++;
|
lexptr++;
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -71,7 +71,6 @@ int arglist_len;
|
||||||
static struct type_stack type_stack;
|
static struct type_stack type_stack;
|
||||||
const char *lexptr;
|
const char *lexptr;
|
||||||
const char *prev_lexptr;
|
const char *prev_lexptr;
|
||||||
int comma_terminates;
|
|
||||||
|
|
||||||
/* True if parsing an expression to attempt completion. */
|
/* True if parsing an expression to attempt completion. */
|
||||||
int parse_completion;
|
int parse_completion;
|
||||||
|
@ -1122,8 +1121,6 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
|
||||||
expout_completion_name.reset ();
|
expout_completion_name.reset ();
|
||||||
innermost_block.reset (tracker_types);
|
innermost_block.reset (tracker_types);
|
||||||
|
|
||||||
comma_terminates = comma;
|
|
||||||
|
|
||||||
if (lexptr == 0 || *lexptr == 0)
|
if (lexptr == 0 || *lexptr == 0)
|
||||||
error_no_arg (_("expression to compute"));
|
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. */
|
to the value matching SELECTED_FRAME as set by get_current_arch. */
|
||||||
|
|
||||||
parser_state ps (lang, get_current_arch (), expression_context_block,
|
parser_state ps (lang, get_current_arch (), expression_context_block,
|
||||||
expression_context_pc);
|
expression_context_pc, comma);
|
||||||
|
|
||||||
scoped_restore_current_language lang_saver;
|
scoped_restore_current_language lang_saver;
|
||||||
set_language (lang->la_language);
|
set_language (lang->la_language);
|
||||||
|
|
|
@ -88,10 +88,12 @@ struct parser_state : public expr_builder
|
||||||
parser_state (const struct language_defn *lang,
|
parser_state (const struct language_defn *lang,
|
||||||
struct gdbarch *gdbarch,
|
struct gdbarch *gdbarch,
|
||||||
const struct block *context_block,
|
const struct block *context_block,
|
||||||
CORE_ADDR context_pc)
|
CORE_ADDR context_pc,
|
||||||
|
int comma)
|
||||||
: expr_builder (lang, gdbarch),
|
: expr_builder (lang, gdbarch),
|
||||||
expression_context_block (context_block),
|
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
|
at, and then look up the macro definitions active at that
|
||||||
point. */
|
point. */
|
||||||
const CORE_ADDR expression_context_pc;
|
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
|
/* 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.
|
/* After a token has been recognized, this variable points to it.
|
||||||
Currently used only for error reporting. */
|
Currently used only for error reporting. */
|
||||||
extern const char *prev_lexptr;
|
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,
|
/* These codes indicate operator precedences for expression printing,
|
||||||
least tightly binding first. */
|
least tightly binding first. */
|
||||||
|
|
|
@ -1674,7 +1674,8 @@ rustyylex (YYSTYPE *lvalp, rust_parser *parser)
|
||||||
/* Falls through to lex_operator. */
|
/* Falls through to lex_operator. */
|
||||||
++parser->paren_depth;
|
++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 0;
|
||||||
|
|
||||||
return lex_operator (lvalp);
|
return lex_operator (lvalp);
|
||||||
|
@ -2713,7 +2714,7 @@ rust_lex_tests (void)
|
||||||
|
|
||||||
// Set up dummy "parser", so that rust_type works.
|
// Set up dummy "parser", so that rust_type works.
|
||||||
struct parser_state ps (&rust_language_defn, target_gdbarch (),
|
struct parser_state ps (&rust_language_defn, target_gdbarch (),
|
||||||
nullptr, 0);
|
nullptr, 0, 0);
|
||||||
rust_parser parser (&ps);
|
rust_parser parser (&ps);
|
||||||
|
|
||||||
rust_lex_test_one (&parser, "", 0);
|
rust_lex_test_one (&parser, "", 0);
|
||||||
|
|
Loading…
Reference in New Issue