Ich weiß, es gibt einige vage ähnliche Fragen bereits in Bezug auf BNF (Backus-Naur Form) Grammatiken in Python, aber keiner von ihnen hilft mir viel in Bezug auf meine Anwendung.Wie man Backus-Naur Form in Python implementiert
Ich habe mehrere BNFs, für die ich Code schreiben muss. Der Code sollte in der Lage sein, legale Strings unter Verwendung der BNF-Grammatik sowohl zu generieren als auch zu erkennen.
Die erste BNF, mit der ich arbeite, ist für alle reellen Zahlen in Python. Es ist wie folgt:
<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
Alle BNF-Parser ich für Python gefunden haben scheinen außerordentlich komplex oder außerhalb Bibliotheken. Gibt es einen einfacheren Weg, um mit BNF-Grammatik in Python zu überprüfen und zu generieren?
BNF == Backus-Normalform erzeugen würde? Für diejenigen von uns, die nicht täglich mit Grammatikparsern herumspielen. – Ben
@Ben ja, du hast Recht. Entschuldigung für die Unklarheit, ich werde den Beitrag bearbeiten – Jakemmarsh
Suchen Sie nach etwas, das eine BNF-Datei analysieren wird, um eine Grammatik/Lexer oder etwas zu generieren, das Sie in Python schreiben können, um ihm ein Äquivalent von BNF zu beschreiben? –