Wiem, że istnieje kilka niejasno podobnych pytań związanych już z gramatykami BNF (Backus-Naur Form) w Pythonie, ale żaden z nich nie pomaga mi w zakresie mojej aplikacji.Jak zaimplementować formularz Backus-Naur w Pythonie
Mam wiele BNF, które muszę wpisać kod. Kod powinien umożliwiać generowanie i rozpoznawanie ciągów prawnych za pomocą gramatyki BNF.
Pierwszy BNF, z którym pracuję, dotyczy wszystkich liczb rzeczywistych w języku Python. Jest to w następujący sposób:
<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
Wszelkie Parsery BNF znalazłem dla Pythona wydają się niezwykle skomplikowane, lub korzystać z bibliotek zewnętrznych. Czy istnieje jakiś prostszy sposób sprawdzenia i generowania za pomocą gramatyki BNF w Pythonie?
BNF == Backus postaci normalnej? Dla tych z nas, którzy nie bawią się codziennie analizatorami gramatyki. – Ben
@Ben tak, masz rację. Przepraszam, że nie wyjaśniam, będę edytować post. – Jakemmarsh
Szukasz czegoś, co sparsuje plik BNF, aby wygenerować gramatykę/lexer lub coś, co możesz napisać w Pythonie, aby opisać go jako odpowiednik BNF? –