cwebber pushed a commit to branch compile-to-js-merge
in repository guile.
commit d4ef33f6cfc6882b0ff02faf2069610b69e74ab4
Author: Ian Price <[email protected]>
AuthorDate: Sun Aug 27 22:18:40 2017 +0100
Add assignment js-type to (language javascript)
* module/language/javascript.scm
(assign): new js-type
(print-exp, unparse-js): Handle case.
* module/language/javascript/simplify.scm (flatten-blocks): Handle case.
---
module/language/javascript.scm | 11 +++++++++++
module/language/javascript/simplify.scm | 2 ++
2 files changed, 13 insertions(+)
diff --git a/module/language/javascript.scm b/module/language/javascript.scm
index 8829b3b..4a49435 100644
--- a/module/language/javascript.scm
+++ b/module/language/javascript.scm
@@ -4,6 +4,7 @@
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
#:export (
+ make-assign assign
make-const const
make-function function
make-return return
@@ -50,6 +51,7 @@
(define (print-js exp port)
(format port "#<js ~S>" (unparse-js exp)))
+(define-js-type assign id exp)
(define-js-type const c)
(define-js-type function args body)
(define-js-type return exp)
@@ -66,6 +68,8 @@
(define (unparse-js exp)
(match exp
+ (($ assign id exp)
+ `(assign ,id ,(unparse-js exp)))
(($ const c)
`(const ,c))
(($ function args body)
@@ -99,6 +103,13 @@
(define (print-exp exp port)
(match exp
+ (($ assign id exp)
+ (print-id id port)
+ (format port " = ")
+ (display "(" port)
+ (print-exp exp port)
+ (display ")" port))
+
(($ const c)
(print-const c port))
diff --git a/module/language/javascript/simplify.scm
b/module/language/javascript/simplify.scm
index 2e3bde5..a26b7fd 100644
--- a/module/language/javascript/simplify.scm
+++ b/module/language/javascript/simplify.scm
@@ -15,6 +15,8 @@
(fold-right flatten '() stmts))
(define (flatten-exp exp)
(match exp
+ (($ assign id exp)
+ (make-assign id (flatten-exp exp)))
(($ const c) exp)
(($ new exp)
(make-new (flatten-exp exp)))