Remove the Ada DOT_ALL token
authorTom Tromey <tromey@adacore.com>
Tue, 22 Feb 2022 19:56:09 +0000 (12:56 -0700)
committerTom Tromey <tromey@adacore.com>
Mon, 4 Apr 2022 18:46:09 +0000 (12:46 -0600)
The Ada parser has a DOT_ALL token to represent ".all", and another
token to represent other ".<identifier>" forms.  However, for
completion it is a bit more convenient to unify these cases, so this
patch removes DOT_ALL.

gdb/ada-exp.y
gdb/ada-lex.l

index 204e77af6cac0db453a5fb1d82108e29b96b293d..d84cdcebf58982bf99e7f93010bc784827923d65 100644 (file)
@@ -448,8 +448,6 @@ make_tick_completer (struct stoken tok)
 %type <bval> block
 %type <lval> arglist tick_arglist
 
-%token DOT_ALL
-
 /* Special type cases, put in to allow the parser to distinguish different
    legal basetypes.  */
 %token <sval> DOLLAR_VARIABLE
@@ -477,7 +475,7 @@ make_tick_completer (struct stoken tok)
  /* The following are right-associative only so that reductions at this
     precedence have lower precedence than '.' and '('.  The syntax still
     forces a.b.c, e.g., to be LEFT-associated.  */
-%right '.' '(' '[' DOT_ID DOT_ALL
+%right '.' '(' '[' DOT_ID
 
 %token NEW OTHERS
 
@@ -506,15 +504,17 @@ exp1      :       exp
        ;
 
 /* Expressions, not including the sequencing operator.  */
-primary :      primary DOT_ALL
-                       { ada_wrap<ada_unop_ind_operation> (); }
-       ;
 
 primary :      primary DOT_ID
                        {
-                         operation_up arg = ada_pop ();
-                         pstate->push_new<ada_structop_operation>
-                           (std::move (arg), copy_name ($2));
+                         if (strcmp ($2.ptr, "all") == 0)
+                           ada_wrap<ada_unop_ind_operation> ();
+                         else
+                           {
+                             operation_up arg = ada_pop ();
+                             pstate->push_new<ada_structop_operation>
+                               (std::move (arg), copy_name ($2));
+                           }
                        }
        ;
 
index 40e450bf6790ff377cfcf52e5bd82886fa3d8012..9e35776d7c22d1f65d1593347007e4a1700970f4 100644 (file)
@@ -289,8 +289,6 @@ false               { return FALSEKEYWORD; }
                    }
                }
 
-"."{WHITE}*all  { return DOT_ALL; }
-
 "."{WHITE}*{ID} {
                  yylval.sval = processId (yytext+1, yyleng-1);
                  return DOT_ID;