[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Token value in custom error reporting
From: |
Akim Demaille |
Subject: |
Re: Token value in custom error reporting |
Date: |
Thu, 18 Jun 2020 19:21:34 +0200 |
> Le 18 juin 2020 à 19:11, Hans Åberg <haberg-1@telia.com> a écrit :
>
>
>> On 18 Jun 2020, at 18:56, Akim Demaille <akim@lrde.epita.fr> wrote:
>>
>>> Le 18 juin 2020 à 14:54, Hans Åberg <haberg-1@telia.com> a écrit :
>>>
>>> In my C++ parser, the lexer has rule
>>> . { return my_parser::token::token_error; }
>>>
>>> When it is triggers, I get the error:
>>> <file>:21.1: error: syntax error, unexpected token error
>>>
>>> It might be nicer to actually write out this token, though.
>>
>> I have already explained what I don't think this is a good idea.
>>
>> https://lists.gnu.org/r/help-bison/2020-06/msg00017.html
>>
>> I also have explained that scanner errors should be handled
>> by the scanner. For instance, in the bistro, you can read:
>>
>> int
>> yylex (const char **line, YYSTYPE *yylval, YYLTYPE *yylloc)
>> {
>> int c;
>>
>> [...]
>>
>> switch (c)
>> {
>> [...]
>> // Stray characters.
>> default:
>> yyerror (yylloc, "syntax error: invalid character: %c", c);
>> return TOK_YYerror;
>> }
>> }
>>
>> Cheers!
>
> Is that not the case, which I responded to, where you get double error
> messages, both from the lexer and parser?
No, that's the whole point of YYerror.
In the news of 3.6:
*** Returning the error token
When the scanner returns an invalid token or the undefined token
(YYUNDEF), the parser generates an error message and enters error
recovery. Because of that error message, most scanners that find lexical
errors generate an error message, and then ignore the invalid input
without entering the error-recovery.
The scanners may now return YYerror, the error token, to enter the
error-recovery mode without triggering an additional error message. See
the bistromathic for an example.
- Re: Token value in custom error reporting, (continued)
- Re: Token value in custom error reporting, Akim Demaille, 2020/06/18
- Re: Token value in custom error reporting, Daniele Nicolodi, 2020/06/18
- Re: Token value in custom error reporting, Akim Demaille, 2020/06/18
- Re: Token value in custom error reporting, Daniele Nicolodi, 2020/06/18
- Re: Token value in custom error reporting, Adrian Vogelsgesang, 2020/06/18
- Re: Token value in custom error reporting, Akim Demaille, 2020/06/18
- Re: Token value in custom error reporting, Adrian Vogelsgesang, 2020/06/18
- Re: Token value in custom error reporting, Hans Åberg, 2020/06/18
- Re: Token value in custom error reporting, Akim Demaille, 2020/06/18
- Re: Token value in custom error reporting, Hans Åberg, 2020/06/18
- Re: Token value in custom error reporting,
Akim Demaille <=
- Re: Token value in custom error reporting, Hans Åberg, 2020/06/18
- Re: Token value in custom error reporting, Akim Demaille, 2020/06/19
- Re: Token value in custom error reporting, Hans Åberg, 2020/06/19
- Re: Token value in custom error reporting, Akim Demaille, 2020/06/18
Token value in custom error reporting, Daniele Nicolodi, 2020/06/17