Related articles |
---|
error recovery in yacc sbiswas@cse.iitk.ac.in (Shiladitya Biswas mt cse) (2003-01-12) |
error recovery in yacc mcvax!tut.fi!jh@seismo.CSS.GOV (1987-08-17) |
error recovery in yacc gupta%cs.unc.edu@RELAY.CS.NET (Gopal Gupta) (1987-08-18) |
Re: error recovery in yacc harvard!seismo!sun!academ!nuchat!steve (1987-09-04) |
Re: error recovery in yacc ...mcvax!ukc!warwick!julia (1987-09-04) |
Error Recovery in Yacc vke@netgen.com (Vicki Tardif) (1995-08-23) |
Newsgroups: | comp.compilers |
From: | Vicki Tardif <vke@netgen.com> |
Keywords: | yacc, errors, comment |
Organization: | net.Genesis Corp. |
Date: | Wed, 23 Aug 1995 14:31:36 GMT |
Hello,
I am trying to use lex and yacc to write a parser, but I am running
into some problems with the error recovery. I have searched through the
O'Reilly book, but I can't seem to find the answer to my problem.
Basically, my problem is when the parser comes across a token it
doesn't expect. For example, if I have the rules:
command_sequence:
| command_sequence command
;
command: subject verb object
;
subject: (The list of possible subjects.)
verb: (List of verbs)
object: (List of objects)
When I run my parser on a file, if it is looking for a subject and
it comes across something else (like a verb), the parser doesn't
recognize any more rules (even if there are valid commands after the
error) until it completes on a rule which started before the error.
I would like to store the offensive token and put the parser into a
state where it can continue happily, but unfortunately, I can't find
any resources which discuss this. Does anyone know how to achieve
this, or is there a better way to recover from this error? I suppose
I could use the brute force method of adding tons of rules to handle
the offensive tokens, but if possible, I would like to use a more
elegant solution.
- Vicki
Vicki Tardif ----------------------------------- voice: (617) 577-9800
net.Genesis fax: (617) 577-9850
56 Rogers St vke@netgen.com
Cambridge, MA 02142 --------------------------- http://www.netgen.com/
[Yacc error recovery is a losing battle if you want to do much more than
resync at a punctuation mark. -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.