doc/: Document where declarations are permitted in macros.
[sod] / doc / parsing.tex
index 58959c0..2bf9105 100644 (file)
@@ -124,11 +124,12 @@ consumed any input items.
 \end{describe*}
 
 \begin{describe}{mac}
-    {with-default-error-location (@<floc>) @<body-form>^* @> @<value>^*}
+    {with-default-error-location (@<floc>) @<declaration>^* @<form>^*
+      @> @<value>^*}
 \end{describe}
 
 \begin{describe}{mac}
-    {count-and-report-errors () @<body-form>^*
+    {count-and-report-errors () @<declaration>^* @<form>^*
       @> @<value> @<n-errors> @<n-warnings>}
 \end{describe}
 
@@ -209,7 +210,8 @@ the scanner and read that data again.  Therefore it's possible to
 \end{describe}
 
 \begin{describe}{mac}
-    {with-scanner-place (@<place> @<scanner>) @<body-form>^* @> @<value>^*}
+    {with-scanner-place (@<place> @<scanner>) @<declarations>^* @<form>^*
+      @> @<value>^*}
   Capture the @<scanner>'s current position as a place, evaluate the
   @<body-form>s as an implicit progn with the variable @<place> bound to the captured
   place.  When control leaves the @<body-form>s, the place is released.  The return
@@ -446,14 +448,16 @@ file-location protocols.
 \begin{describe}{mac}
     {defparse @<name> (@[[ :context (@<var> @<context-class>) @]]
                        @<destructuring-lambda-list-item>^*) \\ \ind
-      @<body-form>^* \-
+      @[[ @<declaration>^* @! @<doc-string> @]] \\
+      @<form>^* \-
      \nlret @<name>}
 \end{describe}
 
 \begin{describe}{mac}
     {with-parser-context
         (@<context-class> @{ @<init-keyword> @<value> @}^*) \\ \ind
-      @<body-form>^* \-
+      @<declaration>^* \\
+      @<form>^* \-
      \nlret @<value>^*}
 \end{describe}
 
@@ -482,7 +486,7 @@ file-location protocols.
 
 \begin{describe}{mac}
     {when-parse (@[@<result-var>@]) @<parser> \\ \ind
-      @<body-form>^* \-
+      @<form>^* \-
      \nlret @<value>^*}
 \end{describe}
 
@@ -563,7 +567,9 @@ file-location protocols.
 \end{describe}
 
 \begin{describe}{mac}
-    {define-pluggable-parser @<symbol> @<tag> @<lambda-list> @<body-form>^*}
+    {define-pluggable-parser @<symbol> @<tag> @<lambda-list>
+      @[[ @<declaration>^* @! @<doc-string> @]]
+      @<form>^*}
 \end{describe}
 
 \begin{describe}{gf}{parser-capture-place @<context> @> @<form>}
@@ -580,7 +586,9 @@ file-location protocols.
 \end{describe}
 
 \begin{describe}{mac}
-    {with-parser-place (@<place-var> @<context>) @<body-form>^*}
+    {with-parser-place (@<place-var> @<context>)
+      @[[ @<declaration>^* @! @<doc-string> @]]
+      @<form>^*}
 \end{describe}
 
 \begin{describe}{parseform}{peek @<parser>}
@@ -704,14 +712,14 @@ file-location protocols.
 
 \begin{describe*}
     {\dhead{mac}{preop @<name> (@<operand-var> @<lprec>)
-                  @<body-form>^*
+                  @<declaration>^* @<form>^*
                   @> @<prefix-operator>}
      \dhead{mac}{postop @<name>
                      (@<operand-var> @<lprec> @[[ :rprec @<rprec> @]])
-                  @<body-form>^*
-                  @> @<postfix-operator>}
+                  @<declaration>^* @<form>^*
+                  \nlret @<postfix-operator>}
      \dhead{mac}{binop @<name> (@<operand-var> @<lprec> @<rprec> @<assoc>)
-                  @<body-form>^*
+                  @<declaration>^*@<form>^*
                   @> @<binary-operator>}}
 \end{describe*}