为您自己的领域特定语言构建抽象语法树解析器
pyastbuilder
是一个用于构建解析器的 python 框架,它构造一个反映该语言的抽象语法树(AST) 的对象树,可以通过 python 方式导航、搜索和修改。包中包含一个示范性示例:W3C SPARQL 语言的解析器,即sparqlparser.py
,它实现了 Sparql v1.1。然而,任何其他 BNF 指定的语言都可以得到简化。
存在许多特定或通用解析器,但是开发pyastbuilder
的原因是解析通常被认为是一种流式动态过程,其中存在多个可以附加自己的代码的钩子,而不是生成静态、抽象语法电子“文档”的树,具有用于访问其进行后解析处理的 API。
有关实际解析的繁重工作留给了 pyparsing,它已被包含并广泛使用。
我们遵循我们的以下
设计原则:具有预测性。为文档的位置定义明确的标准。文档的哪些部分放在自述文件中,哪些部分可以在 wiki 页面上找到,以及哪些信息作为注释放在代码中?定义并记录您的文档标准,最好是在您的用户或开发人员将访问的主要文档中,这可能是项目的 README.md 文件。
因此,我们遵循以下有关文档的标准:
pyastparser
相关的源代码文件的所有描述都将记录为源树的每个文件夹中的 README.md 文件。pyastbuilder
设计文档以及所有详细的、特定于代码的文档在整个源代码中以 reStructuredText (reST) 标记语法的形式提供。由于此类文档遵循 python pydoc 的约定,因此可以生成相应的 HTML 页面。通过将浏览器指向文件Doc/build/html/index.html
( TODO ) 构建 HTML 后即可使用该文档。这些将包含涉及树的特定部分中可用的源代码的通用设计的文档部分。本文档面向项目开发人员,旨在让他们全面了解:
维基文档的完整概述可以在维基主页上找到。可以解释以下条目:
sparqlparser
作为库的描述、操作方法和模式,以及将来可能提供的任何其他开箱即用的xxxparser
项目。由于任何其他xxxparser
将基于同一个项目,因此我们可以安全地假设从sparqlparser
中找到许多对非常相似甚至相同用例的引用。xxxparser
时,请与此项目共享,并在我们的用户手册中提供有关此解析器使用的您自己的章节。但是:不要重复文档,而是使用sparqlparser
手册作为参考手册。 请阅读 CONTRIBUTING.md 了解有关我们的行为准则以及向我们提交拉取请求的流程的详细信息。
我们使用 SemVer 进行版本控制。有关可用版本,请参阅此存储库上的标签。
另请参阅参与该项目的贡献者列表。
该项目已获得 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件