Tweak spar patterns.
authorChris Hanson <org/chris-hanson/cph>
Sun, 25 Mar 2018 15:36:58 +0000 (08:36 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sun, 25 Mar 2018 15:36:58 +0000 (08:36 -0700)
* Rename (quote <x>) to (noise <x>).
* Rename (keyword <id>) to (noise-keyword <id>).
* Implement (keyword <id>) that matches <id> and then pushes it.

src/runtime/mit-macros.scm
src/runtime/syntax-parser.scm

index d234327421b5d6deb255e64a469ade94a3664e83..3f1dbe8be6f690c7d6a26b2580dd127f6af39223 100644 (file)
@@ -371,7 +371,7 @@ USA.
    (delay
      (scons-rule
         (let ((action-pattern
-               '(if (keyword =>)
+               '(if (noise-keyword =>)
                     (and (values apply)
                          any)
                     (and (values eval)
@@ -379,7 +379,7 @@ USA.
           `(any
             (list (* (list (elt (list (elt (* any)))
                                 ,action-pattern))))
-            (or (list (elt (keyword else)
+            (or (list (elt (noise-keyword else)
                            ,action-pattern))
                 (values #f))))
        (lambda (expr clauses else-clause)
index 67e4bca1215fe0621a40a892ccde41ecaa5c46e1..4e13700131d54e92356ba22d7223551306b9f664 100644 (file)
@@ -488,9 +488,12 @@ USA.
                 ('('if form form form) (apply :if (map loop (cdr pattern))))
                 ('('or * form) (apply :or (map loop (cdr pattern))))
                 ('('and * form) (apply :seq (map loop (cdr pattern))))
-                ('('quote form) (:match-elt (:eqv?) (cadr pattern) (:form)))
-                ('('keyword identifier)
+                ('('noise form) (:match-elt (:eqv?) (cadr pattern) (:form)))
+                ('('noise-keyword identifier)
                  (:match-elt (:compare) (cadr pattern) (:form)))
+                ('('keyword identifier)
+                 (:seq (:match-elt (:compare) (cadr pattern) (:form))
+                       (:push (cadr pattern))))
                 ('('values * form)
                  (apply :push (map convert-spar-arg (cdr pattern))))
                 ('('value-of + form)