[antlr-interest] Has anyone seen this kind of stack trace?
Alan D. Cabrera
list at toolazydogs.com
Wed Nov 30 17:25:05 PST 2011
I am using maven and both *.g files get compiled by antlr:
[INFO]
[INFO] --- antlr3-maven-plugin:3.3:antlr (default) @ lua4j ---
[INFO] ANTLR: Processing source directory /Users/adc/dev/lua4j/src/main/antlr3
ANTLR Parser Generator Version 3.3 Nov 30, 2010 12:46:29
com/toolazydogs/lua4j/Lua.g
com/toolazydogs/lua4j/LuaWalker.g
error(10): internal error: com/toolazydogs/lua4j/LuaWalker.g : java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 64
Regards,
Alan
On Nov 30, 2011, at 5:12 PM, Jim Idle wrote:
> Your tree, parser, lexer are out of sync and the token numbers have
> therefore changed. Regen lexer, parser, then walker. If you use Maven then
> this will be avoided.
>
> Jim
>
>
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Alan D. Cabrera
> Sent: Tuesday, November 29, 2011 9:26 PM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] Has anyone seen this kind of stack trace?
>
> 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:64
> 5)
> 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(DefaultBuild
> PluginManager.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(Li
> fecycleModuleBuilder.java:84)
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Li
> fecycleModuleBuilder.java:59)
> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(L
> ifecycleStarter.java:183)
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStar
> ter.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(DelegatingMethodAccessorIm
> pl.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(Launche
> r.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=.)
> ;
>
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
More information about the antlr-interest
mailing list