Continuation du cas de defvar

This commit is contained in:
Bertrand BRUN 2010-11-14 20:58:55 +01:00 committed by Georges Dupéron
parent 77c2905d53
commit ccf304f19a
2 changed files with 11 additions and 2 deletions

View File

@ -27,7 +27,7 @@
. ,(make-stat-env-optional (cdr params) env (+ 1 position) num-env)))))
(defun env-depth (env)
(+ (or (second (first env)) -1) 1))
(or (cadar (last env)) 0))
(defun recalculation (env)
(cond ((endp env)
@ -231,6 +231,15 @@ par le compilateur et par linterpréteur"
;; setq
((eq 'setq (car expr))
(lisp2li `(setf ,@(cdr expr)) env))
;; defvar
((eq 'defvar (car expr))
(let ((var `(,(cadr expr)
,(if (eq nil env) 0 (cadar (last env)))
,(if (eq nil env) 1 (+ (caddar (last env)) 1)))))
(setf env (append env `(,var)))
(print env)
`(:set-var (,(second var) ,(third var))
,(third expr))))
;; progn
((eq 'progn (car expr))
(cons :progn (map-lisp2li (cdr expr) env)))

View File

@ -1,4 +1,4 @@
(setq *print-circle* t)
;(setq *print-circle* t)
(load "environnement")
(load "instructions")
(load "lisp2li")