chiark
/
gitweb
/
~mdw
/
sod
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c41a95b
)
src/module-parse.lisp: Improve error recovery for `code' items.
author
Mark Wooding
<mdw@distorted.org.uk>
Thu, 26 May 2016 08:26:09 +0000
(09:26 +0100)
committer
Mark Wooding
<mdw@distorted.org.uk>
Fri, 8 Jun 2018 18:58:28 +0000
(19:58 +0100)
src/module-parse.lisp
patch
|
blob
|
blame
|
history
diff --git
a/src/module-parse.lisp
b/src/module-parse.lisp
index cb3fcb26d6cd3b6fa1d2c2875e5e2287fbabce31..142992ea971bd3c4f22ca0059ea6ee96e2d38c63 100644
(file)
--- a/
src/module-parse.lisp
+++ b/
src/module-parse.lisp
@@
-66,23
+66,28
@@
(define-pluggable-parser module code (scanner pset)
(seq (#\( (names (list (:min 1) (kw))) #\))
names)))))
(parse (seq ("code"
(seq (#\( (names (list (:min 1) (kw))) #\))
names)))))
(parse (seq ("code"
- (reason (
kw
))
- #\:
- (name (
item
))
+ (reason (
must (kw)
))
+ (nil (must #\:))
+ (name (
must (item)
))
(constraints (? (seq (#\[
(constraints (? (seq (#\[
- (constraints (list (:min 1)
- (list (:min 1)
- (item))
- #\,))
+ (constraints
+ (list ()
+ (list (:min 1)
+ (error (:ignore-unconsumed t)
+ (item)
+ (skip-until ()
+ :id #\( #\, #\])))
+ #\,))
#\])
constraints)))
(fragment (parse-delimited-fragment scanner #\{ #\})))
#\])
constraints)))
(fragment (parse-delimited-fragment scanner #\{ #\})))
- (add-to-module *module*
- (make-instance 'code-fragment-item
- :fragment fragment
- :constraints constraints
- :reason reason
- :name name)))))))
+ (when name
+ (add-to-module *module*
+ (make-instance 'code-fragment-item
+ :fragment fragment
+ :constraints constraints
+ :reason reason
+ :name name))))))))
;;; External files.
;;; External files.