Changeset 12204 in project


Ignore:
Timestamp:
10/20/08 07:18:00 (12 years ago)
Author:
Ivan Raikov
Message:

Committed infix expression parser changes.

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

Legend:

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

    r12186 r12204  
    157157    (stack-push! is lst)
    158158    (lambda ()
    159       (print "is = " (stack->list is))
    160159      (if (stack-empty? is)  '*eoi*
    161160          (let* ((p     (stack-pop! is))
     
    167166                                          ('?           (tok (QUESTION)))
    168167                                          (':           (tok (COLON)))
     168                                          ('let         (tok (LET)))
     169                                          ('if          (tok (IF)))
     170                                          ('then        (tok (THEN)))
     171                                          ('else        (tok (ELSE)))
    169172                                          ((? number?)  (tok (NUM ,x)))
    170173                                          ((? symbol?)  (tok (ID ,x)))
     
    173176                                          (else (errorp ": invalid input: " x))))
    174177                            (if (not (stack-empty? is)) (tok (RPAREN)) '*eoi*))))
    175             (print " x = " x)
    176             (print " t = " t)
    177178            t)))))
    178179           
     
    180181
    181182(define (nemo:parse-sym-expr lst)
    182   (print "parse-sym-expr: lst = " lst)
    183   (cond ((number? lst)  lst)
    184         ((and (list? lst) (null? lst) '()))
    185         (else (expr-parser  (make-sym-lexer lst parse-error) parse-error))))
     183  (let ((ret (cond ((number? lst)  lst)
     184                   ((and (list? lst) (null? lst) '()))
     185                   (else (expr-parser  (make-sym-lexer lst parse-error) parse-error)))))
     186    ret))
     187   
    186188
    187189
  • release/3/nemo/trunk/expr.grm

    r12186 r12204  
    99
    1010   ;; --- token definitions
    11    ( ID NUM LET RPAREN
     11   ( ID NUM LET IF THEN ELSE RPAREN
    1212       (right: QUESTION COLON)
    1313       (left: < > =)
     
    3636             (expr QUESTION expr COLON expr) :  `(if ,$1 ,$3 ,$5)
    3737             (LET LPAREN bnds RPAREN expr)   :  `(let ,(reverse $3) ,$5)
     38             (IF  expr THEN expr ELSE expr)  :  `(if ,$2 ,$4 ,$6)
    3839             (LPAREN expr RPAREN)     : $2
    3940             )
     
    4546             (bnds binding)           : (cons $2 $1))
    4647
    47    (binding  (LPAREN ID expr RPAREN)  : (list $1 $2))
     48   (binding  (LPAREN ID expr RPAREN)  : (list (token-value $2) $3))
    4849
    4950  ))
  • release/3/nemo/trunk/nemo-core.scm

    r12185 r12204  
    948948                            ((id '= expr)
    949949                             (cond ((and (symbol? id) (or (symbol? expr) (number? expr) (list? expr)))
    950                                     (env-extend! id '(asgn) 'none `(rhs ,expr))
     950                                    (env-extend! id '(asgn) 'none `(rhs ,(parse-expr expr)))
    951951                                    (cons id qs))
    952952                                   (else (nemo:error 'eval-nemo-system-decls
  • release/3/nemo/trunk/nemo.scm

    r12185 r12204  
    161161                 (model (first model+nemo))
    162162                 (nemo  (second model+nemo)))
    163             (let ((model-1 (nemo:hh-transformer model)))
     163            (let ((model-1 (nemo:hh-transformer model parse-expr)))
    164164              (if (assoc 'depgraph options) (print "dependency graph: " ((nemo 'depgraph*) model-1)))
    165165              (if (assoc 'exports options) (print "exports: " ((nemo 'exports) model-1)))       
Note: See TracChangeset for help on using the changeset viewer.