ANTLR4 中有 Python3LexerBase python 文件吗?

Is there a Python3LexerBase python file in ANTLR4?

我找到了 Python3 here 的 ANTLR 语法,下载了它,并使用 Pycharm 中的 ANTLR 插件生成了 ANTLR 识别器(插件版本 1.17,包含 ANTLR 运行时 4.9。 1).

其中一个生成的模块是 Python3Lexer.py。 class 在顶部附近导入了一个叫做 Python3LexerBase 的东西(大概是另一个 Python 模块),但是我没能找到一个叫做 python 的模块40=]LexerBase.

生成的 Python3Lexer 模块还包含如下函数:

    def NEWLINE_sempred(self, localctx:RuleContext, predIndex:int):
        if predIndex == 0:
            return this.atStartOfInput()

this.atStartOfInput() 看起来很 Javaish。

我找到了一个 Python3LexerBase.java class here,所以它似乎试图从 Python 调用一个 Java class .

Go 中有一个 very similar thread 关于相同的基 class,其中表明 Python 中存在或可能存在一个 Python。

有人知道吗:

词法分析器和解析器的基础 类 通常用生成文件的目标语言编写,因此它们不属于语法本身(如果没有目标操作代码,语法本身与目标语言无关)已经包括了)。但通常附近至少有一个实现,针对特定的目标语言,你必须自己将其移植到你的语言(这里Python),当然,除非这个实现符合你的需要。

如果一种语言被足够多的人使用,那么通常会随着时间的推移贡献一个基本实现,就像 Python 语法一样。但是正如@kaby76 已经提到的那样,Python 作为目标还没有发生。