Python の BNF (Backus-Naur Form) 文法に関連する漠然とした同様の質問が既にいくつかあることは知っていますが、アプリケーションに関してはどれもあまり役に立ちません。
コードを記述する必要がある複数の 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文法を使用してチェックして生成する簡単な方法はありますか?