guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 57/99: Implement built-in syntax procedures.


From: Christopher Allan Webber
Subject: [Guile-commits] 57/99: Implement built-in syntax procedures.
Date: Sun, 10 Oct 2021 21:51:00 -0400 (EDT)

cwebber pushed a commit to branch compile-to-js-merge
in repository guile.

commit 5d49a5be186930fcdc750f99753d93a67317299c
Author: Ian Price <ianprice90@googlemail.com>
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));



reply via email to

[Prev in Thread] Current Thread [Next in Thread]