src/module-parse.lisp (read-module): Provide sensible default error-recovery.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 26 Mar 2017 14:16:18 +0000 (15:16 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 8 Jun 2018 18:58:28 +0000 (19:58 +0100)
By default, if there's an error parsing a module item, skip and consume
until the next `;' or `}'.  This actually seems to work quite well.

src/module-parse.lisp

index 197e3e4..211f2c7 100644 (file)
                (parse (skip-many ()
                          (seq ((pset (parse-property-set scanner))
                                (nil (error ()
-                                      (plug module scanner pset))))
+                                        (plug module scanner pset)
+                                      (skip-until (:keep-end nil)
+                                        #\; #\}))))
                            (check-unused-properties pset))))
              (declare (ignore consumedp))
              (unless winp (syntax-error scanner result)))))))))