summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-03-24 18:07:00 -0600
committerTom Tromey <tom@tromey.com>2019-04-04 19:55:11 -0600
commit8621b685bfdcb8773b8177fb2b89e45499902868 (patch)
tree843765b0588efca85780159f17fa8e71eb7311ff
parent28aaf3fdf9562c018dcf6ab4d0a4c644fff8d696 (diff)
downloadbinutils-gdb-8621b685bfdcb8773b8177fb2b89e45499902868.tar.gz
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.
-rw-r--r--gdb/ChangeLog17
-rw-r--r--gdb/ada-lex.l2
-rw-r--r--gdb/c-exp.y2
-rw-r--r--gdb/d-exp.y2
-rw-r--r--gdb/f-exp.y2
-rw-r--r--gdb/go-exp.y2
-rw-r--r--gdb/m2-exp.y2
-rw-r--r--gdb/p-exp.y2
-rw-r--r--gdb/parse.c5
-rw-r--r--gdb/parser-defs.h14
-rw-r--r--gdb/rust-exp.y5
11 files changed, 36 insertions, 19 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3e03604528b..8217a763259 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,22 @@
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.
(rustyylex, rust_lex_test_init, rust_lex_test_one)
(rust_lex_test_sequence, rust_lex_test_push_back): Update.
diff --git a/gdb/ada-lex.l b/gdb/ada-lex.l
index 6163405545d..43bd25c1e2f 100644
--- a/gdb/ada-lex.l
+++ b/gdb/ada-lex.l
@@ -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;
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index cb9e9e002c7..16b291f9c70 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -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;
diff --git a/gdb/d-exp.y b/gdb/d-exp.y
index c1519953521..06e12e32011 100644
--- a/gdb/d-exp.y
+++ b/gdb/d-exp.y
@@ -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;
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index 100a3bbec14..522751d2263 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -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;
diff --git a/gdb/go-exp.y b/gdb/go-exp.y
index aaffe3d45a0..ea1487cb008 100644
--- a/gdb/go-exp.y
+++ b/gdb/go-exp.y
@@ -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++;
diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y
index c0f5e75be2a..2174014e79a 100644
--- a/gdb/m2-exp.y
+++ b/gdb/m2-exp.y
@@ -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;
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index 768f3025921..65874c6327d 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -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;
diff --git a/gdb/parse.c b/gdb/parse.c
index 4ac79faaeae..617ff70d67e 100644
--- a/gdb/parse.c
+++ b/gdb/parse.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);
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
index 6fb0f8e5533..f2bb18fd9c7 100644
--- a/gdb/parser-defs.h
+++ b/gdb/parser-defs.h
@@ -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. */
diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
index 9d3083ead92..2f2cc8f31fe 100644
--- a/gdb/rust-exp.y
+++ b/gdb/rust-exp.y
@@ -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);