@sFee So jetzt muss ich aber auch noch meine bescheidene Meinung dazu geben und vielleicht ein paar Typs für dein Unterfangen geben. Doch zunächst mal, Schlag dir ausm Kopf eine Sprache wie Java komplett selbst zu entwickeln. Und glaub mir, ich weiß wovon ich rede. Ich habe selbst schon mehr als ein halbes dutzend Programmiersprachen geschrieben. Bspw. schreibe ich hobbymäßig eine Sprache mit ähnlichem Umfang wie Java seit Juni 2014 (hab gerade nochmal nachgeguckt). So langsam kommt tatsälich die Zeit, in der ich die Sprache wirklich benutzen könnte, nach 2 Jahren!
Ich möchte dich aber nicht entmutigen, denn es gibt durchaus Möglichkeiten eine Programmiersprache in deutlich weniger Zeit zu entwickeln. Unterklassen von Sprachen wie Haskell (ohne Typsystem zur Compilezeit) oder Python können mit sehr viel weniger Aufwand programmiert werden. Vor allem, wenn das Ziel ist, den Code "nur" zu interprietieren, und ihn nicht in Bytecode oder ähnliches umzuwandeln.
Aber selbst eine ähnliche Sprache wie Java kann man in ein paar Monaten entwickeln, wenn bspw. der Compiler von Java selbst einem vieles abnimmt. So könnte man eine Sprache entwickeln, dessen Code sehr ähnlich zu Java ist, und diesen in Java-Code umwandeln. Nun jagt man den Java-Compiler rüber, und gibt alle gefundenen Fehler weiter. So muss man kein Typsystem programmieren, was bei Java-änhlichen Sprachen mit das schwierigste und aufwändigste ist. Da lässt sich natürlich streiten, ob mans noch ein echten Compiler nennen kann, oder nicht eher ein Precompiler.
Die Krux an Java oder C++ ist das die Sprachspezifikation sich mit diesen Parsergeneratoren nicht Parser lassen
Welche Fälle meinst du da genau? Wenn ich mich recht erinnere, gibts bei C++ Fälle, bei denen die Syntax von der Semantik abhängt. Weiß aber nicht mehr genau, wo das war. Aber bei Java? Da fällt mir höchstens das Casten "'(' type ')' expression" ein, was ich nie hinbekommen habe. Man hat ja meistens immer noch eine Regel in expression mit "'(' expression ')'". Da kam es dann immer zu Konflikten. Ich dachte aber Java wäre eine LALR(1)-Sprache.
lg Kevin