Improve syntax error

Segher Boessenkool segher@kernel.crashing.org
Sat Jan 5 08:50:00 GMT 2019


Hi Daniel,

Some mostly boring comments:

On Fri, Jan 04, 2019 at 09:25:10PM +0100, Daniel Marjamäki wrote:
> The first reason is the hard problem, but maybe we can ignore this now also:
> 
> void f()
> {
>     }  // <- looking at the indentation, it seems preferable to warn about this
> }

I think the indentation warnings should catch that?

> diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
> index 972b629c092..eabc5ffa15e 100644
> --- a/gcc/c/c-parser.c
> +++ b/gcc/c/c-parser.c
> @@ -171,6 +171,8 @@ struct GTY(()) c_parser {
>    /* How many look-ahead tokens are available (0 - 4, or
>       more if parsing from pre-lexed tokens).  */
>    unsigned int tokens_avail;
> +  /* nesting depth in expression (parentheses / squares) */

Start sentences with a capital, and end with full stop space space.  I
realise this isn't a full sentence, but the comment right above does this
as well ;-)

> @@ -763,6 +765,22 @@ c_parser_next_tokens_start_declaration (c_parser *parser)
>    return false;
>  }
> 
> +/* Nesting start token */
> +
> +static bool c_parser_is_nesting_start (c_parser *parser)
> +{
> +    return c_parser_next_token_is (parser, CPP_OPEN_PAREN) ||
> +           c_parser_next_token_is (parser, CPP_OPEN_SQUARE);

Indents should use tabs for every leading eight spaces.

> @@ -2228,7 +2264,10 @@ c_parser_declaration_or_fndef (c_parser
> *parser, bool fndef_ok,
>          }
>        else
>          {
> -          c_parser_error (parser, "expected %<,%> or %<;%>");
> +          if (c_parser_unmatched_p (parser))
> +            complain_about_unmatched_token (parser);

Should this say something like "expected ) or , or ;"?

> +          else
> +            c_parser_error (parser, "expected %<,%> or %<;%>");
>            c_parser_skip_to_end_of_block_or_statement (parser);
>            return;
>          }


Segher



More information about the Gcc mailing list