[QUIZ #18] Reguläre Ausdrücke - Reverse Engineered

Weiterer Vorschlag:
Wie würdet ihr finden, einen Interpreter für eine beliebige (beliebig einfache) Sprache zu schreiben,
und zwar in irgendeiner Sprache und dann in sich selbst?
Wobei man die langwierige Vorverarbeitung des Inputs nicht machen muss,
sondern Syntaxprüfung, Zerlegung in Token etc. als gegeben nehmen kann.
 
Es muss ja wirklich keine komplizierte Sprache sein.
zB. ein Brainf***-Interpreter ist doch schnell mal gemacht :suspekt:
Dafür tut man sich dann beim Eigeninterpreter schwerer :D
(falls man den macht. Abgeben kann man nur mit Teil 1 ja natürlich auch)

Etwas Richtung C-Sytnax oder ganz was Anderes ist dann zwar bei a) schwerer,
aber b) geht dafür leichter...
 
Wäre die Aufgabe nicht interessanter, wenn alle die gleiche Ausgangssprache nehmen und diese dann entsprechend umformieren?
Also Ausgangssprache --> C# --> Ausgangssprache --> C++ etc.

Damit wären auch die lustigen Google-Translate Effekte schon eingebaut :D
 
Wenn ich es richtig sehe, ist ja die Idee, dass man eine Programmier-Sprache nimmt und diese in eine Andere formatiert resp. umgekehrt.
Wenn alle die gleiche Ausgangssprache verwenden, hat man a) viel mehr Beispiele und b) Interessante Effekte, wenn es nicht klappt.
Google-Translate Effekt: Deutsch --> Japanisch --> Chinesisch --> xxx --> Deutsch.
 
Wenn ich es richtig sehe, ist ja die Idee, dass man eine Programmier-Sprache nimmt und diese in eine Andere formatiert resp. umgekehrt.
Nein, ich hatte mir die Idee anders vorgestellt (war ja auch meine). Dies war der Originaltext:
ComFreek hat gesagt.:
Entwickle einen Interpreter welche eine eigens-konstruierte Sprache X ausführen kann. Es muss möglich sein, in der Sprache X selbst einen Interpreter für die Sprache X zu schreiben.

Noch ein paar Restriktionen bzgl. der Sprache einfügen (keine 0-Byte-Sprache :D, etc.).
Bei BF kann man locker mit 75 Zeilen sauberem PHP-Code arbeiten.

An was für eine Ausgangssprache hast du gedacht, DrMueller?
 
Ich glaub, ComFreek hat etwas gepostet, dass schon überholt ist.
Der aktuelle Stand war tatsächlich (schon, als der Vorschlag hier öffentlich wurde),
dass es eine beides sein kann; eine bestehende oder selbst erfundene Sprache

Voraussetzungen eben, dass es eine Sprache ist, die
*tatsächlich eine Sprache ist, also nicht nur Leerdateien gültig sind (die einfach nichts tun)
*Turingvollständig
*Interpreter für die Sprache in der Sprache selbst ist möglich
 
Ich würde da gerne etwas einwerfen. Wie wäre es mit einer einheitlichen Sprache?
Hier würde sich z.B. das Lambda-Kalkül anbieten.

Das Lambda-Kalkül ist eine Formale Sprache, mit welcher grundlegende Strukturen von Funktionen untersucht werden können. Außerdem fördert es stark das abstrahierende denken, was jeder Programmierer besitzten sollte.

Es lässt sich hier leicht in mehrere Schwierigkeitsstufen unterteilen, da es zum einen das untypisierte und das typisierte Lambda-Kalkül gibt (unterschied in der komplexität) und es lassen sich Regeln unabhängig voneinander implementieren. So sind die verschiedenen Reduktionsarten unterschiedlich schwer zu implementieren.

Natürlich müsste hierfür ein Interpreter der Sprache implementiert werden, bzw. die Möglichkeit solche Ausdrücke auswerten zu können.

Um einmal einen Vorschlag in den Raum zu werfen.. :)


edit: Um Sucharbeit zu ersparen hier Links zum Artikel in Wikipedia auf Englisch (ausführlicher) und zum Artikel in Wikipedia auf Deutsch (nicht lesenswert imo)
 
Zuletzt bearbeitet:
Zurück