|
http://rubinghsoftware.de/projects/dako_script/
|
Projekt | |
Entwicklung Parser und Interpreter für eine neue Script-Sprache | |
Für | |
DAKO GmbH, Jena | |
Datum | |
2 Monate in 2009-2010 | |
Platforms | |
C++, MS Visual C++, Windows PC | |
|
Entwicklung Parser und Interpreter für eine neue, BASIC-ähnliche Script-Sprache, mit Funktionen und lokalen Variablen.
Einsatzgebiet war die von der Firma für seine Kunden (Hersteller von mechanischen
Bauteilen) erstellten Kataloge. Die Scripts wurden verwendet dazu, es dem Bauteile-Hersteller
zu ermöglichen, die Konfiguration seiner Kataloge selbst zu programmieren.
Vorgabe war, dass die Scriptsprache sehr einfach sein sollte und verwendbar durch Leute die
nicht viel Programmiererfahrung haben.
Die features und Syntax der Scriptsprache würde festgelegt von einem Team bestehend aus 2
Mitarbeitern der DAKO CAD- und Kataloge-Abteilung und mir. (Sich zu einigen über den Syntax
hat fast mehr Zeit gekostet als die gesamte Implementierung!:-))
Die Script-Sprache umfasste Funktionen und lokale Variablen.
Aus meiner vorherigen Erfahrung mit der Programmiersprache BASIC, wurde meine Empfehlung
übernommen, dass Variablen vor ihrer Verwendung deklariert werden müssen.
Vorteil hiervon ist, dass Tippfehler in Variablen-Namen vom Parser detektiert werden
(anstatt dass, wie in BASIC, für eine falschgeschriebene Variable ohne Warnung eine neue
Variable erzeugt wird).
Als erster Schritt habe ich den Syntax der Sprache exact festgelegt und dokumentiert (siehe unten),
denn dies ist Voraussetzung dafür, die Implementierung zu ermöglichen. Danach habe ich
einen "top down" predictive Parser und einen Interpreter für diese Sprache handkodiert.
Parser und Interpreter wurden implementiert als strikt getrennte Teile. Beide
wurden als Software-libraries verwendet in der Katalog-Software.
Parser und Interpreter wurden durch C++ "interfaces" (pure virtual classes) vom client code
abgeschottet, um vorzubeugen dass der client code zugreift auf Interna der library.
Hier ist die Beschreibung der Syntax der Scriptsprache.