Entwicklung einer eigenen Skriptsprache

RezaScript

Bekanntes Mitglied
Hallo,

für die Abschlussarbeit meines Studiums musste ich ein Thema wählen. Ich hätte es mir zwar einfach machen können und hätte auch einfach eine Applikation entwickeln können aber je nach dem was es für eine Applikation war, hätte ich sehr wahrscheinlich den Bachelor of Arts bekommen. Da ich unbedingt den Bachelor of Science haben will, habe ich mir zuerst Gedanken gemacht eine eigene Programmiersprache zu entwickeln. Ich habe auch schon damit angefangen und zwar die Implementierungssprache ist C++ und ich arbeite auch mit Lex und YACC. Das Problem bei der Sache ist, ich habe das Ganze und auch mich selbst sehr überschätzt. Für die Arbeit habe ich 5 Monate Zeit, dabei muss ich auch eine Doku schreiben und auch noch ne Arbeit darüber mit 10'000 Wörter. Also in dieser Zeit sehe ich es als UNMÖGLICH! Also brauchte ich einen Plan B und der war die Entwicklung einer Skriptsprache. Auch das wird in dieser Zeit schon ziemlich knapp aber sollte realistischer sein. Die Datei müsste lediglich geparst werden und somit sind Compiler und Interpreter kein Thema mehr.

Es sollte also eine Skriptsprache sein, welche nur für Web geeignet ist, also so ähnlich wie PHP oder JSP. Nicht zu verwechseln mit pures JavaScript, denn es müsste serverseitig sein. FreeMarker kommt meine Vorstellungen auch ziemlich nah, obwohl es nur ein Template Engine ist.

Ich plane das Ganze mit Java zu machen. Ich bin nicht wirklich gut in Java und würde es am liebsten mit einer Programmiersprache machen, die ich auch beherrsche aber der Sinn und Zweck des Ganzen ist ja auch das Lernen.

Meine Frage: Könnt ihr mir vielleicht eine Anleitung geben, wie ich am besten Schritt für Schritt vorgehen soll?

So stelle ich mir das Ganze vor:
Ich lese die Datei und erhalte einen String. Angenommen der String sieht so aus: if (age > 18) { doSomething(); } und ich möchte wissen, was zwischen den geschleiften Klammern für ein Token ist. Mit Regex ((?<={ )[a-zA-Z();]+) könnte ich also z.B. abfragen, ob es eine Funktion ist. Jedes Token müsste also gelesen werden. Sollte das aktuelle Token also nicht zum letzten passen, erfolgt eine Fehlermeldung.

Alle Tokens anbieten kann und muss ich auch nicht. Ich plane vorerst mal die wichtigsten wie: Print, Kommentare, If- und Else-Statement, Variablen, Foreach-Loop (nein, kein while und kein for) und das schwierigste zuletzt, Objekte, Methoden und Eigenschaften, welche aus dem Backend kommen (ähnlich wie bei JSP). Das sind mal die Basics, die ich haben muss. Alles andere ist nice to have.

Was auch noch sehr wichtig ist ... ich müsste bei der Projektarbeit deutlich begründen, was meine Skriptsprache so besonders macht. Was unterscheidet sich meine Skriptsprache im Vergleich zum Konkurrenz. Das ist ziemlich eine fiese Frage, denn ich könnte garantiert NIX besser machen als der Konkurrenz aber hierbei ist die Kreativität gefragt. Vielleicht hätte jemand da eine Idee.
 

thecain

Top Contributor
Soll die Doku schreiben auch in die Anleitung?

Das gibt dann aber maximal einen Bachelor of Science für den, der dir die Anleitung macht
 

AndiE

Top Contributor
Für mich widersprechen sich die Vorgaben. Eine Funktion im Netz würde für mich bedeuten, dass ich eine Sprache für einen Socket schreibe. Damit läuft das Programm selbst auf der Betriebssystemebene. Eine Antwort auf den Request des Clients wird dann im Server erzeugt, im allgemeinen als Zeichenkette"<Html> ...</html>". Damit kann ich im Erstellungsfall diesen String nicht nur ins Netz ausgeben, sondern auch auf die Konsole, zB. zu Testzwecken. Als zweites würde ich von vornherein mal überlegen, wozu das Ganze sein soll. Ich denke, eine wiki-ähnliche Einrichtung wäre gut, wo der Ersteller Texte einfach per txt erstellt und diese dann in HTML formatiert und bereitgestellt werden. Das hat Vorteile gegenüber PDF und Freigaben. Drittens würde ich aber die Sprache so erstellen, dass es Bibliotheken gibt. Und natürlich, ob infix so toll ist, oder ob man spezielle Formate erwartet, um die Verarbeitung zu erleichtern.
 

Blender3D

Top Contributor
Also brauchte ich einen Plan B und der war die Entwicklung einer Skriptsprache. Auch das wird in dieser Zeit schon ziemlich knapp aber sollte realistischer sein. Die Datei müsste lediglich geparst werden und somit sind Compiler und Interpreter kein Thema mehr.
Jede Scriptsprache wird über einen Interpreter ausgeführt. Also wenn Du eine völlig neue Scriptsprache entwickelst, wer macht dann den dazu passenden Interpreter?
 

Barista

Top Contributor
ch möchte wissen, was zwischen den geschleiften Klammern für ein Token ist. Mit Regex

Regex eignen sich prinzipiell nicht für rekursive Strukturen (ich habe mal gelesen, dass es in Pearl dafür Erweiterungen gibt, kenne keine Details).

Nach Deinem Studium solltest Du zumindest die Chomsky-Hierarchie kennen, sehr bedenklich.

Ich würde einen Parser nach dem Prinzip des rekursiven Abstiegs schreiben.

Anhand Deiner Fragen zweifle ich, ob Du die Aufgabe lösen kannst.
 

Ähnliche Java Themen

Neue Themen


Oben