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;
缺少对基本侦听器的所有必要调用。
现在工作得很好。
我已经创建了语法并使用 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;
缺少对基本侦听器的所有必要调用。
现在工作得很好。