chiark / gitweb /
src/module-parse.lisp: New statement to set module-level properties.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 17 Nov 2015 17:15:23 +0000 (17:15 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 17 Nov 2015 20:33:51 +0000 (20:33 +0000)
src/module-parse.lisp

index d9bde3045379e1bcbcc71826f33576a6e66e362e..a42c31fc804ce6ecba9d9bc55cdbe0a7edd81153 100644 (file)
@@ -148,6 +148,29 @@ (define-pluggable-parser module file (scanner pset)
                                 (cerror* "Error loading Lisp file ~S: ~A"
                                          path error)))))))))))
 
+;;; Setting properties.
+
+(define-pluggable-parser module set (scanner pset)
+  ;; `set' property-list `;'
+  (with-parser-context (token-scanner-context :scanner scanner)
+    (parse (and "set"
+               (lisp (let ((module-pset (module-pset *module*)))
+                       (when pset
+                         (pset-map (lambda (prop)
+                                     (add-property module-pset
+                                                   (p-name prop)
+                                                   (p-value prop)
+                                                   :type (p-type prop)
+                                                   :location (p-location prop))
+                                     (setf (p-seenp prop) t))
+                                   pset))
+                       (parse (skip-many (:min 0)
+                                (error (:ignore-unconsumed t)
+                                  (parse-property scanner module-pset)
+                                  (skip-until (:keep-end t) #\, #\;))
+                                #\,))))
+               #\;))))
+
 ;;; Lisp escape.
 
 (define-pluggable-parser module lisp (scanner pset)