www

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

commit ccf304f19a485fc0da977160e84a79918e4b5866
parent 77c2905d53b48dc5e8dc1a6b4ef40797c592c457
Author: Bertrand BRUN <bertrand.brun@me.com>
Date:   Sun, 14 Nov 2010 20:58:55 +0100

Continuation du cas de defvar

Diffstat:
Mlisp2li.lisp | 11++++++++++-
Mmain.lisp | 2+-
2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/lisp2li.lisp b/lisp2li.lisp @@ -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 l’interpré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))) diff --git a/main.lisp b/main.lisp @@ -1,4 +1,4 @@ -(setq *print-circle* t) +;(setq *print-circle* t) (load "environnement") (load "instructions") (load "lisp2li")