Python中引用OpenQASM AST
项目描述
OpenQASM 3 Python参考
《openqasm3》包包含表示OpenQASM 3程序的参考抽象语法树(AST),将文本解析为该AST的工具,以及操作AST的工具。
AST旨在帮助在Python中编写OpenQASM 3的编译器遍历。它旨在为使用Python树结构的用户不依赖任何库,将字符串解析为这种树结构的依赖性最小。
该包包括以下模块
-
openqasm3.ast
:AST节点。 -
openqasm3.parser
:基于ANTLR语法的解析器,以及在此存储库中找到的参考解析器。它遍历ANTLR解析树以生成AST。 -
openqasm3.visitor
:一个基本AST访问者和转换器。 -
tests
:一组单元测试。
注意:此参考Python包目前处于开发初期阶段,此时API的任何部分都不应被视为稳定。AST自身也将以向后不兼容的方式发生变化,反映了OpenQASM 3语言的开发。
安装
您可以使用以下命令从PyPI(pip
)安装此包
python -m pip install openqasm3
如果您想使用解析器,则需要安装额外的parser
,而要运行测试,则需要额外的tests
,例如pip install openqasm3[tests]
。所有额外组件都可以通过目标openqasm3[all]
安装。
开发环境
要进行开发,您需要拥有完整的ANTLR安装(不仅仅是运行时),以及来自主要OpenQASM存储库的ANTLR语法文件。
设置ANTLR
如果您使用Linux,则可以使用系统包管理器获取ANTLR的副本,或者从macOS上的Homebrew(brew
)获取。否则,您可以按照这些说明进行操作。请记下您安装的ANTLR版本,因为您需要确保您的antlr4-python3-runtime
版本与次要版本相匹配。
安装ANTLR后,切换到qasm3*.g4
文件所在的目录(例如,repo_root/source/grammar
),然后运行
<antlr command> -o <path to here>/openqasm3/_antlr/_<major>_<minor> -Dlanguage=Python3 -visitor qasm3Lexer.g4 qasm3Parser.g4
例如,如果此存储库已克隆到~/openqasm
,并且运行ANTLR 4.11.1的命令是antlr4
,则应运行
cd ~/openqasm/source/grammar
antlr4 -o ~/openqasm/source/openqasm/openqasm3/_antlr/_4_11 -Dlanguage=Python3 -visitor qasm3Lexer.g4 qasm3Parser.g4
您可以同时安装多个ANTLR文件版本,前提是将它们放入正确的版本目录中。当导入时,包将根据安装的antlr4_python3_runtime
版本动态选择正确的版本。
开发工具
使用以下命令安装其余的Python开发环境
python -m pip install -r requirements.txt -r requirements-dev.txt
确保antlr4-python3-runtime
的版本与ANTLR的版本完全匹配。
使用以下命令以可编辑模式安装Python包
python -m pip install -e .
项目配置为使用代码格式化器black
、代码检查器pylint
和测试器pytest
。运行这些命令的分别
black .
pylint .
pytest
部署流程
部署主要由GitHub Actions管道管理,由形式为ast-py/v<version>
的标签触发。例如,对于包版本0.4.0
,标签应为ast-py/v0.4.0
。
要部署
- 创建一个PR,将
__init__.py
和docs/conf.py
中的包版本号设置为应设置的内容。 - PR合并后,对合并提交进行标记(例如,
git fetch origin; git tag -m "Python AST 0.4.0" ast-py/v0.4.0 origin/main
)。 - 将标签推送到此存储库(例如,
git push origin ast-py/v0.4.0
)。
此时,部署管道将接管并将包部署到PyPI。您应该能够在此存储库的操作标签页中看到进度。
项目详情
下载文件
下载您平台对应的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。