[antlr-interest] "Illegal target of jump or branch" in method: specialStateTransition

Philippe Frankson Philippe.Frankson at Frsglobal.com
Tue Mar 13 03:38:50 PDT 2012


Hi all,

I use teamcity to launch automatically a bunch of tests on our
application.
However, one test is failing. Error message: "Illegal target of jump or
branch".
One reason of the problem could be that the size of the function is too
big.
However that function is generated automatically by ANTLR 3.4.
The function 'specialStateTransition' in the inner class  DFA13 is
indeed quite long (about 3000 lines).
In previous versions of ANTLR that function didn't exist so I never had
that kind of error.
You can see the stack trace here below for detail.

Any idea how to solve this ? 
Would it be possible to split that function to avoid such problem ?

Thank you for any feedback
Philippe




Stacktraces : 
(new)
dbtest.com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaPa
rserTest.testFormulaSyntax
java.lang.VerifyError: (class:
com/frsglobal/riskpro/model/reportbuilder/formulaparser/FormulaLexer$DFA
13, method: specialStateTransition signature:
(ILorg/antlr/runtime/IntStream;)I) Illegal target of jump or branch
	at
com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaLexer.(Fo
rmulaLexer.java:3210)
	at
com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaLexer.(Fo
rmulaLexer.java:128)
	at
com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaParserMan
ager.(FormulaParserManager.java:26)
	at
dbtest.com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaPa
rserTest.checkSyntax(FormulaParserTest.java:58)
	at
dbtest.com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaPa
rserTest.testFormulaSyntax(FormulaParserTest.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at
com.frsglobal.riskpro.common.FTestCase.runTest(FTestCase.java:171)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at
org.apache.tools.ant.taskdefs.optional.junit.TestResultInterceptor$1.pro
tect(TestResultInterceptor.java:160)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at
org.apache.tools.ant.taskdefs.optional.junit.TestResultInterceptor.run(T
estResultInterceptor.java:190)
	at junit.framework.TestCase.run(TestCase.java:124)
	at
com.frsglobal.riskpro.common.FTestCase.run(FTestCase.java:148)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.jav
a:79)
	at
junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTe
stRunner.java:420)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUni
tTestRunner.java:911)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitT
estRunner.java:743)

------- Stdout: -------
[                main][ WARN] (10:48:52.839) 

[                main][ WARN] (10:48:52.839) PID:20620 ::
FormulaParserTest.testFormulaSyntax

[                main][ WARN] (10:48:52.855) RAM Information: maximum
742MB - total  337MB - free  141MB

[                main][ WARN] (10:48:52.855) 

[                main][ INFO] (10:48:52.855) 

[                main][ INFO] (10:48:52.855) ***** Checking Hibernate
Settings [Equals] *****

[                main][ INFO] (10:48:52.855) 

[                main][ INFO] (10:48:52.855) DbTestCase.setUp() done!
 
dbtest.com.frsglobal.riskpro.model.reportbuilder.CompileTest.testCompile
Applications
java.lang.VerifyError: (class:
com/frsglobal/riskpro/model/reportbuilder/formulaparser/FormulaLexer$DFA
13, method: specialStateTransition signature:
(ILorg/antlr/runtime/IntStream;)I) Illegal target of jump or branch
	at
com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaLexer.(Fo
rmulaLexer.java:3210)
	at
com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaLexer.(Fo
rmulaLexer.java:128)
	at
com.frsglobal.riskpro.model.reportbuilder.formulaparser.FormulaParserMan
ager.(FormulaParserManager.java:26)
	at
com.frsglobal.riskpro.model.reportbuilder.generator.RBReportGenerator.ha
sBrokenFormulae(RBReportGenerator.java:149)
	at
com.frsglobal.riskpro.model.reportbuilder.generator.RBReportGenerator.ge
nerate(RBReportGenerator.java:84)
	at
com.frsglobal.riskpro.model.reportbuilder.RBReportFile.generate(RBReport
File.java:1696)
	at
com.frsglobal.riskpro.model.reportbuilder.RBApplication.generate(RBAppli
cation.java:1353)
	at
dbtest.com.frsglobal.riskpro.model.reportbuilder.CompileTest.compileAppl
ication(CompileTest.java:31)
	at
dbtest.com.frsglobal.riskpro.model.reportbuilder.CompileTest.testCompile
Applications(CompileTest.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at
com.frsglobal.riskpro.common.FTestCase.runTest(FTestCase.java:171)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at
org.apache.tools.ant.taskdefs.optional.junit.TestResultInterceptor$1.pro
tect(TestResultInterceptor.java:160)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at
org.apache.tools.ant.taskdefs.optional.junit.TestResultInterceptor.run(T
estResultInterceptor.java:190)
	at junit.framework.TestCase.run(TestCase.java:124)
	at
com.frsglobal.riskpro.common.FTestCase.run(FTestCase.java:148)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.jav
a:79)
	at
junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTe
stRunner.java:420)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUni
tTestRunner.java:911)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitT
estRunner.java:743)


More information about the antlr-interest mailing list