summaryrefslogtreecommitdiff
path: root/module/language/ecmascript/impl.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-02-20 18:16:34 +0100
committerAndy Wingo <wingo@pobox.com>2009-02-21 00:33:04 +0100
commitb358fe65021a40fa80238d8f426f810d150acb08 (patch)
tree6b462a65cd923197225c4b9299ce9de5a5178168 /module/language/ecmascript/impl.scm
parent45c10edb74fa3348238a81205408de5853521428 (diff)
downloadguile-b358fe65021a40fa80238d8f426f810d150acb08.tar.gz
implement more operations
* module/language/ecmascript/base.scm: Implement some more robust property getters that convert strings to symbols. Implement has-property?. * module/language/ecmascript/compile-ghil.scm (comp): Implement lots more mathematical operators. We now do all expressions; on to statements. * module/language/ecmascript/impl.scm: Define some math helpers. They probably need to call ->number on some things. * module/language/ecmascript/parse.scm (parse-ecmascript): Fix a typo.
Diffstat (limited to 'module/language/ecmascript/impl.scm')
-rw-r--r--module/language/ecmascript/impl.scm24
1 files changed, 21 insertions, 3 deletions
diff --git a/module/language/ecmascript/impl.scm b/module/language/ecmascript/impl.scm
index fd6ed8865..9db92e3e4 100644
--- a/module/language/ecmascript/impl.scm
+++ b/module/language/ecmascript/impl.scm
@@ -24,12 +24,18 @@
#:use-module (language ecmascript base)
#:use-module (language ecmascript function)
#:use-module (language ecmascript array)
- #:export (get-this typeof)
#:re-export (*undefined* *this* call/this*
- pget pput pdel
+ pget pput pdel has-property?
new-object
new
- new-array))
+ new-array)
+ #:export (get-this
+ typeof
+ bitwise-not logical-not
+ shift
+ mod
+ band bxor bior))
+
(define (get-this)
(fluid-ref *this*))
@@ -43,3 +49,15 @@
((procedure? x) "function")
((is-a? x <js-object>) "object")
(else "scm")))
+
+(define bitwise-not lognot)
+(define (logical-not x)
+ (not (->boolean (->primitive x))))
+
+(define shift ash)
+
+(define band logand)
+(define bxor logxor)
+(define bior logior)
+
+(define mod modulo)