So was tut man doch nicht …

… ja, ich weiss. Nach einer Prüfung in Compilerbau und dem theoretischen Hintergrund von Sprachkonzepten wie LALR / LR / …, nach Arbeiten mit bison / flex / yacc / … und Schnuppern in dem Gold Parser darf man eigentlich keinen Parser mit rekursivem Abstieg von Hand programmieren. Hab’ ich aber trotzdem mal getan – den Hintergrund dieser Entscheidung überspringe ich erst einmal, auf Wunsch kann ich das ja nachholen.

Konkret geht es um die SQL-2003 Syntax und dabei um die Suchsprache oder noch konkreter das SELECT Statement. Ich habe mich dabei hieran gehalten und hoffe einmal, dass die Beschreibung ausreichend nahe an der Wahrheit ist – verglichen mit dem, was ich vom SQL Server und Oracle weiss, sieht es zumindest mal nicht schlecht aus. In einer ersten Stufe ist ein rein syntaktischer Parser entstanden, den ich gerade in den Abschlusstest nehme. Es gibt eine Reihe von Problemen verschiedenster Art, aber zumindest scheint es im Großen und Ganzen zu laufen.

Nun, falls jemanden dies an sich (oder die Parser Bibliothek darunter) interessieren sollte: ich habe die aktuelle Version mal mit einem kleinen Installationsprogramm versehen und zum Download bereitgestellt – ich gehe davon aus, dass es in den nächsten Wochen durch meine eigenen Tests zu Updates kommt und ich werde versuchen, dies in der Versionsnummer zu berücksichtigen. Wenn die Syntax ausreichend korrekt erkannt wird, werde ich mal nach der Semantik schauen (e.g. a || b geht nur, wenn a und b Zeichenketten oder Listen sind, nicht aber für Zahlen). Vor allem die Anbindung an ein Schema wird interessant.

Für das reine Schnuppern (Auslachen? Hm…) habe ich auch die Quellen Online bereitgestellt – identisch, wie sie auch lokal installiert würden.

Für die Erstellung der Bibliotheken wurde Visual Studio / C# 2010 verwendet, allerdings gebunden an das .NET Framework 3.5 SP1 – und nicht 4.0.

Viel Spaß

Jochen