Changeset 11639 in project
- Timestamp:
- 08/14/08 07:52:09 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
release/3/oru/nmodl.scm
r11638 r11639 44 44 (match kv ((k v) v) (else (cdr kv))))))) 45 45 46 (define nl "\n")47 48 46 (define (nmodl-name s) 49 47 (let ((cs (string->list (->string s)))) … … 73 71 (define (enumbnds expr ax) 74 72 (match expr 75 (('if . es) (fold enumbnds ax es))76 (('let bnds body) ( fold enumbnds (append (map car bnds) ax) body))77 ((s . es) (if (symbol? s) (fold enumbnds ax es) ax))73 (('if . es) (fold enumbnds ax es)) 74 (('let bnds body) (enumbnds body (append (map car bnds) ax))) 75 ((s . es) (if (symbol? s) (fold enumbnds ax es) ax)) 78 76 (else ax))) 79 77 … … 164 162 `(if ,(k c subst) ,(k t subst) ,(k e subst))) 165 163 (('let bs e) 166 (k `(let ,(map (lambda (b) `(,(car b) ,(k (cadr b) subst))) bs) , e) subst))164 (k `(let ,(map (lambda (b) `(,(car b) ,(k (cadr b) subst))) bs) ,(k e subst)) subst)) 167 165 ((f . es) 168 166 (cons (k f subst) (map (lambda (e) (k e subst)) es))) 167 ((? symbol? ) (lookup-def t subst t)) 169 168 ((? atom? ) t))) 170 169 … … 177 176 (match expr 178 177 (('if c t e) 179 (let ((x (gensym "if"))) 180 `(let ((,x (if ,(if-convert c) ,(if-convert t) ,(if-convert e)))) ,x))) 178 (let ((r (gensym "if"))) 179 `(let ((,r (if ,(if-convert c) ,(if-convert t) ,(if-convert e)))) 180 ,r))) 181 181 (('let bs e) 182 182 `(let ,(map (lambda (b) `(,(car b) ,(if-convert (cadr b)))) bs) ,(if-convert e))) … … 190 190 (('let ((x ('if c t e))) y) 191 191 (let ((ax (fold let-enum ax (list c t e)))) 192 (if (eq? x y) ( cons (list x `(if ,c ,t ,e)) ax) ax)))193 194 (('let bnds body) (let-enum body (append bnds ax)))192 (if (eq? x y) (append ax (list (list x `(if ,c ,t ,e)))) ax))) 193 194 (('let bnds body) (let-enum body (append ax bnds))) 195 195 196 196 (('if c t e) (fold let-enum ax (list c t e)))
Note: See TracChangeset
for help on using the changeset viewer.