[antlr-interest] Advice on best practice?
Ruslan Zasukhin
ruslan_zasukhin at valentina-db.com
Thu Oct 13 02:02:51 PDT 2011
On 10/12/11 9:15 PM, "Jim Idle" <jimi at temporal-wave.com> wrote:
Hi Jim,
> Avoid backtracking like the plague if you need performance. But if you are
> careful in the order of your alts and use it on just a few
> decisions/rules, then it might not be so bad (but remember that your error
> messages will be weak).
Then next question comes to mind:
does ANTLR allow us somehow easy to see that during parsing
was made 2-3 or 4 backtracking.
Like profiler ... So we can see that and start learn where and why ..
?
> If k=1 on a decision then ANTLR will work that out so you don't need to
> specify but if you want to avoid ANTLR following every possible alt then
> you can use k=1 on a particular rule or sub rule to avoid ambiguity
> errors.
Aha, so playing with k=1 option,
We can even kill ambiguity errors/warnings.
Interesting.
This is what I ask for -- it will be great to have list of such tricks/rules
from ANTLR experts ..
> Basically if you know that a decision will be correct at k=1 even
> though ANTLR can see ambiguities, then tell it so.
> Before 3.4 this would still give a warning unless you added a 1 token
> predicate, but I believe that Ter changed this for 3.4 so that I could remove
> a lot of those predicates from my own T-SQL grammar.
So we do not need that one-token predicates now ... Good.
But I do not understand how it looks?
Can you show example of such predicate just for interest ?
> Jim
>
>
>
>> -----Original Message-----
>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>> bounces at antlr.org] On Behalf Of Ruslan Zasukhin
>> Sent: Wednesday, October 12, 2011 11:05 AM
>> To: antlr-interest at antlr.org
>> Subject: [antlr-interest] Advice on best practice?
>>
>> Hi All, Terrence, Jim,
>>
>> I have review FAQs, other docs and list ...
>> But sop far cannot find isolated advices/tips of kind
>>
>>
>> * Tend develop grammar as k=1
>> AVOID to use k=*, because this is slower ...
>>
>> OR reverse
>>
>> * No problems to use k=*
>> Always prefer to use k=* and do not worry ... Speed will be fine..
>>
>> OR
>>
>> * always tend to (not)? Use backtrack option.
>> and if you use it then use memoize also ...
>>
>>
>> In the ANTLR3/Examples/C I see options as
>>
>>
>> ====================
>> grammar C;
>>
>> options
>> {
>> backtrack = true;
>> memoize = true;
>> k = 2;
>> language = C;
>> }
>> ====================
>>
>>
>> But what is official point of view at current state ?
--
Best regards,
Ruslan Zasukhin
VP Engineering and New Technology
Paradigma Software, Inc
Valentina - Joining Worlds of Information
http://www.paradigmasoft.com
[I feel the need: the need for speed]
More information about the antlr-interest
mailing list