[antlr-interest] BUG? (JAVA) Antlr complains, and possibly fails, when dealing with large acceptance sets

Austin Hastings Austin_Hastings at Yahoo.com
Thu Nov 8 22:03:56 PST 2007


Antlr-godz,

In reference to my email earlier tonight (see below), I replaced this rule:


WS    : ({ Character.isWhitespace(input.LA(1)) }? .)+    {$channel = 
HIDDEN;} ;


with this one:


WS: (' ' | '\t' | '\r' | '\n' )+ {$channel = HIDDEN;} ;


This change made the complaint stop. I am guessing that somewhere in the 
bowels of antlr it was trying to expand the '.' dfa, but that doesn't 
make much sense because there's plenty of other times when '.' gets 
used. So I really don't know what it was doing - but enumerating the 
"easy" whitespace characters made it stop. I don't know if this is a bug 
or not - it may be the case that running with -mx allTheRamInTheWorld 
might have let it succeed.

=Austin





Austin Hastings wrote:
> Howdy, squad.
>
> I'm getting this failure during ANTLR processing of a fairly small 
> grammar. Obviously I've done something wrong, but I have no idea what. 
> Can anybody point me at a place to start looking?
>
> =Austin
>
>
>  [antlr3] error(10):  internal error: Can't get property 
> javaCompressedTransition using method get/isJavaCompressedTransition 
> from org.antlr.analysis.DFA instance : java.lang.OutOfMemoryError: 
> Java heap space
>   [antlr3] java.util.ArrayList.<init>(ArrayList.java:112)
>   [antlr3] org.antlr.analysis.DFA.getRunLengthEncoding(DFA.java:423)
>   [antlr3] 
> org.antlr.analysis.DFA.getJavaCompressedTransition(DFA.java:399)
>   [antlr3] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   [antlr3] 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
>
>   [antlr3] 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
>
>   [antlr3] java.lang.reflect.Method.invoke(Method.java:597)
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:563)
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:513) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:420) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:346) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:131) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.templateApplication(ActionEvaluator.java:211) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:121) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:79) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:152)
>   [antlr3] 
> org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:714)
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:81) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:152)
>   [antlr3] 
> org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:714)
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:81) 
>
>   [antlr3] 
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:152)
>   [antlr3] 
> org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:714)
>   [antlr3] org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1132)
>   [antlr3] org.antlr.codegen.Target.genRecognizerFile(Target.java:94)
>   [antlr3] 
> org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:439)
>   [antlr3] org.antlr.Tool.processGrammar(Tool.java:347)
>   [antlr3] org.antlr.Tool.process(Tool.java:311)
>
>
>



More information about the antlr-interest mailing list