Nel LLVM tutorials c'è un'istruzione su come scrivere un semplice compilatore JIT. Unfortunatelly, lexer e parser in questo tutorial sono scritti manualmente. Stavo pensando, tale soluzione è buona per scopi di apprendimento, ma non è adatta per la scrittura di compilatori complessi, pronti per la produzione. Sembra che GCC e pochi altri "grandi compilatori" siano scritti a mano. Ma penso che tutti questi generatori di parser danno una grande spinta quando si scrive il proprio compilatore (specialmente quando lo fai da solo, senza un gruppo di persone).LLVM JIT Parser scrittura con Bison/Antlr/Packrat/Elkhound/
È possibile utilizzare qualsiasi generatore di parser esistente come Bison/Antlr/Packrat/Elkhound ecc. Insieme a LLVM per creare il compilatore JIT? Voglio essere in grado di "alimentare" il parser costantemente (non una volta all'inizio) con le espressioni e compilarle in runtime.
In aggiunta Ho trovato un sacco di domande sul generatore di parser "migliore, moderno" (come questo: https://stackoverflow.com/questions/428892/what-parser-generator-do-you-recommend). Se è possibile utilizzare questi strumenti per creare il compilatore JIT LLVM, sarei grato per eventuali suggerimenti e raccomandazioni aggiuntivi, quale strumento sarebbe il migliore in termini di prestazioni e flessibilità in questo caso particolare.
"Tale soluzione è utile per scopi di apprendimento ma non è adatta per la scrittura di compilatori complessi, pronti per la produzione" - Hm. Ho sempre pensato che GCC fosse un compilatore complesso e pronto per la produzione. Qualunque cosa ... –
GCC stava usando il bisonte all'inizio, ma hai ragione - lo sto sistemando nella mia domanda. Ma davvero, mi piacerebbe usare un generatore per semplificare questo compito se è possibile. –
Semmai, direi piuttosto è vero il contrario: yacc, Bison e altri sono adatti per scopi di apprendimento e simili, ma per un serio lavoro di produzione, un parser scritto a mano può essere l'unico modo per soddisfare i requisiti. –