Thanks for this information, I might add an interface for this to 
MarpaX::Simple when I develop my grammars further.

On Sunday, June 19, 2016 at 9:29:29 AM UTC+7, Jeffrey Kegler wrote:
>
> Re why Marpa considers your grammar ambiguous.  Marpa's big departure from 
> yacc and PEG is that it does not leave you guessing why it does what it 
> does.
>
> If Marpa considers a parse ambiguous you can ask it why: 
> http://search.cpan.org/~jkegl/Marpa-R2-3.000000/pod/Scanless/R.pod#ambiguous%28%29
>
> That just picks two of the parses and points out the difference, which 
> will often give you the idea.  For more details, you can get all the parse 
> results using multiple calls to $recce->value().
>
> Btw, Marpa::R2's $grammar->parse() call uses $grammar->ambiguous 
> internally -- it considers parse ambiguity an error and reports it as such 
> automatically.  If this is in keeping with the philosophy of 
> MarpaX::Simple, you may want to include it.
>
> On Sat, Jun 18, 2016 at 4:03 AM, <[email protected] <javascript:>> wrote:
>
>> Thanks, my initial googling didn't point to the Scanless/R.pod document. 
>> Anyway I didn't raise the limit and simply modified the grammar to be like 
>> in Scanless/DSL.pod. I entirely don't understand why the previous grammar 
>> was considered too ambiguous by Marpa though, will it seems to be doing 
>> okay with perl regex or Regexp::Grammars or perl 6. The right associativity 
>> now works though.
>>
>> The new version improves the speed, but not drastically [1]. As the 
>> number of terms in the benchmark expression (1+1+..+1) is increased to 
>> hundreds and up to a thousand, the Marpa version seems to be close to 3x 
>> slower than the regex version.
>>
>> [1] 
>> https://metacpan.org/pod/release/PERLANCAR/Bencher-Scenarios-PERLANCARParseArithmetic-0.004/lib/Bencher/Scenario/PERLANCARParseArithmetic/parse_arithmetic.pm
>>
>> On Saturday, June 18, 2016 at 10:49:16 AM UTC+7, Jeffrey Kegler wrote:
>>>
>>> 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] <javascript:>.
>> 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