aboutsummaryrefslogtreecommitdiff
path: root/gdb/d-exp.y
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-07-22 10:05:14 -0600
committerTom Tromey <tom@tromey.com>2018-08-28 11:28:15 -0600
commit5fe3f3e4633df1ea76ff24a2732d7c73dc983b90 (patch)
treed1becc89bac9fe3f418c0640d305ffc9c4398428 /gdb/d-exp.y
parent858d8004b05b572c07a414ae3933299976880bab (diff)
downloadbinutils-5fe3f3e4633df1ea76ff24a2732d7c73dc983b90.zip
binutils-5fe3f3e4633df1ea76ff24a2732d7c73dc983b90.tar.gz
binutils-5fe3f3e4633df1ea76ff24a2732d7c73dc983b90.tar.bz2
Remove some uses of VEC from parsers
This changes some uses of VEC in a few parsers to std::vector instead. Tested by the buildbot. gdb/ChangeLog 2018-08-28 Tom Tromey <tom@tromey.com> * c-exp.y (struct token_and_value): Remove typedef and DEF_VEC. (token_fifo): Now a std::vector. (yylex, c_parse): Update. * d-exp.y (struct token_and_value): Remove typedef and DEF_VEC. (token_fifo): Now a std::vector. (yylex, d_parse): Update. * go-exp.y (struct token_and_value): Remove typedef and DEF_VEC. (token_fifo): Now a std::vector. (yylex, go_parse): Update.
Diffstat (limited to 'gdb/d-exp.y')
-rw-r--r--gdb/d-exp.y62
1 files changed, 31 insertions, 31 deletions
diff --git a/gdb/d-exp.y b/gdb/d-exp.y
index 74e4b63..c09fe7a 100644
--- a/gdb/d-exp.y
+++ b/gdb/d-exp.y
@@ -1313,17 +1313,16 @@ lex_one_token (struct parser_state *par_state)
}
/* An object of this type is pushed on a FIFO by the "outer" lexer. */
-typedef struct
+struct token_and_value
{
int token;
YYSTYPE value;
-} token_and_value;
+};
-DEF_VEC_O (token_and_value);
/* A FIFO of tokens that have been read but not yet returned to the
parser. */
-static VEC (token_and_value) *token_fifo;
+static std::vector<token_and_value> token_fifo;
/* Non-zero if the lexer should return tokens from the FIFO. */
static int popping;
@@ -1419,7 +1418,7 @@ yylex (void)
int last_to_examine, next_to_examine, checkpoint;
const struct block *search_block;
- if (popping && !VEC_empty (token_and_value, token_fifo))
+ if (popping && !token_fifo.empty ())
goto do_pop;
popping = 0;
@@ -1431,14 +1430,14 @@ yylex (void)
/* Read any sequence of alternating "." and identifier tokens into
the token FIFO. */
current.value = yylval;
- VEC_safe_push (token_and_value, token_fifo, &current);
+ token_fifo.push_back (current);
last_was_dot = current.token == '.';
while (1)
{
current.token = lex_one_token (pstate);
current.value = yylval;
- VEC_safe_push (token_and_value, token_fifo, &current);
+ token_fifo.push_back (current);
if ((last_was_dot && current.token != IDENTIFIER)
|| (!last_was_dot && current.token != '.'))
@@ -1450,10 +1449,10 @@ yylex (void)
/* We always read one extra token, so compute the number of tokens
to examine accordingly. */
- last_to_examine = VEC_length (token_and_value, token_fifo) - 2;
+ last_to_examine = token_fifo.size () - 2;
next_to_examine = 0;
- current = *VEC_index (token_and_value, token_fifo, next_to_examine);
+ current = token_fifo[next_to_examine];
++next_to_examine;
/* If we are not dealing with a typename, now is the time to find out. */
@@ -1476,17 +1475,17 @@ yylex (void)
while (next_to_examine <= last_to_examine)
{
- token_and_value *next;
+ token_and_value next;
- next = VEC_index (token_and_value, token_fifo, next_to_examine);
+ next = token_fifo[next_to_examine];
++next_to_examine;
- if (next->token == IDENTIFIER && last_was_dot)
+ if (next.token == IDENTIFIER && last_was_dot)
{
/* Update the partial name we are constructing. */
obstack_grow_str (&name_obstack, ".");
- obstack_grow (&name_obstack, next->value.sval.ptr,
- next->value.sval.length);
+ obstack_grow (&name_obstack, next.value.sval.ptr,
+ next.value.sval.length);
yylval.sval.ptr = (char *) obstack_base (&name_obstack);
yylval.sval.length = obstack_object_size (&name_obstack);
@@ -1498,13 +1497,13 @@ yylex (void)
if (current.token == TYPENAME)
{
/* Install it as the first token in the FIFO. */
- VEC_replace (token_and_value, token_fifo, 0, &current);
- VEC_block_remove (token_and_value, token_fifo, 1,
- next_to_examine - 1);
+ token_fifo[0] = current;
+ token_fifo.erase (token_fifo.begin () + 1,
+ token_fifo.begin () + next_to_examine);
break;
}
}
- else if (next->token == '.' && !last_was_dot)
+ else if (next.token == '.' && !last_was_dot)
last_was_dot = 1;
else
{
@@ -1515,7 +1514,7 @@ yylex (void)
/* Reset our current token back to the start, if we found nothing
this means that we will just jump to do pop. */
- current = *VEC_index (token_and_value, token_fifo, 0);
+ current = token_fifo[0];
next_to_examine = 1;
}
if (current.token != TYPENAME && current.token != '.')
@@ -1539,16 +1538,16 @@ yylex (void)
while (next_to_examine <= last_to_examine)
{
- token_and_value *next;
+ token_and_value next;
- next = VEC_index (token_and_value, token_fifo, next_to_examine);
+ next = token_fifo[next_to_examine];
++next_to_examine;
- if (next->token == IDENTIFIER && last_was_dot)
+ if (next.token == IDENTIFIER && last_was_dot)
{
int classification;
- yylval = next->value;
+ yylval = next.value;
classification = classify_inner_name (pstate, search_block,
context_type);
/* We keep going until we either run out of names, or until
@@ -1565,8 +1564,8 @@ yylex (void)
/* We don't want to put a leading "." into the name. */
obstack_grow_str (&name_obstack, ".");
}
- obstack_grow (&name_obstack, next->value.sval.ptr,
- next->value.sval.length);
+ obstack_grow (&name_obstack, next.value.sval.ptr,
+ next.value.sval.length);
yylval.sval.ptr = (char *) obstack_base (&name_obstack);
yylval.sval.length = obstack_object_size (&name_obstack);
@@ -1580,7 +1579,7 @@ yylex (void)
context_type = yylval.tsym.type;
}
- else if (next->token == '.' && !last_was_dot)
+ else if (next.token == '.' && !last_was_dot)
last_was_dot = 1;
else
{
@@ -1593,14 +1592,15 @@ yylex (void)
the FIFO, and delete the other constituent tokens. */
if (checkpoint > 0)
{
- VEC_replace (token_and_value, token_fifo, 0, &current);
+ token_fifo[0] = current;
if (checkpoint > 1)
- VEC_block_remove (token_and_value, token_fifo, 1, checkpoint - 1);
+ token_fifo.erase (token_fifo.begin () + 1,
+ token_fifo.begin () + checkpoint);
}
do_pop:
- current = *VEC_index (token_and_value, token_fifo, 0);
- VEC_ordered_remove (token_and_value, token_fifo, 0);
+ current = token_fifo[0];
+ token_fifo.erase (token_fifo.begin ());
yylval = current.value;
return current.token;
}
@@ -1620,7 +1620,7 @@ d_parse (struct parser_state *par_state)
last_was_structop = 0;
saw_name_at_eof = 0;
- VEC_free (token_and_value, token_fifo);
+ token_fifo.clear ();
popping = 0;
name_obstack.clear ();