Imparare YACC al giorno d'oggi, ha senso? [chiuso]

3

Ho un enorme progetto che utilizza YACC e dovrei risolvere un bug in esso.

Potrei chiedere a qualcun altro che l'ha scritto di correggerlo, ma sono interessato a come funzionano i compilatori. Oggigiorno ha senso imparare YACC? Mi è stato detto che è vecchio e obsoleto. Mi piacerebbe capire come funzionano i compilatori / llvm e altre cose simili ... e YACC?

    
posta Makane Elhay 22.07.2013 - 13:29
fonte

2 risposte

6

YACC ti aiuta con un passo della pipeline: creare un parser per una specifica grammatica. Ci sono molti altri modi per fare questo passo. Ci sono un sacco di generatori di parser disponibili, oppure puoi scrivere manualmente il tuo parser. A seconda delle tue esigenze, ci sono molti motivi tecnici per considerare YACC obsoleto, non ultima la sua scelta limitata di linguaggi di output.

Tuttavia, non è affatto obsoleto come strumento pedagogico. Avrai bisogno di imparare i fondamenti di parser e grammatiche, non importa quale parser usi, e puoi apprenderli altrettanto facilmente usando YACC come qualsiasi altra cosa. La conoscenza si traduce molto facilmente. Ho imparato YACC a scuola, ma ho raccolto ANTLR con pochissimo sforzo.

Considera anche che è molto probabile che il tuo bug non sia nemmeno nel parser. Di solito la maggior parte dei bug del parser viene risolta molto presto nel progetto, perché hanno la tendenza a produrre fallimenti spettacolari. Gli errori più sottili tendono ad essere nei livelli a valle del parser, che non hanno nulla a che fare con YACC.

    
risposta data 22.07.2013 - 17:30
fonte
3

Non penso che YACC sia obsoleto. In un certo senso è obsoleto da bison , l'implementazione GNU, ma è retrocompatibile con la versione originale.

I grandi compilatori sembrano avere parser scritti manualmente, suppongo principalmente perché hanno bisogno di una diagnostica migliore in caso di errori di analisi di quello che fornisce il generatore di parser generico. Ma molti strumenti con linguaggio di dominio più piccolo usano bison (llvm suite build-dipende dal bison, quindi apparentemente ne ha alcuni, sebbene clang abbia scritto manualmente il parser), perché fa il lavoro rapidamente e in modo più gestibile.

    
risposta data 22.07.2013 - 16:13
fonte

Leggi altre domande sui tag