Re: Unable to use error recovery with bison

haberg@math.su.se (Hans Aberg)
16 Apr 2005 21:33:34 -0400

          From comp.compilers

Related articles
Unable to use error recovery with bison f.tomassetti@gmail.com (2005-04-11)
Re: Unable to use error recovery with bison haberg@math.su.se (2005-04-16)
Re: Unable to use error recovery with bison f.tomassetti@gmail.com (2005-04-26)
| List of all articles for this month |

From: haberg@math.su.se (Hans Aberg)
Newsgroups: comp.compilers
Date: 16 Apr 2005 21:33:34 -0400
Organization: Mathematics
References: 05-04-024
Keywords: yacc, parse
Posted-Date: 16 Apr 2005 21:33:34 EDT

f.tomassetti@gmail.com (Federico Tomassetti) wrote:


> I spent the last days trying to make error recovery working but I
> can't catch one and yyerror is always invoked:
>
> I report a portion from the lex source, yacc source and file parsed.
>
> I always obtain the message "syntax error, unexpected NEWLINE,
> expecting SPACE"


Looking at your grammar, you have
    voidspace: SPACE | TAB | NEWLINE
    ;
thus only admitting eaxctly one of the three, for example in your rule
    class_decl_header:
                    KWCLASS SPACE CLASSNAME
You probably want any number of these.


It is common to let the lexer zip out the whitespace by .l rules:
    [ \f\r\t\v]+ {}
    \n+ {}
The idea here is to also break up longer rule matches, as the Flex
generated lexer otherwise may get into buffer problems, slowing it down.


--
    Hans Aberg



Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.