Знам, че вече има някои смътно подобни въпроси, свързани с BNF (Backus-Naur Form) граматики в Python, но никой от тях не ми помага много по отношение на моето приложение.
Имам множество 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
Всички анализатори на BNF, които намерих за Python, изглеждат изключително сложни или използват външни библиотеки. Има ли по-прост начин за проверка и генериране с помощта на BNF граматика в Python?
ast
иtokenize
библиотеки - person Jon Clements♦   schedule 24.12.2012