637 lines
18 KiB
TeX
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
|