So che ci sono alcune domande vagamente simili relative alle grammatiche BNF (Backus-Naur Form) in Python, ma nessuna di queste mi aiuta molto in termini di applicazione.Come implementare il modulo Backus-Naur in Python
Ho più BNF di cui ho bisogno per scrivere il codice. Il codice dovrebbe essere in grado sia di generare che riconoscere stringhe legali usando la grammatica BNF.
Il primo BNF con cui sto lavorando è per tutti i numeri reali in Python. E 'come segue:
<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
Qualsiasi parser BNF che ho trovato per Python sembrano straordinariamente complesso oppure usa le librerie esterne. C'è un modo più semplice per controllare e generare usando la grammatica BNF in Python?
BNF == Backus Normal Form? Per quelli di noi che non scherzano con parser di grammatica ogni giorno. – Ben
@ Ben sì, hai ragione. Scusa per non aver chiarito, modifico il post – Jakemmarsh
Stai cercando qualcosa che analizzerà un file BNF per generare una grammatica/lexer o qualcosa che puoi scrivere in Python per descriverle un equivalente di BNF? –