Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN PETIT INTERPRETE LISP


Information sur la source

Description

Vu que j'ai mis du temps à le faire et qu'il marche plutôt bien j'ai eu envie de le poster ici...

la compilation marche très bien sur toute les plateformes.
il y a aussi un Makefile pour les parresseux.
                                  ---------------
Il y a les principales fonctions pour apprendre les bases du Lisp, et un petit Garbage Collector qui marche bien.
          ----------------------------------------------------------------------------------------------

                    --------> la structure de donnée: arbre en listes chainées <-----------

  un noeud est un objet, avec un car et un cdr, le car c'est descendre d'un niveau dans l'arbre, et le cdr c'est se déplacer vers la droite.
  le car et le cdr sont donc tous les deux fils de l'objet mais dans deux directions différentes.

                                      ***********
un objet peut aussi etre un symbole (chaine de caractère), dans ce cas il possède un pointeur vers sa pile de valeurs, une valeur c'est un morceau de l'arbre..

                                      ***********
** et enfin il y a aussi les int, les tableaux, les pointeurs vers fonctions C, et les fonctions Lisp, qui sont également des objets avec respectivement 1, 2, 1 et 2 valeurs attachées.


lisez le code pour mieux comprendre !
 

Conclusion

remarque : on évalue d'abord une feuille de l'arbre tout en empilant les pointeurs vers les parents de cette feuille, puis on dépile lentement mais sûrement les pointeurs vers les parents en remplacement le car et le cdr des parents par l'évaluation des feuilles, ainsi les parent deviennent à leur tour des feuilles.

ainsi le ramasse miette devient très simple à écrire puisque tout ce qui n'est pas dans l'arbre ou dans la pile de valeurs d'un symbole ne peut être atteint et donc peut être supprimé

pour tester: tapez tout simplement (somme 4000) le fonction somme (des n premiers entiers) est déja écrite dans fstd.l

ha oui et dernière chose, je l'ai fait à partir d'une ébauche de quelqu'un d'autre trouvée sur Google:
  http://www.sonoma.edu/users/l/luvisi/sl3.c

merci à la personne qui l'a fait ça m'a quand même pas mal aidé pour le début

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de acx01b le 24/12/2006 00:41:23

Si vous lisez ou exécutez mon code laissez un petit commentaire je le lirai

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Structure de communication. [ par lektrosonic ] Bonsoir,je travaille sur un projet client-serveur. J'ai reflechi sur comment je vais envoyer les donnees entre les deux applications et j'ai etablit l enlever le \\ et les remplacer pas un seul [ par sebastienmz ] bonjour je cherche a enlever les \\ et les remplacer pas \ mais dans mon code s'il y a un seul \ ça bug voici mon code :  for (i=0; i&lt;=strlen(comma Structure d'un moteur [ par Skyffer3 ] Bonjour à tous. Je suis un debutant en c++ et en programmation 3d, mais j'avance très vite grâce à d'excellents sites que j'ai trouvé. Sinon je progra aide c++ structure [ par buse974 ] salut tout le monde je prend des cour par le cned et j'ai un exo qui me cause probleme je doit cree un programme qui traduit une phrase taper en code Juste une petite question sur les structures. [ par _michel ] Voilà la définition de conventionnelle pour une structure :typedef struct structure{   void *champs_1;   void *champs_2;}   s_structure;Mais pourquoi ecrire une structure dans un fichie en c svp [ par yacjapan ] #define max_m 1typedef struct{int x,y,z;}position;typedef struct{char *nom_objet,*type_pbjet;position p[max_m];}objet;/**********************//objet o Désactiver base de donnee autogénérer OBDC [ par chris5 ] Bonjour, je voudrai désactiver le systeme de base de donnees obdc automatiquement generer avec MFC de visual studio 2005, car elle ne sers plus a rien initialisation d'un tableau de structure [ par thmatew ] Bonjour a tous,meme si je ne débute pas en C je pense que ce message doit etre poser ici.je n'arrive pas a initialiser une structure en brut, un Exemp Membre iString de la structure TBBUTTON [win 32 - devcpp] [ par julien_boss ] Bonsoir,je crée une toolbar comportant plusieurs boutons, associé au style TBSTYLE_LIST, qui permet de faire apparaitre une chaine de caractère à coté


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.