in reply to Re^2: Operator Precedence Parser
in thread Operator Precedence Parser
It printed out:<h2>6 / 5 * 4</h2> CET: [% 6 / 5 * 4 %]<br> Perl: [% PERL %]print 6 / 5 * 4 [% END %]<br> <hr> <h2>2 ** 3 ** 4</h2> CET: [% 2 ** 3 ** 4 %]<br> Perl: [% PERL %]print 2 ** 3 ** 4[% END %]<br> <hr> <h2>a---b</h2> CET: [% a = 5; b = 2 %][% a---b %]<br> Perl: [% PERL %]$a = 5; $b = 2; print $a---$b[% END %]<br> <hr> <h2>a--- -b</h2> CET: [% a = 5; b = 2 %][% a--- -b %]<br> Perl: [% PERL %]$a = 5; $b = 2; print $a--- -$b[% END %]<br> <hr> <h2>a--- --b</h2> CET: [% a = 5; b = 2 %][% a--- --b %]<br> Perl: [% PERL %]$a = 5; $b = 2; print $a--- --$b[% END %]<br> <hr>
So - it looks like I need to fix my right vs left vs non-associative. I'll add that to the table and change the parser (it is always doing right right now - it used to always do left - it will be trivial and won't even cause a speed hit to allow it to do both). Thank you - I knew about precedence and precedence makes complete sense - associativity rules seem like they are a little more arbitrary and it seems to cry foul to the user that it isn't consistent (such is legacy). In the perl6 operators table they don't even mention if the operator group is right or left (though it probably does elsewhere in the doc).6 / 5 * 4 CET: 0.3 Perl: 4.8 2 ** 3 ** 4 CET: 2.41785163922926e+24 Perl: 2.41785163922926e+24 a---b CET: 3 Perl: 3 a--- -b CET: 7 Perl: 7 a--- --b CET: 4 Perl: 4
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: Operator Precedence Parser
by Rhandom (Curate) on Jun 12, 2006 at 12:52 UTC |