Changeset 10420 in project


Ignore:
Timestamp:
04/11/08 10:17:33 (12 years ago)
Author:
felix winkelmann
Message:

simple module test

Location:
chicken/branches/beyond-hope
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • chicken/branches/beyond-hope/TODO

    r10414 r10420  
    33* merge trunk into branch
    44
    5 * current module approach problems
     5* compiler
     6** define-syntax special form
     7
     8* modules
    69** fixup of module export-list in ##sys#extend-macro-environment
    7    not done for static se's of global macros
     10   not done for static se's of global macros (still relevant?)
    811
    912* reimplement macros from chicken-ffi-macros hygienically
  • chicken/branches/beyond-hope/csi.scm

    r10414 r10420  
    323323                                  (##sys#current-environment '()))
    324324                                 (m (##sys#current-module m)
    325                                     (##sys#current-environment (cddr m)))
     325                                    (##sys#current-environment (cddr m))
     326                                    (pp (map car (cddr m)))) ;***
    326327                                 (else (printf "no such module: ~s~%" name)))))
    327328                        ((?)
  • chicken/branches/beyond-hope/eval.scm

    r10414 r10420  
    288288      (define (eval/meta form)
    289289        (parameterize ((##sys#current-module #f))
     290          (pp `(EVAL/META: ,form))      ;***
    290291          ((##sys#compile-to-closure
    291292            form
     
    293294            (##sys#current-meta-environment))
    294295           '() ) ) )
     296
     297      (define (eval/elab form)
     298        (pp `(EVAL/ELAB: ,form))        ;***
     299        ((##sys#compile-to-closure
     300          form
     301          '()
     302          (##sys#current-environment))
     303         '() ) )
    295304
    296305      (define (compile x e h tf cntr se)
     
    604613                             e #f tf cntr se2)))
    605614                               
     615                         ((define-syntax)
     616                          (##sys#check-syntax 'define-syntax x '(define-syntax variable _) #f se)
     617                          (##sys#extend-macro-environment
     618                           (rename (cadr x) se)
     619                           (##sys#current-environment)
     620                           (##sys#er-transformer
     621                            (eval/meta (caddr x))))
     622                          (compile '(##core#undefined) e #f tf cntr se) )
     623
    606624                         [(##core#loop-lambda)
    607625                          (compile `(,(rename 'lambda se) ,@(cdr x)) e #f tf cntr se) ]
     
    632650
    633651                         [(##core#elaborationtimeonly ##core#elaborationtimetoo) ; <- Note this!
    634                           (eval/meta (cadr x))
     652                          (eval/elab (cadr x))
    635653                          (compile '(##core#undefined) e #f tf cntr se) ]
    636654
     
    684702                            (parameterize ((##sys#current-module module)
    685703                                           (##sys#current-environment (cddr module)))
    686                               (pp (##sys#current-module)) ;***
    687704                              (let ((forms
    688705                                     (map (lambda (x)
  • chicken/branches/beyond-hope/expand.scm

    r10414 r10420  
    103103
    104104(define (##sys#extend-macro-environment name se handler)
    105   (print "macro def: " name)            ;***
    106105  (cond ((##sys#current-module) =>
    107106         (lambda (m)
    108            (print "module macro def (" m "): " name) ;***
    109107           ;; include macro in it's own static se (circular)
    110108           (let* ((n (list name #f handler))
     
    113111             ;; fixup exports
    114112             (cond ((assq name (cadr m)) =>
    115                     (cut set-cdr! <> (list name se2 handler))))
     113                    (lambda (a)
     114                      (set-cdr! a (list se2 handler)))))
     115             ;; extend module se
     116             (set-cdr! (cdr m) (cons (list name se2 handler) (cddr m)))
     117             ;; extend current env
    116118             (##sys#current-environment
    117               (cons (list name se2) (##sys#current-environment))))))
     119              (cons (list name se2 handler) (##sys#current-environment))))))
    118120        ((lookup name ##sys#macro-environment) =>
    119121         (lambda (a)
    120            (print "macro def (found): " name) ;***
    121122           (set-car! a se)
    122123           (set-car! (cdr a) handler) ) )
    123124        (else
    124          (print "macro def (new): " name) ;***
    125125         (set! ##sys#macro-environment
    126126           (cons (list name se handler)
     
    189189              ((pair? mdef)
    190190               (values
    191                 ;; if stored se is #f, then this is a lisp macro,
    192191                ;; force ref. opaqueness by passing dynamic se
    193                 (call-handler head (cadr mdef) exp (or (car mdef) dse))
     192                (call-handler head (cadr mdef) exp (car mdef))
    194193                #t))
    195194              (else (values exp #f)) ) )
     
    985984        ,@(map (lambda (x) (list %quote x)) ids) ) ) ) ))
    986985
    987 (##sys#extend-macro-environment
    988  'define-syntax
    989  '()
    990  (lambda (form se dse)
    991    (##sys#check-syntax 'define-syntax form '(define-syntax variable _) #f se)
    992    `(,(if ##sys#enable-runtime-macros '##core#elaborationtimetoo '##core#elaborationtimeonly)
    993      (##sys#extend-macro-environment
    994       ',(cadr form)
    995       (##sys#current-environment)
    996       (##sys#er-transformer ,(caddr form))))))
    997 
    998986
    999987;;; syntax-rules
  • chicken/branches/beyond-hope/library.scm

    r10414 r10420  
    32823282             (string-append "\t[" spec " ]") )
    32833283         (if (not (zero? rev))
    3284              (##sys#string-append
     3284             (string-append
    32853285              "\nSVN rev. " (number->string rev) "\t")
    32863286             "\n")
Note: See TracChangeset for help on using the changeset viewer.