#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\begin_preamble

%--------------------------------------------------------------------
% PDF related
%--------------------------------------------------------------------
\newif\ifpdf 
\ifx\pdfoutput\undefined 
  \pdffalse                     % we are not running PDFLaTeX 
\else 
  \pdfoutput=1                % we are running PDFLaTeX 
  \pdftrue 
\fi

%--------------------------------------------------------------------
% setup hyperref
%--------------------------------------------------------------------
\ifpdf
  \usepackage{color}
  \definecolor{lightgrey}{gray}{.95}
  \pagecolor{white}
  \usepackage{hyperref}  
  \hypersetup{% 
    %
    %% general document information
    pdftitle          = {Puma User's Manual}, 
    pdfsubject        = {Dokumentation}, 
    pdfkeywords       = {C, C++, Parser, Scanner, Lexer, Semantic, Syntax}, 
    pdfauthor         = {\textcopyright\ 2006-2008 Matthias Urban}, 
    pdfcreator        = {\LaTeX\ with package \flqq hyperref\frqq},
    pdfproducer       = {pdfTeX-0.\the\pdftexversion\pdftexrevision},
    %
    %% document style
    colorlinks=true,         % colored link
    urlcolor=blue,           % blue URL links
    bookmarks=true,          % generate bookmarks
    bookmarksnumbered=true,  % generate section numbers
    pdfpagemode=None         % don't open bookmarks
  } 
  
  %% set document creation date to 16.4.2006 00:00
  %%\pdfinfo {/CreationDate (D:20060416000000)}
\fi

%--------------------------------------------------------------------
% create hyperrefs depending on the use of pdflatex
%--------------------------------------------------------------------
\newcommand\webref[2]{%
  \ifpdf
    \href{#1}{#2}
  \else  
    {#2}
  \fi
}

%--------------------------------------------------------------------
% create named cross references depending on the use of pdflatex
%--------------------------------------------------------------------
\newcommand\crossref[1]{%
  \ifpdf
    \nameref{#1}
  \else
    \ref{#1}
  \fi
}

\rhead{Puma User's Manual}
%\lfoot{\copyright 2006 Matthias Urban}

%--------------------------------------------------------------------
% place footnotes at the bottom of the page
%--------------------------------------------------------------------
\renewcommand\footnoterule{%
  \vfill
  \kern-3\p@
  \hrule\@width.3\columnwidth
  \kern2.6\p@}

%--------------------------------------------------------------------
% leave less than one and a half space between lines
%--------------------------------------------------------------------
\setstretch{1.15}

%--------------------------------------------------------------------
% 'list of examples' environment
%--------------------------------------------------------------------
\newcommand\examplesname{List of Examples}
\newenvironment{examples} 
  {\section*{\examplesname}% 
   \@mkboth{\MakeUppercase\examplesname}% 
                 {\MakeUppercase\examplesname}% 
   \thispagestyle{plain}
   \parindent\z@ \parskip\z@ \@plus .3\p@\relax} %
  {\clearpage}

%--------------------------------------------------------------------
% environment 'comment' 
%--------------------------------------------------------------------
\usepackage{comment}

%--------------------------------------------------------------------
% add 'Index' to table of contents 
%--------------------------------------------------------------------
\let\old@theindex\theindex
\def\theindex{
  \old@theindex
  \addcontentsline{toc}{section}{\indexname}}
\end_preamble
\use_default_options false
\language english
\inputencoding auto
\font_roman times
\font_sans helvet
\font_typewriter courier
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100

\graphics default
\paperfontsize 12
\spacing onehalf
\use_hyperref false
\papersize a4paper
\use_geometry false
\use_amsmath 1
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 5
\tocdepth 5
\paragraph_separation skip
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 2
\paperpagestyle fancy
\listings_params "backgroundcolor={\color{lightgrey}}"
\tracking_changes false
\output_changes false
\author "" 
\author "" 
\end_header

\begin_body

\begin_layout Title

\series bold
\size giant
Puma
\series default

\begin_inset Newline newline
\end_inset


\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size huge
\emph on
User's Manual
\size largest
\emph default

\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
vspace{4cm}
\end_layout

\end_inset


\end_layout

\begin_layout Author
Matthias Urban
\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
clearpage
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents

\end_inset


\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
clearpage
\end_layout

\end_inset


\end_layout

\begin_layout Section
About
\end_layout

\begin_layout Standard
This is the user documentation of the Puma library.
 Puma is an extensible C/C++ parser and code transformation library written
 in C++.
 It provides the following key features:
\end_layout

\begin_layout Itemize
Built-in C preprocessor with separate preprocessor syntax tree
\end_layout

\begin_layout Itemize
Lexical analysis of C and C++ source code providing separate token chains
\end_layout

\begin_layout Itemize
Syntactic analysis of token chains providing separate syntax trees
\end_layout

\begin_layout Itemize
Semantic analysis of syntax trees providing separate semantic information
 databases
\end_layout

\begin_layout Itemize
Source code transformation on token and syntax tree level
\end_layout

\begin_layout Itemize
ISO/IEC 9899-1999(E) - C conformance
\end_layout

\begin_layout Itemize
ISO/IEC 14882:1998(E) - C++ conformance
\end_layout

\begin_layout Standard
Puma is based on a top-down parser implementation that makes it easy to
 add own extensions to the parser.
 There are already some non-standard extensions implemented, i.e.
 GNU C/C++ and VisualC++ extensions.
 These extensions are introduced into the parser by aspects using AspectC++.
 This is optional and requires an installed AspectC++ compiler.
\end_layout

\begin_layout Subsection
License
\end_layout

\begin_layout Standard
\begin_inset Index
status collapsed

\begin_layout Plain Layout
license
\end_layout

\end_inset

Puma is free software; you can redistribute it and/or modify it under the
 terms of the GNU General Public License as published by the Free Software
 Foundation; either version 2 of the License, or (at your option) any later
 version.
 
\end_layout

\begin_layout Standard
This program 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.
 See the GNU General Public License for more details.
 
\end_layout

\begin_layout Standard
You should have received a copy of the GNU General Public License along
 with this program; if not, write to the Free Software Foundation, Inc.,
 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
\end_layout

\begin_layout Section
Installation
\end_layout

\begin_layout Subsection
Getting Puma
\end_layout

\begin_layout Standard
The source code of the Puma library is available together with the AspectC++
\begin_inset Index
status collapsed

\begin_layout Plain Layout
AspectC++
\end_layout

\end_inset

 source package from the 
\begin_inset ERT
status open

\begin_layout Plain Layout


\backslash
webref{http://www.aspectc.org/}{
\backslash
emph{AspectC++ Homepage}}
\backslash
hspace{-4pt}
\end_layout

\end_inset

, or via SVN with the following command:
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

svn checkout https://svn.aspectc.org/repos/Puma/trunk Puma
\end_layout

\end_inset


\end_layout

\begin_layout Subsection
Building the Library
\end_layout

\begin_layout Standard
Building Puma is based on GNU make.
 To build and install the library on Linux without debugging information
 follow these steps:
\end_layout

\begin_layout Enumerate
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline true
status open

\begin_layout Plain Layout

cd <PUMA_ROOT_DIRECTORY>
\end_layout

\end_inset


\end_layout

\begin_layout Enumerate
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline true
status open

\begin_layout Plain Layout

make TARGET=linux-release
\end_layout

\end_inset


\end_layout

\begin_layout Enumerate
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline true
status open

\begin_layout Plain Layout

make TARGET=linux-release install
\end_layout

\end_inset


\end_layout

\begin_layout Standard
The variable 
\family typewriter
TARGET
\family default
 specifies the target platform and whether debugging mode is enabled or
 not.
 Currently the following values are supported:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\begin_inset Tabular
<lyxtabular version="3" rows="6" columns="2">
<features>
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
linux
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- Linux debug build
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
linux-release
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- Linux release build (Default)
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
macosx
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- MacOSX debug build
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
macosx-release
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- MacOSX release build
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
win32
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- Win32 debug build using mingw32
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
win32-release
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- Win32 release build using mingw32
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\noindent
Building Puma for other target platforms may require changes on the file
 
\family typewriter
vars.mk
\family default
 in the root directory of Puma.
 
\end_layout

\begin_layout Standard
Additional build and compilation flags can be specified using the following
 variables.
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="2">
<features>
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
CPP_OPTFLAGS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- Target compiler flags
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
AC_OPTFLAGS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- AspectC++ compiler flags
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\noindent
The following make targets are available.
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\begin_inset Tabular
<lyxtabular version="3" rows="17" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="block" valignment="top" width="70text%">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
all
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Default target.
 Build the library.
 Does not build the examples and the doxygen documentation.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
weave
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Generate the woven library sources.
 Applies all active extensions.
 Needs an installed AspectC++ compiler.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
compile
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Compile the woven library sources.
 
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
install
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Install the built library to 
\family typewriter
/usr/local
\family default
.
 The install location can be changed by setting the variable 
\family typewriter
PREFIX
\family default
 (e.g.
 
\family typewriter
make PREFIX=$HOME/usr install
\family default
).
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
uninstall
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Uninstall the library.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
examples
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Build the example Puma applications in the 
\family typewriter
examples
\family default
 directory.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
examples-clean
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Remove temporary build files from the example Puma applications.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
doxygen
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Generate a doxygen documentation for the Puma library.
 Requires that doxygen is installed.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
showinfo
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Show the compiler and linker options used to build the library.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
clean
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Remove the generated and temporary build files.
 Does not clean the tools and examples.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
cleanall
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Same as 
\family typewriter
clean
\family default
 but also cleans the tools and examples.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
libclean
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Remove the temporary build files.
 Does not remove the generated/woven files.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
distclean
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Same as 
\family typewriter
cleanall
\family default
.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
tools
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Build the tools in the 
\family typewriter
tools
\family default
 directory.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
tools-clean
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Remove temporary build files from the 
\family typewriter
tools
\family default
 directory.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
test
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Run the tests in the 
\family typewriter
tests
\family default
 directory.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
test-clean
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Remove temporary test result files from the 
\family typewriter
tests
\family default
 directory.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection
Building Extensions
\end_layout

\begin_layout Standard
The Puma library can be build with some extensions.
 These extensions are defined in the file 
\family typewriter
extensions.mk
\family default
 in the Puma root directory.
 
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features>
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
gnuext
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- GNU C/C++ language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
winext
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- VisualC++ language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
acppext
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- AspectC++ language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
tracing
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- Syntax rule tracing
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
matchexpr
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
- AST match expressions
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\noindent
The extensions to be included can be specified by setting the variable 
\family typewriter
EXTENSIONS
\family default
.
 
\end_layout

\begin_layout Standard
\noindent
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

make EXTENSIONS="gnuext tracing"
\end_layout

\end_inset


\end_layout

\begin_layout Standard
This command builds the library including GNU C/C++ language extensions
 and tracing.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Using the Library
\end_layout

\begin_layout Subsection
Puma Namespace
\end_layout

\begin_layout Standard
The classes in the Puma library are enclosed in the namespace 
\family typewriter
Puma
\family default
.
 An application may either add a
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

using namespace Puma;
\end_layout

\end_inset


\end_layout

\begin_layout Standard
statement before using Puma classes or use full qualified names for referencing
 Puma classes, e.g.
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

Puma::Token* token = 0;
\end_layout

\end_inset


\end_layout

\begin_layout Subsection
Compiling and Linking
\end_layout

\begin_layout Standard
A Puma application is usually compiled and linked with the following compiler
 options:
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

-I$PUMA/include -L$PUMA/lib -lpuma
\end_layout

\end_inset


\end_layout

\begin_layout Subsection
Configuration Options
\end_layout

\begin_layout Standard
\begin_inset Index
status collapsed

\begin_layout Plain Layout
configuration!options
\end_layout

\end_inset


\begin_inset Index
status collapsed

\begin_layout Plain Layout
command line options
\end_layout

\end_inset

Several aspects of the functionality of Puma can be configured using command
 line options or a configuration file.
 The following configuration options are understood by the library.
\end_layout

\begin_layout Subsubsection*
\begin_inset Index
status collapsed

\begin_layout Plain Layout
preprocessor!configuration
\end_layout

\end_inset


\begin_inset Index
status collapsed

\begin_layout Plain Layout
configuration!preprocessor
\end_layout

\end_inset

Preprocessor Options:
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="7" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="block" valignment="top" width="50line%">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-A <PREDICATE>(<ANSWER>)
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Define a preprocessor assertion, e.g.
 
\family typewriter
-Asystem(linux)
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-D <NAME>[=<BODY>]
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Define a preprocessor macro, e.g.
 
\family typewriter
-DSYSTEM=linux
\family default
, 
\family typewriter
-D DEBUG
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--lock-macro <NAME>[=<BODY>]
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Define a preprocessor macro that cannot be redefined
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-U <NAME>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Undefine a preprocessor macro, e.g.
 
\family typewriter
-U SYSTEM
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--inhibit-macro <NAME>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Prevent a preprocessor macro from being defined
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-I <PATH>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Add another include path
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--include <FILE>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Include the given file in every translation unit
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection*
\begin_inset Index
status collapsed

\begin_layout Plain Layout
configuration!parser
\end_layout

\end_inset


\begin_inset Index
status collapsed

\begin_layout Plain Layout
parser!configuration
\end_layout

\end_inset

Parser Options:
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="11" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--skip-bodies-all
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Do not parse function bodies
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--skip-bodies-tpl
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Do not parse function bodies of templates
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--skip-bodies-non-prj
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Do not parse function bodies in non-project files
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--size-type <TYPE>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the internal type for 
\family typewriter
size_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--ptrdiff-type <TYPE>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the internal type for 
\family typewriter
ptrdiff_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--real-instances
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable real template instantiation
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--match-expr
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable match expression language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--lang-c
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the language for input files to C
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--lang-ec++
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the language for input files to EC++
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--lang-c++
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the language for input files to C++
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--lang-ac++
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the language for input files to AC++
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection*
\begin_inset Index
status collapsed

\begin_layout Plain Layout
extensions!VisualC++
\end_layout

\end_inset

VisualC++ Extension Options:
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="2">
<features>
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--vc
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable VisualC++ language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--import-handler <FILE>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set a handler for resolving 
\family typewriter
#import
\family default
 directives
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection*
\begin_inset Index
status collapsed

\begin_layout Plain Layout
extensions!GNU C/C++
\end_layout

\end_inset

GNU C/C++ Extension Options:
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="15" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable all GNU C/C++ language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-2.95
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ 2.95 language extensions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-nested-fct
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ nested functions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-condition-scope
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ condition scope
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-param-decl
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ parameter declarator
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-fct-decl
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ function declarator
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-param-scope
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ function parameter scope
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-default-args
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ function default arguments
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-extended-asm
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ extended asm syntax
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-extended-expr
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ extended expressions
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-long-long
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ long long type
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-name-scope
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ name scope
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-fct-attribute
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ function attributes
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-if-then-expr
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ if-then expression syntax
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--gnu-std-hack
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Enable GNU C/C++ implicit namespace std hack
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection*
\begin_inset Index
status collapsed

\begin_layout Plain Layout
configuration!project
\end_layout

\end_inset

File Handling Options:
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="9" columns="2">
<features islongtable="true">
<column alignment="block" valignment="top" width="45text%">
<column alignment="block" valignment="top" width="55text%">
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--config <FILE>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Load the given configuration file
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-p, --path <PATH>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Add given path as source directory
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-d, --dest <PATH>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Add given path as destination directory
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-w, --write-protected <PATH>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Add given path as write protected 
\begin_inset Newline newline
\end_inset

directory
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-e, --extension <STRING>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the extension for input files
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-s, --suffix <STRING>
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Set the suffix for saving files
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--new-suffix
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Replace the old suffix when saving files
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--save-overwrite
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Overwrite input files when saving
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--rename-old
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Rename input files when saving using a
\begin_inset Newline newline
\end_inset

suffix
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection
Configuration File
\end_layout

\begin_layout Standard
All command line options can also be specified in a configuration file
\begin_inset Index
status collapsed

\begin_layout Plain Layout
configuration file
\end_layout

\end_inset

.
\end_layout

\begin_layout Standard
Each option in the configuration file has to start on a new line.
 
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

-D i386
\end_layout

\begin_layout Plain Layout

-D linux
\end_layout

\begin_layout Plain Layout

-I /usr/include
\end_layout

\end_inset


\end_layout

\begin_layout Standard
Lines beginning with '#' are interpreted as comments and will be ignored.
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

### defines 
\end_layout

\begin_layout Plain Layout

-D i386
\end_layout

\begin_layout Plain Layout

-D linux
\end_layout

\begin_layout Plain Layout

### includes
\end_layout

\begin_layout Plain Layout

-I /usr/include 
\end_layout

\begin_layout Plain Layout

-I /usr/local/include
\end_layout

\end_inset


\end_layout

\begin_layout Standard
Option arguments containing spaces have to be double-quoted.
 Double-quotes in the argument have to be escaped.
 
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

-D __PTRDIFF_TYPE__=int
\end_layout

\begin_layout Plain Layout

-D "__SIZE_TYPE__=unsigned int"
\end_layout

\begin_layout Plain Layout

-D "__VERSION__=
\backslash
"4.1.0 (Linux)
\backslash
""
\end_layout

\end_inset


\end_layout

\begin_layout Standard
All occurrences of 
\family typewriter
${Name}
\family default
 in the configuration file are interpreted as environment variables and
 replaced by their values, or by nothing if a variable is not defined.
 To avoid variable replacement 
\family typewriter
$
\family default
 has to be escaped.
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=bash,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

-I ${LIBDIR}/include
\end_layout

\begin_layout Plain Layout

-D OS_STR=
\backslash
"${OSTYPE}
\backslash
"
\end_layout

\begin_layout Plain Layout

### same as: #define OS_STR "linux"
\end_layout

\begin_layout Plain Layout

-D OS_VAR=
\backslash
"
\backslash
${OSTYPE}
\backslash
"
\end_layout

\begin_layout Plain Layout

### same as: #define OS_VAR "${OSTYPE}"
\end_layout

\end_inset


\end_layout

\begin_layout LyX-Code
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
clearpage
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
File Handling
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Preprocessor
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Lexical Analysis
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Syntactic Analysis
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Semantic Analysis
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Code Transformation
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section
Reference
\end_layout

\begin_layout Subsection
C/C++ Syntax Tree Classes
\end_layout

\begin_layout Subsubsection
Semantic Attributes
\end_layout

\begin_layout Paragraph
CExprValue
\begin_inset CommandInset label
LatexCommand label
name "par:CExprValue"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CExprValue.h>
\end_layout

\begin_layout Standard
Base class for syntax tree nodes representing expressions that can be resolved
 to a constant value (arithmetic constants and string literals).
\end_layout

\begin_layout Paragraph
CConstant
\begin_inset CommandInset label
LatexCommand label
name "par:CConstant"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CConstant.h>
\end_layout

\begin_layout Standard
Semantic information object for arithmetic constants.
 Derived from 
\emph on
CExprValue
\emph default
.
\end_layout

\begin_layout Paragraph
CSemObject
\begin_inset CommandInset label
LatexCommand label
name "par:CSemObject"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CSemObject.h>
\end_layout

\begin_layout Standard
Semantic information for syntax tree nodes referencing objects, classes,
 or any other entity.
\end_layout

\begin_layout Paragraph
CSemValue
\begin_inset CommandInset label
LatexCommand label
name "par:CSemValue"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CSemValue.h>
\end_layout

\begin_layout Standard
Semantic information object about values in the syntax tree.
 Provides the value and type of an expression or entity (name).
\end_layout

\begin_layout Paragraph
CSemScope
\begin_inset CommandInset label
LatexCommand label
name "par:CSemScope"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CSemScope.h>
\end_layout

\begin_layout Standard
Scope information object for syntax tree nodes.
 Some syntactic constructs open own scopes, e.g.
 class definitions, function bodies, and compound statements.
\end_layout

\begin_layout Paragraph
CStrLiteral
\begin_inset CommandInset label
LatexCommand label
name "par:CStrLiteral"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CStrLiteral.h>
\end_layout

\begin_layout Standard
String literal abstraction.
 Holds the string value, its length, and the string type.
 Derived from 
\emph on
CExprValue
\emph default
.
\end_layout

\begin_layout Paragraph
CWStrLiteral
\begin_inset CommandInset label
LatexCommand label
name "par:CWStrLiteral"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CWStrLiteral.h>
\end_layout

\begin_layout Standard
Wide string literal abstraction.
 Holds the wide string value, its length, and the string type.
 Derived from 
\emph on
CExprValue
\emph default
.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Basic Tree Classes
\end_layout

\begin_layout Paragraph
CTree
\begin_inset CommandInset label
LatexCommand label
name "par:CTree"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all C/C++ syntax tree classes.
\end_layout

\begin_layout Standard
The syntax tree is the result of the syntactic analysis of the input source
 code representing its syntactic structure according to the accepted grammar
 (see class Syntax).
\end_layout

\begin_layout Standard
Objects of this class and classes derived from this class are created by
 the tree builder component of Puma during the parse process.
 A syntax tree shall be destroyed using the tree builder that has created
 it by calling its 
\emph on
destroy(CTree*)
\emph default
 method with the root node of the syntax tree as its argument.
\end_layout

\begin_layout Standard
The navigation in the syntax tree is done using the methods 
\emph on
Parent()
\emph default
, 
\emph on
Sons()
\emph default
, and 
\emph on
Son(int)
\emph default
 const.
 In a syntax tree "sons" are understood as the syntactic child nodes of
 a syntax tree node, whereas "daughters" are understood are their semantic
 child nodes.
\end_layout

\begin_layout Standard
Another way to traverse a syntax tree is to implement an own tree visitor
 based on class 
\emph on
CVisitor
\emph default
.
 This is recommended especially for larger syntax trees.
\end_layout

\begin_layout Standard
A syntax tree node can be identified by comparing its node name with the
 node identifier of the expected syntax tree node:
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ...
\end_layout

\end_inset


\end_layout

\begin_layout Standard
Based on the syntax tree further semantic analyses can be performed.
 Semantic information, like scope, value, type, and object information,
 is linked into the syntax tree.
 It can be accessed using the methods 
\emph on
SemScope()
\emph default
, 
\emph on
SemValue()
\emph default
, and 
\emph on
SemObject()
\emph default
.
 Some nodes provide short-cuts to the semantic type and value information
 by implementing the methods 
\emph on
Type()
\emph default
 and 
\emph on
Value()
\emph default
.
\end_layout

\begin_layout Standard
The information of the syntax tree can be used to perform high-level transformat
ions of the source code (see class 
\emph on
ManipCommander
\emph default
).
\end_layout

\begin_layout Paragraph
CT_Token
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Token"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a single token in the source code.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_List
\begin_inset CommandInset label
LatexCommand label
name "par:CT_List"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for tree nodes representing lists.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_Error
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Error"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Error tree node that is inserted into the tree for syntactic constructs
 that could not be parsed.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_Program
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Program"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Root node of C/C++ syntax trees.
 Derived from 
\emph on
CT_DeclList
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Statements
\end_layout

\begin_layout Paragraph
CT_Statement
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Statement"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all tree nodes representing statements.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_CmpdStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_CmpdStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a compound statement.
 Derived from 
\emph on
CT_List
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_LabelStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_LabelStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a label statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

incr_a: a++; 
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_IfStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_IfStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an if-statement.
 Derived from 
\emph on
CT_Statement
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

if (a==0) {
\end_layout

\begin_layout Plain Layout

  a++; 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_IfElseStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_IfElseStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an if-else-statement.
 Derived from 
\emph on
CT_Statement
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

if (a==0) {
\end_layout

\begin_layout Plain Layout

  a++; 
\end_layout

\begin_layout Plain Layout

} else {
\end_layout

\begin_layout Plain Layout

  a=0;
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_SwitchStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_SwitchStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a switch statement.
 Derived from 
\emph on
CT_Statement
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

switch(a) { 
\end_layout

\begin_layout Plain Layout

  case 0: a++; 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BreakStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_BreakStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a break-statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

break;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ExprStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ExprStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an expression statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a+b; 
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_WhileStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_WhileStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a while-statement.
 Derived from 
\emph on
CT_Statement
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

while (a>0) {
\end_layout

\begin_layout Plain Layout

  a--; 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DoStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DoStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a do-while-statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

do {
\end_layout

\begin_layout Plain Layout

  a--; 
\end_layout

\begin_layout Plain Layout

} while (a>0); 
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ForStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ForStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a for-statement.
 Derived from 
\emph on
CT_Statement
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

for (int i=0; i<10; i++) {
\end_layout

\begin_layout Plain Layout

  f(i); 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ContinueStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ContinueStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a continue-statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

continue;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ReturnStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ReturnStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a return-statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

return 1;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GotoStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GotoStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a goto-stmt.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

goto incr_a;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DeclStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DeclStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a declaration statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int i=0;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_CaseStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_CaseStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a case statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

case 42: a=42;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DefaultStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DefaultStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a default statement of a switch statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

default: break;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_TryStmt
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TryStmt"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a try-catch statement.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

try { 
\end_layout

\begin_layout Plain Layout

  f(); 
\end_layout

\begin_layout Plain Layout

} catch (...) {
\end_layout

\begin_layout Plain Layout

  // call failed
\end_layout

\begin_layout Plain Layout

} 
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Expressions
\end_layout

\begin_layout Paragraph
CT_Expression
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Expression"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all expression tree nodes.
 Derived from 
\emph on
CTree
\emph default
 and 
\emph on
CSemValue
\emph default
.
\end_layout

\begin_layout Paragraph
CT_ExprList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ExprList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an expression list.
 Derived from 
\emph on
CT_List
\emph default
, 
\emph on
CSemValue
\emph default
, and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Paragraph
CT_Call
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Call"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing explicit or implicit function calls including built-in
 or user-defined functions and overloaded operators.
 Derived from 
\emph on
CT_Expression
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Paragraph
CT_CallExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_CallExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a function call expression.
 Derived from 
\emph on
CT_Call
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

f(i)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ImplicitCall
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ImplicitCall"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing implicit function calls detected by the semantic
 analysis.
 Derived from 
\emph on
CT_Call
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

class Number {
\end_layout

\begin_layout Plain Layout

  int _n;
\end_layout

\begin_layout Plain Layout

public:
\end_layout

\begin_layout Plain Layout

  Number(int n) : _n(n) {}
\end_layout

\begin_layout Plain Layout

  int operator+(const Number& n) { return n._n + _n; }
\end_layout

\begin_layout Plain Layout

};
\end_layout

\begin_layout Plain Layout

\end_layout

\begin_layout Plain Layout

Number one(1), two(2);
\end_layout

\begin_layout Plain Layout

one + two;
\end_layout

\begin_layout Plain Layout

// implicitely calls one.operator+(two)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ThrowExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ThrowExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a throw expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

throw std::exception() 
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_NewExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_NewExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a new expression.
 Derived from 
\emph on
CT_Expression
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

new A()
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DeleteExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DeleteExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a delete expression.
 Derived from 
\emph on
CT_Expression
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

delete a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ConstructExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ConstructExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a construct expression.
 Derived from 
\emph on
CT_Expression
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

std::string("abc")
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Integer
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Integer"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an integer constant.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

1234
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Character
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Character"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a single character constant.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

'a'
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_WideCharacter
\begin_inset CommandInset label
LatexCommand label
name "par:CT_WideCharacter"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a wide character constant.
 Derived from 
\emph on
CT_Character
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

L'a'
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_String
\begin_inset CommandInset label
LatexCommand label
name "par:CT_String"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a string literal.
 Derived from 
\emph on
CT_List
\emph default
 and 
\emph on
CSemValue
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

"abc"
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_WideString
\begin_inset CommandInset label
LatexCommand label
name "par:CT_WideString"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a wide string literal.
 Derived from 
\emph on
CT_String
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

L"abc"
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Float
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Float"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a floating point constant.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

12.34
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Bool
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Bool"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a boolean literal.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Examples:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

true
\end_layout

\begin_layout Plain Layout

false
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BracedExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_BracedExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a braced expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Examples:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

(a+b)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BinaryExpr
\family typewriter

\begin_inset CommandInset label
LatexCommand label
name "par:CT_BinaryExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a binary expression.
 Derived from 
\emph on
CT_Call
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a+b
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_MembPtrExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_MembPtrExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a member pointer expression.
 Derived from 
\emph on
CT_Expression
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a->b
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_MembRefExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_MembRefExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a member reference expression.
 Derived from 
\emph on
CT_MembPtrExpr
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a.b
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_UnaryExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_UnaryExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for tree nodes representing unary expressions.
 Derived from 
\emph on
CT_Call
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

!a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_PostfixExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_PostfixExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a postfix expression.
 Derived from 
\emph on
CT_UnaryExpr
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a++
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_AddrExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AddrExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an address expression.
 Derived from 
\emph on
CT_UnaryExpr
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

&a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DerefExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DerefExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a pointer dereferencing expression.
 Derived from 
\emph on
CT_UnaryExpr
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

*a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_IfThenExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_IfThenExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an if-then expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a>0?a:b  // evaluate to a if a>0, and to b otherwise
\end_layout

\begin_layout Plain Layout

a?:b     // short-cut for: a!=0?a:b
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_CmpdLiteral
\begin_inset CommandInset label
LatexCommand label
name "par:CT_CmpdLiteral"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a compound literal.
 Derived from 
\emph on
CT_Expression
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

(int[]){1,2,3)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_IndexExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_IndexExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an index expression.
 Derived from 
\emph on
CT_Call
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a[1]
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_CastExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_CastExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a cast expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

(int)a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_StaticCast
\begin_inset CommandInset label
LatexCommand label
name "par:CT_StaticCast"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a static cast.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

static_cast<int>(a)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ConstCast
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ConstCast"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a const cast.
 Derived from 
\emph on
CT_StaticCast
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

const_cast<int>(a)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ReintCast
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ReintCast"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a reinterpret cast.
 Derived from 
\emph on
CT_StaticCast
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

reinterpret_cast<int>(a)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DynamicCast
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DynamicCast"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a dynamic cast.
 Derived from 
\emph on
CT_StaticCast
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

dynamic_cast<int>(a)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_TypeidExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TypeidExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a typeid expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

typeid(X)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_SizeofExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_SizeofExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a sizeof expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

sizeof(int*)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_OffsetofExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_OffsetofExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an offsetof expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

offsetof(Circle,radius)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ImplicitCast
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ImplicitCast"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an implicit cast.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int i = 1.2; // implicit cast from float to int
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_MembDesignator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_MembDesignator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a member designator.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

.a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_IndexDesignator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_IndexDesignator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an index designator.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

[1]
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DesignatorSeq
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DesignatorSeq"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a designator sequence.
 Derived from 
\emph on
CT_List
\emph default
 and 
\emph on
CSemValue
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

.a.b.c
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Declaration Specifiers
\end_layout

\begin_layout Paragraph
CT_DeclSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DeclSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all tree nodes representing declaration specifiers.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_DeclSpecSeq
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DeclSpecSeq"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a sequence of declaration specifiers.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Paragraph
CT_PrimDeclSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_PrimDeclSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a primitive declaration specifier.
 Derived from 
\emph on
CT_DeclSpec
\emph default
.
\end_layout

\begin_layout Standard
Examples:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

friend
\end_layout

\begin_layout Plain Layout

extern
\end_layout

\begin_layout Plain Layout

char
\end_layout

\begin_layout Plain Layout

unsigned
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_NamedType
\begin_inset CommandInset label
LatexCommand label
name "par:CT_NamedType"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a named type.
 Derived from 
\emph on
CT_DeclSpec
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

(int*)a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ClassSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ClassSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a class specifier.
 Derived from 
\emph on
CT_DeclSpec
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

class X
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_UnionSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_UnionSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a union specifier.
 Derived from 
\emph on
CT_ClassSpec
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

union X
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_EnumSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_EnumSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an enumeration specifier.
 Derived from 
\emph on
CT_ClassSpec
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

enum X
\end_layout

\end_inset

 
\end_layout

\begin_layout Paragraph
CT_ExceptionSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ExceptionSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an exception specifier.
 Derived from CT_
\emph on
DeclSpec
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

throw(std::exception)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BaseSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_BaseSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a base class specifier.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

public X
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BaseSpecList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_BaseSpecList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a base specifier list.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

: public X, protected Y, Z
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_AccessSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AccessSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an access specifier.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

public:
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Declarators
\end_layout

\begin_layout Paragraph
CT_Declarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Declarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all tree nodes representing declarators.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_DeclaratorList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DeclaratorList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list of declarators.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Paragraph
CT_InitDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_InitDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a declarator with initializer.
 Derived from 
\emph on
CT_Declarator
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int *i = 0;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BracedDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_BracedDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a braced declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int (i);
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ArrayDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ArrayDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an array declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
 and 
\emph on
CSemValue
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a[10]
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ArrayDelimiter
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ArrayDelimiter"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an array delimiter.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

[10]
\end_layout

\begin_layout Plain Layout

[*]
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_FctDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_FctDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a function declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

f(int a) const
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_RefDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_RefDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a reference declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

&a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_PtrDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_PtrDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a pointer declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

*a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_MembPtrDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_MembPtrDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a member pointer declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

*X::a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_BitFieldDeclarator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_BitFieldDeclarator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a bit-field declarator.
 Derived from 
\emph on
CT_Declarator
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a : 2
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Declarations
\end_layout

\begin_layout Paragraph
CT_Decl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Decl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all tree nodes representing declarations.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_DeclList
\family typewriter

\begin_inset CommandInset label
LatexCommand label
name "par:CT_DeclList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list of declarations.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Paragraph
CT_MembList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_MembList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a member declarations list.
 Derived from 
\emph on
CT_DeclList
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_ObjDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ObjDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an object declaration.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int *i
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ArgDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ArgDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing the declaration of a function parameter.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Paragraph
CT_ArgDeclList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ArgDeclList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a function parameter list.
 Derived from 
\emph on
CT_DeclList
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_ArgNameList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ArgNameList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a K&R function parameter name list.
 Derived from 
\emph on
CT_ArgDeclList
\emph default
.
\end_layout

\begin_layout Paragraph
CT_ArgDeclSeq
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ArgDeclSeq"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a K&R function parameter declarations list.
 Derived from 
\emph on
CT_DeclList
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_AccessDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AccessDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a member access declaration.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

baseClassMember;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_UsingDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_UsingDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a using declaration.
 Derived from 
\emph on
CT_AccessDecl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

using Base::m_Member;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_AsmDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AsmDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an inline assembly definition.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

asm("movl %ecx %eax");
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_EnumDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_EnumDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing the definition of an enumeration.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

enum E { A, B, C }
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ClassDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ClassDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a class definition.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

class X : Y { int x; }
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_UnionDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_UnionDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing the definition of a union.
 Derived from 
\emph on
CT_ClassDef
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

union U { int i; }
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Enumerator
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Enumerator"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a single enumeration constant.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Paragraph
CT_EnumeratorList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_EnumeratorList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list of enumerator constants.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Paragraph
CT_LinkageSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_LinkageSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list of declaration with a specific linkage.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Paragraph
CT_Handler
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Handler"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an exception handler.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_TemplateDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TemplateDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a template declaration.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_TemplateParamDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TemplateParamDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all tree nodesrepresenting a template parameter declaration.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Paragraph
CT_TypeParamDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TypeParamDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a template type parameter declaration.
 Derived from 
\emph on
CT_TemplateParamDecl
\emph default
.
\end_layout

\begin_layout Paragraph
CT_NonTypeParamDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_NonTypeParamDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a template non-type parameter declaration.
 Derived from 
\emph on
CT_TemplateParamDecl
\emph default
.
\end_layout

\begin_layout Paragraph
CT_TemplateParamList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TemplateParamList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a template parameter list.
 Derived from 
\emph on
CT_List
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Paragraph
CT_TemplateArgList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TemplateArgList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a template argument list.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Paragraph
CT_NamespaceDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_NamespaceDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a namespace definition.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

namespace a {}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_NamespaceAliasDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_NamespaceAliasDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a namespace alias definition.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

namespace b = a;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_UsingDirective
\begin_inset CommandInset label
LatexCommand label
name "par:CT_UsingDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a namespace using directive.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

using namespace std;
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Condition
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Condition"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a control-statement condition.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int i = 0
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_FctDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_FctDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a function definition.
 Derived from 
\emph on
CT_Decl
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int mul(int x, int y) {
\end_layout

\begin_layout Plain Layout

  return x*y;
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_MembInitList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_MembInitList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a constructor initializer list.
 Derived from 
\emph on
CT_List
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

: BaseClass(), m_Member(0)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_HandlerSeq
\begin_inset CommandInset label
LatexCommand label
name "par:CT_HandlerSeq"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing an exception handler sequence.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Names
\end_layout

\begin_layout Paragraph
CT_SimpleName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_SimpleName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for all tree nodes representing a name.
 Derived from 
\emph on
CT_List
\emph default
, 
\emph on
CSemValue
\emph default
, 
\emph on
CSemObject
\emph default
, and 
\emph on
Printable
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_SpecialName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_SpecialName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Base class for tree nodes representing a special name, like destructor names.
 Derived from 
\emph on
CT_SimpleName
\emph default
.
\end_layout

\begin_layout Paragraph
CT_PrivateName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_PrivateName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a private name.
 Derived from 
\emph on
CT_SpecialName
\emph default
.
\end_layout

\begin_layout Standard
Private names are generated names for instance for abstract declarators.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

void foo(int*);
\end_layout

\begin_layout Plain Layout

// first parameter of foo has a private name
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_OperatorName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_OperatorName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing the name of an overloaded operator.
 Derived from 
\emph on
CT_SpecialName
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

operator==
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_DestructorName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_DestructorName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a destructor name.
 Derived from 
\emph on
CT_SpecialName
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

~X
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ConversionName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ConversionName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing the name of a conversion function.
 Derived from 
\emph on
CT_SpecialName
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

operator int*
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_TemplateName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_TemplateName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a template name.
 Derived from 
\emph on
CT_SpecialName
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

X<T>
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_QualName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_QualName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a qualified name.
 Derived from 
\emph on
CT_SimpleName
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

X::Y::Z
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_RootQualName
\begin_inset CommandInset label
LatexCommand label
name "par:CT_RootQualName"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a qualified name with introducing name separator.
 Derived from 
\emph on
CT_QualName
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

::X::Y::Z
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
Wildcards
\end_layout

\begin_layout Paragraph
CT_Any
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Any"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a wildcard.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Paragraph
CT_AnyList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AnyList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list wildcard.
 Derived from 
\emph on
CT_Any
\emph default
.
\end_layout

\begin_layout Paragraph
CT_AnyExtension
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AnyExtension"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing a wildcard extension.
 Derived from 
\emph on
CTree
\emph default
 and 
\emph on
CSemValue
\emph default
.
\end_layout

\begin_layout Paragraph
CT_AnyCondition
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AnyCondition"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTree.h>
\end_layout

\begin_layout Standard
Tree node representing the condition of a wildcard.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
AspectC++
\end_layout

\begin_layout Paragraph
CT_AdviceDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AdviceDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACTree.h>
\end_layout

\begin_layout Standard
Tree node representing an advice declaration.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

advice "% main(...)" : before() {
\end_layout

\begin_layout Plain Layout

  printf('init'); 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_OrderList
\begin_inset CommandInset label
LatexCommand label
name "par:CT_OrderList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACTree.h>
\end_layout

\begin_layout Standard
Tree node representing a pointcut order list.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

( "pointcut1", "pointcut2" )
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_PointcutDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_PointcutDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACTree.h>
\end_layout

\begin_layout Standard
Tree node representing a pointcut declaration.
 Derived from 
\emph on
CT_Decl
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

pointcut main() = "% main(...)";
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_Intro
\begin_inset CommandInset label
LatexCommand label
name "par:CT_Intro"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACTree.h>
\end_layout

\begin_layout Standard
Tree node representing an introduction advice declaration.
 Derived from 
\emph on
CT_List
\emph default
 and 
\emph on
CSemScope
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

around()
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_ClassSliceDecl
\begin_inset CommandInset label
LatexCommand label
name "par:CT_ClassSliceDecl"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACTree.h>
\end_layout

\begin_layout Standard
Tree node representing a slice declaration for a class.
 Derived from 
\emph on
CTree
\emph default
 and 
\emph on
CSemObject
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

slice class X : Y { 
\end_layout

\begin_layout Plain Layout

  int x; 
\end_layout

\begin_layout Plain Layout

};
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_SliceRef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_SliceRef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACTree.h>
\end_layout

\begin_layout Standard
Tree node representing a slice reference.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

slice X;
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
VisualC++
\end_layout

\begin_layout Paragraph
CT_AsmBlock
\begin_inset CommandInset label
LatexCommand label
name "par:CT_AsmBlock"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/WinCTree.h>
\end_layout

\begin_layout Standard
Tree node representing an inline assembly block.
 Derived from 
\emph on
CT_Statement
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

asm { movl ecx eax }
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
GNU C/C++
\end_layout

\begin_layout Paragraph
CT_GnuAsmSpec
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuAsmSpec"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing an extended inline assembly specifier.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

asm("r0")
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GnuAsmDef
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuAsmDef"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing an extended inline assembly definition.
 Derived from 
\emph on
CT_AsmDef
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

asm("fsinx %1,%0" : "=f" (result) : "f" (angle));
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GnuAsmOperand
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuAsmOperand"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing an extended inline assembly operand.
 Derived from 
\emph on
CTree
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

"=f" (result)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GnuAsmOperands
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuAsmOperands"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list of extended inline assembly operands.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

: "=f" (result) : "f" (angle)
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GnuAsmClobbers
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuAsmClobbers"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing a list of extended inline assembly clobbers.
 Derived from 
\emph on
CT_List
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

: "r1", "r2", "r3", "r4", "r5"
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GnuStatementExpr
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuStatementExpr"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing a statement expression.
 Derived from 
\emph on
CT_Expression
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

({ int i = 0; i++; })
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CT_GnuTypeof
\begin_inset CommandInset label
LatexCommand label
name "par:CT_GnuTypeof"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/GnuCTree.h>
\end_layout

\begin_layout Standard
Tree node representing a typeof expression.
 Derived from 
\emph on
CT_DeclSpec
\emph default
 and 
\emph on
CSemValue
\emph default
.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

typeof(a+b)
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
Semantic Tree Classes
\end_layout

\begin_layout Subsubsection
Basic Semantic Classes
\end_layout

\begin_layout Paragraph
CObjectInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CObjectInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CObjectInfo.h>
\end_layout

\begin_layout Standard
Abstract base class of all semantic information classes.
\end_layout

\begin_layout Standard
Provides all semantic information about an entity (class, function, object,
 etc).
\end_layout

\begin_layout Standard
A semantic object is identified by its object ID.
 Semantic information objects for the same kind of entity have the same
 object ID (like object ID 
\emph on
CObjectInfo::FUNCTION_INFO
\emph default
 for all semantic objects of functions).
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

// check if sem_obj is a semantic object for a function 
\end_layout

\begin_layout Plain Layout

if (sem_obj.Id() == Puma::CObjectInfo::FUNCTION_INFO) {
\end_layout

\begin_layout Plain Layout

  ...
 
\end_layout

\begin_layout Plain Layout

} 
\end_layout

\begin_layout Plain Layout

// same check 
\end_layout

\begin_layout Plain Layout

if (sem_obj.FunctionInfo()) {
\end_layout

\begin_layout Plain Layout

  ...
 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
Semantic information objects are created by the semantic analysis component
 of Puma (see class 
\emph on
Semantic
\emph default
) during the parse process and are collected in the semantic information
 database (see class 
\emph on
CSemDatabase
\emph default
).
\end_layout

\begin_layout Standard
There are several relations between the semantic objects forming the semantic
 tree.
 There is one semantic tree for each translation unit.
\end_layout

\begin_layout Standard
The root of the semantic tree usually is the semantic object for the file
 scope (see class 
\emph on
CFileInfo
\emph default
).
 It contains all the other scopes of the analysed source file, such as namespace
s and class definitions, function definitions, global variables, and so
 on.
 The semantic tree is destroyed by destroying the root object of the tree.
 This recursively destroys all sub-objects of the tree.
 
\end_layout

\begin_layout Paragraph
CLanguage
\begin_inset CommandInset label
LatexCommand label
name "par:CLanguage"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CLanguage.h>
\end_layout

\begin_layout Standard
Language specific encoding of entity names.
\end_layout

\begin_layout Standard
The language is specified using the 'extern' linkage specifier.
\end_layout

\begin_layout Standard
Following languages are supported.
 
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Language Type Constants
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Language
\end_layout

\end_inset
</cell>
</row>
<row topspace="default">
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLanguage::LANG_C
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Language C.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLanguage::LANG_CPLUSPLUS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Language C++.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLanguage::LANG_OTHER
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Neither C nor C++.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLanguage::LANG_UNDEFINED
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
No explicit language encoding.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Standard
C entity names are not encoded.
 C++ entity names are encoded according to the 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
webref{http://www.codesourcery.com/cxx-abi/abi.html
\backslash
#mangling}{
\backslash
emph{C++ V3 ABI mangling}}
\backslash
hspace{-4pt}
\end_layout

\end_inset

.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

void foo(char);            // encoded as: _Z3fooc
\end_layout

\begin_layout Plain Layout

extern "C" void bar(int);  // encoded as: bar
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CSpecifiers
\begin_inset CommandInset label
LatexCommand label
name "par:CSpecifiers"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CSpecifiers.h>
\end_layout

\begin_layout Standard
C/C++ declaration specifiers for the declaration of an entity.
 The following declaration specifiers are supported.
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="10" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Specifier Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Represented Specifier
\end_layout

\end_inset
</cell>
</row>
<row topspace="default">
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_VIRTUAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
virtual
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_STATIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
static
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_EXTERN
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
extern
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_MUTABLE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
mutable
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_REGISTER
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
register
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_EXPLICIT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
explicit
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_AUTO
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
auto
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_INLINE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
inline
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CSpecifiers::SPEC_NONE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
No declaration specifier.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Paragraph
CLinkage
\begin_inset CommandInset label
LatexCommand label
name "par:CLinkage"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CLinkage.h>
\end_layout

\begin_layout Standard
Linkage of an entity name (object, function, etc).
\end_layout

\begin_layout Standard
The linkage controls where a name is visible.
 There are three types of linkage: internal, external, and no linkage.
 
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="4" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Linkage Type Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Linkage
\end_layout

\end_inset
</cell>
</row>
<row topspace="default">
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLinkage::LINK_INTERNAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Internal linkage.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLinkage::LINK_EXTERNAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
External linkage.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CLinkage::LINK_NONE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
No linkage.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Standard
Names with external linkage are visible outside the object file where they
 occur.
 Names with internal or no linkage are only visible in one object file.
\end_layout

\begin_layout Standard
The linkage is implicitely defined by the scope in which the entity is declared.
 With the linkage specifier 
\emph on
extern
\emph default
 an entity name can be explicitely declared to have external linkage.
\end_layout

\begin_layout Paragraph
CProtection
\begin_inset CommandInset label
LatexCommand label
name "par:CProtection"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CProtection.h>
\end_layout

\begin_layout Standard
Access protection of C++ class members for the purpose of member access
 control.
\end_layout

\begin_layout Standard
There are three kinds of protection: private, public, and protected.
 
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Protection Type Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Meaning
\end_layout

\end_inset
</cell>
</row>
<row topspace="default">
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::PROT_PUBLIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Public member access.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::PROT_PROTECTED
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Protected member access.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::PROT_PRIVATE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Private member access.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::PROT_NONE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Undefined member access.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Standard
The protection either is defined implicitely or explicitely using member
 access specifiers.
\end_layout

\begin_layout Paragraph
CStorage
\begin_inset CommandInset label
LatexCommand label
name "par:CStorage"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CStorage.h>
\end_layout

\begin_layout Standard
Storage class of an object.
\end_layout

\begin_layout Standard
Defines the minimum potential lifetime of the storage containing an object.
 There are three different storage classes: static, automatic, and dynamic.
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Storage Class Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Meaning
\end_layout

\end_inset
</cell>
</row>
<row topspace="default">
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::CLASS_STATIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Static storage class.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::CLASS_AUTOMATIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Automatic storage class.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::CLASS_DYNAMIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Dynamic storage class.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
CProtection::CLASS_NONE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Undefined storage class.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
C/C++
\end_layout

\begin_layout Paragraph
CFileInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CFileInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CFileInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a source file (translation unit).
 Derived from 
\emph on
CNamespaceInfo
\emph default
.
\end_layout

\begin_layout Standard
A source file has its own scope, the so-called file scope.
\end_layout

\begin_layout Paragraph
CEnumeratorInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CEnumeratorInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CEnumeratorInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an enumeration constant.
 Derived from 
\emph on
CAttributeInfo
\emph default
.
\end_layout

\begin_layout Standard
An enumeration constant also is called enumerator.
\end_layout

\begin_layout Paragraph
CUsingInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CUsingInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CUsingInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a using-directive.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Standard
The using-directive makes names from a namespace visible in another namespace
 or scope.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

namespace A { 
\end_layout

\begin_layout Plain Layout

  class X {}; 
\end_layout

\begin_layout Plain Layout

} 
\end_layout

\begin_layout Plain Layout

using namespace A;  // make A::X visible in global scope 
\end_layout

\begin_layout Plain Layout

\end_layout

\begin_layout Plain Layout

X x;   // resolves to A::X
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CUnionInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CUnionInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CUnionInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a union.
 Derived from 
\emph on
CRecord
\emph default
.
\end_layout

\begin_layout Paragraph
CNamespaceInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CNamespaceInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CNamespaceInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a user-defined namespace.
 Derived from 
\emph on
CStructure
\emph default
.
\end_layout

\begin_layout Standard
There are two kinds of namespaces: original namespaces and namespace aliases.
\end_layout

\begin_layout Paragraph
CSourceInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CSourceInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CSourceInfo.h>
\end_layout

\begin_layout Standard
Source file information for an entity.
\end_layout

\begin_layout Standard
Stores the file information and start token of the entity in the source
 file.
\end_layout

\begin_layout Paragraph
CRecord
\begin_inset CommandInset label
LatexCommand label
name "par:CRecord"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CRecord.h>
\end_layout

\begin_layout Standard
Semantic information about a class or union.
 Derived from 
\emph on
CStructure
\emph default
.
\end_layout

\begin_layout Paragraph
CArgumentInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CArgumentInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CArgumentInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a function parameter.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Paragraph
CTemplateInstance
\begin_inset CommandInset label
LatexCommand label
name "par:CTemplateInstance"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTemplateInstance.h>
\end_layout

\begin_layout Standard
Semantic information about a template instance.
\end_layout

\begin_layout Standard
Contains the point of instantiation, the instantiated template, the instantiatio
n arguments, and the deduced template arguments.
\end_layout

\begin_layout Standard
The point of instantiation (POI) is the corresponding template-id.
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

X<int> x;   // X<int> is the POI 
\end_layout

\end_inset


\end_layout

\begin_layout Standard
The instantiation arguments are the arguments of the template-id at the
 POI.
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

Y<int,1> y; // 'int' and '1' are the instantiation arguments 
\end_layout

\end_inset


\end_layout

\begin_layout Standard
The deduced template arguments are calculated from the instantiation arguments
 and the template default arguments.
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

template<class T1, class T2 = float> 
\end_layout

\begin_layout Plain Layout

struct Foo { 
\end_layout

\begin_layout Plain Layout

  template<class T3, class T4> 
\end_layout

\begin_layout Plain Layout

  T1 foo(T2,T3,T4*); 
\end_layout

\begin_layout Plain Layout

};
\end_layout

\begin_layout Plain Layout

\end_layout

\begin_layout Plain Layout

void bar(bool b, char* s) { 
\end_layout

\begin_layout Plain Layout

  Foo<int> f;   // deduced arguments: T1=int, T2=float 
\end_layout

\begin_layout Plain Layout

  f.foo(1,b,s); // deduced arguments: T3=bool, T4=char 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
If a template instance is not yet created (maybe because real template instantia
tion is disabled or due to late template instantiation), then this template
 instance is called a pseudo instance.
\end_layout

\begin_layout Paragraph
CFctInstance
\begin_inset CommandInset label
LatexCommand label
name "par:CFctInstance"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CFctInstance.h>
\end_layout

\begin_layout Standard
Semantic information about an instance of a function template.
 Derived from 
\emph on
CFunctionInfo
\emph default
.
\end_layout

\begin_layout Paragraph
CFunctionInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CFunctionInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CFunctionInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a function, method, overloaded operator, or user
 conversion function.
 Derived from 
\emph on
CStructure
\emph default
.
\end_layout

\begin_layout Paragraph
CScopeRequest
\begin_inset CommandInset label
LatexCommand label
name "par:CScopeRequest"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CScopeRequest.h>
\end_layout

\begin_layout Standard
Provides additional scope information for semantic objects that do not represent
 scopes itself (like objects).
 Derived from 
\emph on
CObjectInfo
\emph default
.
\end_layout

\begin_layout Paragraph
CScopeInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CScopeInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CScopeInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a scope.
 Derived from 
\emph on
CObjectInfo
\emph default
.
\end_layout

\begin_layout Standard
Several syntactic constructs have its own scope, such as class definitions,
 functions, and compound statements.
\end_layout

\begin_layout Paragraph
CClassInstance
\begin_inset CommandInset label
LatexCommand label
name "par:CClassInstance"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CClassInstance.h>
\end_layout

\begin_layout Standard
Semantic information about an instance of a class template.
 Derived from 
\emph on
CClassInfo
\emph default
.
\end_layout

\begin_layout Paragraph
CLabelInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CLabelInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CLabelInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a jump label.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Standard
Jump labels are used as argument of goto-statements.
\end_layout

\begin_layout Paragraph
CTypedefInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CTypedefInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypedefInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a typedef.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Standard
A typedef is a named type for any underlying type.
 The type of a typedef is the underlying type.
\end_layout

\begin_layout Paragraph
CUnionInstance
\begin_inset CommandInset label
LatexCommand label
name "par:CUnionInstance"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CUnionInstance.h>
\end_layout

\begin_layout Standard
Semantic information about an instance of a union template.
 Derived from 
\emph on
CUnionInfo
\emph default
.
\end_layout

\begin_layout Paragraph
CAttributeInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CAttributeInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CAttributeInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a local or global object or a class data member.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Paragraph
CEnumInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CEnumInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CEnumInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an enumeration.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Paragraph
CTemplateInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CTemplateInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTemplateInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a template declaration.
 Derived from 
\emph on
CStructure
\emph default
.
\end_layout

\begin_layout Standard
Contains information about the parameters, specializations, and instances
 of a template.
\end_layout

\begin_layout Paragraph
CMemberAliasInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CMemberAliasInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CMemberAliasInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a member alias.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Standard
A member alias is created by a using-declaration.
 
\end_layout

\begin_layout Paragraph
CStructure
\begin_inset CommandInset label
LatexCommand label
name "par:CStructure"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CStructure.h>
\end_layout

\begin_layout Standard
Base class of all semantic information classes for entities that can contain
 other entity declarations (like classes, namespaces, functions).
 Derived from 
\emph on
CScopeInfo
\emph default
.
\end_layout

\begin_layout Paragraph
CTemplateParamInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CTemplateParamInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTemplateParamInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a template parameter.
 Derived from 
\emph on
CObjectInfo
\emph default
.
\end_layout

\begin_layout Standard
There are three kinds of template parameters: type, non-type, and template
 template parameters.
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

// T is a type template parameter 
\end_layout

\begin_layout Plain Layout

// I is a non-type template parameter 
\end_layout

\begin_layout Plain Layout

// TT is a template template parameter 
\end_layout

\begin_layout Plain Layout

template<class T, int I, template<typename,int> class TT> 
\end_layout

\begin_layout Plain Layout

class X { 
\end_layout

\begin_layout Plain Layout

  TT<T,I> x; 
\end_layout

\begin_layout Plain Layout

};
\end_layout

\end_inset


\end_layout

\begin_layout Paragraph
CBaseClassInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CBaseClassInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CBaseClassInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a base class of a class.
 Derived from 
\emph on
CScopeRequest
\emph default
.
\end_layout

\begin_layout Standard
The base class is specified by a base class specifier in the base class
 list of a class definition.
 It can have several qualifiers like 
\emph on
virtual
\emph default
, 
\emph on
public
\emph default
, and so on.
\end_layout

\begin_layout Paragraph
CClassInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CClassInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CClassInfo.h>
\end_layout

\begin_layout Standard
Semantic information about a class.
 Derived from 
\emph on
CRecord
\emph default
.
\end_layout

\begin_layout Standard
Note that 
\emph on
struct
\emph default
s are ordinary classes where the member access type defaults to 
\emph on
public
\emph default
.
 Note also that a union, although syntactically very similar, is not a class
 and thus not represented by 
\emph on
CClassInfo
\emph default
.
\end_layout

\begin_layout Paragraph
CLocalScope
\begin_inset CommandInset label
LatexCommand label
name "par:CLocalScope"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CLocalScope.h>
\end_layout

\begin_layout Standard
Semantic information about a local scope in a function body, also called
 block scope.
 Derived from 
\emph on
CStructure
\emph default
.
\end_layout

\begin_layout Standard
Examples for local scopes:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

{ <local scope> } 
\end_layout

\begin_layout Plain Layout

if (...) <local scope>; 
\end_layout

\begin_layout Plain Layout

while (...) { <local scope> } 
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsubsection
AspectC++
\end_layout

\begin_layout Paragraph
ACAdviceInfo
\begin_inset CommandInset label
LatexCommand label
name "par:ACAdviceInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACAdviceInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an AspectC++ 
\emph on
advice
\emph default
 declaration.
\end_layout

\begin_layout Standard
An advice is part of an aspect declaration.
\end_layout

\begin_layout Paragraph
ACAspectInfo
\begin_inset CommandInset label
LatexCommand label
name "par:ACAspectInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACAspectInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an AspectC++ 
\emph on
aspect
\emph default
 declaration.
\end_layout

\begin_layout Standard
An aspect declaration is syntactically equal to a C++ class declaration
 and also parsed like a C++ class.
 Additionally it contains 
\emph on
pointcut
\emph default
 and 
\emph on
advice
\emph default
 declarations.
\end_layout

\begin_layout Paragraph
ACSliceInfo
\begin_inset CommandInset label
LatexCommand label
name "par:ACSliceInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACSliceInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an AspectC++ 
\emph on
slice
\emph default
 declaration.
\end_layout

\begin_layout Standard
A slice represents a fragment of a C/C++ language element.
 For example a 
\emph on
class slice
\emph default
 is a (possibly incomplete) fragment of a class.
\end_layout

\begin_layout Paragraph
ACIntroductionInfo
\begin_inset CommandInset label
LatexCommand label
name "par:ACIntroductionInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACIntroductionInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an AspectC++ 
\emph on
introduction advice
\emph default
 declaration.
\end_layout

\begin_layout Paragraph
ACPointcutInfo
\begin_inset CommandInset label
LatexCommand label
name "par:ACPointcutInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/ACPointcutInfo.h>
\end_layout

\begin_layout Standard
Semantic information about an AspectC++ 
\emph on
pointcut
\emph default
 declaration.
\end_layout

\begin_layout Standard
A pointcut declaration is syntactically equal to a function declaration
 and also parsed like a function.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
Type Information Classes
\end_layout

\begin_layout Subsubsection
CTypeInfo
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeInfo"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type information for an entity (class, function, object, etc).
\end_layout

\begin_layout Standard
There are two kinds of types: fundamental types like 
\emph on
int
\emph default
, and compound types like 
\emph on
int*
\emph default
.
 Types describe objects, references, or functions.
\end_layout

\begin_layout Standard
A type is identified by its ID.
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

// check if type is a function type 
\end_layout

\begin_layout Plain Layout

if (type.Id() == Puma::CTypeInfo::TYPE_FUNCTION) { 
\end_layout

\begin_layout Plain Layout

  ...
 
\end_layout

\begin_layout Plain Layout

} 
\end_layout

\begin_layout Plain Layout

// same check 
\end_layout

\begin_layout Plain Layout

if (type.TypeFunction()) { 
\end_layout

\begin_layout Plain Layout

  ...
 
\end_layout

\begin_layout Plain Layout

} 
\end_layout

\begin_layout Plain Layout

// same check 
\end_layout

\begin_layout Plain Layout

if (type.isFunction()) { 
\end_layout

\begin_layout Plain Layout

  ...
 
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeList
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeList.h>
\end_layout

\begin_layout Standard
List of types.
 Used for instance for the list of function parameter types.
\end_layout

\begin_layout Subsubsection
CTypeAddress
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeAddress"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a reference.
\end_layout

\begin_layout Standard
Examples: 
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int& i = i0;
\end_layout

\begin_layout Plain Layout

// i has type 'reference to int'
\end_layout

\begin_layout Plain Layout

// type structure:
\end_layout

\begin_layout Plain Layout

// CTypeAddress
\end_layout

\begin_layout Plain Layout

//   CTypePrimitive int
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

const X& x = x0;
\end_layout

\begin_layout Plain Layout

// x has type 'reference to const X'
\end_layout

\begin_layout Plain Layout

// type structure:
\end_layout

\begin_layout Plain Layout

// CTypeAddress
\end_layout

\begin_layout Plain Layout

//   CTypeQualified const
\end_layout

\begin_layout Plain Layout

//     CTypeClass X 
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeVarArray
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeVarArray"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a variable length array.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

void foo(int len) { 
\end_layout

\begin_layout Plain Layout

  int i[len];
\end_layout

\begin_layout Plain Layout

  // i has type 'variable length array of int' 
\end_layout

\begin_layout Plain Layout

} 
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeUnion
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeUnion"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a union.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

union X x;
\end_layout

\begin_layout Plain Layout

// x has type 'union X'
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeEnum
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeEnum"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of an enumeration.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

enum E { A,B } e;
\end_layout

\begin_layout Plain Layout

// e has type 'enum E' 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

enum { C,D } a;
\end_layout

\begin_layout Plain Layout

// a has type 'enum <anonymous>'
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeBitField
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeBitField"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a bit-field.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

class X { 
\end_layout

\begin_layout Plain Layout

  int i : 10;   
\end_layout

\begin_layout Plain Layout

  // i has type 'bit-field of size 10' 
\end_layout

\begin_layout Plain Layout

  // type structure: 
\end_layout

\begin_layout Plain Layout

  // CTypeBitField dim=10 
\end_layout

\begin_layout Plain Layout

  //   CTypePrimitive int 
\end_layout

\begin_layout Plain Layout

};
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeQualified
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeQualified"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type qualification.
 There are three type qualifier: 
\emph on
const
\emph default
, 
\emph on
volatile
\emph default
, and 
\emph on
restrict
\emph default
.
 
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

const int i = 0;  
\end_layout

\begin_layout Plain Layout

// i has type 'const int'
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeQualified const 
\end_layout

\begin_layout Plain Layout

//   CTypePrimitive int 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

char * const s = 0;   
\end_layout

\begin_layout Plain Layout

// s has type 'const pointer to char' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeQualified const 
\end_layout

\begin_layout Plain Layout

//   CTypePointer 
\end_layout

\begin_layout Plain Layout

//     CTypePrimitive char
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeMemberPointer
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeMemberPointer"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a member pointer.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

struct X { 
\end_layout

\begin_layout Plain Layout

  int a; 
\end_layout

\begin_layout Plain Layout

  void f(int); 
\end_layout

\begin_layout Plain Layout

}; 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

int X::* aptr = &X::a;  
\end_layout

\begin_layout Plain Layout

// aptr has type 'member pointer to int' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeMemberPointer class=X 
\end_layout

\begin_layout Plain Layout

//   CTypePrimitive int 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

void (X::*fptr)(int) = &X::f;   
\end_layout

\begin_layout Plain Layout

// fptr has type 'member pointer to function 
\end_layout

\begin_layout Plain Layout

// returning void with one argument int' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeMemberPointer class=X 
\end_layout

\begin_layout Plain Layout

//   CTypeFunction args=int 
\end_layout

\begin_layout Plain Layout

//     CTypePrimitive void
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeFunction
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeFunction"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a function.
\end_layout

\begin_layout Standard
Example:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

void foo(int);   
\end_layout

\begin_layout Plain Layout

// foo has type 'function returning void 
\end_layout

\begin_layout Plain Layout

// with one argument int' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeFunction args=int 
\end_layout

\begin_layout Plain Layout

//   CTypePrimitive void
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypePointer
\begin_inset CommandInset label
LatexCommand label
name "par:CTypePointer"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a pointer.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int* ip = 0; 
\end_layout

\begin_layout Plain Layout

// ip has type 'pointer to int' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypePointer 
\end_layout

\begin_layout Plain Layout

//   CTypePrimitive int 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

const char* s = 0; 
\end_layout

\begin_layout Plain Layout

// s has type 'pointer to const char' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypePointer 
\end_layout

\begin_layout Plain Layout

//   CTypeQualified const 
\end_layout

\begin_layout Plain Layout

//     CTypePrimitive char
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeRecord
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeRecord"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a class or union.
\end_layout

\begin_layout Subsubsection
CTypeArray
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeArray"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of an array.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

int i[10]; 
\end_layout

\begin_layout Plain Layout

// i has type 'array of int' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeArray dim=10 
\end_layout

\begin_layout Plain Layout

//   CTypePrimitive int 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

char* sa[5]; 
\end_layout

\begin_layout Plain Layout

// sa has type 'array of pointer to char' 
\end_layout

\begin_layout Plain Layout

// type structure: 
\end_layout

\begin_layout Plain Layout

// CTypeArray dim=5 
\end_layout

\begin_layout Plain Layout

//   CTypePointer 
\end_layout

\begin_layout Plain Layout

//     CTypePrimitive char
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypePrimitive
\begin_inset CommandInset label
LatexCommand label
name "par:CTypePrimitive"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Primitive type.
 The fundamental arithmetic types and type 
\emph on
void
\emph default
 are called primitive types.
\end_layout

\begin_layout Standard
Following primitve types are defined.
\end_layout

\begin_layout Standard
\noindent
\align left
\begin_inset Tabular
<lyxtabular version="3" rows="22" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row endhead="true">
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Predefined Type Object
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Represented Type
\end_layout

\end_inset
</cell>
</row>
<row topspace="default">
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_BOOL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
bool
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_C_BOOL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
_Bool
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_CHAR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
char
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_SIGNED_CHAR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
signed char
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNSIGNED_CHAR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
unsigned char
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_WCHAR_T
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
wchar_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_SHORT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
short
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNSIGNED_SHORT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
unsigned short
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_INT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
int
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNSIGNED_INT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
unsigned int
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_LONG
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
long
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNSIGNED_LONG
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
unsigned long
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_LONG_LONG
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
long long
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNSIGNED_LONG_LONG
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
unsigned long long
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_FLOAT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
float
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_DOUBLE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
double
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_LONG_DOUBLE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
long double
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_VOID
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
void
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNKNOWN_T
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\emph on
unknown_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_UNDEFINED
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Undefined type.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::CTYPE_ELLIPSIS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Any type.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeClass
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeClass"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a class.
\end_layout

\begin_layout Standard
Examples:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language={C++},showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

class X x; 
\end_layout

\begin_layout Plain Layout

// x has type 'class X' 
\end_layout

\begin_layout Plain Layout

 
\end_layout

\begin_layout Plain Layout

struct Y y; 
\end_layout

\begin_layout Plain Layout

// y has type 'class Y'
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
CTypeTemplateParam
\begin_inset CommandInset label
LatexCommand label
name "par:CTypeTemplateParam"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTypeInfo.h>
\end_layout

\begin_layout Standard
Type of a template parameter.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
Preprocessor Syntax Tree Classes
\end_layout

\begin_layout Subsubsection
PreTree
\begin_inset CommandInset label
LatexCommand label
name "par:PreTree"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTree.h>
\end_layout

\begin_layout Standard
Base class for all C preprocessor syntax tree nodes.
\end_layout

\begin_layout Subsubsection
PreTreeComposite
\begin_inset CommandInset label
LatexCommand label
name "par:PreTreeComposite"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeComposite.h>
\end_layout

\begin_layout Standard
Base class for all C preprocessor syntax tree composite nodes.
 Derived from 
\emph on
PreTree
\emph default
.
\end_layout

\begin_layout Subsubsection
PreProgram
\begin_inset CommandInset label
LatexCommand label
name "par:PreProgram"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
The root node of the preprocessor syntax tree.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Subsubsection
PreDirectiveGroups
\begin_inset CommandInset label
LatexCommand label
name "par:PreDirectiveGroups"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing the directive groups in the program.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Subsubsection
PreConditionalGroup
\begin_inset CommandInset label
LatexCommand label
name "par:PreConditionalGroup"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a group of conditional directives.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#if
\end_layout

\begin_layout Plain Layout

...
\end_layout

\begin_layout Plain Layout

#elif
\end_layout

\begin_layout Plain Layout

...
\end_layout

\begin_layout Plain Layout

#else
\end_layout

\begin_layout Plain Layout

...
\end_layout

\begin_layout Plain Layout

#endif
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreElsePart
\begin_inset CommandInset label
LatexCommand label
name "par:PreElsePart"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a group of directives in the #else part
 of an #if conditional.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Subsubsection
PreElifPart
\begin_inset CommandInset label
LatexCommand label
name "par:PreElifPart"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a group of directives in the #elif part
 of an #if conditional.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Subsubsection
PreIfDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreIfDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #if directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#if OSTYPE==Linux
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreIfdefDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreIfdefDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #ifdef directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#ifdef Linux
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreIfndefDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreIfndefDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #ifndef directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#ifndef Linux
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreElifDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreElifDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #elif directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#elif OSTYPE==linux
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreElseDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreElseDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #else directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#else
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreEndifDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreEndifDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #endif directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#endif
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreIncludeDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreIncludeDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #include or #include_next directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#include <stdio.h> 
\end_layout

\begin_layout Plain Layout

#include_next <stdio.h>
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreAssertDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreAssertDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #assert directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#assert OSTYPE (linux)
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreUnassertDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreUnassertDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #unassert directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#unassert OSTYPE
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreDefineFunctionDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreDefineFunctionDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a #define directive for function-like
 macros.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#define MUL(a,b) (a * b)
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreDefineConstantDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreDefineConstantDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a #define directive for constants.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#define CONSTANT 1
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreUndefDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreUndefDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #undef directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#undef MACRO
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreWarningDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreWarningDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a #warning directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#warning This is a warning.
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreErrorDirective
\begin_inset CommandInset label
LatexCommand label
name "par:PreErrorDirective"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing an #error directive.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

#error This is an error.
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreIdentifierList
\begin_inset CommandInset label
LatexCommand label
name "par:PreIdentifierList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing the identifier list of a function-like
 macro definition.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Standard
Example:
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "basicstyle={\small\ttfamily},breaklines=true,language=C,showstringspaces=false"
inline false
status open

\begin_layout Plain Layout

a,b,c
\end_layout

\end_inset


\end_layout

\begin_layout Subsubsection
PreTokenList
\begin_inset CommandInset label
LatexCommand label
name "par:PreTokenList"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing the token list of a macro body.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Subsubsection
PreTokenListPart
\begin_inset CommandInset label
LatexCommand label
name "par:PreTokenListPart"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a part of the token list of a macro
 body.
 Derived from 
\emph on
PreTreeComposite
\emph default
.
\end_layout

\begin_layout Subsubsection
PreCondSemNode
\begin_inset CommandInset label
LatexCommand label
name "par:PreCondSemNode"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor semantic tree node for conditions.
 Derived from 
\emph on
PreTree
\emph default
.
\end_layout

\begin_layout Subsubsection
PreInclSemNode
\begin_inset CommandInset label
LatexCommand label
name "par:PreInclSemNode"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor semantic tree node for the #include directive containing the
 unit to include.
 Derived from 
\emph on
PreTree
\emph default
.
\end_layout

\begin_layout Subsubsection
PreError
\begin_inset CommandInset label
LatexCommand label
name "par:PreError"

\end_inset


\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreTreeNodes.h>
\end_layout

\begin_layout Standard
Preprocessor tree node representing a parse error.
 Derived from 
\emph on
PreTree
\emph default
.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
Tokens
\end_layout

\begin_layout Subsubsection
C/C++ Tokens
\end_layout

\begin_layout List
\labelwidthstring 00.00.0000

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CTokens.h>
\end_layout

\begin_layout Standard
\noindent
\align left
\begin_inset Tabular
<lyxtabular version="3" rows="162" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row endhead="true">
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Token Type Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Represented Text
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
@ 
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ADD_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
&&
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ADVICE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
advice
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AND
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
&
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AND_AND
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
&&
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AND_AND_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
and
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AND_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
&=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AND_EQ_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
and_eq
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AND_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
bitand
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ASM
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
asm
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ASM_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__asm
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ASM_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__asm__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ASPECT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
aspect
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ASSIGN
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_AUTO
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
auto
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_BOOL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
bool
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_BOOL_VAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
true, false
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_BREAK
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
break
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_C_BOOL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
_Bool
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CASE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
case
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CATCH
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
catch
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CDECL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
_cdecl
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CDECL_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__cdecl
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CHAR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
char
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CHAR_VAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Character constant like 
\family typewriter
'a'
\family default
 or 
\family typewriter
L'a'
\family default
.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CLASS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
class
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CLOSE_CURLY
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
}
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CLOSE_ROUND
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
)
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CLOSE_SQUARE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
]
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_COLON
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
:
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_COLON_COLON
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
::
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_COMMA
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
,
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CONST
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
const
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CONST_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__const
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CONST_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__const__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CONST_CAST
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
const_cast
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CONTINUE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
continue
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DECR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
--
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DEFAULT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
default
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DELETE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
delete
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DIV
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
/
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DIV_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
/=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DO
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
do
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DOT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DOT_STAR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
.*
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DOUBLE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
double
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_DYN_CAST
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
dynamic_cast
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ELLIPSIS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
...
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ELSE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
else
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ENUM
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
enum
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_EQL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
==
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_EXPLICIT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
explicit
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_EXPORT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
export
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_EXTERN
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
extern
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_FASTCALL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
_fastcall
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_FASTCALL_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__fastcall
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_FLOAT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
float
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_FLT_VAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Floating point constant like 
\family typewriter
12.34
\family default
.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_FOR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
for
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_FRIEND
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
friend
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_GEQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
>=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_GOTO
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
goto
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_GREATER
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
>
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ID
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Any identifier that is not a keyword.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_IF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
if
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_IF_EXISTS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__if_exists
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_IF_NOT_EXISTS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__if_not_exists
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INCR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
++
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INLINE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
inline
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INLINE_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__inline
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INLINE_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__inline__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
int
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INT_VAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Integer constant like 
\family typewriter
1234
\family default
.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_INT64
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__int64
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_IOR_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
|=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_IOR_EQ_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
or_eq
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_LEQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
<=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_LESS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
<
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_LONG
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
long
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_LSH
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
<<
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_LSH_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
<<=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_MINUS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_MOD_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_MODULO
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
%
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_MUL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
*
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_MUL_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
*=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_MUTABLE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
mutable
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_NAMESPACE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
namespace
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_NEQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
!=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_NEQ_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
not_eq
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_NEW
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
new
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_NOT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
!
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_NOT_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
not
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OPEN_CURLY
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
{
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OPEN_ROUND
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
(
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OPEN_SQUARE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
[
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OPERATOR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
operator
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
|
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OR_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
bitor
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OR_OR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
||
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_OR_OR_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
or
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_PLUS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
+
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_POINTCUT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
pointcut
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_PRIVATE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
private
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_PROTECTED
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
protected
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_PTS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
->
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_PTS_STAR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
->*
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_PUBLIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
public
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_QUESTION
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
?
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_REGISTER
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
register
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_REINT_CAST
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
reinterpret_cast
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_RESTRICT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
restrict
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_RESTRICT_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__restrict
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_RESTRICT_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__restrict__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_RETURN
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
return
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ROOF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
^
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ROOF_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
xor
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_RSH
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
>>
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_RSH_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
>>=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SEMI_COLON
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
;
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SHORT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
short
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SIGNED
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
signed
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SIGNED_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__signed
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SIGNED_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__signed__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SIZEOF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
sizeof
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SLICE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
slice
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_STAT_CAST
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
static_cast
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_STATIC
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
static
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_STDCALL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
_stdcall
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_STDCALL_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__stdcall
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_STRING_VAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
String constant like 
\family typewriter
"abc"
\family default
 or 
\family typewriter
L"abc"
\family default
.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_STRUCT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
struct
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SUB_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
-=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_SWITCH
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
switch
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TEMPLATE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
template
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_THIS
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
this
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_THROW
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
throw
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TILDE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
~
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TILDE_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
compl
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TRY
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
try
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TYPEDEF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
typedef
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TYPEID
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
typeid
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TYPENAME
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
typename
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TYPEOF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
typeof
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TYPEOF_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__typeof
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_TYPEOF_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__typeof__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_UNION
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
union
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_UNKNOWN_T
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
unknown_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_UNSIGNED
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
unsigned
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_USING
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
using
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_VIRTUAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
virtual
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_VOID
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
void
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_VOLATILE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
volatile
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_VOLATILE_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__volatile
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_VOLATILE_3
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__volatile__
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_WCHAR_T
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
wchar_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_WCHAR_T_2
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
__wchar_t
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_WHILE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
while
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_XOR_EQ
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
^=
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_XOR_EQ_ISO_646
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
xor_eq
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_ZERO_VAL
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
0
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection
Preprocessor Tokens
\end_layout

\begin_layout Standard

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/PreParser.h>
\end_layout

\begin_layout Standard
\noindent
\align left
\begin_inset Tabular
<lyxtabular version="3" rows="15" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row endhead="true">
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Token Type Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Represented Text
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_IF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#if
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_ELIF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#elif
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_IFDEF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#ifdef
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_IFNDEF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#ifndef
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_ELSE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#else
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_ENDIF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#endif
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_DEFINE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#define
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_UNDEF
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#undef
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_ASSERT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#assert
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_UNASSERT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#unassert
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_INCLUDE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#include, #import
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_INCLUDE_NEXT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#include_next
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_WARNING
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#warning
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
TOK_PRE_ERROR
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\family typewriter
#error
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Subsubsection
White Space and Comment Tokens
\end_layout

\begin_layout Standard

\family typewriter
#include
\begin_inset space ~
\end_inset

<Puma/CCommentTokens.h>
\end_layout

\begin_layout Standard
\noindent
\align left
\begin_inset Tabular
<lyxtabular version="3" rows="6" columns="2">
<features islongtable="true">
<column alignment="left" valignment="top" width="0">
<column alignment="left" valignment="top" width="0">
<row endhead="true">
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Token Type Constant
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout

\series bold
Represented Text
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_WSPACE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Any white space block.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CCSINGLE
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
C++ style single line comment.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CCMULTIBEGIN
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
C style multi-line comment start token.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CCMULTIEND
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
C style multi-line comment end token.
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Puma::TOK_CCOMMENT
\end_layout

\end_inset
</cell>
<cell alignment="center" valignment="top" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Comment block.
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
C Grammar
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
trans_unit
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
decl_seq
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Program}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
typedef_name
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ID
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_SimpleName}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
private_name
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

; 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_SimpleName}
\end_layout

\end_inset

]
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
identifier
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ID
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_SimpleName}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
literal
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_INT_VAL
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Integer}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_ZERO_VAL
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Integer}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_CHAR_VAL
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Character}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_WideCharacter}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_FLT_VAL
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Float}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\shape italic
\size small
cmpd_str
\shape default
\size default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cmpd_str
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
str_literal
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
str_literal
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_STRING_VAL
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_String}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_WideString}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
prim_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
literal
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
id_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BracedExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
id_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ID
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_SimpleName}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cmpd_literal
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
type_id
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\family typewriter
\size footnotesize

\begin_inset Newline newline
\end_inset

TOK_OPEN_CURLY
\family default
\size default
 
\size small
\emph on
init_list
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_CLOSE_CURLY
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_CmpdLiteral}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
postfix_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
prim_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
cmpd_literal
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| (
\size small
\emph on
cmpd_literal
\size default
\emph default
 | 
\size small
\emph on
prim_expr
\size default
\emph default
) ( 
\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
expr_list
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_CallExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_SQUARE
\family default
\size default
 
\size small
\emph on
expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_SQUARE
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_IndexExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| (
\family typewriter
\size footnotesize
TOK_DECR
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_INCR
\family default
\size default
) 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PostfixExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_DOT
\family default
\size default
 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_MembRefExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_PTS
\family default
\size default
 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_MembPtrExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

)
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
expr_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
expr_list
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
 
\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ExprList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
unary_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
postfix_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset


\size small
\emph on
| offsetof_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_AND
\family default
\size default
 
\size small
\emph on
cast_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_AddrExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_MUL
\family default
\size default
 
\size small
\emph on
cast_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DerefExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_SIZEOF
\family default
\size default
 (
\size small
\emph on
unary_expr
\size default
\emph default
 | 
\size small
\emph on
unary_expr1
\size default
\emph default
) 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_SizeofExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| (
\family typewriter
\size footnotesize
TOK_DECR
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_INCR
\family default
\size default
) 
\size small
\emph on
unary_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_UnaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| (
\family typewriter
\size footnotesize
TOK_PLUS
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_MINUS
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_TILDE
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_NOT
\family default
\size default
) 
\size small
\emph on
cast_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_UnaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
unary_expr1
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
type_id
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
offsetof_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OFFSETOF
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
type_spec
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\begin_inset Newline newline
\end_inset


\family default
\size small
\emph on
memb_designator
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default

\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_OffsetofExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
memb_designator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
identifier
\size default
\emph default

\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DesignatorSeq}
\end_layout

\end_inset

]
\size small
\emph on

\begin_inset Newline newline
\end_inset

| identifier designator
\size default
\emph default
+
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DesignatorSeq}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cast_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
unary_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| (
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
type_id
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
)+ 
\size small
\emph on
unary_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_CastExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
mul_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
cast_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
mul_expr
\size default
\emph default
 (
\family typewriter
\size footnotesize
TOK_MUL
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_DIV
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_MODULO
\family default
\size default
) 
\size small
\emph on
cast_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
add_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
mul_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
add_expr
\size default
\emph default
 (
\family typewriter
\size footnotesize
TOK_PLUS
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_MINUS
\family default
\size default
) 
\size small
\emph on
mul_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
shift_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
add_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
shift_expr
\size default
\emph default
 (
\family typewriter
\size footnotesize
TOK_LSH
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_RSH
\family default
\size default
) 
\size small
\emph on
add_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
rel_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
shift_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
rel_expr
\size default
\emph default
 (
\family typewriter
\size footnotesize

\begin_inset Newline newline
\end_inset

TOK_LESS
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_GREATER
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_LEQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_GEQ
\family default
\size default

\begin_inset Newline newline
\end_inset

) 
\size small
\emph on
shift_expr
\size default
\emph default
 
\size scriptsize

\begin_inset space \hfill{}
\end_inset

[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
equ_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
rel_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
equ_expr
\size default
\emph default
 (
\family typewriter
\size footnotesize
TOK_EQL
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_NEQ
\family default
\size default
) 
\size small
\emph on
rel_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
and_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
equ_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
and_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_AND
\family default
\size default
 
\size small
\emph on
equ_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
excl_or_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
and_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
excl_or_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_ROOF
\family default
\size default
 
\size small
\emph on
and_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
incl_or_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
excl_or_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
incl_or_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_OR
\family default
\size default
 
\size small
\emph on
excl_or_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
log_and_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
incl_or_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
log_and_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_AND_AND
\family default
\size default
 
\size small
\emph on
incl_or_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
log_or_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
log_and_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
log_or_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_OR_OR
\family default
\size default
 
\size small
\emph on
log_and_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cond_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
log_or_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
log_or_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_QUESTION
\family default
\size default
 
\size small
\emph on
expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COLON
\family default
\size default
 
\size small
\emph on
cond_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_IfThenExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
const_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
cond_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
ass_expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
cond_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| (
\size small
\emph on
unary_expr
\size default
\emph default
 (
\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ASSIGN
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_MUL_EQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_DIV_EQ
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_MOD_EQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_ADD_EQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_SUB_EQ
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_RSH_EQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_LSH_EQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_AND_EQ
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_XOR_EQ
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_IOR_EQ
\family default
\size default

\begin_inset Newline newline
\end_inset

) )+ 
\size small
\emph on
cond_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
expr
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| (
\size small
\emph on
ass_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)+ 
\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
label_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
expr_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
cmpd_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
select_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
iter_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
jump_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
label_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
identifier
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COLON
\family default
\size default
 
\size small
\emph on
stmt
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_LabelStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_DEFAULT
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_COLON
\family default
\size default
 
\size small
\emph on
stmt
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DefaultStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_CASE
\family default
\size default
 
\size small
\emph on
const_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COLON
\family default
\size default
 
\size small
\emph on
stmt
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_CaseStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
expr_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
expr
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ExprStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cmpd_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_CURLY
\family default
\size default
 
\size small
\emph on
stmt_seq
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_CLOSE_CURLY
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_CmpdStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
stmt_seq
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
simple_decl
\size default
\emph default
 | 
\size small
\emph on
stmt
\size default
\emph default
)+ 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
select_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_SWITCH
\family default
\size default
 
\size small
\emph on
select_stmt1
\size default
\emph default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\size scriptsize

\begin_inset space \hfill{}
\end_inset

[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_SwitchStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_IF
\family default
\size default
 
\size small
\emph on
select_stmt1
\size default
\emph default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_IfStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_IF
\family default
\size default
 
\size small
\emph on
select_stmt1
\size default
\emph default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_ELSE
\family default
\size default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_IfElseStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
select_stmt1
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
condition
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
sub_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
condition
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
iter_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_WHILE
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\emph on

\begin_inset Newline newline
\end_inset


\size small
condition
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\size scriptsize

\begin_inset space \hfill{}
\end_inset

[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_WhileStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_DO
\family default
\size default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_WHILE
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\emph on

\begin_inset Newline newline
\end_inset


\size small
expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DoStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_FOR
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\emph on

\begin_inset Newline newline
\end_inset


\size small
for_init_stmt condition
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\emph on

\begin_inset Newline newline
\end_inset


\size small
expr
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\size small
\emph on
sub_stmt
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ForStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
for_init_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
simple_decl
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
expr_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
jump_stmt
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_BREAK
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BreakStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_CONTINUE
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ContinueStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_RETURN
\family default
\size default
 
\size small
\emph on
expr
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ReturnStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_GOTO
\family default
\size default
 
\size small
\emph on
identifier
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_GotoStmt}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
decl_seq
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
decl
\size default
\emph default
+ 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
decl
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
block_decl
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
fct_def
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
block_decl
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
simple_decl
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
asm_def
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
simple_decl
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
decl_spec_seq
\size default
\emph default
? 
\size small
\emph on
init_declarator_list
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ObjDecl}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
decl_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
storage_class_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
type_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
fct_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
misc_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
misc_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_TYPEDEF
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PrimDeclSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
decl_spec_seq
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
decl_spec
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DeclSpecSeq}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
storage_class_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_AUTO
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_REGISTER
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_STATIC
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_EXTERN
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PrimDeclSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
fct_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_INLINE
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PrimDeclSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
type_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
simple_type_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
class_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
enum_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
elaborated_type_spec
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
cv_qual
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
simple_type_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
type_name
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| ( 
\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_CHAR
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_SHORT
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_INT
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_LONG
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_SIGNED
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_UNSIGNED
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_FLOAT
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_DOUBLE
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_WCHAR_T
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_C_BOOL
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_VOID
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_UNKNOWN_T
\family default
\size default
 
\begin_inset Newline newline
\end_inset

) 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PrimDeclSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
type_name
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
typedef_name
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
elaborated_type_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
class_key
\size default
\emph default
 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ClassSpec}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_UnionSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_ENUM
\family default
\size default
 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_EnumSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
enum_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ENUM
\family default
\size default
 (
\size small
\emph on
identifier
\size default
\emph default
 | 
\size small
\emph on
private_name
\size default
\emph default
) 
\family typewriter
\size footnotesize

\begin_inset Newline newline
\end_inset

TOK_OPEN_CURLY
\family default
\size default
 
\size small
\emph on
enumerator_list
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_CURLY
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_EnumDef}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
enumerator_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
enumerator_def
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)* 
\size small
\emph on
enumerator_def
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
? 
\size scriptsize

\begin_inset space \hfill{}
\end_inset

[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_EnumeratorList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
enumerator_def
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
enumerator
\size default
\emph default
 (
\family typewriter
\size footnotesize
TOK_ASSIGN
\family default
\size default
 
\size small
\emph on
const_expr
\size default
\emph default
)? 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Enumerator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
enumerator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Enumerator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
asm_def
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ASM
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
str_literal
\size default
\emph default
 
\family typewriter
\size footnotesize

\begin_inset Newline newline
\end_inset

TOK_CLOSE_ROUND
\family default
\size default
 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_AsmDef}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init_declarator_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
init_declarator
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)* 
\size small
\emph on
init_declarator
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DeclaratorList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init_declarator_ext
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init_declarator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
declarator
\size default
\emph default
 
\size small
\emph on
init_declarator_ext
\size default
\emph default
? 
\size small
\emph on
init
\size default
\emph default
? 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_InitDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
declarator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
direct_declarator
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
ptr_operator
\size default
\emph default
+ 
\size small
\emph on
direct_declarator
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PtrDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
direct_declarator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
declarator_id
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
declarator_id
\size default
\emph default
 
\size small
\emph on
direct_declarator1
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDeclarator}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_FctDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
declarator
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BracedDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
declarator
\size default
\emph default
 
\family typewriter
\size footnotesize

\begin_inset Newline newline
\end_inset

TOK_CLOSE_ROUND
\family default
\size default
 
\size small
\emph on
direct_declarator1
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDeclarator}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_FctDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
direct_declarator1
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_SQUARE
\family default
\size default
 
\size small
\emph on
array_delim
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_SQUARE
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 (
\size small
\emph on
identifier_list
\size default
\emph default
 | 
\size small
\emph on
param_decl_clause
\size default
\emph default
) 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
identifier_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
identifier
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)* 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArgNameList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
array_delim
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
cv_qual_seq
\size default
\emph default
? (
\family typewriter
\size footnotesize
TOK_MUL
\family default
\size default
 | 
\size small
\emph on
ass_expr
\size default
\emph default
)? 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDelimiter}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_STATIC
\family default
\size default
 
\size small
\emph on
cv_qual_seq
\size default
\emph default
? 
\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDelimiter}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
cv_qual_seq
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_STATIC
\family default
\size default
 
\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDelimiter}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
ptr_operator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_MUL
\family default
\size default
 
\size small
\emph on
cv_qual_seq
\size default
\emph default
? 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cv_qual_seq
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
cv_qual
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DeclSpecSeq}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
cv_qual
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_CONST
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_VOLATILE
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_RESTRICT
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PrimDeclSpec}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
declarator_id
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
type_id
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
type_spec_seq
\size default
\emph default
 (
\size small
\emph on
abst_declarator
\size default
\emph default
 | 
\size small
\emph on
private_name
\size default
\emph default
) 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_NamedType}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
type_spec_seq
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
type_spec
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DeclSpecSeq}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
abst_declarator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
direct_abst_declarator
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
ptr_operator
\size default
\emph default
+ 
\size small
\emph on
direct_abst_declarator
\size default
\emph default
? 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_PtrDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
direct_abst_declarator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
direct_abst_declarator1
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
direct_abst_declarator1
\size default
\emph default
 
\size small
\emph on
direct_abst_declarator1
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDeclarator}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_FctDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
abst_declarator
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BracedDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
abst_declarator
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\size small
\emph on

\begin_inset Newline newline
\end_inset

direct_abst_declarator1
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArrayDeclarator}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_FctDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
direct_abst_declarator1
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_OPEN_ROUND
\family default
\size default
 
\size small
\emph on
param_decl_clause
\size default
\emph default
? 
\family typewriter
\size footnotesize
TOK_CLOSE_ROUND
\family default
\size default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_SQUARE
\family default
\size default
 (
\size small
\emph on
ass_expr
\size default
\emph default
 | 
\family typewriter
\size footnotesize
TOK_MUL
\family default
\size default
)? 
\family typewriter
\size footnotesize
TOK_CLOSE_SQUARE
\family default
\size default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
param_decl_clause
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
param_decl_list
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_ELLIPSIS
\family default
\size default
?)? 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArgDeclList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
param_decl_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
param_decl
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)* 
\size small
\emph on
param_decl
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
? 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
param_decl
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
decl_spec_seq
\size default
\emph default
 (
\size small
\emph on
abst_declarator
\size default
\emph default
 | 
\size small
\emph on
declarator
\size default
\emph default
 | 
\size small
\emph on
private_name
\size default
\emph default
) 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArgDecl}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
fct_def
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
decl_spec_seq
\size default
\emph default
? 
\size small
\emph on
declarator
\size default
\emph default
 
\size small
\emph on
arg_decl_seq
\size default
\emph default
? 
\size small
\emph on
fct_body
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_FctDef}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
arg_decl_seq
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
simple_decl
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ArgDeclSeq}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
fct_body
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
cmpd_stmt
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_ASSIGN
\family default
\size default
 
\size small
\emph on
init_clause
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ExprList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init_clause
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
ass_expr
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_CURLY
\family default
\size default
 
\size small
\emph on
init_list
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_CURLY
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ExprList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
init_list_item
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)* 
\size small
\emph on
init_list_item
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
? 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ExprList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
init_list_item
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
init_clause
\size default
\emph default
 
\begin_inset Newline newline
\end_inset

| 
\size small
\emph on
designation
\size default
\emph default
 
\size small
\emph on
init_clause
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BinaryExpr}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
designation
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
designator
\size default
\emph default
+ 
\family typewriter
\size footnotesize
TOK_ASSIGN
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DesignatorSeq}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
designator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_DOT
\family default
\size default
 
\size small
\emph on
identifier
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_MembDesignator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| 
\family typewriter
\size footnotesize
TOK_OPEN_SQUARE
\family default
\size default
 
\size small
\emph on
const_expr
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_CLOSE_SQUARE
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_IndexDesignator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
class_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
class_head
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_OPEN_CURLY
\family default
\size default
 
\size small
\emph on
member_spec
\size default
\emph default
? 
\family typewriter
\size footnotesize

\begin_inset Newline newline
\end_inset

TOK_CLOSE_CURLY
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_UnionDef}
\end_layout

\end_inset

|
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ClassDef}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
class_head
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
class_key
\size default
\emph default
 (
\size small
\emph on
identifier
\size default
\emph default
 | 
\size small
\emph on
private_name
\size default
\emph default
) 
\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
class_key
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\family typewriter
\size footnotesize
TOK_STRUCT
\family default
\size default
 | 
\family typewriter
\size footnotesize
TOK_UNION
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_Token}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
member_spec
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
member_decl
\size default
\emph default
+ 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_MembList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
member_decl
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
type_spec_seq
\size default
\emph default
 
\size small
\emph on
member_declarator_list
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_SEMI_COLON
\family default
\size default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_ObjDecl}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
member_declarator_list
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset

(
\size small
\emph on
member_declarator
\size default
\emph default
 
\family typewriter
\size footnotesize
TOK_COMMA
\family default
\size default
)* 
\size small
\emph on
member_declarator
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_DeclaratorList}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

;
\end_layout

\begin_layout Description

\series medium
\size small
\emph on
member_declarator
\size default
\emph default
: 
\series default

\begin_inset space ~
\end_inset


\begin_inset Newline newline
\end_inset


\size small
\emph on
declarator
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_InitDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

| (
\size small
\emph on
declarator
\size default
\emph default
 | 
\size small
\emph on
private_name
\size default
\emph default
) 
\family typewriter
\size footnotesize
TOK_COLON
\family default
\size default
 
\size small
\emph on
const_expr
\size default
\emph default
 
\begin_inset space \hfill{}
\end_inset


\size scriptsize
[
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
crossref{par:CT_BitFieldDeclarator}
\end_layout

\end_inset

]
\size default

\begin_inset Newline newline
\end_inset

; 
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
C++ Grammar
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Subsection
Preprocessor Grammar
\end_layout

\begin_layout Standard
\begin_inset CommandInset index_print
LatexCommand printindex

\end_inset


\end_layout

\end_body
\end_document
