Hi all,

    Continuing on the work on Drools grammar, I've split the grammar in 4
smaller grammars as suggested by Jim the other day, but I am still getting
the "code too large" error. I looked throughout the code antlr generated and
the problem happens on DFAs. It generates a method called

        public int specialStateTransition(int s, IntStream _input) throws
NoViableAltException {

    Inside that method, there is a switch case with nested "if"s. In my
case, it is generating things like the bellow for the "if" alternatives:

 else if ( (LA4_1==STRING) &&
     ( ( (evalPredicate(helper.validateLT(1,
DroolsSoftKeywords.QUERY),"helper.validateLT(1, DroolsSoftKeywords.QUERY)")
&&

 
evalPredicate((helper.validateIdentifierKey(DroolsSoftKeywords.QUERY)),"(helper.validateIdentifierKey(DroolsSoftKeywords.QUERY))"))
       ||(evalPredicate(helper.validateLT(1,
DroolsSoftKeywords.QUERY),"helper.validateLT(1, DroolsSoftKeywords.QUERY)")
&&

 
evalPredicate((helper.validateIdentifierKey(DroolsSoftKeywords.QUERY)),"(helper.validateIdentifierKey(DroolsSoftKeywords.QUERY))"))
       ||(evalPredicate(helper.validateLT(1,
DroolsSoftKeywords.QUERY),"helper.validateLT(1, DroolsSoftKeywords.QUERY)")
&&

 
evalPredicate((helper.validateIdentifierKey(DroolsSoftKeywords.QUERY)),"(helper.validateIdentifierKey(DroolsSoftKeywords.QUERY))"))

          ...repeats that hundreds of times...

       ||(evalPredicate(helper.validateLT(1,
DroolsSoftKeywords.QUERY),"helper.validateLT(1, DroolsSoftKeywords.QUERY)")
&&

 
evalPredicate((helper.validateIdentifierKey(DroolsSoftKeywords.QUERY)),"(helper.validateIdentifierKey(DroolsSoftKeywords.QUERY))")))))
{s = 5;}


    This is obviously a code generation bug, as the same condition is
repeated over and over. Since I need to move on with this, I will try to
find the problem myself, but I appreciate if anyone can point me to the
right direction, i.e., which classes/templates in ANTLR take care of the
code generation for DFAs.

    The rule that triggers the problem above is like this:

statement
options { k=2; } :
        // some alternatives
| {helper.validateLT(1, DroolsSoftKeywords.QUERY)}?=>    query
        // more alternatives
        ;

     The problem happens on all alternatives, BTW. The above is just a
snippet to show the problem.

     The problem happens both when running with and without -debug, but
obviously the above snippet includes the debug info.

     Thanks,

     Edson

-- 
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com

List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to