chiark
/
gitweb
/
~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/frontend.lisp: Add `--backtrace' option to expose error context.
[sod]
/
src
/
parser
/
parser-proto.lisp
diff --git
a/src/parser/parser-proto.lisp
b/src/parser/parser-proto.lisp
index d458e70d24c14fd5fcdb400262e327de14f15a34..b97cd4b47ff5059b8d705f4dad5cab4edd10779a 100644
(file)
--- a/
src/parser/parser-proto.lisp
+++ b/
src/parser/parser-proto.lisp
@@
-7,7
+7,7
@@
;;;----- Licensing notice ---------------------------------------------------
;;;
;;;----- Licensing notice ---------------------------------------------------
;;;
-;;; This file is part of the Sensble Object Design, an object system for C.
+;;; This file is part of the Sens
i
ble Object Design, an object system for C.
;;;
;;; SOD is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;;
;;; SOD is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
@@
-77,6
+77,7
@@
(cl:in-package #:sod-parser)
;;;--------------------------------------------------------------------------
;;; Utilities.
;;;--------------------------------------------------------------------------
;;; Utilities.
+(export 'combine-parser-failures)
(defun combine-parser-failures (failures)
"Combine the failure indicators listed in FAILURES.
(defun combine-parser-failures (failures)
"Combine the failure indicators listed in FAILURES.
@@
-151,10
+152,9
@@
(defmacro defparse (name bvl &body body)
((,context ,ctxclass) (,head (eql ',name)) ,tail)
,@doc
(declare (ignorable ,context))
((,context ,ctxclass) (,head (eql ',name)) ,tail)
,@doc
(declare (ignorable ,context))
- (block ,name
- (destructuring-bind ,bvl ,tail
- ,@decls
- ,@body)))))))
+ (destructuring-bind ,bvl ,tail
+ ,@decls
+ (block ,name ,@body)))))))
(export '(with-parser-context parse))
(defmacro with-parser-context ((class &rest initargs) &body body)
(export '(with-parser-context parse))
(defmacro with-parser-context ((class &rest initargs) &body body)
@@
-572,7
+572,11
@@
(defmacro define-pluggable-parser (symbol tag (&rest bvl) &body body)
If a parser with the given TAG is already attached to SYMBOL then the new
parser replaces the old one; otherwise it is added to the collection."
If a parser with the given TAG is already attached to SYMBOL then the new
parser replaces the old one; otherwise it is added to the collection."
- `(pluggable-parser-add ',symbol ',tag (lambda ,bvl ,@body)))
+ (multiple-value-bind (docs decls body) (parse-body body)
+ `(pluggable-parser-add ',symbol ',tag
+ (lambda ,bvl
+ ,@docs ,@decls
+ (block ,symbol ,@body)))))
;;;--------------------------------------------------------------------------
;;; Rewindable parser context protocol.
;;;--------------------------------------------------------------------------
;;; Rewindable parser context protocol.