2015-07-01 15 views
8

Mi piacerebbe scrivere un parser semplice in Perl che fornisce principalmente un ulteriore livello su una lingua esistente. Stavo guardando Parse::Yapp, Parse::Lex o anche Marpa::R2, ma l'unico esempio concreto è sempre lo stesso: una semplice calcolatrice che fa 43 * 8 + 1. Non riesco a trovare facilmente altri esempi quindi mi chiedo se questi pacchetti siano ancora una buona scelta per implementare un parser.Are Parse :: Yapp, Parse :: Lex o Marpa :: R2 ancora usato?

Sono Parse::Yapp, Parse::Lex o Marpa::R2 ancora una buona soluzione su un approccio hand-rolled?

Dove posso trovare altri esempi e documentazione su questi moduli? Le pagine CPAN sono in genere piuttosto vuote

+1

Controllare i collegamenti [qui] (https://github.com/choroba/marpa-enhanced-calculator) per esempi non calcolati su [Marpa :: R2] (http : //p3rl.org/Marpa :: R2) . – choroba

+1

Prova qualcosa come 'calc.pl 'a = 43 b = 3 * 8; stampa a + b''. Ma il punto era mostrare gli altri link :-) – choroba

+0

Ho aggiornato il codice in GitHub per accettare l'input senza un separatore finale. – choroba

risposta

1

Marpa :: R2 è in uso pesante e crescente. IBM ne pubblicizza il loro uso: https://www.ibm.com/developerworks/community/blogs/jalvord/entry/sitworld_itm_situation_audit?lang=en Metacpan elenca ~ 30 dipendenze dirette e ci sono dipendenze indirette da quelle. Esistono parser open source C, ECMAScript. Sul sito Web sono presenti altre informazioni: http://savage.net.au/Marpa.html#Applications

+1

Da questo [studio] (http://drops.dagstuhl.de/opus/volltexte/2012/3513/pdf/6.pdf) Marpa sembra piuttosto inefficiente – nowox

+1

Annotare la data; che si tratta di una versione precedente di Marpa, Marpa :: XS; e i caveat metodologici. Alberto è stato così gentile da condividere il suo articolo con me prima della pubblicazione e ha ispirato molti dei cambiamenti apparsi su Marpa :: R2. –