%%%----- Licensing notice ---------------------------------------------------
%%%
-%%% This file is part of the Sensble Object Design, an object system for C.
+%%% This file is part of the Sensible 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
\begin{describe}{fun}{combine-parser-failures @<failures> @> @<list>}
\end{describe}
+\begin{describe}{fun}{parse-empty \&optional @<value> @> @<function>}
+\end{describe}
+
+\begin{describe}{fun}
+ {parse-fail @<indicator> \&optional @<consumedp> @> @<function>}
+\end{describe}
+
%%%--------------------------------------------------------------------------
\section{File locations} \label{sec:parsing.floc}
\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}
\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
\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}
{parse @<parser> @> @<result> @<success-flag> @<consumed-flag>}
\end{describe}
+\begin{describe}{mac}
+ {parser @<lambda-list>
+ @[[ @<declaration>^* @! @<doc-string> @]]
+ @<parser>
+ @> @<function>}
+\end{describe}
+
\begin{describe}{gf}{parser-at-eof-p @<context> @> @<form>}
\end{describe}
\begin{describe}{mac}
{when-parse (@[@<result-var>@]) @<parser> \\ \ind
- @<body-form>^* \-
+ @<form>^* \-
\nlret @<value>^*}
\end{describe}
\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>}
\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>}
\end{describe}
+\begin{describe}{parseform}{commit}
+\end{describe}
+
\begin{describe}{cls}{character-parser-context () \&key}
\end{describe}
\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*}