[英]How to implement Backus-Naur Form in Python
我知道已經有一些與 Python 中的 BNF(Backus-Naur 形式)語法相關的模糊類似的問題,但沒有一個對我的應用程序有太大幫助。
我有多個需要為其編寫代碼的 BNF。 代碼應該能夠使用 BNF 語法生成和識別合法字符串。
我正在使用的第一個 BNF 適用於 Python 中的所有實數。 如下:
<real number> ::= <sign><natural number> |
<sign><natural number>'.'<digit sequence> |
<sign>'.'<digit><digit sequence> |
<sign><real number>'e'<natural number>
<sign> ::= ‘’ | ‘+’ | ‘-‘
<natural number> ::= ‘0’ | <nonzero digit><digit sequence>
<nonzero digit> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<digit sequence> ::= ‘’ | <digit><digit sequence>
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
我為 Python 找到的任何 BNF 解析器似乎都非常復雜,或者使用外部庫。 有沒有更簡單的方法來檢查和使用 Python 中的 BNF 語法生成?
看看https://github.com/erikrose/parsimonious
Parsimonious 的目標是成為用純 Python 編寫的最快的任意前瞻解析器——也是最有用的。 它基於解析表達式語法 (PEG),這意味着您可以為其提供一種簡化的 EBNF 符號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.