On 08/23/2013 02:53 PM, Stefan J wrote:
Hi,
I am currently redesign my old compiler written in python by the use of pyl.
The current code is
attached.
start :
| startElement
| start startElement
startElement : comment
startElement : global { varList }
varList :
| varListElement
| varList varListElement
varListElement : comment
varListElement : type name ;
varListElement: type name [ number ] ;
As you can see it is very simple. I did not understand the error (4 Shift /
Reduce Erros). Maybe you
can help me.
I threw the thing in bison, and it gave me the grammar below, and also 4
shift/reduce errors.
Grammar
0 $accept: start $end
1 start: /* empty */
2 | startElement
3 | start startElement
4 startElement: COMMENT
5 | GLOBAL CUROPEN varList CURCLOSE
6 varList: /* empty */
7 | varListElement
8 | varList varListElement
9 varListElement: COMMENT
10 | TYPE NAME
11 | TYPE NAME SQOPEN NUMBER SQCLOSE
It also tells where they are:
State 0 conflicts: 2 shift/reduce
State 5 conflicts: 2 shift/reduce
The problem is in the start productions and the varList productions.
As you can see there are 3 production rules, one for 0 elements, one for 1 element, and the general
case.
The problem is caused by the fact that you have two ways to derive 1 element, namely as 1 element,
or as 0 elements and 1 application of the general case.
I think you want to remove the 1 element production rules.
Albert
--
You received this message because you are subscribed to the Google Groups
"ply-hack" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ply-hack/52177D02.5060002%40tue.nl.
For more options, visit https://groups.google.com/groups/opt_out.