Lexer.nextToken() - var tokenStartMarker = this._input.mark(



刚刚在最新的antlr上构建了一个语法,编译到java并经过测试,工作正常。

编译为 javascript 并尝试对其进行测试,但我在 Lexer 的第 111 行收到错误.js表明 var tokenStartMarker = this._input.mark(); <== .mark() 不是一个函数。

这是我的javascript代码来加载和解析语法:

var antlr4 = require('antlr4/index');
var BQLXLexer = require('grammar/BQLXLexer').BQLXLexer;
var BQLXParser = require('grammar/BQLXParser').BQLXParser;
function validatePipeline(script) {
    var chars = antlr4.InputStream(script);
    var lexer = new BQLXLexer(chars);
    var tokens = new antlr4.CommonTokenStream(lexer);
    var parser = new BQLXParser(tokens);
    parser.buildParseTrees = true;
    var ast = parser.pipeline();
    console.log(ast);
}

var ast = parser.pipeline();是最终调用词法分析器并在运行时产生错误的内容。

我已经在 JavaScript 运行时的 4.7.2 和 4.7.1 版本上进行了测试,并且都在同一行上产生了相同的错误,即 Lexer.js 的 111。

不知道这里还能尝试什么...

好的,在第 5 次查看我的代码后,我意识到我忘记了这一行的new语句:var chars = antlr4.InputStream(script); .

该行应修改为var chars = new antlr4.InputStream(script);,然后解决错误。

相关内容

  • 没有找到相关文章

最新更新