spirit/doc/refcard/spirit-reference.tex
2019-03-29 04:31:18 +03:00

637 lines
18 KiB
TeX

% Reference Card for Boost.Spirit 2.5.8
% Copyright (c) 2014 Richard Thomson. May be freely distributed.
% Created Friday, October 31, 2014
% Updated Tuesday, July 12, 2016
% Thanks to Joseph H. Silverman for his TeX reference card on which
% this reference card is based.
% Thanks to Stephen Gildea for the multicolumn macro package
% which Joseph Silverman modified from his GNU emacs reference card
% TeX is a trademark of the American Mathematical Society
%**start of header
\newcount\columnsperpage
% This file can be printed with 1, 2, or 3 columns per page (see below).
% [For 2 or 3 columns, you'll need 6 and 8 point fonts.]
% Specify how many you want here. Nothing else needs to be changed.
\columnsperpage=3
% Smaller (97%) pdf file with horizontal offset 1.5in
% dvipdfm -l -m 0.97 -x 1.5in -o spirit-reference.pdf spirit-reference.dvi
% There are a couple extra sections included at the end of the document
% (after the \bye) that didn't fit into six columns.
% It would be nice to have additional sections covering:
% \hrules and \vrules, Registers
% \input and \output files (including \read, \write, \message)
% This reference card is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
% produces six separate pages, each of which needs to be reduced to 80%.
% This gives the best resolution.
% 2 columns per page
% produces three already-reduced pages.
% You will still need to cut and paste.
% 3 columns per page
% produces two pages which must be printed sideways to make a
% ready-to-use 8.5 x 11 inch reference card.
% For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author:
% Richard Thomson
% Internet: legalize@xmission.com
% (based on a reference card by Joseph H. Silverman)
% (reference card macros due to Stephen Gildea)
% History:
% Version 1.0 - October 2014
% Version 1.1 - July 2016
\def\versionnumber{1.0} % Version of this reference card
\def\year{2016}
\def\month{July}
\def\version{\month\ \year\ v\versionnumber}
\def\shortcopyrightnotice{
\vskip 0pt plus 2 fill\begingroup\parskip=0pt\small
\centerline{\copyright\ \number\year\ Richard Thomson,
Permissions on back. v\versionnumber}
Send comments and corrections to Richard Thomson,
$\langle$legalize@xmission.com$\rangle$
\endgroup}
\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\parskip=0pt\small
\centerline{Copyright \copyright\ \year\ Richard Thomson, \version}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip
\newbox\columna
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea
% October 1986.
\if 1\ncolumns
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else
\hsize 3.2in
\vsize 7.95in
\hoffset -.75in
\voffset -.745in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
\font\smallsy=cmsy6
\font\eightrm=cmr8
\font\eighti=cmmi8
\font\eightsy=cmsy8
\font\eightbf=cmbx8
\font\eighttt=cmtt8
\font\eightit=cmti8
\font\eightsl=cmsl8
\textfont0=\eightrm
\textfont1=\eighti
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\tt{\eighttt}
\def\it{\eightit}
\def\sl{\eightsl}
\normalbaselineskip=.8\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={%
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% ***** Verbatim typesetting *****
% Verbatim typesetting is done by
% \verbatim"stuff to verbatim typeset"
% Any character can be used in place of ".
% E.g. \verbatim?stuff? or \verbatim|stuff|. Cf. TeXbook pp.380-382
\def\uncatcodespecials{\def\do##1{\catcode`##1=12}\dospecials}
\def\setupverbatim{\tt%
\def\par{\leavevmode\endgraf}\catcode`\`=\active%
\obeylines\uncatcodespecials\obeyspaces}
\def\verbatim{\begingroup\setupverbatim\doverbatim}
\def\doverbatim#1{\def\next##1#1{##1\endgroup}\next}
\def\\{\verbatim}
\def\ds{\displaystyle}
\def\SPC{\quad} % space between symbol and command
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
\outer\def\newcolumn{\vfill\eject}
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex minus.5ex}
%\outer\def\section#1{\par\filbreak
% \vskip 1ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
% \vskip 1ex plus 1ex minus .5ex}
\outer\def\section#1{\par\filbreak
\vskip .75ex plus 1ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip .5ex plus .5ex minus .5ex}
\def\paralign{\vskip\parskip\halign}
\def\<#1>{$\langle${\rm #1}$\rangle$}
\def\begintext{\par\leavevmode\begingroup\parskip0pt\rm}
\def\endtext{\endgroup}
\def\unused{$unused$}
% ************ TEXT STARTS HERE **************************
\title{Boost.Spirit 2.5.8 Reference Card}
\section{Primitive Parsers}
% ***** Three Column Format *****
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
%----------- 3 Column Data -------------------
\\|attr(a)|&Attribute&\\|A|\cr
\\|eoi|&End of Input&\unused\cr
\\|eol|&End of Line&\unused\cr
\\|eps|&Epsilon&\unused\cr
\\|eps(p)|&&\unused\cr
\\|symbols<Ch,T,Lookup>|&Symbol Table&\\|T|\cr
}
\section{Unary Parsers}
% ***** Three Column Format *****
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
%----------- 3 Column Data -------------------
\\|&a|&And Predicate&\unused\cr
\\|!a|&Not Predicate&\unused\cr
\\|*a|&Zero or More&\\|vector<A>|\cr
\\|*u|&&\unused\cr
\\|-a|&Optional&\\|optional<A>|\cr
\\|-u|&&\unused\cr
\\|+a|&One or More&\\|vector<A>|\cr
\\|+u|&&\unused\cr
\\|attr_cast<T>(p)|&Attribute Cast&\\|T|\cr
}
\section{Binary Parsers}
% ***** Three Column Format *****
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
%----------- 3 Column Data -------------------
\\|a - b|&Difference&\\|A|\cr
\\|u - b|&&\unused\cr
\\|a % b|&Separated List&\\|vector<A>|\cr
\\|u % b|&&\unused\cr
}
\section{N-ary Parsers}
% ***** Three Column Format *****
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
%----------- 3 Column Data -------------------
\\/a | b/&Alternative&\\|variant<A, B>|\cr
\\/a | u/& &\\|optional<A>|\cr
\\/a | b | u/& &\\|optional<variant<A,B>>|\cr
\\/u | b/& &\\|optional<B>|\cr
\\/u | u/& &\unused\cr
\\/a | a/& &\\|A|\cr
\\|a > b|&Expect&\\|tuple<A,B>|\cr
\\|a > u|& &\\|A|\cr
\\|u > b|& &\\|B|\cr
\\|u > u|& &\unused\cr
\\|a > vA|& &\\|vector<A>|\cr
\\|vA > a|& &\\|vector<A>|\cr
\\|vA > vA|& &\\|vector<A>|\cr
\\|a ^ b|&Permute&\\|tuple<optional<A>,optional<B>>|\cr
\\|a ^ u|& &\\|optional<A>|\cr
\\|u ^ b|& &\\|optional<B>|\cr
\\|u ^ u|& &\unused\cr
\\|a >> b|&Sequence&\\|tuple<A,B>|\cr
\\|a >> u|& &\\|A|\cr
\\|u >> b|& &\\|B|\cr
\\|u >> u|& &\unused\cr
\\|a >> a|& &\\|vector<A>|\cr
\\|a >> vA|& &\\|vector<A>|\cr
\\|vA >> a|& &\\|vector<A>|\cr
\\|vA >> vA|& &\\|vector<A>|\cr
\\/a || b/&Sequence Or&\\|tuple<optional<A>,optional<B>>|\cr
\\/a || u/& &\\|optional<A>|\cr
\\/u || a/& &\\|optional<A>|\cr
\\/u || u/& &\unused\cr
\\/a || a/& &\\|vector<optional<A>>|\cr
}
\section{Nonterminal Parsers}
\paralign to\hsize{
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|rule<It,RT(A1,...,An),Skip,Loc>|&Rule&\\|RT|\cr
\\|rule<It>|& &\unused\cr
\\|rule<It,Skip>|& &\unused\cr
\\|rule<It,Loc>|& &\unused\cr
\\|rule<It,Skip,Loc>|& &\unused\cr
\\|grammar<It,RT(A1,...,An),Skip,Loc>|&Grammar&\\|RT|\cr
\\|grammar<It>|& &\unused\cr
\\|grammar<It,Skip>|& &\unused\cr
\\|grammar<It,Loc>|& &\unused\cr
\\|grammar<It,Skip,Loc>|& &\unused\cr
}
\section{Parser Directives}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|as<T>()[a]|&Atomic Assignment&\\|T|\cr
\\|expect[a]|&Expectation&\\|A|\cr
\\|expect[u]|&&\unused\cr
\\|hold[a]|&Hold Attribute&\\|A|\cr
\\|hold[u]|&&\unused\cr
\\|lexeme[a]|&Lexeme&\\|A|\cr
\\|lexeme[u]|&&\unused\cr
\\|matches[a]|&Matches&\\|bool|\cr
\\|no_case[a]|&Case Insensitive&\\|A|\cr
\\|no_case[u]|&&\unused\cr
\\|no_skip[a]|&No Skipping&\\|A|\cr
\\|no_skip[u]|&&\unused\cr
\\|omit[a]|&Omit Attribute&\unused\cr
\\|raw[a]|&Raw Iterators&\\|iterator_range<It>|\cr
\\|raw[u]|&&\unused\cr
\\|repeat[a]|&Repeat&\\|vector<A>|\cr
\\|repeat[u]|&&\unused\cr
\\|repeat(n)[a]|&&\\|vector<A>|\cr
\\|repeat(n)[u]|&&\unused\cr
\\|repeat(min,max)[a]|&&\\|vector<A>|\cr
\\|repeat(min,max)[u]|&&\unused\cr
\\|repeat(min,inf)[a]|&&\\|vector<A>|\cr
\\|repeat(min,inf)[u]|&&\unused\cr
\\|skip[a]|&Skip Whitespace&\\|A|\cr
\\|skip[u]|&&\unused\cr
\\|skip(p)[a]|&&\\|A|\cr
\\|skip(p)[u]|&&\unused\cr
}
\section{Semantic Actions}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|p[fa]|&Apply Semantic Action&\\|A|\cr
\\|p[|$phoenix$ $lambda$\\|]|&&\\|A|\cr
}
\paralign to\hsize{%
#\hfil\cr
\\|template<typename Attrib>|\cr
\\|void fa(Attrib& attr);|\cr
\cr
\\|template<typename Attrib, typename Context>|\cr
\\|void fa(Attrib& attr, Context& context);|\cr
\cr
\\|template<typename Attrib, typename Context>|\cr
\\|void fa(Attrib& attr, Context& context, bool& pass);|\cr
}
\section{Phoenix Placeholders}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|_1|, \\|_2|, $\dots$, \\|_N|&Nth Attribute of \\|p|\cr
\\|_val|&Enclosing rule's synthesized attribute\cr
\\|_r1|, \\|_r2|, $\dots$, \\|_rN|&Enclosing rule's Nth inherited
attribute.\cr
\\|_a|, \\|_b|, $\dots$, \\|_j|&Enclosing rule's local variables.\cr
\\|_pass|&Assign \\|false| to \\|_pass| to force failure.\cr
}
\section{Iterator Parser API}
\paralign to \hsize{#\cr
\\|bool parse<It, Exp>(|\cr
\\| It& first, It last, Exp const& expr);|\cr
\\|bool parse<It, Exp, A1, ..., An>(|\cr
\\| It& first, It last, Exp const& expr,|\cr
\\| A1& a1, ..., An& an);|\cr
\\|bool phrase_parse<It, Exp, Skipper>(|\cr
\\| It& first, It last, Exp const& expr,|\cr
\\| Skipper const& skipper,|\cr
\\| skip_flag post_skip = postskip);|\cr
\\|bool phrase_parse<It, Exp, Skipper, A1, ..., An>(|\cr
\\| It& first, It last, Exp const& expr,|\cr
\\| Skipper const& skipper,|\cr
\\| A1& a1, ..., An& an);|\cr
\\|bool phrase_parse<It, Exp, Skipper, A1, ..., An>(|\cr
\\| It& first, It last, Exp const& expr,|\cr
\\| Skipper const& skipper,|\cr
\\| skip_flag post_skip,|\cr
\\| A1& a1, ..., An& an);|\cr
}
\section{Stream Parser API}
\paralign to\hsize{#\cr
$unspecified$\\| match<Exp>(Exp const& expr);|\cr
$unspecified$\\| match<Exp, A1, ..., An>(|\cr
\\| Exp const& expr,|\cr
\\| A1& a1, ..., An& an);|\cr
$unspecified$\\| phrase_match<Exp, Skipper>(|\cr
\\| Exp const& expr,|\cr
\\| Skipper const& skipper,|\cr
\\| skip_flag post_skip = postskip);|\cr
$unspecified$\\| phrase_match<Exp, Skipper, A1, ..., An>(|\cr
\\| Exp const& expr,|\cr
\\| Skipper const& skipper,|\cr
\\| skip_flag post_skip,|\cr
\\| A1& a1, ..., An& an);|\cr
}
\shortcopyrightnotice
\section{Binary Value Parsers}
% ***** Three Column Format *****
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|byte_|&Native Byte&\\|uint_least8_t|\cr
\\|byte_(b)|&&\unused\cr
\\|word|&Native Word&\\|uint_least16_t|\cr
\\|word(w)|&&\unused\cr
\\|dword|&Native Double Word&\\|uint_least32_t|\cr
\\|dword(dw)|&&\unused\cr
\\|qword|&Native Quad Word&\\|uint_least64_t|\cr
\\|qword(qw)|&&\unused\cr
\\|bin_float|&Native Float&\\|float|\cr
\\|bin_float(f)|&&\unused\cr
\\|bin_double|&Native Double&\\|double|\cr
\\|bin_double(d)|&&\unused\cr
\\|little_|$item$&Little Endian $item$&as above\cr
\\|little_|$item$\\|(w)|&&\unused\cr
\\|big_|$item$&Big Endian $item$&as above\cr
\\|big_|$item$\\|(w)|&&\unused\cr
}
\section{Character Encodings}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|ascii|&7-bit ASCII\cr
\\|iso8859_1|&ISO 8859-1\cr
\\|standard|&Using \\|<cctype>|\cr
\\|standard_wide|&Using \\|<cwctype>|\cr
}
\section{Character Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|c|&Character Literal&\unused\cr
\\|lit(c)|&&\unused\cr
\\|ns::char_|&Any Character&\\|ns::char_type|\cr
\\|ns::char_(c)|&Character Value&\\|ns::char_type|\cr
\\|ns::char_(f,l)|&Character Range&\\|ns::char_type|\cr
\\|ns::char_(str)|&Any Character in String&\\|ns::char_type|\cr
\\|~cp|&Characters not in \\|cp|&Attribute of \\|cp|\cr
}
\section{Character Class Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|ns::alnum|&Letters or Digits&\\|ns::char_type|\cr
\\|ns::alpha|&Alphabetic&\\|ns::char_type|\cr
\\|ns::blank|&Spaces or Tabs&\\|ns::char_type|\cr
\\|ns::cntrl|&Control Characters&\\|ns::char_type|\cr
\\|ns::digit|&Numeric Digits&\\|ns::char_type|\cr
\\|ns::graph|&Non-space Printing Characters&\\|ns::char_type|\cr
\\|ns::lower|&Lower Case Letters&\\|ns::char_type|\cr
\\|ns::print|&Printing Characters&\\|ns::char_type|\cr
\\|ns::punct|&Punctuation&\\|ns::char_type|\cr
\\|ns::space|&White Space&\\|ns::char_type|\cr
\\|ns::upper|&Upper Case Letters&\\|ns::char_type|\cr
\\|ns::xdigit|&Hexadecimal Digits&\\|ns::char_type|\cr
}
\section{String Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|str|&String Literal&\unused\cr
\\|lit(str)|&&\unused\cr
\\|ns::string("str")|&String&\\|basic_string<char>|\cr
\\|ns::string(L"str")|&&\\|basic_string<wchar_t>|\cr
}
\section{Unsigned Integer Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|lit(num)|&Integer Literal&\unused\cr
\\|ushort_|&Short&\\|unsigned short|\cr
\\|ushort_(num)|&Short Value&\\|unsigned short|\cr
\\|uint_|&Integer&\\|unsigned int|\cr
\\|uint_(num)|&Integer Value&\\|unsigned int|\cr
\\|ulong_|&Long&\\|unsigned long|\cr
\\|ulong_(num)|&Long Value&\\|unsigned long|\cr
\\|ulong_long|&Long Long&\\|unsigned long long|\cr
\\|ulong_long(num)|&Long Long Value&\\|unsigned long long|\cr
\\|bin|&Binary Integer&\\|unsigned int|\cr
\\|bin(num)|&Binary Integer Value&\\|unsigned int|\cr
\\|oct|&Octal Integer&\\|unsigned int|\cr
\\|oct(num)|&Octal Integer Value&\\|unsigned int|\cr
\\|hex|&Hexadecimal Integer&\\|unsigned int|\cr
\\|hex(num)|&Hex Integer Value&\\|unsigned int|\cr
}
\section{Generalized Unsigned Integer Parser}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|uint_parser<T,Radix,MinDigits,MaxDigits>|&\\|T|\cr
\\|uint_parser<T,Radix,MinDigits,MaxDigits>(num)|&\\|T|\cr
}
\section{Signed Integer Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|lit(num)|&Integer Literal&\unused\cr
\\|short_|&Short&\\|short|\cr
\\|short_(num)|&Short Value&\\|short|\cr
\\|int_|&Integer&\\|int|\cr
\\|int_(num)|&Integer Value&\\|int|\cr
\\|long_|&Long&\\|long|\cr
\\|long_(num)|&Long Value&\\|long|\cr
\\|long_long|&Long Long&\\|long long|\cr
\\|long_long(num)|&Long Long Value&\\|long long|\cr
}
\section{Generalized Signed Integer Parser}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|int_parser<T,Radix,MinDigits,MaxDigits>|&\\|T|\cr
\\|int_parser<T,Radix,MinDigits,MaxDigits>(num)|&\\|T|\cr
}
\section{Real Number Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|lit(num)|&Real Number Literal&\unused\cr
\\|float_|&Float&\\|float|\cr
\\|float_(num)|&Float Value&\\|float|\cr
\\|double_|&Double&\\|double|\cr
\\|double_(num)|&Double Value&\\|double|\cr
\\|long_double|&Long Double&\\|long double|\cr
\\|long_double(num)|&Long Double Value&\\|long double|\cr
}
\section{Generalized Real Number Parser}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|real_parser<T,RealPolicies>|&\\|T|\cr
\\|real_parser<T,RealPolicies>(num)|&\\|T|\cr
}
\section{Boolean Parsers}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|lit(boolean)|&Boolean Literal&\unused\cr
\\|false_|&Match ``\\|false|''&\\|bool|\cr
\\|true_|&Match ``\\|true|''&\\|bool|\cr
\\|bool_|&Boolean&\\|bool|\cr
\\|bool_(boolean)|&Boolean Value&\\|bool|\cr
}
\section{Generalized Boolean Parser}
\paralign to\hsize{%
#\hfil\SPC\tabskip=0pt plus 1 fil
&#\hfil\cr
\\|bool_parser<T,BoolPolicies>|&\\|T|\cr
\\|bool_parser<T,BoolPolicies>(boolean)|&\\|T|\cr
}
\copyrightnotice
\bye