chiark / gitweb /
doc/syntax.tex, src/sod-module.5: Typeset `<qualifier>s' properly.
[sod] / 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)))))))))))
 
                                 (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)
 ;;; Lisp escape.
 
 (define-pluggable-parser module lisp (scanner pset)