www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 5652d4deba6496fefdd7495bc076416119db9223
parent b14701f20a0877a36294231f895787fdd5f4392b
Author: Bertrand BRUN <bertrand.brun@me.com>
Date:   Sun, 31 Oct 2010 23:25:58 +0100

La gestion des LET est en place. Mais pour le traitement c'est pas encore ca :D

Diffstat:
Mlisp2li.lisp | 7+++++++
1 file changed, 7 insertions(+), 0 deletions(-)

diff --git a/lisp2li.lisp b/lisp2li.lisp @@ -1,4 +1,5 @@ (load "environnement") + (defun lisp2li (expr env) "Convertit le code LISP en un code intermédiaire reconnu par le compilateur et par l’interpréteur" @@ -44,6 +45,9 @@ par le compilateur et par l’interpréteur" (cons :call (cons 'set-binding (list `(:lit . ,env) (cons :lit (second expr)) (cons :lit (third expr)))))) + ((eq 'let (car expr)) + (push-new-env env "LET") + (map-lisp2li-let expr env)) ((macro-function (car expr)) (lisp2li (macroexpand-1 expr) env)) ; macros ((not (special-operator-p (car expr))) ; fonctions normales. @@ -55,6 +59,9 @@ par le compilateur et par l’interpréteur" (defun map-lisp2li (expr env) (mapcar (lambda (x) (lisp2li x env)) expr)) +(defun map-lisp2li-let (expr env) + (mapcar (lambda (x) (add-binding env (car x) (lisp2li (cadr x) env))) (cadr expr))) + (defun make-stat-env (env params) (mapcar (lambda (x) (add-binding env x nil)) params) env)