2010-04-09 8 views
21

¿Alguien sabe de un intérprete de esquema bueno/pequeño en C++? Preferiblemente algo < 2000 LOC, con un simple colector de basura (ya sea compactando o marca & sweep), no es necesario soportar todos los R5RS, solo los conceptos básicos de if/lambda/set!/Cons/car/cdr y algunas operaciones básicas.intérprete de esquema pequeño y legible en C++?

Gracias!

Respuesta

2

Desafortunadamente Scheme Implementations no se organiza en base a tales criterios prácticos. :)

Encontré una Scheme Interpreter in C++ que podría verificar para ver si se ajusta a sus necesidades. No he probado este en particular, así que esto no es un endoso.

13

Bueno, hay un veeery tiny lisp por Gary Knott. ¡Ni siquiera cerca de R5RS, pero es pequeño, y viene con un libro que describe las partes internas! Sin embargo, es C, no C++, y hasta donde recuerdo, no hay GC (pero podría estar equivocado).

También hay Mini Scheme por Nils Holm, pero también es C, y un poco más grande que lo que usted pidió (2404 líneas de C más 1352 de Scheme). Nils también ha escrito Scheme 9 from Empty Space, que es más grande pero también viene con un libro que describe cada pieza de código.

Tinyscheme es otro pequeño Esquema (4500 líneas de C Plus 452 de Lisp) ...

+0

+1 para s9fes. ¡Muy útil! – JasonFruit

0

También hay Gambit Scheme. También está escrito en C y tiene la ventaja de que está diseñado para integrarse. Personalmente lo he usado para embed Scheme inside Excel 2003!

Aunque es mucho trabajo en progreso, funciona bien y puede adaptarlo fácilmente a cualquier necesidad de C++ que tenga.

0

He comenzado un proyecto en mi universidad para hacer exactamente esto. Shaka Scheme es un intento de implementar R7RS en C++.

Estamos trabajando para implementar macros y continuaciones a la hora de escribir, y nos centraremos en un modelo de implementación después de R. Kent Dybvig's dissertation's heap-allocated model for evaluation.

En el futuro, esperamos tener una base de datos de documentación completamente comprensible a través de la wiki de GitHub de nuestro diseño y metodología para hacer que la implementación del Esquema sea legible para los principiantes.

Cuestiones relacionadas