私は現在、GrammarのANTLR4ジャバスクリプトリスナーを開発中です。 >(ANTLR4 JavaScriptターゲットが非常に遅い
import codescape.Dogbot;
public class MyDogbot extends Dogbot{
public void run() {
turnLeft();
move();
}
}
同じ文法とJavaで同じリスナーが速く、多くのことを行います。
var _require = require;
var antlr = _require('./antlr4/index');
var javaLexer = _require('./generated/JavaLexer');
var javaParser = _require('./generated/JavaParser');
var javaListener = _require('./generated/JavaListener');
declare function require(name:string);
class CodeAnalysis {
input: String;
constructor(input:String) {
this.input = input;
this.antlrStack();
}
private antlrStack() {
console.log(this.input);
var chars = new antlr.InputStream(this.input);
var lexer = new javaLexer.JavaLexer(chars);
var tokens = new antlr.CommonTokenStream(lexer);
var parser = new javaParser.JavaParser(tokens);
var listener = new javaListener.JavaListener();
parser.buildParseTrees = true;
var tree = parser.compilationUnit();
antlr.tree.ParseTreeWalker.DEFAULT.walk(listener, tree);
}
public getInput() {
return this.input;
}
}
問題は、パフォーマンスが非常に悪いです。このような入力を(2分を引き継ぐ)ということです2秒)。
誰かアイデアなぜですか?またはそれを修正する方法?
ブルーノ
ANTLR4を使用してJSターゲットパーサーも実行しています。それは通常遅いですが、それは耐え難いほど遅くはありません。私が苦しんでいるときに遭遇するのは、何とか文法を変更することで、スピードが大幅に向上します。 – yoshi
は同じ問題に直面しています。 javascript antlr4を解析するのは、java antlr4よりはるかに遅いです。 –