jzimmerman/langcc

Unresolvable simple epsilon-related local ambiguity.

modulovalue opened this issue · 1 comments

Consider the following:

tokens {
    ka <= `a`;
    kb <= `b`;
    kd <= `d`;
    ws <- `\n` | `\r` | `\t` | ` `;
}

lexer {
    main { body }

    mode body {
        ws => { pass; }
        ka => { emit; }
        kb => { emit; }
        kd => { emit; }
        eof => { pop; }
    }
}

parser {
    main { S }
    S <- `a` B `b` `d`;
    B <- `b` | eps;
}

test {
    `a b b d` <<>>;
    `a b d` <<>>;
}

langcc is neither able to resolve the conflict here, nor provide any guidance that the conflict could be easily resolved by inlining B.

I'm wondering: are conflicts of this kind intentionally not being handled by langcc (because there might be a good reason not to?) or are they just something that were not considered a high priority?

Because langcc appears to be abandoned, I'm going to close this issue.