為您自己的領域特定語言建立抽象語法樹解析器
pyastbuilder
是用來建構解析器的 python 框架,它建構一個反映該語言的抽象語法樹(AST) 的物件樹,可以透過 python 方式導航、搜尋和修改。套件中包含一個示範性範例:W3C SPARQL 語言的解析器,即sparqlparser.py
,它實作了 Sparql v1.1。然而,任何其他 BNF 指定的語言都可以簡化。
存在許多特定或通用解析器,但是開發pyastbuilder
的原因是解析通常被認為是一種流式動態過程,其中存在多個可以附加自己的代碼的鉤子,而不是生成靜態、抽象語法電子“文檔”的樹,具有用於存取其進行後解析處理的API。
有關實際解析的繁重工作留給了 pyparsing,它已被包含並廣泛使用。
我們遵循我們的以下
設計原則:具有預測性。為文檔的位置定義明確的標準。文件的哪些部分放在自述文件中,哪些部分可以在 wiki 頁面上找到,以及哪些資訊放在程式碼中?定義並記錄您的文件標準,最好是在您的使用者或開發人員將存取的主要文件中,這可能是專案的 README.md 檔案。
因此,我們遵循以下有關文件的標準:
pyastparser
相關的原始碼檔案的所有描述都將記錄為來源樹的每個資料夾中的 README.md 檔案。pyastbuilder
設計文件以及所有詳細的、特定於程式碼的文檔在整個原始程式碼中以 reStructuredText (reST) 標記語法的形式提供。由於此類文件遵循 Pythonon pydoc 的約定,因此可以產生相應的 HTML 頁面。將瀏覽器指向檔案Doc/build/html/index.html
( TODO ) 建置 HTML 後即可使用該文件。這些將包含涉及樹的特定部分中可用的原始程式碼的通用設計的文檔部分。本文檔面向專案開發人員,旨在讓他們全面了解:
維基文檔的完整概述可以在維基主頁上找到。可以解釋以下條目:
sparqlparser
as library in your own python code, as well as any other out-of-the-box xxxparser
that might be provided in the future of this專案.由於任何其他xxxparser
將基於同一個項目,因此我們可以安全地假設從sparqlparser
中找到許多對非常相似甚至相同用例的引用。xxxparser
時,請與此項目共用,並在我們的使用者手冊中提供有關此解析器使用的您自己的章節。但是:不要重複文檔,而是使用sparqlparser
手冊作為參考手冊。 請閱讀 CONTRIBUTING.md 以了解有關我們的行為準則以及向我們提交拉取請求的流程的詳細資訊。
我們使用 SemVer 進行版本控制。有關可用版本,請參閱此儲存庫上的標籤。
另請參閱參與專案的貢獻者清單。
該項目已獲得 MIT 許可證 - 有關詳細信息,請參閱 LICENSE.md 文件