This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Move comma_terminates global to parser_state


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8621b685bfdcb8773b8177fb2b89e45499902868

commit 8621b685bfdcb8773b8177fb2b89e45499902868
Author: Tom Tromey <tom@tromey.com>
Date:   Sun Mar 24 18:07:00 2019 -0600

    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.

Diff:
---
 gdb/ChangeLog     | 17 +++++++++++++++++
 gdb/ada-lex.l     |  2 +-
 gdb/c-exp.y       |  2 +-
 gdb/d-exp.y       |  2 +-
 gdb/f-exp.y       |  2 +-
 gdb/go-exp.y      |  2 +-
 gdb/m2-exp.y      |  2 +-
 gdb/p-exp.y       |  2 +-
 gdb/parse.c       |  5 +----
 gdb/parser-defs.h | 14 ++++++++------
 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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]