我知道已经有一些与 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 语法进行检查和生成?