JavaScript 目标中的侦听器未执行

Listener in JavaScript Target not Executed

我已经创建了语法并使用 IntelliJ 生成了适当的 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);
}

我现在缺少什么?

我发现了问题。

我只是没有生成监听器,但我生成了(只生成了访问者)。

还有一行:

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

缺少对基本侦听器的所有必要调用。

现在工作得很好。