Related articles |
---|
Yacc shift/reduce conflicts anumber@compuserve.com (Martyn Weiss) (2004-12-19) |
Re: Yacc shift/reduce conflicts snicol@apk.net (Scott Nicol) (2004-12-22) |
Re: Yacc shift/reduce conflicts casse@irit.fr (=?ISO-8859-1?Q?Hugues_Cass=E9?=) (2004-12-22) |
Re: Yacc shift/reduce conflicts dawidpawlata@wp.pl (Dawid Pawlata) (2004-12-22) |
From: | Martyn Weiss <anumber@compuserve.com> |
Newsgroups: | comp.compilers |
Date: | 19 Dec 2004 23:53:14 -0500 |
Organization: | CompuServe Interactive Services |
Keywords: | yacc, question |
Posted-Date: | 19 Dec 2004 23:53:14 EST |
Hi.
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.
S1;S2;...SN
.
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:
program:
statements
;
statements:
statement
| statements semicolon
| statements semicolon statement
;
statement:
someterminal
;
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
comp.compilers page.
Search the
comp.compilers archives again.