[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Possible bug or simple nuisance compiler warning
From: |
Akim Demaille |
Subject: |
Re: Possible bug or simple nuisance compiler warning |
Date: |
Fri, 27 Nov 2020 06:55:31 +0100 |
Hi Jot,
> Le 27 nov. 2020 à 02:15, Jot Dot <jotdot@shaw.ca> a écrit :
>
> While beating my head senseless trying to get my first flex/bison (c++ style)
> project going,
Have you looked at the examples in examples/c++?
> I try to catch some error tokens inside my bison rules to aid me by supplying
> diagnostic output.
> I added a second error token into a rule to debug an issue I'm trying to
> figure out (which I posted in help-bison).
I have not received your message on help-bison
(https://lists.gnu.org/r/help-bison/).
What do you mean by "I added a second error token into a rule"? Could you
please show that rule?
> 1>D:\data\c\FlexBisonLoader\My_Parser\parser.cpp(454,26): warning C4244:
> 'return': conversion from 'const short' to 'gen::Parser::state_type',
> possible loss of data
>
> The following snippet of code in the generated .cpp source file:
> Parser ::state_type
> Parser ::yy_lr_goto_state_ (state_type yystate, int yysym)
> {
> int yyr = yypgoto_[yysym - YYNTOKENS] + yystate;
> if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
> return yytable_[yyr];
> else
> return yydefgoto_[yysym - YYNTOKENS]; <<<<<<<< Warning.
> }
>
> Now this is probably just a nuisance message that can be safely ignored, but
> I wanted to bring it up to your attention.
> IMO the return value just needs to be cast to Parser::state_type.
The definition of state_type depends on the grammar. What is your definition?
> Also, when I add that extra error line, my app freezes. Now, I'm 99% sure
> this freeze is from what I'm doing, but that 1% tells me that I've never had
> this compile issue, It's a bit odd, and this parser is a state engine which
> might be in the wrong place.. etc. I've already triggered two Microsoft bugs
> in this single project / endeavour, slowing me down, so now I'm getting a bit
> paranoid.
You may want to try another compiler too :)
> Due to the odd behaviour, I figure I'd run it past you just to make sure.
Your compiler might be right. I think it's unlikely, but it's possible. To
understand why it warns, I need the definition of state_type.
Cheers!