[antlr-interest] Advice on best practice?

Ruslan Zasukhin ruslan_zasukhin at valentina-db.com
Wed Oct 12 11:13:54 PDT 2011


On 10/12/11 9:04 PM, "Ruslan Zasukhin" <ruslan_zasukhin at valentina-db.com>
wrote:

> 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 ?

In that C grammar also present comment

/** Either a function definition or any other kind of C decl/def.
 *  The LL(*) analysis algorithm fails to deal with this due to
 *  recursion in the declarator rules.  I'm putting in a
 *  manual predicate here so that we don't backtrack over
 *  the entire function.  Further, you get a better error
 *  as errors within the function itself don't make it fail
 *  to predict that it's a function.  Weird errors previously.
 *  Remember: the goal is to avoid backtrack like the plague
 *  because it makes debugging, actions, and errors harder.
 *
 *  Note that k=1 results in a much smaller predictor for the
 *  fixed lookahead; k=2 made a few extra thousand lines. ;)
 *  I'll have to optimize that in the future.
 */

I wonder, if this already was optimized?
Or still in the future?


Should we also try to specify k=1
for most rules ?


-- 
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