diff --git a/module/language/javascript.scm b/module/language/javascript.scm index 8829b3be0..4a4943545 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 "#" (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 2e3bde5f0..a26b7fd2e 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)))