Es ist schon etwas her aber dennoch einen kurzen Eintrag hier sicher wert.
Ragel habe ich für ein Experiment (ist SVG als 2D Szenengraph Format für piccolo2d machbar?) benutzt um einige Parser zu bauen.
Als Vorlage dienten die
BNF Grammatiken direkt aus der W3C SVG Spezifikation. Nachdem der erste funktionsfähige Stand erreicht war habe ich noch ein anderes Projekt entdeckt, das genau dasselbe Problem ebenfalls mit Ragel gelöst hat und mich von deren Ansatz Mehrdeutigkeiten aufzulösen inspirieren lassen.
Schön ist dabei
- BNF Grammatiken direkt verwerten (die vom W3C mußten fast nur von unten nach oben umgedreht werden),
- dadurch glasklare Definition der erlaubten formalen Sprache,
- keinerlei Abhängigkeiten von irgendwelchen Libs,
- irre schneller Parser-Code,
- Ragel läuft auf zig Systemen,
- Ragel spuckt aktuell C, C++, Objective-C, C#, D, Java und Ruby aus,
- wird von richtig hellen Köpfen benutzt (nette Beispiele im Netz),
- und die Doku taugt auch noch was!
Für die Ruby Freunde unter uns gibt’s auch einen speziellen netten Blog Eintrag.