|Yacc shift/reduce conflicts firstname.lastname@example.org (Martyn Weiss) (2004-12-19)|
|Re: Yacc shift/reduce conflicts email@example.com (Scott Nicol) (2004-12-22)|
|Re: Yacc shift/reduce conflicts firstname.lastname@example.org (=?ISO-8859-1?Q?Hugues_Cass=E9?=) (2004-12-22)|
|Re: Yacc shift/reduce conflicts email@example.com (Dawid Pawlata) (2004-12-22)|
|From:||Martyn Weiss <firstname.lastname@example.org>|
|Date:||19 Dec 2004 23:53:14 -0500|
|Organization:||CompuServe Interactive Services|
|Posted-Date:||19 Dec 2004 23:53:14 EST|
I'm updating a language grammar I wrote a while ago using MKS Yacc,
which consists of one or more statements separated by semicolons, i.e.
One of the things I want to do is to allow for superfluous embedded
and trailing semicolons, as in S1;;S2;
I had a bit if trouble expressing this in rules without getting
shift/reduce conflicts. I found that if I simplify the grammar down
to the following:
| statements semicolon
| statements semicolon statement
yacc reports no conflicts, but it looks a bit clumsy to me. However,
if I replace "someterminal" by "expression", which has a number of
alternative definitions (simpleexpression, term, factor, etc) I
immediately get a whole raft of shift/reduce conflicts, which leads me
to think the simplified version above isn't the best way to express
the "superfluous semicolons" point mentioned above.
Can anyone suggest a better formulation of "statements" or explain how
I go about getting rid of the s/r conflicts in the fuller version.
Cheers & TIA, Martyn (you can probably guess that this isn't my usual
subject, but it isn't homework, either)
Return to the
Search the comp.compilers archives again.