2010-04-09 6 views
21

Wer kennt einen guten/kleinen Schema-Interpreter in C++? Vielleicht etwas < 2000 LOC, mit einem einfachen Müll Collectro (entweder compacting oder markieren & Sweep), keine Notwendigkeit, alle R5RS, nur Grundlagen von If/Lambda/Set!/Nachteile/Auto/Cdr und einige grundlegende Operationen zu unterstützen.kleiner & lesbarer Schema-Interpreter in C++?

Danke!

Antwort

2

Leider organisiert Scheme Implementations nicht nach solchen praktischen Kriterien zu organisieren. :)

Ich fand eine Scheme Interpreter in C++, die Sie überprüfen können, um zu sehen, ob es Ihren Bedürfnissen entspricht. Ich habe dieses spezielle nicht versucht, also ist dies keine Bestätigung.

13

Nun, es gibt eine veeery tiny lisp von Gary Knott. Nicht einmal in der Nähe von R5RS, aber es ist klein und kommt mit einem Buch beschreibt die Interna! Aber es ist C, nicht C++, und soweit ich mich erinnern kann gibt es keinen GC (aber ich könnte falsch liegen).

Es gibt auch Mini Scheme von Nils Holm, aber es ist auch C, und ein bisschen größer als das, was Sie gefragt haben (2404 Zeilen C plus 1352 von Scheme). Nils hat auch Scheme 9 from Empty Space geschrieben, das größer ist, aber auch mit einem Buch kommt, das jedes Stück Code beschreibt.

Tinyscheme ist ein weiteres kleines Schema (4500 Zeilen C plus 452 von Lisp) ...

+0

+1 für s9fes. Sehr hilfreich! – JasonFruit

0

Es gibt auch Gambit Schema. Es ist auch in C geschrieben und hat den Vorteil, dass es eingebettet werden kann. Ich habe es persönlich zu embed Scheme inside Excel 2003 verwendet!

Obwohl es sehr viel Arbeit im Gange ist, funktioniert es gut und Sie könnten es leicht anpassen, was auch immer Sie C++ brauchen.

0

Ich habe ein Projekt an meiner Universität gestartet, um genau dies zu tun. Shaka Scheme ist ein Versuch, R7RS in C++ zu implementieren.

Wir arbeiten an der Implementierung von Makros und Fortsetzungen zum Zeitpunkt des Schreibens und konzentrieren uns auf ein Implementierungsmodell nach R. Kent Dybvig's dissertation's heap-allocated model for evaluation.

Wir hoffen, in Zukunft über das GitHub-Wiki unseres Designs und unserer Methodik eine vollständig verständliche Dokumentationsdatenbank zu haben, um die Implementierung von Scheme für Neulinge lesbar zu machen.

Verwandte Themen