Changeset 6617

Show
Ignore:
Timestamp:
02/13/08 01:31:53 (10 months ago)
Author:
lieutar
Message:

/share/lang/elisp/escm/trunk: add some changes

Location:
lang/elisp/escm/trunk
Files:
4 added
1 removed
6 modified

Legend:

Unmodified
Added
Removed
  • lang/elisp/escm/trunk/escm-env.el

    r6576 r6617  
    4343  (let ((pos (escm-env::pos self sym))) 
    4444    (if pos `(aref ,env ,pos) 
    45       (escm-env::make-referer (escm-env::parent self) 
    46                               `(escm-env::parent ,env) 
     45      (escm-env::make-referer (escm-env::get-parent self) 
     46                              `(escm-env::get-parent ,env) 
    4747                              sym)))) 
    4848 
     
    5050  (let ((pos (escm-env::pos self sym))) 
    5151    (if pos `(aset ,env ,pos ,val) 
    52       (escm-env::make-setter (escm-env::parent self) 
    53                              `(escm-env::parent ,env) 
     52      (escm-env::make-setter (escm-env::get-parent self) 
     53                             `(escm-env::get-parent ,env) 
    5454                             sym 
    5555                             val)))) 
    56  
    5756 
    5857(escm-test::deftest escm env 
     
    6665   (escm-test "gset! 2" (escm-env::gset! g 'a 3) t) 
    6766   (escm-test "gref  2" (and (eq 1 (escm-env::gref e 'a)) 
    68                              (eq 3 (escm-env::gref g 'a)))))) 
     67                             (eq 3 (escm-env::gref g 'a)))) 
     68   (escm-util::a (escm-env::make-referer f 'env 'a)) 
     69   (escm-util::a (escm-env::make-setter f 'env 'a '((aaa)))))) 
    6970 
    70 ;;(escm-test::run 'escm 'env) 
     71;;(escm-test::run 'escm 'env ) 
    7172(provide 'escm-env) 
  • lang/elisp/escm/trunk/escm-proc.el

    r6576 r6617  
    1111    new)) 
    1212 
    13 (defsubst escm-proc::wrap (fun) 
    14   (let ((new (create-escm-proc))) 
    15     (escm-proc::set-body 
    16      (vector 
    17       (byte-compile (lambda (vm) 
    18                       (escm-vm::set-current-value 
    19                        vm 
    20                        (apply fun (escm-vm::get-current-args vm))))) 
    21       (function escm-vm::ret) 
    22       )))) 
    23  
    24 (defmacro escm-defun ()) 
     13(defmacro escm-defun () 
     14  (let (()) 
     15    )) 
  • lang/elisp/escm/trunk/escm-test.el

    r6576 r6617  
    55                  (let ((err (eval (progn ,@x)))) (if (eq err t) nil err)) 
    66                (error *error*)))) 
    7      (when err (setq failed (cons (cons name err) failed))))) 
     7     (when err (setq failed (cons (cons ,name err) failed))))) 
    88 
    99(defun escm-test::run-test (reporter project name all) 
  • lang/elisp/escm/trunk/escm-util.el

    r6576 r6617  
    5050 
    5151(defun escm-util::a (&rest args) 
     52  "" 
    5253  (read-char (format "%S" args)) 
    5354  nil) 
    5455 
     56(defsubst escm-util::get-arity (fun) 
     57  "returns argument list." 
     58  (if (functionp fun) 
     59      (cond ((subrp fun) (subr-arity fun)) 
     60            ((listp fun) (cadr       fun)) 
     61            (t           (aref       fun 0))) 
     62    (throw 'error (format "wrong type argument: functionp %S" fun)))) 
     63 
    5564(provide 'escm-util) 
  • lang/elisp/escm/trunk/escm-vm.el

    r6576 r6617  
    22(require 'escm-cbos) 
    33(require 'escm-proc) 
     4(require 'escm-wrapped-proc) 
     5 
     6(defconst 'escm-vm::init-hook ()) 
     7(defun escm-vm-init (vm) (run-hook-with-args 'escm-vm::init-hook vm)) 
    48 
    59(escm-util::expand 
     
    4246           vm))))) 
    4347 
    44 (defsubst escm-vm::call (vm proc) 
    45   (let ((args   (escm-vm::get-current-args vm)) 
     48(defsubst escm-vm::call (vm) 
     49  (let ((proc   (escm-vm::get-current-val)) 
     50        (args   (escm-vm::get-current-args vm)) 
    4651        (env    (escm-cbos::clone  (escm-proc::get-env   proc))) 
    4752        (arity  (escm-proc::get-arity proc)) 
     
    5358    (escm-vm::push-args vm ()))) 
    5459 
    55 (defsubst escm-vm::t-call (vm proc) 
    56   (let ((args   (escm-vm::get-current-args vm)) 
     60(defsubst escm-vm::t-call (vm) 
     61  (let ((proc   (escm-vm::get-current-val)) 
     62        (args   (escm-vm::get-current-args vm)) 
    5763        (env    (escm-cbos::clone  (escm-proc::get-env   proc))) 
    5864        (arity  (escm-proc::get-arity proc)) 
     
    6470    (escm-vm::set-current-args  vm  ()))) 
    6571 
    66 (defsubst escm-vm::ret (vm val) 
     72(defsubst escm-vm::ret (vm) 
     73  (escm-vm::set-val  (mapcar (lambda (v) 
     74                               (if (escm-cbos::is-a v 'escm-proc) 
     75                                   (let ((proc (escm-cbos::clone v)) 
     76                                         (renv (escm-cbos::clone (escm-proc::get-env v))) 
     77                                         (cenv (escm-vm::get-current-env vm))) 
     78                                     (escm-env::set-parent renv cenv) 
     79                                     (escm-proc::set-env   proc renv) 
     80                                     proc) 
     81                                 v)) 
     82                             (escm-vm::get-val))) 
    6783  (escm-vm::pop-proc vm) 
    6884  (escm-vm::pop-env  vm) 
  • lang/elisp/escm/trunk/escm.el

    r6576 r6617  
    1  
    2 (require 'escm-util) 
    3 (require 'escm-cbos) 
    4  
    5 (require 'escm-env) 
    61(require 'escm-vm) 
    7 (require 'escm-proc) 
    8  
    92 
    103(defvar escm-default-vm nil)