Javascript 节点JS中Java8的ANTLR 4堆外

Javascript 节点JS中Java8的ANTLR 4堆外,javascript,java-8,out-of-memory,antlr4,abstract-syntax-tree,Javascript,Java 8,Out Of Memory,Antlr4,Abstract Syntax Tree,我正在尝试解析Java8文件,并使用Antlr4创建一个AST,所有这些文件都在Javascript/NodeJS中。除了实际的AST建设外,一切似乎都进展顺利。当我调用parser.compileationunit()(这似乎是Java8 antlr语法中的开始规则)时,程序直到最终耗尽堆时才会终止 以下是我迄今为止所做的工作: 我使用以下方法生成了Java8 antlr文件: antlr4-Dlanguage=JavaScript Java8.g4-visitor 我按照以下指南创建了字符、

我正在尝试解析Java8文件,并使用Antlr4创建一个AST,所有这些文件都在Javascript/NodeJS中。除了实际的AST建设外,一切似乎都进展顺利。当我调用
parser.compileationunit()
(这似乎是Java8 antlr语法中的开始规则)时,程序直到最终耗尽堆时才会终止

以下是我迄今为止所做的工作:

我使用以下方法生成了Java8 antlr文件:

antlr4-Dlanguage=JavaScript Java8.g4-visitor

我按照以下指南创建了字符、lexer、令牌和解析器:

const input=JavaExampleFile.code
const chars=new antlr4.InputStream(输入)
const lexer=newjava8lexer.Java8Lexer(chars)
const tokens=new antlr4.CommonTokenStream(lexer)
const parser=new Java8Parser.Java8Parser(令牌)
parser.buildParseTrees=true
const tree=parser.compliationunit()
现在,当我调用
consttree=parser.compliationunit()
时,问题就出现了。在语法中,编译单元定义如下:

compilationUnit
    :   packageDeclaration? importDeclaration* typeDeclaration* EOF
    ;
似乎是
typeDeclaration
导致了这个问题。有趣的是一切都可以在Java中正常工作,但在Java8中却不行。

还有其他人处理过这个问题吗?任何帮助都将不胜感激