Changeset 26983 in project


Ignore:
Timestamp:
07/04/12 16:05:39 (9 years ago)
Author:
Ivan Raikov
Message:

nemo: more refinements in ixml format

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/nemo/trunk/nemo.scm

    r26982 r26983  
    614614        (sxml:match 'ncml:output
    615615                    (lambda (node bindings root env)
    616                       (let ((id   (sxml:attr node 'id)))
     616                      (let ((id   (or (sxml:attr node 'id)
     617                                      (sxml:attr node 'name))))
    617618                        (if (not id) (error 'output-template "output declaration requires id attribute"))
    618619                        `(output ,($ id))))))
     
    621622        (sxml:match 'ncml:const
    622623                    (lambda (node bindings root env)
    623                       (let* ((id   (sxml:attr node 'id))
     624                      (print "const: node = " node)
     625                      (let* ((id   (or (sxml:attr node 'id)
     626                                       (sxml:attr node 'name)))
    624627                             (expr ((lambda (x)
     628                                      (print "const: x = " x)
     629
    625630                                      (if (not x) 
    626631                                          (error 'const-template "const declaration " id " requires expr element")
    627632                                          (parse-expr (second x) id)))
    628                                    (sxml:kidn* 'ncml:expr node))))
     633                                   (or (sxml:kidn* 'ncml:expr node)
     634                                       (let ((vattr (sxml:attr node 'value)))
     635                                         (and vattr (list 'value vattr )))
     636                                       (list 'value (sxml:text node))
     637                                       )
     638                                   )))
    629639                        (if (not id) (error 'const-template "const declaration requires id attribute"))
    630640                        `(const ,($ id) = ,expr)))))
     
    651661        (sxml:match 'ncml:asgn
    652662                    (lambda (node bindings root env)
    653                       (let ((id   (sxml:attr node 'id))
    654                             (expr ((lambda (x)
    655                                      (if (not x) 
     663                      (let* ((id   (or (sxml:attr node 'id)
     664                                       (sxml:attr node 'name)))
     665                             (expr ((lambda (x)
     666                                      (if (not x) 
    656667                                          (error 'asgn-template "algebraic assignment requires expr element")
    657668                                          (parse-expr (second x) id)))
    658                                    (sxml:kidn* 'ncml:expr node))))
     669                                    (or (sxml:kidn* 'ncml:expr node)
     670                                        (list 'expr (sxml:text node))
     671                                        ))
     672                                   ))
    659673                        (if (not id) (error 'asgn-template "algebraic assignment requires id attribute"))
    660674                        `(,($ id) = ,expr)))))
     
    692706        (sxml:match 'ncml:reaction
    693707                    (lambda (node bindings root env)
    694                       (let* ((id      ($ (sxml:attr node 'id)))
     708                      (let* ((id      ($ (or (sxml:attr node 'id) (sxml:attr node 'name))))
    695709                            (initial ((lambda (x) (and x (parse-expr (second x) id)))
    696710                                      (sxml:kidn* 'ncml:initial node)))
     
    725739                            )
    726740                                         
    727                         (if (not id) (error 'reaction-template "reaction transition requires id attribute"))
     741                        (if (not id) (error 'reaction-template "reaction declaration requires id attribute"))
    728742                        `(reaction (,id (initial ,initial) (open ,open) (power ,power)
    729743                                        ,(and conserve `(conserve ,conserve) )
     
    737751                      (print "defun node: node = ") (pp node)
    738752
    739                       (let* ((id    (sxml:attr node 'id))
     753                      (let* ((id    (or (sxml:attr node 'id)
     754                                        (sxml:attr node 'name)))
    740755                             (args  ((lambda (x)
    741756                                       (if (null? x) 
     
    765780
    766781                      (let ((name (sxml:attr node 'name))
    767                             (functor-name (sxml:attr node 'functor-name))
     782                            (functor-name (or (sxml:attr node 'functor-name)
     783                                              (sxml:attr node 'functor)))
    768784                            (type (sxml:attr node 'type)))
    769785
Note: See TracChangeset for help on using the changeset viewer.