On Friday, Jun 13, 2003 Richard Jelinek said:
> On Fri, Jun 13, 2003 at 11:24:05AM -0700, Ron D. Smith wrote:
> > Ordering is how you establish priority in ambiguous situations. If you turn
>
> This is an interesting aspect/information.
>
> > proplist: property xorand_prop(s?)
> >
> > xorand_prop: xor_prop|and_prop
> > xor_prop: '|' property
> > and_prop: ',' property
>
> Actually this does also:
>
> proplist: property xor_prop(s)
> | property and_prop(s?)
You pointed out the actual ambiguity of your grammar. Since you were
allowing for zero or more xor_props, it was "satisfied" when it got to the
comma (or vice versa).
Again, my point still holds that the problem has nothing to do with the order
per se, P::RD did exactly what you told it to do.
Try the $::RD_TRACE debug feature. In the future, I'm sure you will find it
extremely helpful. It both points out the problems with a grammar definition
as well as helps you understand what to do to optimize an implementation.
>
> without the xorand rule. And now I understand this construct and why
> it does work. But this doesn't change anything it just pushes the
> problem one step further.
>
> You say, ordering is to establish priority in ambiguous
> situations. Well - given this rule:
>
> (I)
>
> order_sensitive: phrase
> | phrase '(' blah ')'
>
> Ambiguity? Yes. But this NEVER gets to the second production. While
>
> (II)
>
> order_sensitive: phrase '(' blah ')'
> | phrase
This is both efficient as well as unambiguous:
Insensitive_With_Optional_Tail: phrase tail(?)
tail: '(' blah ')'
>
> parses all well, I really don't have a choice to set priority with
> ordering. Probably my input has more non-parameter phrases than those
> with parameters. No matter what, I have to use the inefficient (II).
> With my present knowledge - that is.
>
> --
> best regards,
>
> Dipl.-Inf. Richard Jelinek
>
> - The PetaMem Group - Prague/Nuremberg - www.petamem.com -
> -= 2325182 Mind Units =-
--
Intel, Corp.
5000 W. Chandler Blvd.
Chandler, AZ 85226
--
Intel, Corp.
5000 W. Chandler Blvd.
Chandler, AZ 85226