mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
Add binop type
This commit is contained in:
parent
41023d5b4c
commit
30afdcd976
1 changed files with 24 additions and 2 deletions
|
@ -14,6 +14,7 @@
|
|||
make-refine refine
|
||||
make-branch branch
|
||||
make-var var
|
||||
make-binop binop
|
||||
|
||||
print-statement))
|
||||
|
||||
|
@ -57,6 +58,7 @@
|
|||
(define-js-type refine id field)
|
||||
(define-js-type branch test then else)
|
||||
(define-js-type var id exp)
|
||||
(define-js-type binop op arg1 arg2)
|
||||
|
||||
(define (unparse-js exp)
|
||||
(match exp
|
||||
|
@ -81,7 +83,9 @@
|
|||
(block ,@(map unparse-js then))
|
||||
(block ,@(map unparse-js else))))
|
||||
(($ var id exp)
|
||||
`(var ,id ,(unparse-js exp)))))
|
||||
`(var ,id ,(unparse-js exp)))
|
||||
(($ binop op arg1 arg2)
|
||||
`(binop ,op ,arg1 ,arg2))))
|
||||
|
||||
(define (print-exp exp port)
|
||||
(match exp
|
||||
|
@ -123,7 +127,25 @@
|
|||
|
||||
(($ new expr)
|
||||
(format port "new ")
|
||||
(print-exp expr port))))
|
||||
(print-exp expr port))
|
||||
|
||||
(($ binop op arg1 arg2)
|
||||
(display "(" port)
|
||||
(print-exp arg1 port)
|
||||
(display ")" port)
|
||||
(print-binop op port)
|
||||
(display "(" port)
|
||||
(print-exp arg2 port)
|
||||
(display ")" port))))
|
||||
|
||||
(define (print-binop op port)
|
||||
(case op
|
||||
((or) (display "||" port))
|
||||
((and) (display "&&" port))
|
||||
((=) (display "==" port))
|
||||
((+ - < <= > >=) (format port "~a" op))
|
||||
(else
|
||||
(throw 'unprintable-binop op))))
|
||||
|
||||
(define (print-statement stmt port)
|
||||
(match stmt
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue