[Ebene höher] [Zurück] [Weiter] [Inhalt] [Seitenende]

Einleitung

Lucky ist, ähnlich dem yacc für C, ein Parsergenerator für Haskell 1.3. Lucky liest eine BNF-notierte Grammatikdatei ein und gibt ein Haskell-Modul aus, das den in Parserkombinatoren übersetzten Parser enthält.

Die Parserkombinatoren wurden nach [2] entwickelt und so erweitert, daß eine genaue Fehlerausgabe wie z.B. bei Parsergeneratoren wie Happy [3], dem bereits verfügbaren Parsergenerator für Haskell, möglich ist.

Lucky ist unter dem Gesichtspunkt entwickelt worden, eine Alternative gegenüber Happy zu bieten. Ein Parser in Parserkombinatoren ist in der Regel kleiner als ein konventioneller Parser wie er z.B. von Happy generiert wird. Konventionelle Parser haben dafür in der Regel ein besseres Laufzeitverhalten.

Ein erheblicher Vorteil von Parserkombinatoren liegt in der Entwicklung der Grammatik. Durch Backtracking sind diese Parser in der Lage, kontextfreie Grammatiken zu parsen, an die keine weiteren Forderungen an die Grammatik, wie z.B. LALR(1), gestellt werden. Grammatiken lassen sich daher erheblich schneller entwickeln.

Ein weiterer Vorteil von Lucky gegenüber Happy ist die erheblich schnellere Übersetzungszeit der gegebenen Grammatikdatei.

Lucky benutzt im wesentlichen die gleiche Syntax wie Happy. Daher ist unter Berücksichtigung der unter 'Unterschiede zum Happy' genannten Punkte ein experimentieren mit beiden Parsergenerator möglich und die Auswahl kann nach bestehenden Schwerpunkten bzgl. Laufzeit, Compilezeit und Entwicklungszeit getroffen werden.

©1996,97,98 Norbert Klose (nklose@mail.com)