Mal eben schnell einen Parser für eine einfache Syntax bauen

Für die im letzten Artikel erwähnt Lernsoftware (über die ich sicher auch noch einen Artikel schreiben werde), brauchte ich einen Parser. Also ein Stück Software, das dazu in der Lage ist Java-Code zu lesen und in strukturierter Form (Abstract Syntax Tree) aufzubereiten.

Da ich keinen der üblichen Parser-Generatoren verwenden wollte (der Parser sollte zu Laufzeit gebaut werden) und ich recht bewandert im Compiler- bzw. Parser-Bau bin (schließlich hatte ich 2003 meinen eigenen Pascal zu Assembler Compiler in Java geschrieben), beschloß ich meinen eigenen Parser-Generator zu bauen. Dieser sollte wie gesagt nicht wie üblich Code generieren sondern einfach zur Laufzeit eine Syntax einlesen und diese dann parsen können. Nach Durchsicht meiner alten Aufzeichnungen hatte ich aber keine Lust wie damals wieder einen vollständigen SLR-Parser zu bauen (es war damals schon meiner Faulheit geschuldet, dass es keine LALR-Parser geworden ist ;) ), also baute ich einen einfachen Recursive Decent Parser. Der ist zwar nicht ganz so mächtig wie der SLR-Parser, aber für einfache Syntax reicht es. Nämlich genau für solche Syntax bei der man immer schon am ersten Token erkennen kann, in welche Regel abgestiegen werden muss.

Dieser Parser-Library befindet sich mittlerweile im Maven Central Repository und der Quellcode ist bei github einsehbar. Da ich leider auch nicht groß darin bin Dokumentationen zu schreiben, muss ich hier auf meine Implementierung der 7GUIs verweisen, bei der ich diesen einfachen Parser-Generator verwendet habe um Excel ähnliche Ausdrücke einzulesen. Zu sehen in der FormulaSyntax.java.

Über das 7GUIs Projekt werde ich nochmal gesondert schreiben, da ich hier einen (wie ich finde) sehr interessanten Ansatz zur GUI-Programmierung getestet habe, mit dem ich mich in letzter Zeit viel beschäftige. Functional Reactive Programming… Oder kurz auch FRP genannt. Aber dazu später mehr.

Jede Reise beginnt mit einem ersten Schritt

Ich habe lange überlegt, worüber ich hier als erstes schreiben soll. Ich wollte schon immer mal einen Ort haben, an dem ich alle meine Projekte sammeln und ausstellen kann. Dann stieß ich auf den (für Amazon Prime Mitglieder) kostenlosen Online-Kurs von Rob Cubbon über Content Marketing. Und Marketing war immer ein schwieriges Thema für mich. Ich liebe es zu programmieren. Und noch mehr liebe ich es, wenn meine Programme dann auch benutzt werden. Doch Verkaufen… Hmm? Wie geht das? Wie mache ich das? Und will ich das überhaupt? Natürlich ist es leicht zum Beispiel über Google AdWords oder Facebook Ads Traffic auf die eigene Seite zu bekommen. Aber was dann? Jeder Klick kostet Geld und wenn die Besucher auf der Seite nicht das finden, was sie suchen, sind sie schnell auch wieder weg.

Deshalb möchte ich jetzt mit Content Marketing einen neuen Weg gehen und hier auf dieser Seite einfach erst mal viele der Sachen zu präsentieren, die ich meinem Leben schon so programmiert habe. Und das einerseits zum direkten ausprobieren und andererseits auch mit Quellcode und Erklärungen, damit andere auch etwas davon lernen können. Später, wenn genug Material auf meiner Seite ist, um die Qualität meine Arbeit bewerten zu können, wird es auch mal etwas zu kaufen geben. Von irgendwas muss ich ja schließlich auch leben. ;)

Beispielsweise arbeite ich gerade an einer Software, die ich bisher in meinem Unterricht als IT-Trainer einsetze um meinen Teilnehmern die Sprache Java leichter verständlich zu machen. Diese Software möchte ich gerne in einem Online-Kurs umwandeln, der Menschen dabei hilft die Grundlagen der Programmierung zu erlernen.

Also behaltet doch meine Seite im Auge um über den Stand meiner Software auf dem Laufenden zu sein und viele spannende Projekte zu erleben. Es wird auch einen Newsletter geben, sobald ich herausgefunden habe, wie ich das hier in WordPress einrichten kann. ;)