首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3LexerBase python文件在ANTLR4中有吗?

Python3LexerBase python文件在ANTLR4中有吗?
EN

Stack Overflow用户
提问于 2022-03-18 19:42:10
回答 1查看 140关注 0票数 0

我为Python3 这里找到了一个ANTLR语法,下载了它,并使用Pycharm中的ANTLR插件生成了ANTLR识别器(插件版本1.17,包含ANTLR运行时4.9.1)。

生成的模块之一是Python3Lexer.py。这个类导入顶部附近的称为Python3LexerBase的东西(大概是另一个Python模块),但是我还没有找到一个叫做Python3LexerBase的python模块。

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

代码语言:javascript
复制
    def NEWLINE_sempred(self, localctx:RuleContext, predIndex:int):
        if predIndex == 0:
            return this.atStartOfInput()

this.atStartOfInput()看起来非常Javaish。

我找到了一个Python3LexerBase.java类这里,因此它似乎试图从Python调用一个Java类。

Go中有一个关于相同基类的非常相似的螺纹,其中表示在Python中有或可能有一个基类。

有没有人知道:

  • 为什么它(表面上)试图从Python调用Java代码?
  • 在某个地方是否有一个Python3LexerBase模块,还是我需要自己实现它?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-19 09:36:18

用于词汇者和解析器的基类通常是用生成的文件的目标语言编写的,因此它们不属于语法本身(如果没有包含目标动作代码,语法本身就是目标语言不可知论的)。但是通常附近至少有一个实现,用于特定的目标语言,您必须自己将其移植到您的语言(这里是Python),当然,除非这个实现符合您的需要。

如果一种语言被足够多的人使用,那么随着时间的推移,通常会提供一个基本的实现,就像Python语法所发生的那样。但是,正如@ for 76已经提到的那样,对于作为目标的Python来说,这种情况还没有发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71532399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档