diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 3b2bd42..4a608b5 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -8144,6 +8144,37 @@ of the symbol being parsed. The original list read:
\end{chunk}
+\defun{postCapsule}{postCapsule}
+\calls{postCapsule}{checkWarning}
+\calls{postCapsule}{postBlockItem}
+\calls{postCapsule}{postBlockItemList}
+\calls{postCapsule}{postFlatten}
+\begin{chunk}{defun postCapsule}
+(defun |postCapsule| (x)
+ (let (op)
+ (cond
+ ((null (and (pairp x) (progn (setq op (qcar x)) t)))
+ (|checkWarning| (list "Apparent indentation error following add")))
+ ((or (integerp op) (eq op '==))
+ (list 'capsule (|postBlockItem| x)))
+ ((eq op '|;|)
+ (cons 'capsule (|postBlockItemList| (|postFlatten| x '|;|))))
+ ((eq op '|if|)
+ (list 'capsule (|postBlockItem| x)))
+ (t (|checkWarning| (list "Apparent indentation error following add"))))))
+
+\end{chunk}
+
+\defun{postBlockItemList}{postBlockItemList}
+\calls{postBlockItemList}{postBlockItem}
+\begin{chunk}{defun postBlockItemList}
+(defun |postBlockItemList| (args)
+ (let (result)
+ (dolist (item args (nreverse result))
+ (push (|postBlockItem| item) result))))
+
+\end{chunk}
+
\defplist{@}{postAtSign}
\begin{chunk}{postvars}
(eval-when (eval load)
@@ -8267,6 +8298,25 @@ of the symbol being parsed. The original list read:
\end{chunk}
+\defun{postMakeCons}{postMakeCons}
+\calls{postMakeCons}{postMakeCons}
+\calls{postMakeCons}{postTran}
+\begin{chunk}{defun postMakeCons}
+(defun |postMakeCons| (args)
+ (let (a b)
+ (cond
+ ((null args) '|nil|)
+ ((and (pairp args) (pairp (qcar args)) (eq (qcar (qcar args)) '|:|)
+ (pairp (qcdr (qcar args))) (eq (qcdr (qcdr (qcar args))) nil))
+ (setq a (qcar (qcdr (qcar args))))
+ (setq b (qcdr args))
+ (if b
+ (list '|append| (|postTran| a) (|postMakeCons| b))
+ (|postTran| a)))
+ (t (list '|cons| (|postTran| (car args)) (|postMakeCons| (cdr args)))))))
+
+\end{chunk}
+
\defplist{collect}{postCollect}
\begin{chunk}{postvars}
(eval-when (eval load)
@@ -8797,6 +8847,21 @@ of the symbol being parsed. The original list read:
\end{chunk}
+\defun{postFlattenLeft}{postFlattenLeft}
+\calls{postFlattenLeft}{postFlattenLeft}
+\begin{chunk}{defun postFlattenLeft}
+(defun |postFlattenLeft| (x op)
+ (let (a b)
+ (cond
+ ((and (pairp x) (equal (qcar x) op) (pairp (qcdr x))
+ (pairp (qcdr (qcdr x))) (eq (qcdr (qcdr (qcdr x))) nil))
+ (setq a (qcar (qcdr x)))
+ (setq b (qcar (qcdr (qcdr x))))
+ (append (|postFlattenLeft| a op) (list b)))
+ (t (list x)))))
+
+\end{chunk}
+
\defplist{Signature}{postSignature}
\begin{chunk}{postvars}
(eval-when (eval load)
@@ -11403,6 +11468,15 @@ Stack of results of reduced productions.
\chapter{Utility Functions}
+\defun{checkWarning}{checkWarning}
+\calls{checkWarning}{postError}
+\calls{checkWarning}{concat}
+\begin{chunk}{defun checkWarning}
+(defun |checkWarning| (msg)
+ (|postError| (|concat| "Parsing error: " msg)))
+
+\end{chunk}
+
\defun{tuple2List}{tuple2List}
\calls{tuple2List}{tuple2List}
\calls{tuple2List}{postTranSegment}
@@ -14412,6 +14486,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun char-eq}
\getchunk{defun char-ne}
+\getchunk{defun checkWarning}
\getchunk{defun comma2Tuple}
\getchunk{defun comp}
\getchunk{defun comp2}
@@ -14536,6 +14611,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun line-print}
\getchunk{defun line-new-line}
+\getchunk{defun postMakeCons}
\getchunk{defun make-string-adjustable}
\getchunk{defun make-symbol-of}
\getchunk{defun match-advance-string}
@@ -14644,6 +14720,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun parseEquivalence}
\getchunk{defun parseExit}
\getchunk{defun postFlatten}
+\getchunk{defun postFlattenLeft}
\getchunk{defun postForm}
\getchunk{defun parseGreaterEqual}
\getchunk{defun parseGreaterThan}
@@ -14680,6 +14757,8 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun postAtSign}
\getchunk{defun postBigFloat}
\getchunk{defun postBlock}
+\getchunk{defun postBlockItemList}
+\getchunk{defun postCapsule}
\getchunk{defun postCategory}
\getchunk{defun postcheck}
\getchunk{defun postCollect}
diff --git a/changelog b/changelog
index 1b5ec7f..d33e9ab 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20110301 tpd src/axiom-website/patches.html 20110301.03.tpd.patch
+20110301 tpd src/interp/parsing.lisp treeshake compiler
+20110301 tpd books/bookvol9 treeshake compiler
20110301 tpd src/axiom-website/patches.html 20110301.02.tpd.patch
20110301 tpd src/interp/parsing.lisp treeshake compiler
20110301 tpd books/bookvol9 treeshake compiler
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index d540650..7d469f7 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3419,5 +3419,7 @@ books/bookvol9 treeshake compiler
books/bookvol9 treeshake compiler
20110301.02.tpd.patch
books/bookvol9 treeshake compiler
+20110301.03.tpd.patch
+books/bookvol9 treeshake compiler