2016-07-23 33 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; 

失蹤包括基礎監聽所有必要的調用。

現在工作得很好。