J'ai un lecteur LISP écrit en Java que je pense à traduire en C. (ou peut-être C ++.) C'est un piratage assez complet et utile. Le problème principal est donc en train de faire l'allocation de stockage dynamique dans une langue sans collecte des ordures. Si quelqu'un a déjà pensé cela à travers je préférerais emprunter leur code que de comprendre moi-même. (C n'est pas ma langue préférée.) P>
Bien sûr, avoir un lecteur LISP n'a aucun sens à moins que vous prévoyez de faire quelque chose avec les choses que vous avez lues, alors j'aurais peut-être dû formuler la question, où puis-je trouver un simple noyau LISP écrit en C?, mais Dans mon expérience, la partie la plus difficile inévitable de l'écriture d'un LISP (un peu surprenante) est le lecteur. De plus, je ne veux pas avoir un collecteur d'ordures; Je prévois une application dans laquelle les structures de liste seront libérées plus ou moins à la main. P>
5 Réponses :
Il y a beaucoup de mises en œuvre par schéma intégrables, au sommet de ma tête: Siod , Guile , Chickenscheme , SCHEMENT48 .... P>
Je sais que je pourrais attraper un certain code de sources comme celles, mais elles sont un peu trop lourdes pour ce que je cherche. Beaucoup de leur conception sont motivés par des facteurs globaux (en particulier le GC) qui ne s'appliquent pas ici. Je veux quelque chose de assez léger --- Structures de données de base de LISP, quelque chose à lire, et conventions pour les libérer.
interprétation de LISP est très agréable. Vous pouvez également essayer d'autres personnes, comme Jim Mayfield's Zézayer. Il y a probablement beaucoup de petits lisps là-bas ...
Vous avez mentionné que vous n'aimez pas C. Peut-être que vous aimeriez Haskell - dans quel cas vous pourriez essayer " Ecrivez-vous un schéma dans 48 heures ", un tutoriel intéressant (vous obtenez d'écrire un interprète de schéma à Haskell). P>
update 2: strong> Si vous voulez Pour utiliser XLISP, comme suggéré par un autre utilisateur, vous aurez probablement besoin de src / xlread.c (863 lignes) et d'inclure / xlisp.h (1379 lignes) - mais je pourrais me tromper ... p> #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <setjmp.h>
Merci; Je vais regarder dans la chose de Knott. Sur Haskell: rien contre Haskell, mais si je voulais le faire dans un bel environnement fonctionnel, je le ferais juste dans Lisp :)
LISPREADER est un analyseur de fichiers LISP simple fait dans plaine c. p>
Si vous voulez C ++, vous pouvez creuser dans le SuperTeux Code source , il contient un analyseur de fichiers LISP écrit en C ++. P>
Lorsque vous souhaitez une implémentation réelle de LISP au lieu d'un analyseur, vous pourriez consulter Abus , qui contient un petit comme la langue de script de jeux. p>
Maintenant, pourquoi cela me fait-il penser à la dixième règle de GreensPun? :)
MIT Professor Rivest a publié un ensemble de petits lecteurs pour S-Expressions de retour en 1997 http: //people.csail.mit.edu/rivest/sexp.html Dans le cadre de sa DARPA soutenu des recherches sur la cryptographie publique. Le code ne fait que lire et imprimer et est bien décrit dans un document écrit dans le style d'une RFC Internet. P>