commit ac8f7a19538ef4284a9ae73daeca9a61e496295c
parent 5809570f57276902753e0eaea8cd9701f85841db
Author: Bertrand BRUN <bertrand.brun@me.com>
Date: Tue, 2 Nov 2010 13:07:47 +0100
Lisp2li gere maintenant les progn. Et correction d'une erreur dans la gestion du defun
Diffstat:
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/lisp2li.lisp b/lisp2li.lisp
@@ -38,8 +38,8 @@ par le compilateur et par l’interpréteur"
(add-top-level-binding env
(second expr)
(cons :lclosure (cons env-bis
- (lisp2li (fourth expr)
- env-bis)))))
+ (map-lisp2li (cdddr expr)
+ env-bis)))))
(cons :lit (second expr)))
((eq 'setq (car expr))
(cons :call (cons 'set-binding (list `(:lit . ,env)
@@ -62,12 +62,14 @@ par le compilateur et par l’interpréteur"
`(let (,(car bindings))
(let* ,(cdr bindings)
,body))) env)))
+ ((eq 'progn (car expr)) ; PROGN
+ (cons :progn (map-lisp2li (cdr expr) env)))
((macro-function (car expr))
(lisp2li (macroexpand-1 expr) env)) ; macros
((not (special-operator-p (car expr))) ; fonctions normales.
(cons :call (cons (first expr) (map-lisp2li (cdr expr) env))))
(T
- (error "special forme NYI ~S" (car expr)))
+ (error "special form not yet implemented ~S" (car expr)))
))
(defun map-lisp2li (expr env)
diff --git a/meval.lisp b/meval.lisp
@@ -18,6 +18,8 @@
(defun map-meval (list env)
(mapcar (lambda (x) (meval x env)) list))
+(defun foo (x) x)
+
;; Test unitaire
(load "test-unitaire")
(erase-tests meval)