chiark / gitweb /
Refactoring more or less complete. Maybe I should test it.
[sod] / src / pset-parse.lisp
index 0bc4680072ce2f5c607dd533b720ff30d8178f66..ff595516ced3b8c83de9776b9baea5425a1e9a70 100644 (file)
@@ -130,13 +130,15 @@ (defun parse-property (scanner pset)
 (export 'parse-property-set)
 (defun parse-property-set (scanner)
   "Parse an optional property set from the SCANNER and return it."
-  ;; property-set ::= `[' property-list `]'
+  ;; property-set ::= [`[' property-list `]']
   (with-parser-context (token-scanner-context :scanner scanner)
-    (parse (seq (#\[
-                (pset (many (pset (make-property-set) pset)
-                        (parse-property scanner pset)
-                        #\,))
-                #\])
-            pset))))
+    (parse (? (seq (#\[
+                   (pset (many (pset (make-property-set) pset)
+                           (error ()
+                             (parse-property scanner pset)
+                             (skip-until () #\, #\]))
+                           #\,))
+                   #\])
+               pset)))))
 
 ;;;----- That's all, folks --------------------------------------------------