[antlr-interest] Why is ANTLR getting lost?

Jon Schewe jpschewe at mtu.net
Wed Feb 20 03:52:38 PST 2008


I've got a piece of a grammar that is causing ANTLR to get lost and I'm 
not sure.  I've written unit tests with JUnit to call the different 
rules to parse specific pieces of code with the input slowly getting 
larger and it fails when I add the rule "constraintDecls".  Grammar is 
attached, one should just need to look at the first few rules.

The rule constraintDecls calls constraints, which calls constraintDecl.  
Here is are two test methods, the first one passes the second one fails:
  /**
   * @throws RecognitionException
   */
  @Test
  public void testConstraints0() throws RecognitionException {
    final String data = "constraint3: 5.0 <= 6 + 6 * a[1 + 3] * c - 1 <= 
10.0;";

    final GHOCESLexer lexer = new GHOCESLexer(new ANTLRStringStream(data));
    final CommonTokenStream tokens = new CommonTokenStream(lexer);
    final GHOCESParser parser = new GHOCESParser(tokens);
    final GHOCESParser.constraints_return r = parser.constraints();
    Assert.assertNotNull(r);
  }

  /**
   * @throws RecognitionException
   */
  @Test
  public void testConstraintDecls0() throws RecognitionException {
    final String data = "Constraints constraint3: 5.0 <= 6 + 6 * a[1 + 
3] * c - 1 <= 10.0;";

    final GHOCESLexer lexer = new GHOCESLexer(new ANTLRStringStream(data));
    final CommonTokenStream tokens = new CommonTokenStream(lexer);
    final GHOCESParser parser = new GHOCESParser(tokens);
    final GHOCESParser.constraintDecls_return r = parser.constraintDecls();
    Assert.assertNotNull(r);
  }
Error is (I force an exception in emit to be sure what the call stack is):
203 [main] ERROR 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser - line 
25:17 no viable alternative at input '1'
java.lang.RuntimeException
    at 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser.emitErrorMessage(GHOCESParser.java:124)
    at 
org.antlr.runtime.BaseRecognizer.displayRecognitionError(BaseRecognizer.java:152)
    at org.antlr.runtime.BaseRecognizer.reportError(BaseRecognizer.java:144)
    at 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser.constraintDecl(GHOCESParser.java:2523)
    at 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser.constraints(GHOCESParser.java:1940)
    at 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser.constraintDecls(GHOCESParser.java:700)
    at 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser.program(GHOCESParser.java:176)
    at 
com.honeywell.htc.schedinfra.pconstraint.GHOCES.parseFile(GHOCES.java:401)
    at 
com.honeywell.htc.schedinfra.pconstraint.parser.test.TestParser.testSubscripts(TestParser.java:116)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:168)
    at junit.framework.TestCase.runBare(TestCase.java:134)
    at junit.framework.TestResult$1.protect(TestResult.java:110)
    at junit.framework.TestResult.runProtected(TestResult.java:128)
    at junit.framework.TestResult.run(TestResult.java:113)
    at junit.framework.TestCase.run(TestCase.java:124)
    at junit.framework.TestSuite.runTest(TestSuite.java:232)
    at junit.framework.TestSuite.run(TestSuite.java:227)
    at 
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
    at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
    at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
219 [main] INFO 
com.honeywell.htc.schedinfra.pconstraint.parser.test.TestParser - 
Running testSummation
219 [main] INFO 
com.honeywell.htc.schedinfra.pconstraint.parser.test.TestParser - 
Running testAddExpr0
235 [main] INFO 
com.honeywell.htc.schedinfra.pconstraint.parser.test.TestParser - 
Running testConstraintDecl0
235 [main] ERROR 
com.honeywell.htc.schedinfra.pconstraint.parser.GHOCESParser - line 1:30 
no viable alternative at input '1'

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: GHOCES.g
Url: http://www.antlr.org/pipermail/antlr-interest/attachments/20080220/19bc3eb9/attachment-0001.pl 


More information about the antlr-interest mailing list