Changeset 27322 in project


Ignore:
Timestamp:
08/29/12 03:30:51 (9 years ago)
Author:
Ivan Raikov
Message:

9ML-toolkit: additional fixes to eval module

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/9ML-toolkit/trunk/eval.scm

    r27283 r27322  
    100100
    101101(define (sxml-term->sexpr term)
    102   (print "term = " term)
    103102  (let ((tree
    104103         (sxml:pre-post-order*
     
    111110              (string *preorder* . ,(lambda (tag elems) (sxml:text elems)))
    112111             
    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)))))
    114115             
    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)))))
    116119             
    117120              (bool *preorder* . ,(lambda (tag elems) (if (string=? (sxml:text elems) "true") #t #f)))
     
    130133                                      (let ((formal (string->symbol (sxml:attr (cons tag elems) 'formal)))
    131134                                            (body (sxml:kid elems)))
    132                                         (print "Function body = " body)
    133                                         (print "Function formal = " formal)
    134135                                        `(lambda (,formal) ,(sxml-term->sexpr body)))))
    135136            (Let0 *preorder* . ,(lambda (tag elems)
     
    154155        `(let (,ax) ,fin)
    155156        (let ((en (car env)))
    156           (print "en = " en)
    157           (print "ax = " ax)
    158157          (let ((name (string->symbol (sxml:attr en 'name)))
    159158                (value (sxml-value->sexpr (sxml:kid en))))
    160             (print "value = " value)
    161159            (let ((en (list name value)))
    162160              (recur (cdr env) (if value (cons en ax) ax))
     
    166164                                         
    167165(define (sxml-value->sexpr tree)
    168   (print "tree = " tree)
    169166    (let* ((tree
    170167            (sxml:pre-post-order*
     
    174171                      ,(lambda (tag elems)
    175172                         (let ((node (cons tag elems)))
    176                            (print "Tuple elems = " elems)
    177173                           (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)))
    182177                         ))
    183178
     
    187182                      (string . ,(lambda (tag elems) (car elems)))
    188183                     
    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)))))
    190186                     
    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)))))
    192189                     
    193190                      (bool . ,(lambda (tag elems) (if (string=? (car elems) "true") #t #f)))
     
    200197
    201198                      ) . ,(lambda (tag elems)
    202                              (print "Const elems = " elems)
    203199                             (car elems)))
    204200
     
    214210                          ))
    215211
     212              (null . ,(lambda (tag elems) '()))
    216213
    217214              (*text* . ,(lambda (trigger str) str))
     
    238235              (cond ((or (atom? tree) (null? tree) (null? (cdr tree))) tree)
    239236                    (else (cons (flatten (car tree))
    240                                 (flatten (cadr tree))))))))
     237                                (flatten (cadr tree)))))))
     238
     239             )
    241240      tree))
    242241
Note: See TracChangeset for help on using the changeset viewer.