Changeset 27322 in project
- Timestamp:
- 08/29/12 03:30:51 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
release/4/9ML-toolkit/trunk/eval.scm
r27283 r27322 100 100 101 101 (define (sxml-term->sexpr term) 102 (print "term = " term)103 102 (let ((tree 104 103 (sxml:pre-post-order* … … 111 110 (string *preorder* . ,(lambda (tag elems) (sxml:text elems))) 112 111 113 (real *preorder* . ,(lambda (tag elems) (string->number (sxml:text elems)))) 112 (real *preorder* . ,(lambda (tag elems) 113 (let ((v (sxml:text elems))) 114 (if (number? v) v (string->number v))))) 114 115 115 (nat *preorder* . ,(lambda (tag elems) (string->number (sxml:text elems)))) 116 (nat *preorder* . ,(lambda (tag elems) 117 (let ((v (sxml:text elems))) 118 (if (number? v) v (string->number v))))) 116 119 117 120 (bool *preorder* . ,(lambda (tag elems) (if (string=? (sxml:text elems) "true") #t #f))) … … 130 133 (let ((formal (string->symbol (sxml:attr (cons tag elems) 'formal))) 131 134 (body (sxml:kid elems))) 132 (print "Function body = " body)133 (print "Function formal = " formal)134 135 `(lambda (,formal) ,(sxml-term->sexpr body))))) 135 136 (Let0 *preorder* . ,(lambda (tag elems) … … 154 155 `(let (,ax) ,fin) 155 156 (let ((en (car env))) 156 (print "en = " en)157 (print "ax = " ax)158 157 (let ((name (string->symbol (sxml:attr en 'name))) 159 158 (value (sxml-value->sexpr (sxml:kid en)))) 160 (print "value = " value)161 159 (let ((en (list name value))) 162 160 (recur (cdr env) (if value (cons en ax) ax)) … … 166 164 167 165 (define (sxml-value->sexpr tree) 168 (print "tree = " tree)169 166 (let* ((tree 170 167 (sxml:pre-post-order* … … 174 171 ,(lambda (tag elems) 175 172 (let ((node (cons tag elems))) 176 (print "Tuple elems = " elems)177 173 (let ((left (sxml:kidn-cadr 'left node)) 178 (right (sxml:kidn-cdr 'right node))) 179 (print "left = " left) 180 (print "right = " right) 181 (cons left right))) 174 (right (sxml:kidn-cadr 'right node))) 175 176 (list left right))) 182 177 )) 183 178 … … 187 182 (string . ,(lambda (tag elems) (car elems))) 188 183 189 (real . ,(lambda (tag elems) (string->number (car elems)))) 184 (real . ,(lambda (tag elems) (let ((v (car elems))) 185 (if (number? v) v (string->number v))))) 190 186 191 (nat . ,(lambda (tag elems) (string->number (car elems)))) 187 (nat . ,(lambda (tag elems) (let ((v (car elems))) 188 (if (number? v) v (string->number v))))) 192 189 193 190 (bool . ,(lambda (tag elems) (if (string=? (car elems) "true") #t #f))) … … 200 197 201 198 ) . ,(lambda (tag elems) 202 (print "Const elems = " elems)203 199 (car elems))) 204 200 … … 214 210 )) 215 211 212 (null . ,(lambda (tag elems) '())) 216 213 217 214 (*text* . ,(lambda (trigger str) str)) … … 238 235 (cond ((or (atom? tree) (null? tree) (null? (cdr tree))) tree) 239 236 (else (cons (flatten (car tree)) 240 (flatten (cadr tree)))))))) 237 (flatten (cadr tree))))))) 238 239 ) 241 240 tree)) 242 241
Note: See TracChangeset
for help on using the changeset viewer.