Lysander schrieb:
Ja nach Mächtigkeit der Syntax lässt sich so ein Parser auch von Hand schreiben. Siehe die diversen Brainfuck-Implementationen 😉
Einige Sprachen gehen auch gar nicht den Weg hin zu Assembler, sondern übersetzen die eigene Sprache in eine andere Hochsprache, etwa C.
Naja die Aussage ist so falsch. Die Implementieren, also die Compiler gehen dahin, die Sprache aber nicht. Die Definition einer Sprache sind praktisch nur die Syntaxregeln. Die sagt wie die Syntax aussieht und welcher Befehl was machen soll. Damit dies letztendlich auch passiert gibt es Parser die die Sprache (Syntax) auseinander nehmen und dann ein Compiler der das ganze in eine Ausführbare Form bringt. Diese "Ausführbare" Form kann aber alles Mögliche sein. Sei es nun Bytecode für eine VM, C oder es wird direkt Interpretiert. Was dann genau passiert hängt von der Implementierung ab, nicht von der Sprache.
Ansonsten gehen einige Implementierungen von Sprache dahin das alles in eigene kleine Assemblerähnliche Sprache übersetzen, und diese wiederrum (die dann oft Bytecode genannt wird) wird dann von einem Interpreter (oft Virtuelle Maschiene genannt) ausgeführt.
Die Referenzimplementierungen von Java, Python oder Perl funktionieren Beispielsweise so.
Auf diesen Weg kann sich der Threadersteller aber vielleicht mal das Projekt "Parrot" anschauen [www.parrot.org].
Parrot ist hauptsächlich eine VM die für Perl 6 entwickelt wird. Allerdiengs ist es eben so das sie nicht nur für Perl 6 gedacht ist, sondern eine allgemeine VM für viele Sprachen (hauptsächlich aber Dynamische Sprachen). So wird Parrot gleich mit einem Toolkit ausgeliefert womit du sehr gut und leicht eigene Parser und Compiler schreiben kannst. Zwar kenne ich mich auf dem gebiet nicht so aus, aber habe schon oft gehört das die Möglichkeiten sehr beeidruckend sein sollen.
Zwar ist Parrot noch nicht fertig, aber es nähert sich alles der Fertigstellung. In März 2009 (also knapp in 3 Monaten) wird Parrot 1.0 erscheinen was dann eine stabile API bieten wird, und wohl das meiste (alles? weiß nicht genau) implementiert haben wird. Hier wird es also Interessant für die Sprachentwickler und sie können anfangen Ihre Compiler zu schreiben (was natürlich auch jetzt schon passiert). "Ready for Production Use" plant Parrot dann Mitte 2010 zu werden.
Ich denke Parrot ist eine gute Grundlage um eine neue Sprache zu entwickeln, zumal dir ein Teil der Implementierung ja abgenommen wird. Was du bei Parrot schreiben musst ist also praktisch der Parser der deine Sprache auseinander nimmt und der Compiler womit du halt den einzelnen Elementen einen Sinn gibst. Die richtige Ausführung übernimmt dann Parrot.
Hiermit hast du also die gleichen Vorteile wie Marc... sagte in seinem Post vor meinen.