【发布时间】:2021-11-29 04:17:51
【问题描述】:
我正在尝试为我正在处理的项目实现 ANTLR4,并使用 ANTLR4 工具为 JavaScript 创建了 Python3 解析器。问题是当我尝试运行代码时,会出现以下错误: TypeError: Assignment to constant variable.
TypeError: Assignment to constant variable.
这段代码如下: Assignment
let old_lexer = Python3Lexer;
Python3Lexer = function () {
old_lexer.apply(this, arguments);
this.reset.call(this);
}
Python3Lexer 是一个类。
我正在使用 ANTLR 4.9.2 和 ECMAScript 5.1(但我真的不知道这个是否在运行,也许它是默认版本)。
我真的不明白那个作业是什么意思,我也不知道它是否可以用其他方式来写。
提前致谢。
【问题讨论】:
-
请在您的问题中包含相关代码sn-ps,而不是包含外部图片。
-
@WiktorZychla 谢谢你,我已经添加了代码,不便之处敬请见谅。
-
Python3Lexer是如何创建的?是JS类吗? -
@yccteam 我认为它是一个 JS 类,但实现使用 ES(我对 ES 不是很熟悉 :( 但 ANTLR4 的文档说它使用 ES5.1)。声明是如下: export default class Python3Lexer extends antlr4.Lexer { .. constructor(input) { ... let old_lexer = Python3Lexer; Python3Lexer = function () { ... } .. Python3Lexer.prototype.emitToken = function(token) { this._token = token; this.token_queue.push(token); }; .. } .. }
-
@Daltimus 你的意思是代码被转译成ES5.1吗?可能
class语法被转换为类似:const Python3Lexer = function() {}。您可以访问转译的代码吗?
标签: javascript antlr4 ecmascript-5