ANTLR 4 Python Documentation



我是antlr 4的新手,我的目标语言是PYTHON2。我无法理解python中的CommonTokenStream,也无法理解如何访问antlr 4中的令牌。我需要的是访问隐藏通道中的令牌?请有人给我指一些合适的文档,让我了解如何在python中访问令牌和操作它们。如果问题含糊不清,我很抱歉,我是新来的。

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

在第12章"Wielding Lexical Black Magic"中,有"访问隐藏通道"部分。使用TokenStreamRewriter重写令牌。

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

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

如果你在python 3上,它都做得很好,煮熟了,准备好了

https://github.com/jszheng/py3antlr4book

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

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

如果您使用的是Anaconda3,请尝试所有*.py的类定义导入注释(#)的egrpAnaconda3\Lib\站点包\antlr4_python3_runtime-4.7.1-py3.6.egg\antlr4

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

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

def dump(obj):
  for attr in dir(obj):
    print("obj.%s = %r" % (attr, getattr(obj, attr)))
        print("-------------------------------------------")
        dump(ctx)
        print("===========================================")

相关内容

  • 没有找到相关文章

最新更新