Kann man mit C# eine eigene Programmiersprache programmieren?

2 Antworten

Ja, das ist sehr leicht, gerade in den höheren Programmiersprachen wie C#, Java oder Python.

Informier dich mal selbstständig über "Parser-Generatoren" oder "Compiler-Compiler", das würde hier sonst den Rahmen sprengen.

Du wirst bei Google massenhaft Bibliotheken und Tutorials finden. Lies dich aber am Anfang erst mal bei Wikipedia ein, damit du einen Überblick erhältst.

Auf jeden Fall brauchst du dafür nicht wirklich viele Vorkenntnisse. Du musst eigentlich nur eine Grammatik für die Syntax definieren, und danach die Quelldatei deiner Fantasiesprache durch den Interpreter / Compiler nudeln. (das ist i. d. R. ein einziger Funktionsaufruf)

Viel Spaß! :)

PS: Wenn du schon mal dabei bist, guck dir auch gleich mal das Thema DSL (Domain Specific Language) an!

PPS: Du kannst natürlich auch einen hochoptimierten Compiler selber schreiben, ohne auf Drittbibliotheken aufzubauen ... das erfordert dann aber DEUTLICH mehr Wissen. Falls dich das Interessiert, guck mal bei Amazon nach dem Buch "Compilerbau" Teil 1 und 2 ... das sog. Drachenbuch! :)

Vielen Dank für die Antwort! Ich werde mal schauen was ich so alles im Internet finden kann was mich weiterbringt! :-)

1

Ein Compiler ist seiner Natur nach ein Paar von Text-Transformatoren:

  • Er nimmt Text entgegen (das zu compilierende Programm),
  • zerlegt ihn in syntaktische Einheiten
  • und setzt die um in entsprechende Befehlssequenzen in Assembler (d.h. wieder in Text).
  • Der so entstandene Code wird dann auf ganz ähnliche Weise nochmals transformiert durch einen Code Optimizer.

Solche Programme zu schreiben ist heute C++ am besten geeignet.

Typische Stringklassen würde ich dazu aber nicht verwenden (da sie zu viel unnötigen Overhead verursachen -- eben solchen, den man in noch höherem Ausmaß auch bei Nutzung von C# in Kauf zu nehmen hätte).

Von solch unerwünschtem Overhead mal abgesehen, könnte man Compiler aber natürlich auch in C# oder Java schreiben. Sie würden dann halt nur nicht nicht ganz so schnell arbeiten.