Re: Yacc error recovery... (Ian T Zimmerman)
12 Oct 1996 22:10:41 -0400

          From comp.compilers

Related articles
Yacc error recovery... (1996-10-03)
Re: Yacc error recovery... (1996-10-06)
Re: Yacc error recovery... (1996-10-12)
Re: Yacc error recovery... (1996-10-24)
| List of all articles for this month |

From: (Ian T Zimmerman)
Newsgroups: comp.compilers
Date: 12 Oct 1996 22:10:41 -0400
Organization: My own fan club
References: 96-10-011
Keywords: yacc, errors writes:
> The normal way for a yacc-generated parser to recover using an
> ``error production'' of the form A -> error b is to keep reading
> tokens until a 'b' nonterminal is encountered, and then reduce by
> the production.
> This is not very satisfactory, since at times it would be nice to
> either insert tokens into the input stream, or even just have the
> input stream read up to, but not including 'b'. For example, 'b'
> could be the non-terminal '}', making it possible for the error
> recovery to read only until the end of the enclosing scope in a
> C-like language.

While I understand the general direction of your article, I don't
think yours is a good example. '}' is a terminal; there is probably
some nonterminal for `scope' in the grammar (if there isn't, there
should be) and this can be used as `A' in the error production. The
`b' terminal in the production is optional, it merely restricts the
contexts where the error recovery procedure is acceptable.

> Is there some yacc method for doing more flexible error recovery, preferrably
> one that works across the various compatible parser generators?

TOPLAS vol.17 No.4 (July 95) pp. 672 and forward describes adding a
fully automated error method to Bison. The article together with
relevant source code are available on

Best luck,

Ian T Zimmerman <>

Post a followup to this message

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