我得到了HTML语法并创建了一个解析器。目标是JavaScript。
我的听众看起来像这样:
const HTMLParserListener = require('./antlr_output_html/HTMLParserListener').HTMLParserListener;
MyHtmlListener = function(res) {
this.Res = res;
HTMLParserListener.call(this); // inherit default listener
return this;
};
MyHtmlListener.prototype = Object.create(HTMLParserListener.prototype);
MyHtmlListener.prototype.constructor = MyHtmlListener;
// Enter a parse tree produced by HTMLParser#htmlElement.
HTMLParserListener.prototype.enterHtmlElement = function(ctx) {
console.log("ELEMENT");
ctx.children.forEach(child => {
// console.log(child);
console.log(child.getText());
console.log();
console.log();
});
};
// Enter a parse tree produced by HTMLParser#htmlAttribute.
HTMLParserListener.prototype.enterHtmlAttribute = function(ctx) {
console.log("Attribute");
ctx.children.forEach(child => {
// console.log(child);
console.log(child.getText());
console.log();
console.log();
});
};
exports.MyHtmlListener = MyHtmlListener;
如何在侦听器函数中获取令牌类型?
问题在于,即使将标签定义为标记(TAG_OPEN,TAG_CLOSE,...),也没有特定于打开和关闭标签的方法。