On Tue, Oct 6, 2009 at 4:31 PM, cwaldbieser <[email protected]> wrote:
>
> def p_function(p):
> """
> function : access_spec override_spec FUNCTION func_name
> generic_spec LPAREN arg_list RPAREN AS return_type
> """
> p[0] = VBFunction("%s%s" % (p[4], p[5]), p[7], p[10], RT_VBFUNC)
>
> def p_generic_spec(p):
> """
> generic_spec : LPAREN OF type_param_spec_list
> RPAREN
> |
> """
>
The LPAREN after func_name produces a shift/reduce ambiguity for the two
generic_spec rules.
Is:
access_spec override_spec FUNCTION func_name LPAREN
an empty generic_spec or not? Can't tell yet. But this is where the parser
must make a decision.
If you rewrite the rules as:
def p_function(p):
"""
function : access_spec override_spec FUNCTION func_name LPAREN
generic_spec arg_list RPAREN AS return_type
"""
...
def p_generic_spec(p):
"""
generic_spec : OF type_param_spec_list RPAREN LPAREN
|
"""
Then you shouldn't have this problem. With the new rules, the parser
doesn't have to decide between an empty generic_spec or not until the next
token after the first LPAREN. If it sees OF, it's a generic_spec, otherwise
not and generic_spec is empty.
Hope this helps!
-Bruce
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---