Changeset 9197 for lang/elisp
- Timestamp:
- 04/09/08 18:03:21 (8 months ago)
- Location:
- lang/elisp/escm/trunk
- Files:
-
- 1 added
- 1 removed
- 7 modified
- 1 moved
-
. (modified) (1 prop)
-
DEVELOPERSTOOLS.el (modified) (1 diff)
-
Makefile (added)
-
Makefile.el (modified) (1 diff)
-
escm-compile.el (modified) (1 diff)
-
escm-debug.el (modified) (3 diffs)
-
escm-errors.el (deleted)
-
escm-port.el (moved) (moved from lang/elisp/escm/trunk/escm-stream.el) (1 diff)
-
escm-proc.el (modified) (5 diffs)
-
escm-vm.el (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/elisp/escm/trunk
-
Property
svn:ignore set
to
*.elc
-
Property
svn:ignore set
to
-
lang/elisp/escm/trunk/DEVELOPERSTOOLS.el
r9113 r9197 106 106 ((elambda (a b) (+ a b)) 1 2) 107 107 ) 108 109 -
lang/elisp/escm/trunk/Makefile.el
r9113 r9197 1 (let ((dir (file-name-directory (buffer-file-name))) 2 (files 3 '( 4 "escm-util.minimal.el" 5 "escm-test.el" 6 "escm-util.el" 7 "escm-cbos.el" 1 (defconst escm-make::els 2 '("escm-util.minimal.el" 3 "escm-test.el" 4 "escm-util.el" 5 "escm-cbos.el" 6 7 "escm-base.el" 8 "escm-preprocess.el" 8 9 9 "escm-base.el" 10 "escm-preprocess.el" 10 "escm-arity.el" 11 ;; "escm-env.el" 12 ;; "escm-proc.el" 13 ;; "escm-syntax.el" 14 15 ;; "escm-iblock-content.el" 16 ;; "escm-iblock.el" 17 ;; "escm-icode.el" 18 19 ;; "escm-context.el" 20 ;; "escm-compile.el" 21 22 ;; "escm-debug.el" 23 ;; "escm-vm.el" 24 ;; "escm.el" 25 )) 11 26 12 "escm-arity.el" 13 ;; "escm-env.el" 14 ;; "escm-proc.el" 15 ;; "escm-syntax.el" 27 (defun escm-make::newer-than (a b) 28 (let ((atime (nth 4 (file-attributes a))) 29 (btime (nth 4 (file-attributes b)))) 30 (and (< (nth 0 atime) 31 (nth 0 btime)) 32 (or (> (nth 0 atime) 33 (nth 0 btime)) 34 (>= (nth 1 atime) 35 (nth 1 btime)))))) 16 36 17 ;; "escm-iblock-content.el" 18 ;; "escm-iblock.el" 19 ;; "escm-icode.el" 37 (defun escm-make::compile (file) 38 (let ((el (locate-library file)) 39 (elc (locate-library (concat file "c")))) 40 (when (or (not elc) 41 (escm-make::newer-than el elc)) 42 (byte-compile-file el)))) 20 43 21 ;; "escm-context.el" 22 ;; "escm-compile.el" 23 24 ;; "escm-debug.el" 25 ;; "escm-vm.el" 26 ;; "escm.el" 27 ))) 28 (unless (member dir load-path ) 29 (setq load-path (cons dir load-path))) 30 (mapcar 'byte-compile-file files) 31 ) 32 33 ;; (escm-vm::eval (escm-vm::new) '(+ 0 1 2 3)) 44 (defun escm-make.elc () 45 (mapcar (function escm-make::compile) escm-make::els)) 46 ;;(escm-make.elc) -
lang/elisp/escm/trunk/escm-compile.el
r9113 r9197 244 244 t) 245 245 (escm-test compile1 (escm-syntax-p (escm-env::gref env 'x))) 246 (escm-test expand (escm-iproc::equal (escm-icode '((store 1))) 247 (escm-test::p "result" (escm-compile ctx '(x))))) 246 (escm-test expand (escm-iproc::equal 247 (escm-icode '((store 1))) 248 (escm-test::p "result" (escm-compile ctx '(x))))) 248 249 )) 249 250 ;; (escm-test::run 'escm 'define-syntax) -
lang/elisp/escm/trunk/escm-debug.el
r9113 r9197 33 33 (defconst escm-debug::pos 0) 34 34 35 (defun escm-debug (vm msg))35 (defun escm-debug (vm &optional p)) 36 36 (defun escm-debug::enter ()) 37 37 (defun escm-debug::leave ()) … … 178 178 179 179 180 (defadvice escm-debug (around escm-debug first (vm p))180 (defadvice escm-debug (around escm-debug first (vm &optional p)) 181 181 (escm-debug::step vm p)) 182 182 … … 191 191 (delete-other-frames) 192 192 (setq codewin (selected-window)) 193 (switch-to-buffer codebuf) 194 (escm-debug-mode) 195 (escm-debug::init-code-buffer vm p) 193 (when p 194 (switch-to-buffer codebuf) 195 (escm-debug-mode) 196 (escm-debug::init-code-buffer vm p)) 196 197 (setq vmwin (split-window-horizontally)) 197 198 (shrink-window-horizontally (- (window-width) 20)) -
lang/elisp/escm/trunk/escm-port.el
r9113 r9197 29 29 (require 'escm-base) 30 30 31 (escm-cbos::define-class (escm-input-stream)) 32 (escm-cbos::define-method escm-input-stream 33 escm-input-stream::close (self)) 31 (escm-cbos::define-class (escm-port)) 34 32 35 (escm-cbos::define-class (escm-file-input-stream escm-input-stream) buffer position) 36 (defun escm-file-input-stream::new (file) 33 ;; [R5RS] 34 ;; (port?) 35 36 ;; [R5RS] 37 (escm-cbos::define-method escm-port escmp-port::input-port? (self) nil) 38 ;; [R5RS] 39 (escm-cbos::define-method escm-port escmp-port::output-port? (self) nil) 40 41 42 (escm-cbos::define-class (escm-output-port escm-port)) 43 ;; Function: close-input-port port 44 ;; Function: close-output-port port 45 ;; [R5RS] Closes input and output port, respectively 46 47 48 (escm-cbos::define-class (escm-input-port escm-port)) 49 50 (escm-cbos::define-method escm-input-port 51 escm-input-port::read (self)) 52 53 (escm-cbos::define-method escm-input-port 54 escm-input-port::close-input-port (self)) 55 56 (escm-cbos::define-method escm-input-port 57 escm-input-port::read-char (self)) 58 59 (escm-cbos::define-method escm-input-port 60 escm-input-port::peek-char (self)) 61 62 (escm-cbos::define-method escm-input-port 63 escm-input-port::char-ready? (self)) 64 65 66 67 (escm-cbos::define-class (escm-input-file escm-input-port) buffer position) 68 69 (defsubst escm-input-file::new (file) 37 70 "creates a filehandle that bound to given path." 38 (let* ((self (create-escm- file-input-stream))71 (let* ((self (create-escm-input-file)) 39 72 (buf (find-file-noselect file nil nil))) 40 73 (save-excursion 41 74 (set-buffer buf) 42 75 (rename-buffer (format " *escm-open %s*" file))) 43 (escm- file-input-stream::set-buffer buf)44 (escm- file-input-stream::set-positon 1)76 (escm-input-file::set-buffer buf) 77 (escm-input-file::set-positon 1) 45 78 self)) 46 79 47 (def un escm-file-input-stream::at-eof? (self)48 (>= (escm- file-input-stream::get-position self)49 (escm- file-input-stream::get-buffer self)))80 (defsubst escm-input-file::at-eof? (self) 81 (>= (escm-input-file::get-position self) 82 (escm-input-file::get-buffer self))) 50 83 51 (defun escm-file-input-stream::getc (self) 52 (if ((escm-file-input-stream::at-eof? self)) 53 (buffer-substring-no-properties ))) 84 (defsubst escm-input-file::read-char (self) 85 (if (escm-input-file::at-eof? self) nil 86 (let ((buf (escm-input-file::get-buffer self)) 87 (p (escm-input-file::get-position self)) 88 (r nil)) 89 (save-excursion 90 (set-buffer buf) 91 (setq r (buffer-substring-no-properties (1- p) p))) 92 (escm-input-file::set-positon self (1+ p)) 93 (when r (aref r 0))))) 54 94 55 95 56 (defmacro escm-util::with-fh-buffer (fh &rest body) 57 "" 58 `(let ((*buf* (current-buffer))) 59 (set-buffer (get ,fh 'buf)) 60 (let ((*ret* (progn ,@body))) 61 (set-buffer *buf*) 62 *ret*))) 96 (defsubst escm-input-file::peek-char (self) 97 (if (escm-input-file::at-eof? self) nil 98 (let ((buf (escm-input-file::get-buffer self)) 99 (p (escm-input-file::get-position self)) 100 (r nil)) 101 (save-excursion 102 (set-buffer buf) 103 (setq r (buffer-substring-no-properties (1- p) p))) 104 (when r (aref r 0))))) 63 105 64 (defun escm-util::getc (fh) 65 "gets a character from filehandle." 66 (escm-util::with-fh-buffer 67 fh 68 (if (= (point) (point-max)) nil 69 (forward-char 1) 70 (buffer-substring-no-properties (1- (point)) (point))))) 106 (defsubst escm-input-file::close-input-port (self) 107 "closes filehandle." 108 (kill-buffer (escm-input-file::get-buffer self)) 109 (escm-input-file::set-buffer self nil)) 71 110 72 (defun escm-util::gets (fh) 73 "gets a line from filehandle." 74 (escm-util::with-fh-buffer 75 fh 76 (if (= (point) (point-max)) nil 77 (let ((from (point)) 78 (to (progn (end-of-line) (point)))) 79 (when (< (point) (point-max)) (forward-char 1)) 80 (buffer-substring-no-properties from to))))) 111 (defsubst escm-input-file::char-ready? (self) 112 (not (escm-input-file::at-eof? self))) 81 113 82 (defun escm-util::close (fh)83 "closes filehandle."84 (save-excursion85 (kill-buffer (get fh 'buf))86 (put fh 'buf nil)))87 114 88 (defmacro escm-util::with-file (file var &rest body) 89 "like a IO.foreach in ruby." 90 `(let ((*ret* nil) 91 (*fh* (escm-util::open ,file)) 92 ,var) 93 (while (setq ,var (escm-util::gets *fh*)) 94 (setq *ret* (cons (progn ,@body) *ret*))) 95 (escm-util::close *fh*) 96 (reverse *ret*))) 115 (escm-cbos::define-method escm-input-file 116 escm-input-port::close-input-port (self) 117 (escm-input-file::close-input-port self)) 118 119 (escm-cbos::define-method escm-input-file 120 escm-input-port::read-char (self) 121 (escm-input-file::read-char self)) 122 123 (escm-cbos::define-method escm-input-file 124 escm-input-port::peek-char (self) 125 (escm-input-file::peek-char self)) 126 127 (escm-cbos::define-method escm-input-file 128 escm-input-port::char-ready? (self) 129 (escm-input-file::char-ready? self)) 130 97 131 98 132 -
lang/elisp/escm/trunk/escm-proc.el
r9113 r9197 73 73 escm-wrapped-vm-method escm-wrapped-proc::make-expression (self fun) 74 74 `(apply ,(if (symbolp fun) (symbol-function fun) fun) 75 (escm-wrapped-proc-env::get-arg 76 (cons vm (escm-vm::current-env vm))))) 77 78 79 75 (cons vm (escm-wrapped-proc-env::get-arg (escm-vm::current-env vm))))) 80 76 81 77 (defsubst escm-wrapped-proc::initialize (new fun) … … 102 98 new)) 103 99 104 ;;(escm-wrapped-proc::new (function +)) 105 106 ;; (escm-vm::eval (escm-vm::new) '(+ 1 2)) 100 ;; 107 101 108 102 (escm-cbos::define-method … … 115 109 116 110 (defsubst escm-continuation::new (vm) 117 (create-escm-wrapped-vm-method 118 `(lambda (vm val) 119 (let ((cont ,(let ((cont (create-escm-vm))) 120 (set-env-stack cont (copy-list (get-env-stack vm))) 121 (set-proc-stack cont (copy-list (get-proc-stack vm))) 122 (set-src-stack cont (copy-list (get-src-stack vm))) 123 (set-pc-stack cont (copy-list (get-pc-stack vm))) 124 (set-arg-stack cont (copy-list (get-arg-stack vm)))) 125 cont)) 126 (set-env-stack vm (get-env-stack cont)) 127 (set-proc-stack vm (get-proc-stack cont)) 128 (set-src-stack vm (get-src-stack cont)) 129 (set-pc-stack vm (get-pc-stack cont)) 130 (set-arg-stack vm (get-arg-stack cont)) 131 (set-val-stack vm (list val)))))) 111 (escm-wrapped-vm-method::new 112 `(lambda (vm &rest *vals*) 113 (escm-vm::set-env-stack vm ,(copy-list (cdr (escm-vm::get-env-stack vm)))) 114 (escm-vm::set-proc-stack vm ,(copy-list (cdr (escm-vm::get-proc-stack vm)))) 115 (escm-vm::set-src-stack vm ,(copy-list (cdr (escm-vm::get-src-stack vm)))) 116 (escm-vm::set-pc-stack vm ,(copy-list (cdr (escm-vm::get-pc-stack vm)))) 117 (escm-vm::set-arg-stack vm ,(copy-list (cdr (escm-vm::get-arg-stack vm)))) 118 (escm-vm::set-val-stack vm *vals* ) 119 (escm-debug 0) 120 ))) 121 122 132 123 133 124 (defun escm::values (vm &rest vals) … … 169 160 (defun escm::call/cc (vm proc) 170 161 (escm-vm::push-arg vm (list (escm-continuation::new vm))) 162 (escm-vm::set-current-val vm proc) 171 163 (escm-vm::call vm proc)) 164 165 166 167 172 168 173 169 (defun escm-proc::initialize-vm (vm) … … 191 187 192 188 (escm-wrapped-vm-method::new 193 . ((expand-quasiquote escm::expand-quasiquote) 194 (values escm::values) 195 (apply escm::apply) 196 (eval escm::eval) 197 (call/cc escm::call/cc) 198 (call-with-continuation escm::call/cc) 189 . ((expand-quasiquote escm::expand-quasiquote) 190 (values escm::values) 191 (apply escm::apply) 192 (eval escm::eval) 193 (call/cc escm::call/cc) 194 (call-with-current-continuation escm::call/cc) 195 (show-registers escm-debug::vm-to-string) 199 196 )))) 200 197 ) 201 198 (add-hook 'escm-vm::init-hook (function escm-proc::initialize-vm)) 202 199 200 201 203 202 (provide 'escm-proc) 204 203 ;;; escm-proc.el ends here -
lang/elisp/escm/trunk/escm-vm.el
r9113 r9197 91 91 vm))))) 92 92 93 94 93 (defsubst escm-vm::call (vm &optional proc) 95 94 (escm-debug::enter) … … 136 135 (list vm (escm-vm::current-env vm))) 137 136 (escm-vm::set-current-pc vm (1+ (escm-vm::current-pc vm)))) 137 ;; (escm-vm::eval (escm-vm::new) '(call/cc (lambda (cc) 123))) 138 138 139 139 (defsubst escm-vm::apply (vm proc args) … … 142 142 (escm-vm::push-arg vm (reverse args)) 143 143 (escm-vm::call vm proc) 144 (escm-vm:: push-pcvm 0)144 (escm-vm::set-current-pc vm 0) 145 145 (while (escm-vm::get-proc-stack vm) 146 146 (escm-vm::step vm)) 147 147 (escm-vm::current-val vm)))) 148 148 (escm-vm::set-proc-stack vm procs) 149 (escm-vm::set-current-pc vm 0) 149 150 retval)) 151 152 (escm-test::define-test escm escm-vm-eval 153 (let ((test (lambda (sexp) 154 (let ((vm (escm-vm::new))) 155 (escm-vm::eval vm sexp) 156 (eval (macroexpand 157 `(escm-test 158 ,(format "eval %S" sexp) 159 (equal 160 (escm-test::p "pc(result):" 161 (escm-vm::get-pc-stack vm)) 162 (escm-test::p "pc(new):" 163 (escm-vm::get-pc-stack 164 (escm-vm::new))))))))))) 165 (funcall test '()) 166 (funcall test '(+ 1 1)) 167 (funcall test '((lambda () ))) 168 (funcall test '(define (a x) x)) 169 (funcall test '(define-syntax a (lambda (sexp) ))))) 170 ;;(escm-test::run 'escm 'escm-vm-eval) 150 171 151 172 (defsubst escm-vm::compile (vm sexp)
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)