Quick answers for 2 & 3 2.) See https://metacpan.org/pod/distribution/Marpa-R2/pod/Scanless/R.pod#too_many_earley_items for how to raise this limit or eliminate it entirely. Although, the fact you are hitting this limit is almost always a sign your grammar is too ambiguous.
3.) Look at the grammar in the synopsis of https://metacpan.org/pod/distribution/Marpa-R2/pod/Scanless/DSL.pod. You are breaking your arithmetic expression into separate statements and "assoc => right" is only effective within a single precedenced statement. This means the way you wrote it, it has no effect. Doing a precedenced statement for 3) may fix 1) and 2) as well. These answers are off the top of my head and untested. On Fri, Jun 17, 2016 at 8:22 PM, <[email protected]> wrote: > Hi guys, > > I've been using Perl 5.010 regex to do some parsing, e.g. in Data::Csel > [1] to parse CSS-selector-like expression, due to its relatively low > startup overhead compared to Marpa or Regexp::Grammars. A couple of days > ago, after reading about a topic in perl6 subreddit [2], I did a comparison > benchmark [5] for a simple arithmetic parser using perl [3] vs Marpa [4]. > My questions: > > 1) how do I improve the Marpa version's performance? > 2) how to remove the "Earley item count (N) exceeds warning threshold"? > This happens for 1+1+..+1 (100x) expression but not for the 20x or below. > 3) how do I make right associativity work? The Marpa version still > evaluates ** operator left to right. > > regards, > perlancar > > [1] https://metacpan.org/pod/Data::CSel > [2] https://www.reddit.com/r/perl6 > [3] > https://metacpan.org/pod/release/PERLANCAR/PERLANCAR-Parse-Arithmetic-0.001/lib/PERLANCAR/Parse/Arithmetic.pm > [4] > https://metacpan.org/pod/release/PERLANCAR/PERLANCAR-Parse-Arithmetic-0.001/lib/PERLANCAR/Parse/Arithmetic/Marpa.pm > [5] > https://metacpan.org/pod/release/PERLANCAR/Bencher-Scenarios-PERLANCARParseArithmetic-0.002/lib/Bencher/Scenario/PERLANCARParseArithmetic/parse_arithmetic.pm > > -- > 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. > -- 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.
