Ich hatte mal wieder etwas Langeweile und wollte ein wenig mehr Python lernen. Also hab ich mich mal damit beschäftigt, wie das mit Parsing in Python so aussieht. Ich bin ja in C++ von boost::Spirit recht angetan und hab sowas ähnliches für Python gesucht. Das, was dem noch am nächsten kommt, ist pyparsing. Leider hat dieses einen gravierenden (aus meiner Sicht) Nachteil: es scheint nicht möglich zu sein, den Parser dazu zu bringen, Whitespaces NICHT zu ignorieren. Dummerweise brauchte ich das aber für die selbstgestellte Aufgabe an einigen Stellen...
Wie der geneigte Informatiker dann so ist, schreibt er sich den Kram halt selbst und lernt noch was dabei. Rausgekommen ist yeanpypa (bevor einer fragt: YEt ANother PYthon PArser framework. Hat da wer gelacht?!), ein kleines Framework, mit dem sich eine EBNF-Grammatik fast 1:1 in Python-Code übertragen läßt. Die Schnittstelle ist zum Teil bei pyparsing und zum Teil bei boost::Spirit abgeschaut. Das ganze dürfte noch einige Fehler haben, aber erscheint mir bisher schon ganz brauchbar. Der Code steht wieder mal unter einer public domain Lizenz, kann also vollkommen frei verwendet werden. Natürlich freue ich mich über eine kurze Nachricht, wenn jemand damit irgendwas tut.
So, zuguterletzt noch die passenden Links:
Download (yeanpypa.py runterladen)
Einführende Doku (Englisch). Leider alles andere als vollständig. Vielleicht irgendwann mehr...
Vollständige API-Doku. Generiert mit Epydoc.