2015-07-01 5 views
8

Ich möchte einen einfachen Parser in Perl schreiben, der hauptsächlich eine zusätzliche Ebene über einer bestehenden Sprache bietet. Ich sah Parse::Yapp, Parse::Lex oder sogar Marpa::R2, aber das einzige konkrete Beispiel ist immer das gleiche: ein einfacher Rechner, der 43 * 8 + 1 tut. Ich kann nicht leicht andere Beispiele finden, also frage ich mich, ob diese Pakete immer noch eine gute Wahl sind, um einen Parser zu implementieren.Werden Parse :: Yapp, Parse :: Lex oder Marpa :: R2 noch verwendet?

Sind Parse::Yapp, Parse::Lex oder Marpa::R2 immer noch eine gute Lösung über einen hand-rolled Ansatz?

Wo finde ich weitere Beispiele und Dokumentationen zu diesen Modulen? Die CPAN-Seiten sind normalerweise ziemlich leer

+1

Überprüfen Sie die Links [hier] (https://github.com/choroba/marpa-enhanced-calculator) für Nicht-Rechner Beispiele auf [Marpa :: R2] (http : //p3rl.org/Marpa :: R2) . – choroba

+1

Versuchen Sie etwas wie 'calc.pl 'a = 43 b = 3 * 8; drucke a + b''. Aber der Punkt war, die anderen Links zu zeigen :-) – choroba

+0

Ich aktualisierte den Code in GitHub, um die Eingabe ohne ein abschließendes Trennzeichen zu akzeptieren. – choroba

Antwort

1

Marpa :: R2 in schweren und zunehmenden Einsatz ist. IBM wirbt für ihre Verwendung: https://www.ibm.com/developerworks/community/blogs/jalvord/entry/sitworld_itm_situation_audit?lang=en Metacpan-Listen ~ 30 direkte Abhängigkeiten und es gibt indirekte Abhängigkeiten von diesen. Es gibt Open-Source-C, ECMAScript-Parser. Es gibt mehr Sachen, die auf der Website aufgelistet sind: http://savage.net.au/Marpa.html#Applications

+1

Aus dieser [Studie] (http://drops.dagstuhl.de/opus/volltexte/2012/3513/pdf/6.pdf) sieht Marpa ziemlich ineffizient aus – nowox

+1

Beachten Sie das Datum; dass es um eine frühere Version von Marpa, Marpa :: XS geht; und die methodologischen Vorbehalte. Alberto war gnädig genug, seine Arbeit vor der Veröffentlichung mit mir zu teilen, und er inspirierte viele der Änderungen, die in Marpa :: R2 erschienen. –