[antlr-interest] Has anyone seen this kind of stack trace?

Alan D. Cabrera list at toolazydogs.com
Tue Nov 29 05:26:07 PST 2011


I'm running ANTLR on my tree walker ANTLR file and get this error message and don't understand what I'm doing wrong:

error(10):  internal error: com/toolazydogs/lua4j/LuaWalker.g : java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 64
java.util.Vector.set(Vector.java:712)
org.antlr.analysis.DFA.createMinMaxTables(DFA.java:535)
org.antlr.analysis.DFA.createStateTables(DFA.java:439)
org.antlr.codegen.CodeGenerator.genLookaheadDecision(CodeGenerator.java:645)
org.antlr.grammar.v3.CodeGenTreeWalker.block(CodeGenTreeWalker.java:2876)
org.antlr.grammar.v3.CodeGenTreeWalker.rule(CodeGenTreeWalker.java:2382)
org.antlr.grammar.v3.CodeGenTreeWalker.rules(CodeGenTreeWalker.java:1537)
org.antlr.grammar.v3.CodeGenTreeWalker.grammarSpec(CodeGenTreeWalker.java:1441)
org.antlr.grammar.v3.CodeGenTreeWalker.grammar_(CodeGenTreeWalker.java:493)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:421)
org.antlr.Tool.generateRecognizer(Tool.java:655)
org.antlr.Tool.process(Tool.java:468)
org.antlr.mojo.antlr3.Antlr3Mojo.execute(Antlr3Mojo.java:378)
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)


/**
* Copyright 2010-2011 (C) Alan D. Cabrera
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
tree grammar LuaWalker;
options
{
   tokenVocab=Lua;
   ASTLabelType=CommonTree;
   filter = true;
}
@header
{
package com.toolazydogs.lua4j;
import org.objectweb.asm.*;
import com.toolazydogs.lua4j.compiler.*;
}
@members
{
   void print(String s) { System.out.print(s); }
   void println(String s) { System.out.println(s); }
}

chunk
   : ^(CHUNK c=.)
   ;

stat
   : ^(ASSIGN varlist explist)
   | functioncall
   | chunk
   | ^(WHILE exp chunk)
   | ^(REPEAT chunk exp)
   | ^(IF exp chunk)
   | ^(IF exp chunk chunk)
   | ^(IF exp chunk elseif+ chunk?)
   | ^(FOR NAME exp exp exp chunk)
   | ^(FOR NAME exp exp chunk)
   | ^(FORIN namelist explist chunk)
   | ^(FUNCTION funcname funcbody)
   | ^(LOCAL namelist explist?)
   ;

elseif
   : ^(ELSEIF exp chunk)
   ;

laststat
   : RETURN
   | ^(RETURN explist)
   | BREAK
   ;

funcname
   : ^(FNAMETHIS NAME NAME+)
   | ^(FNAME NAME+)
   ;

varlist
   : ^(VARLIST var+)
   ;

var
   : ^(INDEX varPrefix exp)
   | ^(VAR NAME)
   ;

varPrefix
   : ^(FUNCALL vp=. nameAndArgs)
   | ^(SINGLE exp)
   | ^(VAR NAME)
   ;

prefixexp
   : ^(FUNCALL p=. nameAndArgs)
   | varOrExp
   ;

functioncall
   : ^(FUNCALL p=. nameAndArgs)
   ;

varOrExp
   : var
   | ^(SINGLE exp)
   ;

nameAndArgs
   : ^(ARGS args)
   | ^(ARGSWITHSELF NAME args)
   ;

args
   : EXPLIST
   | explist
   | tableconstructor
   | string
   ;

namelist
   : ^(NAMELIST NAME+)
   ;

explist
   : ^(EXPLIST exp+)
   ;

exp
   : ^('or' or or+)
   | or
   ;

or
   : ^('and' and and+)
   | and
   ;

and
   : ^('<' compare compare)
   | ^('<=' compare compare)
   | ^('>' compare compare)
   | ^('>=' compare compare)
   | ^('==' compare compare)
   | ^('~=' compare compare)
   | compare
   ;

compare
   : ^('..' concatenation concatenation+)
   | concatenation
   ;

concatenation
   : ^('+' add_sub add_sub)
   | ^('-' add_sub add_sub)
   | add_sub
   ;

add_sub
   : ^('*' b b)
   | ^('/' b b)
   | ^('%' b b)
   | b
   ;

b
   : ^(NEGATE unary)
   | unary
   ;

unary
   : ^('^' atom atom)
   | atom
   ;

atom    : 'nil'
       | 'false'
       | 'true'
       | number
       | string
       | ^(FUNCBODY parlist? chunk)
       | prefixexp
       | tableconstructor
       | '...'
    ;

funcbody
   : ^(FUNCBODY parlist? chunk)
   ;

parlist
   : ^(PARAMETERS namelist)
   | ^(PARAMETERS namelist '...')
   | ^(PARAMETERS '...')
   ;

tableconstructor
   : ^(TBLCTOR field+)
   | TBLCTOR
   ;

field
   : ^(TBLFIELD exp exp)
   | ^(TBLFIELD NAME exp)
   | ^(TBLFIELD exp)
   ;

number
   : INTEGER
   | FLOAT
   | EXPONENT
   | HEX
   ;

string
   : ^(STRING s=.)
   ;




More information about the antlr-interest mailing list