2016-07-23 18 views
-1

Ich habe eine Grammatik erstellt und die entsprechenden JavaScript-Zieldateien mit IntelliJ generiert.Listener in JavaScript Ziel nicht ausgeführt

Der Parsing-Prozess scheint gut zu funktionieren, weil ich Fehler (oder keine Fehler) aufgrund der angehängten Fehler Listener erhalten.

Aber ich kann meinen benutzerdefinierten Listener nicht zum Laufen bringen. Ich mag die Sprache in einem anderen verwandeln, aber der Hörer wird ignoriert:

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); 

Und hier ist der Code für den Hörer (nur einige Funktionen jetzt implementiert):

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); 
} 

Was bin ich recht jetzt?

Antwort

0

Ich habe das Problem gefunden.

Ich hatte gerade nicht den Listener generiert, aber ich tat es (der Besucher wurde nur generiert).

Und die Zeile:

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

wurde inklusive aller notwendigen Anrufe an die Basis Hörer fehlt.

Funktioniert jetzt sehr gut.