cwebber pushed a commit to branch compile-to-js-merge
in repository guile.
commit 5d49a5be186930fcdc750f99753d93a67317299c
Author: Ian Price <[email protected]>
AuthorDate: Wed Aug 2 21:12:47 2017 +0100
Implement built-in syntax procedures.
* module/language/js-il/runtime.js
(syntax?, make-syntax, syntax-expression, syntax-wrap,
syntax-module): New procedures.
---
module/language/js-il/runtime.js | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/module/language/js-il/runtime.js b/module/language/js-il/runtime.js
index 5011f2e..e7d78e1 100644
--- a/module/language/js-il/runtime.js
+++ b/module/language/js-il/runtime.js
@@ -754,6 +754,27 @@ def_guile0("make-syntax-transformer", function (self,
cont, name, type, binding)
return cont(new scheme.Macro(name, type, binding));
});
+function scm_is_syntax (self, cont, obj) {
+ return cont(coerce_bool(obj instanceof scheme.Syntax));
+};
+def_guile0("syntax?", scm_is_syntax);
+
+def_guile0("make-syntax", function (self, cont, expr, wrap, module) {
+ return cont(new scheme.Syntax(expr, wrap, module));
+});
+
+def_guile0("syntax-expression", function (self, cont, obj) {
+ return cont(obj.expr);
+});
+
+def_guile0("syntax-wrap", function (self, cont, obj) {
+ return cont(obj.wrap);
+});
+
+def_guile0("syntax-module", function (self, cont, obj) {
+ return cont(obj.module);
+});
+
// Strings
def_guile0("string=?", function (self, cont, s1, s2) {
return cont(coerce_bool(s1.s === s2.s));