Secondo la documentazione di Vala: "Prima di 0.3.1, il parser di Vala era il classico scanner per scanner flex e Bison LALR, ma a partire da commit eba85a, il parser è un parser di discesa ricorsivo realizzato a mano." La mia domanda è: perché?Perché alcuni compilatori preferiscono il parser fatto a mano sui generatori di parser?
La domanda può essere indirizzata a qualsiasi compilatore che non stia utilizzando il generatore di parser. Quali sono i pro e i contro per tale passaggio dal parser generator al parser fatto a mano? Quali sono gli svantaggi dell'utilizzo di generatori di parser (Bison, ANTLR) per i compilatori?
Come commento a parte: sono interessato a Vala in particolare perché mi piace l'idea di avere un linguaggio con funzionalità moderne e sintassi pulita ma compilabile in linguaggio di alto livello "nativo" e "non gestito" (C in caso di Vala). Ho trovato solo Vala finora. Sto pensando di divertirmi facendo compilare Vala (o un linguaggio simile) in C++ (supportato da Qt libs). Ma dal momento che non voglio inventare un linguaggio completamente nuovo, sto pensando di prendere una grammatica esistente. Ovviamente i parser fatti a mano non hanno una grammatica formale scritta che potrei riutilizzare. I tuoi commenti su questa idea sono ben accetti (l'intera idea è sciocca?).
Hai chiesto a Jürg Billeter (autore del commit)? –
Hmmm, no, non l'ho fatto. Proverò a raggiungerlo. Sto cambiando il titolo della mia domanda per renderlo più generale. – vladimir
Probabilmente un parser può essere fatto per essere più veloce/più efficiente in termini di spazio, dal momento che non deve essere generico e può essere in grado di utilizzare trucchi più specifici. – Patashu