Lisp2li gere maintenant les progn. Et correction d'une erreur dans la gestion du defun
This commit is contained in:
parent
5809570f57
commit
ac8f7a1953
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user