Quando "si lavora su una nuova lingua" e si tenta di ottenere un riferimento BNF corretto, probabilmente non si vuole distorcere la grammatica di riferimento verso alcun particolare generatore di parser. Uno dei problemi con la scrittura di una grammatica di test per Bison (LALR (1)) o ANTLR (LL *) è che fai esattamente questo. Inoltre, non si vuole rimanere bloccati in "come faccio a codificare le regole BNF in modo tale da renderlo effettivamente analizzato" presumibilmente perché si è interessati a lavorare sulla grammatica, non lavorando sul generatore di parser.
Quindi mi consiglia di utilizzare un generatore di parser completo di contesto libero. Questo ti permetterà di scrivere la grammatica nella forma più naturale con il minimo sforzo. Questo potrebbe significare rinunciare a "text editor", "editor test window", ... ma nella mia esperienza (controllare il mio stack overflow bio) utilizzando un generatore di parser privo di contesto sopraffare completamente quelle sottigliezze. Edit-save-parse non richiede molto impegno.
Capisco che Bison ha un'opzione GLR che fornisce generazione di parser senza contesto, ed è open source, e quindi potrebbe essere utile solo per testare la grammatica.
nostro DMS Software Reengineering Toolkit è commerciale e fornisce anche un parser GLR, che è stato utilizzato per attuare alcune 30+ linguaggi completo, compreso C, C++ e COBOL in un certo numero di dialetti e linguaggi più moderni come Python, Ruby, PHP, ....
La differenza tra DMS e Bison è che DMS è progettato per supportare tutti gli aspetti della costruzione di un analizzatore/traduttore linguistico completo (lexing Unicode, analisi GLR con segnalazione degli errori e ripristino, costruzione automatica degli alberi , costruzione di tabelle di simboli, analisi del flusso di dati e di controllo, trasformazioni, prettyprinting, ...). Se volessi valutare seriamente la tua "nuova lingua", alla fine dovrai fare tutte queste cose, e Bison è solo un piccolo passo in questa direzione. DMS ti porterà per tutto il tempo.
fonte
2010-01-16 09:41:38
Correlati: http://stackoverflow.com/questions/1800199/is-there-a-bnf-mode-for-emacs – dmckee