2010-05-27 6 views
5

Ich möchte eine sehr einfache experimentelle Programmiersprache erstellen. Anhand einiger Ressourcen kann ich einen Überblick über den Erstellungsprozess einer interpretierten Sprache erhalten. Ich werde C++ verwenden, um den Interpreter zu erstellen und zu kompilieren.Wie wird eine interpretierte Sprache erstellt?

+1

Das ist ein bisschen zu LISP spezifisch. –

+1

@Neil: Während das ähnlich ist, ist das nicht wirklich ein Duplikat - es fragt nach einem Lisp-Interpreter, und die Antworten sind meistens auch exklusiv für Lisp. Während die Sprache des OP * für die Bewerber wie Lisp genug sein kann, gibt es keine Gewissheit darüber. –

+0

Related: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler –

Antwort

4

Sie müssen sowohl einen Parser als auch einen Interpreter implementieren.

Es gibt ein großes freies Buch mit dem Titel "Programmiersprachen: Anwendung und Interpretation", das ein Schema verwendet, um immer komplexere Interpreter zu bauen. Es dient auch als eine gute Einführung in Programmiersprachenfunktionen.

Prüfen Sie es hier heraus: http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

Wenn Schema nicht Ihre Tasse Tee ist es in wert sein kann, suchen.

+2

heh Scheme und C++ sind weit auseinander. – Earlz

+0

Wow, das sieht nach einem wirklich guten Buch aus. +1 für den Link. –

+0

I Verstehen Sie, dass sich C++ und Schema im Sprachenspektrum nicht annähernd ähneln, aber der Ansatz, den dieses Buch mit Schema verfolgt, kann dazu führen, dass der Fragesteller mehr über die zugrunde liegenden Prinzipien des Sprachdesigns erfährt. – Ben

0

Werfen Sie einen Blick auf die Boost-Bibliothek "Geist" LL-Parser.

2

Ein paar Schritte:

Zuerst die Lexer und Parser bauen. Dies ist mit gängigen Tools wie Lex und Yacc oder mit einem moderneren Framework wie Antlr (was ich empfehle) wirklich einfach zu machen. Diese Tools generieren Quellcode für Ihre Zielsprache, den Sie dann kompilieren und in Ihr Projekt einbinden können.

Der Lexer und Parser wird die interne Darstellung der Quelldatei erstellen. Es gibt ein paar verschiedene Möglichkeiten der Annäherung an diesem:

  1. Im Bytecode Modell, die Quelldatei in eine Low-Level-interne Sprache kompiliert wird, für die Sie ein Bytecode-Interpreter schreiben, die direkt die Operationen ausführen, . So funktionieren zum Beispiel Perl und die .NET-Sprache.
  2. Im Objektbaum Modell wird die Quelldatei in einen Objektbaum kompiliert, in dem jedes Objekt weiß, wie es ausgeführt wird. Sobald die Analyse abgeschlossen ist, rufen Sie einfach Exec() auf dem Stammobjekt (das wiederum Exec() auf seinen Kindern usw. aufruft). Dies ist im Grunde die Methode, die ich für meine interpretierte domänenspezifische Sprache Phonix verwende.
0

eine interpretierte Sprache zu erstellen, müssen Sie zwei Dinge schaffen:

  • Eine formale Definition der Grammatik der Sprache
  • Ein Parser, der

die Sprache lesen und interpretieren können Nachdem Sie die Sprache selbst definiert haben, stehen Ihnen verschiedene Tools zum Erstellen eines Sprachparsers zur Verfügung. Die klassischen Werkzeuge sind lex und yacc und ihre Open-Source-Versionen flex und bison.