2016-07-23 8 views
-1

私は文法を作成し、IntelliJで適切なJavaScriptターゲットファイルを生成しました。JavaScriptターゲットのリスナーが実行されていません

添付されているエラーリスナーによってエラーが発生するため、解析プロセスが正常に動作しているようです。

しかし、カスタムリスナーを起動して実行できません。私は別のものに言語を変換したいが、リスナーは無視されます:

var chars = new antlr4.InputStream(this.test); 
var lexer = new dnpMDLexer.dnpMDLexer(chars); 
var tokens = new antlr4.CommonTokenStream(lexer); 
var parser = new dnpMDParser.dnpMDParser(tokens); 
parser.buildParseTrees = true; 
parser.removeErrorListeners(); 
var errors = []; 
var errorListener = new ErrorListener(errors); 
parser.addErrorListener(errorListener); 

var tree = parser.dnpMD(); 
var listener = new DnpMDListener(); 
antlr4.tree.ParseTreeWalker.DEFAULT.walk(listener, tree); 

そして、ここでは、リスナーのコードだ(ただ、一部の機能は今の実装):

var dnpMDParserListener = require('./lib/dnpMD/dnpMDParserListener.js').dnpMDParserListener; 

var DnpMDListener = function() { 
    dnpMDParserListener.call(this); 
    return this; 
}; 

DnpMDListener.prototype = Object.create(dnpMDParserListener.prototype); 
DnpMDListener.prototype.constructor = DnpMDListener; 

DnpMDListener.prototype.enterDnpMD = function(ctx) { 
    console.log("dnp: " + ctx); 
} 

DnpMDListener.prototype.enterHead = function(ctx) { 
    console.log("Head: " + ctx); 
} 

DnpMDListener.prototype.enterHeadline = function(ctx) { 
    console.log("Headline: " + ctx); 
} 

私は右の何をしないのです今?

答えて

0

問題が見つかりました。

私はリスナーを生成していませんでしたが、私はしましたが(訪問者は生成されました)。

そして、そこのライン:

var dnpMDParserListener = require('./dnpMDParserListener').dnpMDParserListener; 

がベースリスナーに必要なすべての呼び出しを含む欠落していました。

今すぐ完全に機能します。

関連する問題