Some bad news. First, I still don't know why you get the weird
message on Jython.
Some worse news. Your grammar actually *DOES* have shift-reduce
conflicts in it that PLY-2.5 was not reporting due to a bug in rule
precedence handling. The following CHANGES entry pertains to this:
01/06/09: beazley
Fixed a bug with precedence assignment. yacc was assigning
the precedence
each rule based on the left-most token, when in fact, it
should have been
using the right-most token. Reported by Bruce Frederiksen.
Tracking down the source of the shift/reduce conflict is difficult but
it is related to these rules in your grammar and the handling of
DECLARE:
def p_mainModule(p):
'''mainModule : prolog queryBody'''
def p_prolog(p):
'''prolog : xqueryNS prolog
| sparqlNS prolog
| xqueryFunction prolog
| empty'''
def p_xqueryFunction(p):
'''xqueryFunction : DECLARE FUNCTION qname LPAR paramList RPAR
enclosedExpr SEMICOLON'''
def p_functionCall(p):
'''functionCall : qname LPAR exprSingles RPAR'''
def p_qname(p):
'''qname : prefixedName
| unprefixedName
...
| DECLARE
...
""
def p_xqueryFunction(p):
'''xqueryFunction : DECLARE FUNCTION qname LPAR paramList RPAR
enclosedExpr SEMICOLON'''
If DECLARE is the next input token.
1. The parser could reduce the "empty" rule in "prolog" go straight
to parsing queryBody.
If you unwind the grammar, you will find that queryBody leads
directly to functionCall.
However, functionCall is prefaced by qname which accepts
DECLARE as a valid token.
2. Or, the parser could shift the DECLARE token on the stack and try
to match the
xqueryFunction rule.
So, to summarize, the shift/reduce conflict is between the
xqueryFunction rule and the functionCall rule by way of some rather
hellish grammar rule expansion. Needless to say, I don't have much
advice on how you should go about fixing it.
The good news : I don't think PLY-3.1 is broken. It seems to be
working better than PLY-2.5 in that it accurately caught this conflict
and reported it (whereas PLY was silent before).
Good luck on this! Yikes!
Cheers,
Dave
On Mar 13, 2009, at 1:54 PM, Nuno Lopes wrote:
>
> Hi,
>
>
> On 13 Mar 2009, at 18:43, David Beazley wrote:
>
>> I will *DEFINITELY* need more information about this. There should
>> be no change in the number of shift/reduce conflicts between PLY 2.5
>> and PLY 3.0.
>
> The full code is available at sourceforge:
> http://sourceforge.net/projects/xsparql
>
> The committed code gives no shift/reduces with ply-2.5 (just double
> checked, no errors on parser.out) but introduces the 4 shift/reduce
> with ply-3.1.
>
> Let me know if you need some more info.
>
> Thanks
> --
> Nuno Lopes
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"ply-hack" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/ply-hack?hl=en
-~----------~----~----~----~------~----~------~--~---