This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Remove some uses VEC from parsers
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: Tom Tromey <tom at tromey dot com>, <gdb-patches at sourceware dot org>
- Date: Mon, 27 Aug 2018 17:35:31 -0400
- Subject: Re: [PATCH] Remove some uses VEC from parsers
- References: <20180827211901.20992-1-tom@tromey.com>
On 2018-08-27 05:19 PM, Tom Tromey wrote:
> diff --git a/gdb/go-exp.y b/gdb/go-exp.y
> index 47570d59111..a2436145491 100644
> --- a/gdb/go-exp.y
> +++ b/gdb/go-exp.y
> @@ -1279,17 +1279,15 @@ 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;
> @@ -1485,10 +1483,10 @@ yylex (void)
> {
> token_and_value current, next;
>
> - if (popping && !VEC_empty (token_and_value, token_fifo))
> + if (popping && !token_fifo.empty ())
> {
> - token_and_value tv = *VEC_index (token_and_value, token_fifo, 0);
> - VEC_ordered_remove (token_and_value, token_fifo, 0);
> + token_and_value tv = token_fifo[0];
> + token_fifo.erase (token_fifo.begin ());
> yylval = tv.value;
> /* There's no need to fall through to handle package.name
> as that can never happen here. In theory. */
> @@ -1541,12 +1539,12 @@ yylex (void)
> }
> }
>
> - VEC_safe_push (token_and_value, token_fifo, &next);
> - VEC_safe_push (token_and_value, token_fifo, &name2);
> + token_fifo.push_back (next);
> + token_fifo.push_back (name2);
> }
> else
> {
> - VEC_safe_push (token_and_value, token_fifo, &next);
> + token_fifo.push_back (next);
> }
Can you remove the extra braces, while at it?
LGTM, thanks!
Simon