Changeset 26982 in project


Ignore:
Timestamp:
07/04/12 12:48:52 (9 years ago)
Author:
Ivan Raikov
Message:

nemo: adjustments to ixml format

Location:
release/4/nemo/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/nemo/trunk/expr-parser.scm

    r26351 r26982  
    126126         ((or (char-numeric? c)  (eq? c #\.))
    127127          (tok loc NUM (read-number (list c) #f #f)))
    128          ((char-alphabetic? c)  (tok loc ID  (read-id (list c))))
     128         ((char-alphabetic? c) 
     129          (let ((id (read-id (list c))))
     130            (case id
     131              ((let LET Let)       (tok loc LET))
     132              ((if IF If)          (tok loc IF))
     133              ((then THEN Then)    (tok loc THEN))
     134              ((else ELSE Else)    (tok loc ELSE))
     135              (else
     136               (tok loc ID  (read-id (list c)))))
     137            ))
     138         ((or (char=? c #\space)
     139              (char=? c #\tab)
     140              (char=? c #\newline)
     141              (char=? c #\return))
     142          (loop (read-char port)))
    129143         (else
    130144          (errorp "illegal character: " c)
     
    148162                   ((port? s)    s)
    149163                   (else (error 'nemo:parse-string-expr "bad argument type: not a string or a port: " s)))))
    150         (expr-parser  (make-char-lexer port (make-parse-error loc) (make-source-location loc (port-line port) (port-column port) -1 -1))
     164        (expr-parser  (let ((ll (make-char-lexer port (make-parse-error loc) (make-source-location loc (port-line port) (port-column port) -1 -1))))
     165                        (lambda ()
     166                          (let ((t (ll)))
     167                            (print "token = " (if (lexical-token? t) (lexical-token-category t) t))
     168                            t)))
    151169                      (make-parse-error loc)
    152170                      ))))
  • release/4/nemo/trunk/nemo-core.scm

    r26477 r26982  
    10431043                  (list qs scope-subst))
    10441044                (let ((decl (car ds)))
    1045 
     1045                  (print "decl = " decl)
    10461046                  (match-let
    10471047                   (((qs1 scope-subst1)
  • release/4/nemo/trunk/nemo.scm

    r26471 r26982  
    734734        (sxml:match 'ncml:defun
    735735                    (lambda (node bindings root env)
     736
     737                      (print "defun node: node = ") (pp node)
     738
    736739                      (let* ((id    (sxml:attr node 'id))
    737740                             (args  ((lambda (x)
     
    741744                                           (map (compose $ second) x)))
    742745                                     (sxml:kidsn 'ncml:arg node)))
     746                             (dd (print "args = " args))
    743747                             (body ((lambda (x)
     748                                      (print "body = " x)
     749                                     
    744750                                      (if (not x) 
    745751                                          (error 'defun-template
     
    754760        (sxml:match 'ncml:component
    755761                    (lambda (node bindings root env)
     762
     763                      (print "component node: node = ")
     764                      (pp node)
    756765
    757766                      (let ((name (sxml:attr node 'name))
     
    871880
    872881(define (ncml->model options doc)
    873   (let* ((parse-expr (or (lookup-def 'parse-expr options) identity))
    874          (ncml:model   ((lambda (x)
    875                           (if (null? x) (error 'ncml->model "ncml:model element not found in input document") (car x)))
    876                         (ncml:sxpath '(// ncml:model) `(*TOP* . ,doc))))
    877          (model-name   (sxml:attr ncml:model 'name))
    878          (model-decls  (ncml->declarations (sxml:kids ncml:model) parse-expr)))
     882  (let* ((parse-expr    (or (lookup-def 'parse-expr options) identity))
     883         (ncml:model    ((lambda (x)
     884                           (if (null? x) (error 'ncml->model "ncml:model element not found in input document") (car x)))
     885                         (ncml:sxpath '(// ncml:model) `(*TOP* . ,doc))))
     886         (model-name     (sxml:attr ncml:model 'name))
     887         (membraneprops  (ncml:sxpath '(// cell biophysicalProperties membraneProperties)
     888                                      `(*TOP* . ,ncml:model)))
     889         (model-decls    (ncml->declarations (if (null? membraneprops)
     890                                                 (sxml:kids ncml:model)
     891                                                 (sxml:kids membraneprops))
     892                                             parse-expr))
     893         )
     894
     895    (if (or (null? model-decls)  (and (pair? model-decls) (every null? model-decls)))
     896        (error 'ncml->model "ncml declaration elements not found in input document"))
    879897
    880898    (let* ((model+nemo  (nemo-constructor model-name model-decls (lambda (x . rest) (identity x))))
     
    10251043                 
    10261044                  (parse-expr  (case in-format
    1027                                  ((sxml xml ixml)    identity)
    1028                                  ((sexp)             identity)
    1029                                  ((nemo)             (if iexpr?
    1030                                                          (lambda (x #!optional loc)
    1031                                                            (if (string? x) (nemo:parse-string-expr x loc)
    1032                                                                (nemo:parse-sym-expr x loc)))
    1033                                                          nemo:parse-sym-expr))
    1034                                  (else    (error 'nemo "unknown input format" in-format)))) 
     1045                                 ((sxml xml)    identity)
     1046                                 ((sexp)        identity)
     1047                                 ((ixml)        (lambda (x #!optional loc)
     1048                                                  (print "ixml parse-expr: x = " x)
     1049                                                  (let ((xs (if (string? x) x
     1050                                                                (string-concatenate
     1051                                                                 (map (lambda (el)
     1052                                                                        (if (string? el) el
     1053                                                                            (if (equal? el '(divide)) " / "
     1054                                                                                (->string el))))
     1055                                                                      x)))))
     1056                                                    (print "ixml parse-expr: xs = " xs)
     1057                                                    (nemo:parse-string-expr xs loc))))
     1058                                 ((nemo)        (if iexpr?
     1059                                                    (lambda (x #!optional loc)
     1060                                                      (if (string? x) (nemo:parse-string-expr x loc)
     1061                                                          (nemo:parse-sym-expr x loc)))
     1062                                                    nemo:parse-sym-expr))
     1063                                 (else    (error 'nemo "unknown input format" in-format))))
    10351064
    10361065                  )
Note: See TracChangeset for help on using the changeset viewer.