2009-08-05 8 views

Antwort

10

Der Metacircular Evaluator in SICP ist eine Übung zum Schreiben eines Scheme-Interpreters in Scheme. Es ist ein gemeinsames CS-Projekt für das erste Jahr.

+2

Für diejenigen, die nicht wissen, ist SICP ein Buch (kostenlos online) namens Struktur und Interpretation von Computerprogrammen. –

5

Die Original Wirths Pascal ist ein guter Kandidat, und oft als Demo in Parser-Generatoren verwendet. Seine Grammatik ist LL (1) und ansonsten ziemlich streng, so dass es leicht zu analysieren ist. Feature-weise ist es auch ziemlich begrenzt.

Sie möchten vielleicht ein bisschen ein bisschen damit herumspielen, z. Vielleicht möchten Sie Pointer ignorieren, aber erstklassige Strings unterstützen.

3

Schema oder eine beliebige Lisp-Variante.

+4

Das ist ein bisschen trügerisch; Während die Syntax sicherlich nicht schwer zu analysieren ist, kann die Funktionalität von Scheme und anderen LISP-Varianten in einem Interpreter ziemlich schwierig zu implementieren sein. Insbesondere Lambdas und Schwanzrekursionen haben viele Fallstricke. – Imagist

0

Ich würde eine Markup-Syntax Sprache, Liran denken. Die Syntaxstruktur erleichtert das Parsen, da Code-Blöcke klar zwischen Anfangs- und End-Tags abgegrenzt sind. Sie könnten theoretisch einfach einen Level-1-Interpreter erstellen, der den Code direkt analysiert und ausführt.

Das sagte, es gibt keine Markup-Sprachen da draußen, die sinnvolle Dinge in dem Kontext tun, auf den ich Sie zu zielen scheinen (Sie möchten vielleicht Ihre eigenen schreiben). Die nächste beste Wahl wären wahrscheinlich Sprachen mit minimaler Funktionalität und vorzugsweise keine prozedurale Programmierung. Für eine Sprache wie BASIC sollte es einfach sein einen Level 1 Interpreter zu erstellen.

Nächste beste Sache vielleicht sind frühe Skriptsprachen, die nicht viele syntaktische Elemente und waren von kurzer Komplexität. Ich denke nicht an etwas.

Aber vielleicht ist die beste Option von allen für Sie, Ihre eigene Sprache zu entwerfen. Der Interpreter wird einfacher zu erstellen, weil Sie die Sprachsyntax sehr gut beherrschen und Ihre eigene Sprachstruktur und Semantik im Interpreter beherrschen können.

...

Das Beharren auf Ebene 1-Interpreter ist, weil Sie erwähnt haben Sie es einfach wollen.

+0

Was bedeutet Level 1? –

1

In meiner College-Betriebssystem-Klasse haben wir einen Interpreter für Db (D-Flat) geschrieben. Es war sehr einfach und klar definiert.

+0

Könnten Sie bitte einen Link zu etwas geben, das mit dieser Sprache zu tun hat, ich kann es nicht finden ... –

+0

Sie haben Recht. Ich konnte es auch nirgendwo online finden, außer auf der Website für die Klasse. Vielleicht ist es eine erfundene Sprache für unsere Klasse. Wie auch immer, hier ist ein Link zur formalen Sprachdefinition: http://users.csc.calpoly.edu/~akeen/courses/csc430/handouts/assignments/hw3.pdf – bkritzer

+0

Vielleicht basiert es auf dem in Dr. Dobbs Journal (jemand in der Gegend, der DDJ kennt?). In diesem Artikel (http://www.drdobbs.com/184410754) kündigte Al Stevens die Idee für D-Flat und in nachfolgenden Artikeln beschrieben seine Entwicklung. – Kwebble

4

Forth. Okay, jetzt tippe ich nur, weil ich mindestens 15 Zeichen in der Antwort brauche, aber die kleinsten Forth-Implementierungen sind ein paar KB. Es ist schwer, an eine andere Sprache zu denken, die einen so kleinen Kern haben könnte. Vielleicht das Original McCarthy 1958 Lisp, wo die Funktionen von Hand zusammengestellt wurden.

5

Es ist sehr einfach, einen Interpreter für die Programmierung zu schreiben Sprache Forth (sobald Sie wissen, wie - aber es ist gut dokumentiert). Forth wird seit mehr als 40 Jahren für reale Probleme verwendet.

Vielleicht ist es zu einfach, aber Sie werden dabei viel lernen.

Eine fröhliche (online) Einführung ist in chapter 9 von Leo Brodie "Start FORTH".

+1

Danke für den Link. –

Verwandte Themen