diff options
author | Tom Tromey <tom@tromey.com> | 2019-03-24 18:07:00 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-04-04 19:55:11 -0600 |
commit | 8621b685bfdcb8773b8177fb2b89e45499902868 (patch) | |
tree | 843765b0588efca85780159f17fa8e71eb7311ff /gdb | |
parent | 28aaf3fdf9562c018dcf6ab4d0a4c644fff8d696 (diff) | |
download | gdb-8621b685bfdcb8773b8177fb2b89e45499902868.zip gdb-8621b685bfdcb8773b8177fb2b89e45499902868.tar.gz gdb-8621b685bfdcb8773b8177fb2b89e45499902868.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 17 | ||||
-rw-r--r-- | gdb/ada-lex.l | 2 | ||||
-rw-r--r-- | gdb/c-exp.y | 2 | ||||
-rw-r--r-- | gdb/d-exp.y | 2 | ||||
-rw-r--r-- | gdb/f-exp.y | 2 | ||||
-rw-r--r-- | gdb/go-exp.y | 2 | ||||
-rw-r--r-- | gdb/m2-exp.y | 2 | ||||
-rw-r--r-- | gdb/p-exp.y | 2 | ||||
-rw-r--r-- | gdb/parse.c | 5 | ||||
-rw-r--r-- | gdb/parser-defs.h | 14 | ||||
-rw-r--r-- | gdb/rust-exp.y | 5 |
11 files changed, 36 insertions, 19 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3e03604..8217a76 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 6163405..43bd25c 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 cb9e9e0..16b291f 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 c151995..06e12e3 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 100a3bb..522751d 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 aaffe3d..ea1487c 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 c0f5e75..2174014 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 768f302..65874c6 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 4ac79fa..617ff70 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 6fb0f8e..f2bb18f 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 9d3083e..2f2cc8f 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); |