用于生成基于antlr的分析器的setuptools命令。

setuptools-antlr的Python项目详细描述


Build StatusCoverage StatusPyPI VersionGitHub VersionLicense

概述

用于生成基于antlr的解析器的setuptools命令。

这是setuptools的扩展,将著名的ANTLR解析器生成器集成到python打包过程中。它封装了基于java的antlr生成器,并为用户提供一个命令来控制生成过程。

antlr的所有命令行选项也可以通过setuptools命令使用。用户可以选择在命令行上传递选项,或者在setup.cfg文件的专用部分中配置antlr。

自动检测antlr语法及其依赖项,如导入的语法或令牌文件。在执行antlr命令期间,将为每个语法生成一个python包。

安装

setuptools-antlr可以以多种方式安装。要运行它,必须满足以下先决条件:

  • Python3.5+
  • 设置工具
  • Java JRE 1.7+

源发行版已随antlr 4.7.1一起提供。不需要另外下载antlr。

安装之后,使用的python环境有一个名为antlr的新setuptools命令。

源代码

> git clone https://github.com/ferraith/setuptools-antlr.git
> cd setuptools-antlr
> pip install .

来自Pypi

> pip install setuptools-antlr

从github版本

> pip install <setuptools-antlr_wheel>

用法

积分

为了获得流畅的用户体验,建议使用setup函数的setup_requires参数传递setuptools-antlr。另外,每个生成的解析器都需要antlr运行时库,该库应该添加到install_requires参数:

setup(...setup_requires=['setuptools-antlr'],install_requires=['antlr4-python3-runtime']...)

在生成解析器之前,setuptools将自动检查python环境,并从PyPI下载setuptools-antlr。在安装项目包期间,pip将把antlr4-python3-runtime安装到python环境中。

配置

setuptools-antlr提供了两种配置antlr解析器生成器的可能性。

antlr命令之后,可以在命令行上传递antlr的所有选项:

> python setup.py antlr --visitor

还可以将多个选项传递给antlr或同时执行多个命令:

> python setup.py antlr --visitor --grammar-options "superClass=Abc tokenVocab=SomeLexer" bdist_wheel

有关可用的命令行选项,请参见python setup.py antlr --help

> python setup.py antlr --help
...
Options for 'AntlrCommand' command:
  --grammars (-g)       specify grammars to generate parsers for
  --output (-o)         specify directories where output is generated
  --atn                 generate rule augmented transition network diagrams
  --encoding            specify grammar file encoding e.g. euc-jp
  --message-format      specify output style for messages in antlr, gnu, vs2005
  --long-messages       show exception details when available for errors and
                        warnings
  --listener            generate parse tree listener (default)
  --no-listener         don't generate parse tree listener
  --visitor             generate parse tree visitor
  --no-visitor          don't generate parse tree visitor (default)
  --depend              generate file dependencies
  --grammar-options     set/override a grammar-level option
  --w-error             treat warnings as error
  --x-dbg-st            launch StringTemplate visualizer on generated code
  --x-dbg-st-wait       wait for STViz to close before continuing
  --x-force-atn         use the ATN simulator for all predictions
  --x-exact-output-dir  output goes into -o directories regardless of paths/package
  --x-log               dump lots of logging info to antlr-<timestamp>.log
...

antlr文档详细解释了所有的command line optionsgrammar options

除了在命令行上传递选项外,还可以将专用的[antlr]节添加到setup.cfg。以下示例部分包含所有可用选项:

[antlr]# Specify grammars to generate parsers for; default: None#grammars = <grammar> [<grammar> ...]# Specify directories where all output is generated; default: ./output=default=gen# Generate DOT graph files that represent the internal ATN data structures (yes|no); default: no#atn = no# Specify grammar file encoding; default: utf-8#encoding = utf-8# Specify output style for messages in antlr (antlr|gnu|vs2005); default: antlr#message-format = antlr# Show exception details when available for errors and warnings (yes|no); default: no#long-messages = no# Generate a parse tree listener (yes|no); default: yes#listener = yes# Generate parse tree visitor (yes|no); default: novisitor=yes# Generate file dependencies (yes|no); default: no#depend = no# Set/override grammar-level options (<option>=<value> [<option>=value ...]); default: language=Python3grammar-options=superClass=Abc
                  tokenVocab=SomeLexer# Treat warnings as errors (yes|no); default: no#w-error = no# Launch StringTemplate visualizer on generated code (yes|no); default: no#x-dbg-st = no# Wait for STViz to close before continuing#x-dbg-st-wait = no# All output goes into -o dir regardless of paths/package (yes|no); default: no#x-exact-output-dir = no# Use the ATN simulator for all predictions (yes|no); default: no#x-force-atn = no# Dump lots of logging info to antlr-<timestamp>.log (yes|no); default: no#x-log = no

resources目录中提供了引用配置。

样本

除了setuptools-antlr源代码之外,在samples目录中还提供了一个名为foobar的示例项目。此示例由两个antlr语法FooBar组成。在执行setuptools-antlr期间,两个python包将生成到foobar包目录中,其中包含每个语法的解析器。

要为两个语法生成解析器并构建一个foobarwheel包,请执行以下命令:

> python setup.py antlr bdist_wheel

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Bouncy Castle:从signerInfos中删除算法保护属性   java使用迭代器比递归更快地克隆BST?   Java(以及Python)中字典的最佳数据结构   JavaGoogle存储::点击“公共链接”下载文件   生成soapweb服务示例的java抛出了一个错误   在M1 Mac上运行Flatter Doctor时出错无法找到捆绑的Java版本   java Recaptcha和selenium   java在使用我的Gradle插件的Gradle项目上添加第二个源文件夹   使用OtrosVFSBrowser的java远程文件选择器   使用jaxws(Dropwizard)生成wsdl到java的web服务创建重复类   java JComboBox:希望第一个条目为空条目   java如何从两个列表中排除非单个项?   java JSP内容显示在浏览器上   java在捕获异常后继续读取文件   java服务器中没有主清单属性。罐子