Wie schreibt man einen Dolmetscher?
Habe ich beschlossen, schreiben Sie einen kleinen interpreter als mein Nächstes Projekt in Ruby. Welche Kenntnisse/Fähigkeiten brauche ich, um erfolgreich zu sein?
Ich habe noch nicht entschieden, auf die Sprache zu interpretieren, aber ich bin auf der Suche nach etwas, das ist nicht ein Spielzeug, Sprache, würde aber relativ einfach sein, schreiben einen Dolmetscher.
Vielen Dank im Voraus.
InformationsquelleAutor der Frage bennybdbc | 2009-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zu lernen, zumindest:
Eine ausgezeichnete Einführung in diese Themen finden Sie im einleitenden text Struktur und Interpretation von Computerprogrammen. Die verwendete Sprache in diesem Buch ist ein Schema, welches einen robusten, gut angegebenen Sprache, die sich ideal für Ihre ersten interpreter-Implementierung. Sehr zu empfehlen.
InformationsquelleAutor der Antwort Greg Hewgill
Versuchen, einige Dialekt von Lisp wie Scheme oder Clojure. (Jetzt gibt es eine Idee: Clojure-in-Ruby, die sich mit Ruby sowie Clojure mit Java.)
Mit Lisp, es gibt keine Notwendigkeit, die Mühe mit den Eigenheiten der syntax, die in der Lisp-syntax ist viel näher an der abstrakten syntax-Baum.
InformationsquelleAutor der Antwort Joshua Fox
Dieses Kapitel SICP zeigt, wie man ein Lisp-interpreter in Lisp (a metacircular evaluator). Meiner Meinung nach ist dies der beste Ort, um zu starten. Dann können Sie auf Lisp in Small Pieces zu lernen, wie zu schreiben, erweiterte Interpreter und Compiler für Lisp. Der Vorteil der Implementierung einer Sprache wie Lisp (Lisp selbst!) ist, dass Sie die lexikalische analyzer, parser, AST, Daten - /Programm-Darstellung und REPL kostenlos. Sie können sich auf eine Aufgabe konzentrieren, um Ihre große Sprache arbeiten!
InformationsquelleAutor der Antwort Vijay Mathew
Es ist Tree top Projekt, welches hilfreich sein können für Sie http://treetop.rubyforge.org/
InformationsquelleAutor der Antwort Sebastian
Können Sie Kasse Ruby Draft-Spezifikation http://ruby-std.netlab.jp/
InformationsquelleAutor der Antwort allenwei
Hatte ich eine ähnliche Idee vor ein paar Tagen. LISP ist bei weitem am einfachsten zu implementieren, weil die syntax so einfach, und die Datenstrukturen, die die Sprache manipuliert sind die gleichen Strukturen, an die der code geschrieben ist. Daher benötigen Sie nur eine minimale Umsetzung, und definieren können, der rest in Bezug auf sich selbst.
Jedoch, wenn Sie versuchen zu lernen, zu analysieren, möchten Sie vielleicht zu tun, eine komplexe Sprache mit einer Abstrakten Syntax-Bäumen, etc.
Wenn Sie wollen, check out my " (wörtlich: zwei Tage alte) Java-Implementierung von lisp, check-out mylisp.googlecode.com. Ich bin noch auf Arbeit, aber es ist unglaublich, wie wenig Zeit es brauchte, um die vorhandenen Sachen arbeiten.
InformationsquelleAutor der Antwort triggerNZ
Es ist nicht sooo schwer. hier ist ein LISP-interpreter in ruby und die Quelle ist so klein, dass Sie angeblich kopieren/einfügen. aber Sie sind gonna lernen, LISP jetzt? hehe.
InformationsquelleAutor der Antwort Camilo Martin
Wenn Sie gerade tun dies zum Spaß, stellen Sie sich Ihre eigene, einfache Sprache und versuchen Sie es einfach. Meine Empfehlung wäre so etwas wie ein wirklich einfaches, klassisches BASIC (nicht visual basic oder Objekt-orientierte Zeug). Mit Zeilennummern, GOTO, INPUT und PRINT, und das ist es. Sie lernen die Grundlagen, und Sie bekommen ein besseres Verständnis, wie die Dinge funktionieren.
Die Kenntnisse, die Sie brauchen?
Und für letzteres benötigen Sie auch einen Weg zu halten um Variablen. In der Regel würde man nur die Implementierung einer "stack", einem riesigen block von Daten, wo können Sie markieren einen Bereich am Ende.
InformationsquelleAutor der Antwort uliwitness
Es ist nicht umgesetzt in Lisp, aber ich fand Schreiben Sie Selbst Eine Regelung in 48 Stunden ein sehr nützliches Dokument, während ich anfangen mit Haskell (obwohl ich nicht irgendwo in der Nähe finishing es nach 48 Stunden; YMMV). Es gibt Ihnen auch eine Menge Einblicke in die Dolmetscher im Allgemeinen.
InformationsquelleAutor der Antwort Inaimathi
Empfehlen kann ich dieses Buch. Es beschreibt Muster für das schreiben von Parsern und Interpretern und mehr:
http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=language+implementation+patterns&x=0&y=0
InformationsquelleAutor der Antwort Ashley Davis