首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANTLR 4 Python文档

ANTLR 4 Python文档
EN

Stack Overflow用户
提问于 2016-05-16 19:40:54
回答 2查看 1.8K关注 0票数 0

我对antlr 4非常陌生,我的目标语言是PYTHON2。我不能理解python中的CommonTokenStream以及如何访问antlr4中的令牌。我所需要的是访问隐藏通道中的令牌?请告诉我一些合适的文档,在那里我可以了解如何访问令牌并在python中操作它们。如果问题含糊,我很抱歉,我是新来的。

EN

回答 2

Stack Overflow用户

发布于 2016-05-31 14:23:40

ANTLR的书就是其中之一。https://pragprog.com/book/tpantlr2/the-definitive-antlr-4-reference

在第12章“挥舞词汇黑魔法”中,有“访问隐藏通道”一节。使用TokenStreamRewriter重写令牌。

您需要在心理上将书中的Java代码转换为Python代码。运行时库有细微的差异,但它们实际上是相同的。

这不是唯一的方法。您可以覆盖lexer的emit()函数(我通常这样做)。然后,您可以完全控制令牌路由。

票数 0
EN

Stack Overflow用户

发布于 2018-08-31 16:41:06

如果您使用的是python 3,那么所有的东西都做得很好,而且已经准备好了。

https://github.com/jszheng/py3antlr4book

对于一些Python启动提示,请尝试

https://github.com/antlr/antlr4/blob/master/doc/python-target.md

如果您正在使用Anaconda3\Lib\site-packages\antlr4_python3_runtime-4.7.1-py3.6.egg\antlr4,请尝试导入所有*.py注释(#)的def类的Anaconda3

或者甚至编写一个ANTLR脚本来创建python文档,并与我和整个世界分享

此外,在运行时,这有助于查看CTX对象中的方法和属性。

代码语言:javascript
复制
def dump(obj):
  for attr in dir(obj):
    print("obj.%s = %r" % (attr, getattr(obj, attr)))

        print("-------------------------------------------")
        dump(ctx)
        print("===========================================")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37253087

复制
相关文章

相似问题

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