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, <perlan...@gmail.com> 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 marpa-parser+unsubscr...@googlegroups.com. > 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 marpa-parser+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.