No effect on the document.
interned) enumerated type with the given @<tag> and @<qualifier>s (all
evaluated).
\end{describe}
interned) enumerated type with the given @<tag> and @<qualifier>s (all
evaluated).
\end{describe}
\begin{describe}{fun}
{make-enum-type @<tag> \&optional @<qualifiers> @> @<c-enum-type>}
Return the (unique interned) C type object for the enumerated C type whose
\begin{describe}{fun}
{make-enum-type @<tag> \&optional @<qualifiers> @> @<c-enum-type>}
Return the (unique interned) C type object for the enumerated C type whose
interned) structured type with the given @<tag> and @<qualifier>s (all
evaluated).
\end{describe}
interned) structured type with the given @<tag> and @<qualifier>s (all
evaluated).
\end{describe}
\begin{describe}{fun}
{make-struct-type @<tag> \&optional @<qualifiers> @> @<c-struct-type>}
Return the (unique interned) C type object for the structured C type whose
\begin{describe}{fun}
{make-struct-type @<tag> \&optional @<qualifiers> @> @<c-struct-type>}
Return the (unique interned) C type object for the structured C type whose
Keyword functions are never considered to be the same as ordinary
functions. Two keyword function types are considered to be the same if
Keyword functions are never considered to be the same as ordinary
functions. Two keyword function types are considered to be the same if
- their return types are the same, and their positional argument lists consist of
- arguments with the same type, in the same order: the keyword arguments
- accepted by the functions is not significant.
+ their return types are the same, and their positional argument lists
+ consist of arguments with the same type, in the same order: the keyword
+ arguments accepted by the functions is not significant.
Keyword functions are constructed using an extended version of the @|fun|
specifier used for ordinary C function types. The extended syntax is as
Keyword functions are constructed using an extended version of the @|fun|
specifier used for ordinary C function types. The extended syntax is as
\begin{describe*}
{\dhead{cls}{sod-initializer ()
\begin{describe*}
{\dhead{cls}{sod-initializer ()
- \&key :slot :location :class :value}
+ \&key :slot :location :class :value}
\dhead{cls}{sod-instance-initializer (sod-initializer)
\dhead{cls}{sod-instance-initializer (sod-initializer)
- \&key :slot :location :class :value}
+ \&key :slot :location :class :value}
\dhead{cls}{sod-class-initializer (sod-initializer)
\dhead{cls}{sod-class-initializer (sod-initializer)
- \&key :slot :location :class :value}}
+ \&key :slot :location :class :value}}
\end{describe*}
\begin{describe*}
\end{describe*}
\begin{describe*}
allows rewinding the scanner to an earlier point in the input so that it can
be scanned again.
allows rewinding the scanner to an earlier point in the input so that it can
be scanned again.
\subsection{Basic scanner protocol} \label{sec:parsing.scanner.basic}
The basic protocol supports stepping the scanner forward through its input
\subsection{Basic scanner protocol} \label{sec:parsing.scanner.basic}
The basic protocol supports stepping the scanner forward through its input
step the scanner.
\end{describe}
step the scanner.
\end{describe}
\subsection{Place-capture scanner protocol} \label{sec:parsing.scanner.place}
The place-capture protocol allows rewinding to an earlier point in the
\subsection{Place-capture scanner protocol} \label{sec:parsing.scanner.place}
The place-capture protocol allows rewinding to an earlier point in the
return values are the values of the final @<form>.
\end{describe}
return values are the values of the final @<form>.
\end{describe}
\subsection{Scanner file-location protocol} \label{sec:parsing.scanner.floc}
Some scanners participate in the file-location protocol
\subsection{Scanner file-location protocol} \label{sec:parsing.scanner.floc}
Some scanners participate in the file-location protocol
return nil.
\end{describe*}
return nil.
\end{describe*}
\subsection{Character scanners} \label{sec:parsing.scanner.char}
Character scanners are scanners which read sequences of characters.
\subsection{Character scanners} \label{sec:parsing.scanner.char}
Character scanners are scanners which read sequences of characters.
character scanner protocols is suitable. See @|make-scanner-stream|.
\end{describe}
character scanner protocols is suitable. See @|make-scanner-stream|.
\end{describe}
\subsection{String scanners} \label{sec:parsing.scanner.string}
A \emph{string scanner} is a simple kind of character scanner which reads
\subsection{String scanners} \label{sec:parsing.scanner.string}
A \emph{string scanner} is a simple kind of character scanner which reads
to the end of the @<string>).
\end{describe}
to the end of the @<string>).
\end{describe}
\subsection{Character buffer scanners} \label{sec:parsing.scanner.charbuf}
A \emph{character buffer scanner}, or \emph{charbuf scanner} for short, is an
\subsection{Character buffer scanners} \label{sec:parsing.scanner.charbuf}
A \emph{character buffer scanner}, or \emph{charbuf scanner} for short, is an
at least once, or with $@<used> > @<start>$.
\end{describe}
at least once, or with $@<used> > @<start>$.
\end{describe}
\subsection{Token scanners} \label{sec:parsing.scanner.token}
\begin{describe}{cls}
\subsection{Token scanners} \label{sec:parsing.scanner.token}
\begin{describe}{cls}
{token-scanner-place-p @<value> @> @<generalized-boolean>}
\end{describe}
{token-scanner-place-p @<value> @> @<generalized-boolean>}
\end{describe}
\subsection{List scanners}
\begin{describe}{ty}{list-scanner}
\subsection{List scanners}
\begin{describe}{ty}{list-scanner}