What rns did (as I read it) was list all the results of $slr->value(). The parse is unambiguous if and only if there is exactly one, which seems to be the case here. (You've been away from Perl, so Data::Dumper may now be hard to read, but you can confirm this for yourself by adding a line before the dump of each value, as a "hi there", or giving a count.)

Is your rule that you don't want to allow an abbreviation to follow a vowel?

-- jeffrey

On 09/03/2014 08:24 PM, Andrew Dunbar wrote:
Do we know if that's ambiguous? Don't we have to run it through Marpa::R2::ASF to know?



On Wednesday, 3 September 2014 20:10:42 UTC+10, rns wrote:

    Can you please look at this gist
    <https://gist.github.com/rns/fb6abf62a5fa779957ba>? The result is
    in the comment below it. This might be a solution provided that
    I've got the right idea.






    On Wed, Sep 3, 2014 at 11:44 AM, Andrew Dunbar <[email protected]
    <javascript:>> wrote:

        I've come back to Perl after a long absence just to play with
        Marpa because it looks like the most full featured Earley
        parser in any of the programming languages I know.

        I'm interested in Earley specifically because it can handle
        ambiguity and can produce a parse forest.

        I'm using it to investigate the syllable structure of the
        writing system of the Lao language of Southeast Asia.
        Specifically to see whether it's inherently ambiguous, and how.

        So far it works great and I'm glad I've come here from the
        Bison and PEG grammars I was playing with earlier.

        But it seems that there might be two kinds of ambiguities, the
        kind I'm looking for, and a kind that might be an artefact of
        Earley parsing or of the way I've written the grammar.

        Without having to teach you Lao I'll attempt to analogize:

        |
        All::=Syllable+

        Syllable::=C V C
                 |C V
                 |C

        C ~[bcdfghjklmnpqrstvwxyz]
        V ~[aeiou]

        |

        The "Syllable ::= C" rule is to allow lone initial consonants,
        as are used occasionally for abbreviations.

        If my input string is "mat" I only want:

        |
        (Syllable(C m)(V a)(C t))
        |

        But due to the abbreviation rule I also get a second unwanted
        parse:

        |
        (Syllable(C m)(V a))
        (Syllable(C t))
        |

        I've been able to refactor my grammar to deal with other
        issues that have appeared, by I can't seem to think of
        anything which accounts for occasional abbreviations but
        doesn't generate a number of unwanted alternative parses.

        Can I refactor my grammar or is there some other way to deal
        with this but still generate all the other kinds of ambiguity
        that I am interested in?
-- You received this message because you are subscribed to the
        Google Groups "marpa parser" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to [email protected]
        <javascript:>.
        For more options, visit https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>.


--
You received this message because you are subscribed to the Google Groups "marpa parser" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "marpa 
parser" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to