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) |
From: | f.tomassetti@gmail.com (Federico Tomassetti) |
Newsgroups: | comp.compilers |
Date: | 26 Apr 2005 20:41:59 -0400 |
Organization: | http://groups.google.com |
References: | 05-04-024 05-04-052 |
Keywords: | yacc, parse |
Posted-Date: | 26 Apr 2005 20:41:59 EDT |
haberg@math.su.se (Hans Aberg) wrote in message news:05-04-052...
> 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.
No I wanna admit just ONE space, no more and neither a tab of a
newline instead of the space
>
> It is common to let the lexer zip out the whitespace by .l rules:
> [ \f\r\t\v]+ {}
> \n+ {}
It's not what I want. I wanna create a language with very strict rules
that give me an error if I use two spaces instead of one. My problems
are relative to the error catching: every time I create a rule
containing the error token I get the rule never executed. Can I have
some examples of error catching in your yacc/bison files?
what means \f? and \v?
Return to the
comp.compilers page.
Search the
comp.compilers archives again.