Changes in / [a14187f:ac43954]


Ignore:
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • INSTALL

    ra14187f rac43954  
    33
    44Cforall is built using GNU Make and the GNU Autoconf system.  It also requires
    5 g++ version >= 4.6, bison and flex.  On systems where GNU Make is the default
    6 make, the system is built by entering the commands:
     5g++ version 4, bison and flex.  On systems where GNU Make is the default make
     6it may suffice to build the system by entering the commands
    77
    88        ./configure
     
    1717
    1818--prefix=/some/directory controls the path prefix common to all installed
    19   cfa-cc components.  Some components are installed in /some/directory/bin,
     19  cfa-cc components.  Some components will be installed in /some/directory/bin,
    2020  others in /some/directory/lib.  If unspecified, this defaults to /usr/local.
    21   To use (a subdirectory of) your home directory, ${HOME}/some/dir works, but
    22   it is important not to put quotes around the directory path; Cforall may
    23   appear to build, but the installed version may not work properly.
     21  If you wish to use (a subdirectory of) your home directory, ${HOME}/some/dir
     22  works, but it is important not to put quotes around the directory path;
     23  Cforall may appear to build, but the installed version may not work properly.
    2424
    2525--with-backend-compiler=PROGRAM specifies the installed path of gcc.  It
  • Jenkins/FullBuild

    ra14187f rac43954  
    4343                }
    4444
    45                 //sh "GIT_SSH_COMMAND=\"ssh -v\" git push DoLang ${gitRefNewValue}:master"
    46                 echo('BUILD NOT PUSH SINCE DO-LANG SERVER WAS DOWN')
     45                sh "GIT_SSH_COMMAND=\"ssh -v\" git push DoLang ${gitRefNewValue}:master"
    4746}
    4847
     
    6867
    6968node ('master') {
    70         def err = null
    71 
    7269        try {
    7370                //Prevent the build from exceeding 30 minutes
     
    8178                                        results = [null, null]
    8279
    83                                         parallel (
    84                                                 x64: {
    85                                                         trigger_build('64-bit')
    86                                                 },
    87                                                 x32: {
    88                                                         trigger_build('32-bit')
    89                                                 }
    90                                         )
     80                                        // parallel (
     81                                        //      x64: {
     82                                        //              trigger_build('64-bit')
     83                                        //      },
     84                                        //      x32: {
     85                                        //              trigger_build('32-bit')
     86                                        //      }
     87                                        // )
    9188
    9289                                //Push latest changes to do-lang repo
  • doc/LaTeXmacros/common.tex

    ra14187f rac43954  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Tue Aug  2 17:02:02 2016
    14 %% Update Count     : 228
     13%% Last Modified On : Tue Jul 12 20:37:57 2016
     14%% Update Count     : 206
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     16
     17%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1618
    1719\setlength{\textheight}{9in}
    1820%\oddsidemargin 0.0in
    19 \renewcommand{\topfraction}{0.8}                % float must be greater than X of the page before it is forced onto its own page
    20 \renewcommand{\bottomfraction}{0.8}             % float must be greater than X of the page before it is forced onto its own page
     21\renewcommand{\topfraction}{0.8}        % float must be greater than X of the page before it is forced onto its own page
     22\renewcommand{\bottomfraction}{0.8}     % float must be greater than X of the page before it is forced onto its own page
    2123\renewcommand{\floatpagefraction}{0.8}  % float must be greater than X of the page before it is forced onto its own page
    22 \renewcommand{\textfraction}{0.0}               % the entire page maybe devoted to floats with no text on the page at all
    23 
    24 \lefthyphenmin=4                                                % hyphen only after 4 characters
     24\renewcommand{\textfraction}{0.0}       % the entire page maybe devoted to floats with no text on the page at all
     25
     26\lefthyphenmin=4
    2527\righthyphenmin=4
    2628
     
    3638% Names used in the document.
    3739
    38 \newcommand{\CFA}{C$\mathbf\forall$\xspace} % set language symbolic name
    39 \newcommand{\CFL}{Cforall\xspace}               % set language text name
     40\newcommand{\CFA}{C$\mathbf\forall$\xspace}              % set language symbolic name
     41\newcommand{\CFL}{Cforall\xspace}                        % set language text name
    4042\newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    4143\newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
    42 \newcommand{\Celeven}{C11\xspace}               % C11 symbolic name
     44\def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
    4345
    4446%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    5052\setlength{\parindentlnth}{\parindent}
    5153
    52 \newlength{\gcolumnposn}                                % temporary hack because lstlisting does handle tabs correctly
     54\newlength{\gcolumnposn}
    5355\newlength{\columnposn}
    5456\setlength{\gcolumnposn}{2.5in}
     
    6163%\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
    6264
    63 \usepackage{pslatex}                                    % reduce size of san serif font
    64 \usepackage{relsize}                                    % must be after change to small or selects old size
     65\usepackage{pslatex}                                                                    % reduce size of san serif font
     66\usepackage{relsize}                                    % must be after change to small or selects old size
    6567
    6668% reduce size of chapter/section titles
     
    118120
    119121% inline text and lowercase index: \Index{inline and lowercase index text}
     122% inline text and as-in index: \Index[as-is index text]{inline text}
     123% inline text but index with different as-is text: \Index[index text]{inline text}
    120124\newcommand{\Index}{\@ifstar\@sIndex\@Index}
    121 % inline text and as-in index: \Index[as-is index text]{inline text}
    122125\newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
    123 % inline text but index with different as-is text: \Index[index text]{inline text}
    124126\newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    125127
    126 % inline text and code index (cannot use ©)
     128% cannot use ©
    127129\newcommand{\Indexc}[1]{\lstinline$#1$\index{#1@\lstinline$#1$}}
    128 % code index (cannot use ©)
    129130\newcommand{\indexc}[1]{\index{#1@\lstinline$#1$}}
    130131
     
    136137\newcommand{\@newterm}[2][\@empty]{\lowercase{\def\temp{#2}}{\newtermFontInline{#2}}\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
    137138\newcommand{\@snewterm}[2][\@empty]{{\newtermFontInline{#2}}\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    138 
    139 % Latin abbreviation
    140 \newcommand{\abbrevFont}{\textit}       % set empty for no italics
    141 \newcommand*{\eg}{%
    142         \@ifnextchar{,}{\abbrevFont{e}.\abbrevFont{g}.}%
    143                 {\@ifnextchar{:}{\abbrevFont{e}.\abbrevFont{g}.}%
    144                         {\abbrevFont{e}.\abbrevFont{g}.,\xspace}}%
    145 }%
    146 \newcommand*{\ie}{%
    147         \@ifnextchar{,}{\abbrevFont{i}.\abbrevFont{e}.}%
    148                 {\@ifnextchar{:}{\abbrevFont{i}.\abbrevFont{e}.}%
    149                         {\abbrevFont{i}.\abbrevFont{e}.,\xspace}}%
    150 }%
    151 \newcommand*{\etc}{%
    152         \@ifnextchar{.}{\abbrevFont{etc}}%
    153         {\abbrevFont{etc}.\xspace}%
    154 }%
    155139\makeatother
    156140
     
    161145        \endlist
    162146}% quote2
    163 
    164147\newenvironment{rationale}{%
    165148  \begin{quote2}\noindent$\Box$\enspace
     
    205188\newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}
    206189
    207 % Go programming language: https://github.com/julienc91/listings-golang/blob/master/listings-golang.sty
     190% Go programming language
    208191\lstdefinelanguage{Golang}{
    209192        morekeywords=[1]{package,import,func,type,struct,return,defer,panic, recover,select,var,const,iota,},%
     
    221204}
    222205
    223 % CFA programming language, based on ANSI C (with some gcc additions)
     206% CFA programming language, based on ANSI C
    224207\lstdefinelanguage{CFA}[ANSI]{C}{
    225208        morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto,
    226209                _Bool,catch,catchResume,choose,_Complex,__complex,__complex__,__const,__const__,disable,dtype,enable,__extension__,
    227                 fallthrough,fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,
     210                fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,
    228211                _Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,},
    229212}%
     
    232215language=CFA,
    233216columns=fullflexible,
    234 basicstyle=\linespread{0.9}\sf,                 % reduce line spacing and use sanserif font
    235 stringstyle=\tt,                                                % use typewriter font
    236 tabsize=4,                                                              % 4 space tabbing
    237 xleftmargin=\parindentlnth,                             % indent code to paragraph indentation
    238 extendedchars=true,                                             % allow ASCII characters in the range 128-255
    239 escapechar=§,                                                   % escape to latex in CFA code
    240 mathescape=true,                                                % allow $...$ LaTeX math escapes in code
    241 %keepspaces=true,                                               %
    242 showstringspaces=false,                                 % do not show spaces with cup
    243 showlines=true,                                                 % show blank lines at end of code
    244 aboveskip=4pt,                                                  % spacing above/below code block
     217basicstyle=\linespread{0.9}\sf,
     218stringstyle=\tt,
     219tabsize=4,
     220xleftmargin=\parindentlnth,
     221extendedchars=true,
     222escapechar=§,
     223mathescape=true,
     224keepspaces=true,
     225showstringspaces=false,
     226showlines=true,
     227aboveskip=4pt,
    245228belowskip=3pt,
    246 moredelim=**[is][\color{red}]{®}{®},    % red highlighting
    247 moredelim=**[is][\color{blue}]{ß}{ß},   % blue highlighting
     229moredelim=**[is][\color{red}]{®}{®}, % red highlighting
     230moredelim=**[is][\color{blue}]{ß}{ß}, % blue highlighting
    248231moredelim=**[is][\color{OliveGreen}]{¢}{¢}, % green highlighting
    249232moredelim=[is][\lstset{keywords={}}]{¶}{¶}, % temporarily turn off keywords
     
    259242\renewcommand\thebibliography[1]{
    260243  \Oldthebibliography{#1}
    261   \setlength{\parskip}{0pt}                             % reduce vertical spacing between references
     244  \setlength{\parskip}{0pt}                     % reduce vertical spacing between references
    262245  \setlength{\itemsep}{5pt plus 0.3ex}
    263246}%
     247
     248\newcommand*{\eg}{\textit{e.g}.\@\xspace}
     249\newcommand*{\ie}{\textit{i.e}.\@\xspace}
     250
     251\makeatletter
     252\newcommand*{\etc}{%
     253    \@ifnextchar{.}%
     254        {\textit{etc}}%
     255        {\textit{etc}.\@\xspace}%
     256}
     257\makeatother
    264258
    265259% Local Variables: %
  • doc/user/user.tex

    ra14187f rac43954  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Tue Aug  2 17:39:02 2016
    14 %% Update Count     : 1286
     13%% Last Modified On : Wed Jul 13 08:14:39 2016
     14%% Update Count     : 1247
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    211211however, it largely extended the language, and did not address many existing problems.\footnote{%
    212212Two important existing problems addressed were changing the type of character literals from ©int© to ©char© and enumerator from ©int© to the type of its enumerators.}
    213 \Index*{Fortran}~\cite{Fortran08}, \Index*{Ada}~\cite{Ada12}, and \Index*{Cobol}~\cite{Cobol14} are examples of programming languages that took an evolutionary approach, where modern language features (\eg objects, concurrency) are added and problems fixed within the framework of the existing language.
     213\Index*{Fortran}~\cite{Fortran08}, \Index*{Ada}~\cite{Ada12}, and \Index*{Cobol}~\cite{Cobol14} are examples of programming languages that took an evolutionary approach, where modern language features (e.g., objects, concurrency) are added and problems fixed within the framework of the existing language.
    214214\Index*{Java}~\cite{Java8}, \Index*{Go}~\cite{Go}, \Index*{Rust}~\cite{Rust} and \Index*{D}~\cite{D} are examples of the revolutionary approach for modernizing C/\CC, resulting in a new language rather than an extension of the descendent.
    215215These languages have different syntax and semantics from C, and do not interoperate directly with C, largely because of garbage collection.
     
    226226
    227227\section{Interoperability}
    228 \label{s:Interoperability}
    229228
    230229\CFA is designed to integrate well with existing C programs and libraries.
     
    266265\section[Compiling CFA Program]{Compiling \CFA Program}
    267266
    268 The command ©cfa© is used to compile \CFA program(s), and is based on the GNU \Indexc{gcc} command, \eg:
     267The command ©cfa© is used to compile \CFA program(s), and is based on the GNU \Indexc{gcc} command, e.g.:
    269268\begin{lstlisting}
    270269cfa§\indexc{cfa}\index{compilation!cfa@©cfa©}§ [ gcc-options ] C/§\CFA§-files [ assembler/loader-files ]
     
    315314The \CFA compilation message is printed at the beginning of a compilation.
    316315\textbf{This option is the default.}
    317 
    318 \item
    319 \Indexc{-no-include-std}\index{compilation option!-no-include-std@©-no-include-std©}
    320 Do not supply ©extern "C"© wrappers for \Celeven standard include files (see~\VRef{s:StandardHeaders}).
    321 \textbf{This option is \emph{not} the default.}
    322316\end{description}
    323317
     
    356350\section{Underscores in Constants}
    357351
    358 Numeric constants are extended to allow \Index{underscore}s within constants\index{constant!underscore}, \eg:
     352Numeric constants are extended to allow \Index{underscore}s within constants\index{constant!underscore}, e.g.:
    359353\begin{lstlisting}
    3603542®_®147®_®483®_®648;                    §\C{// decimal constant}§
     
    372366\begin{enumerate}
    373367\item
    374 A sequence of underscores is disallowed, \eg ©12__34© is invalid.
     368A sequence of underscores is disallowed, e.g., ©12__34© is invalid.
    375369\item
    376370Underscores may only appear within a sequence of digits (regardless of the digit radix).
    377 In other words, an underscore cannot start or end a sequence of digits, \eg ©_1©, ©1_© and ©_1_© are invalid (actually, the 1st and 3rd examples are identifier names).
     371In other words, an underscore cannot start or end a sequence of digits, e.g., ©_1©, ©1_© and ©_1_© are invalid (actually, the 1st and 3rd examples are identifier names).
    378372\item
    379373A numeric prefix may end with an underscore;
     
    504498\end{quote2}
    505499
    506 All type qualifiers, \eg ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, \eg:
     500All type qualifiers, e.g., ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, e.g.:
    507501\begin{quote2}
    508502\begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}
     
    524518\end{tabular}
    525519\end{quote2}
    526 All declaration qualifiers, \eg ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}
    527 The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} \eg:
     520All declaration qualifiers, e.g., ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}
     521The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} e.g.:
    528522\begin{quote2}
    529523\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     
    548542Unsupported are K\&R C declarations where the base type defaults to ©int©, if no type is specified,\footnote{
    549543At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and type name~\cite[\S~6.7.2(2)]{C11}}
    550 \eg:
     544e.g.:
    551545\begin{lstlisting}
    552546x;                                                              §\C{// int x}§
     
    618612A \Index{pointer}/\Index{reference} is a generalization of a variable name, i.e., a mutable address that can point to more than one memory location during its lifetime.
    619613(Similarly, an integer variable can contain multiple integer literals during its lifetime versus an integer constant representing a single literal during its lifetime and may not occupy storage as the literal is embedded directly into instructions.)
    620 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, \eg:
     614Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, e.g.:
    621615\begin{quote2}
    622616\begin{tabular}{@{}ll@{}}
     
    675669Except for auto-dereferencing by the compiler, this reference example is the same as the previous pointer example.
    676670Hence, a reference behaves like the variable name for the current variable it is pointing-to.
    677 The simplest way to understand a reference is to imagine the compiler inserting a dereference operator before the reference variable for each reference qualifier in a declaration, \eg:
     671The simplest way to understand a reference is to imagine the compiler inserting a dereference operator before the reference variable for each reference qualifier in a declaration, e.g.:
    678672\begin{lstlisting}
    679673r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15);
     
    683677®*®r2 = ((®*®r1 + ®*®r2) ®*® (®**®r3 - ®*®r1)) / (®**®r3 - 15);
    684678\end{lstlisting}
    685 When a reference operation appears beside a dereference operation, \eg ©&*©, they cancel out.\footnote{
     679When a reference operation appears beside a dereference operation, e.g., ©&*©, they cancel out.\footnote{
    686680The unary ©&© operator yields the address of its operand.
    687681If the operand has type ``type'', the result has type ``pointer to type''.
     
    727721®&®crc = &cx;                                   §\C{// error, cannot change crc}§
    728722\end{lstlisting}
    729 Hence, for type ©& const©, there is no pointer assignment, so ©&rc = &x© is disallowed, and \emph{the address value cannot be ©0© unless an arbitrary pointer is assigned to the reference}, \eg:
     723Hence, for type ©& const©, there is no pointer assignment, so ©&rc = &x© is disallowed, and \emph{the address value cannot be ©0© unless an arbitrary pointer is assigned to the reference}, e.g.:
    730724\begin{lstlisting}
    731725int & const r = *0;                             §\C{// where 0 is the int * zero}§
    732726\end{lstlisting}
    733727Otherwise, the compiler is managing the addresses for type ©& const© not the programmer, and by a programming discipline of only using references with references, address errors can be prevented.
    734 Finally, the position of the ©const© qualifier \emph{after} the pointer/reference qualifier causes confuse for C programmers.
    735 The ©const© qualifier cannot be moved before the pointer/reference qualifier for C style-declarations;
    736 \CFA-style declarations attempt to address this issue:
    737 \begin{quote2}
    738 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    739 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    740 \begin{lstlisting}
    741 ®const® * ®const® * const int ccp;
    742 ®const® & ®const® & const int ccr;
    743 \end{lstlisting}
    744 &
    745 \begin{lstlisting}
    746 const int * ®const® * ®const® ccp;
    747 
    748 \end{lstlisting}
    749 \end{tabular}
    750 \end{quote2}
    751 where the \CFA declaration is read left-to-right (see \VRef{s:Declarations}).
    752728
    753729\Index{Initialization} is different than \Index{assignment} because initialization occurs on the empty (uninitialized) storage on an object, while assignment occurs on possibly initialized storage of an object.
     
    809785\section{Type Operators}
    810786
    811 The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-routine ©sizeof©:
     787The new declaration syntax can be used in other contexts where types are required, e.g., casts and the pseudo-routine ©sizeof©:
    812788\begin{quote2}
    813789\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     
    829805
    830806\CFA also supports a new syntax for routine definition, as well as ISO C and K\&R routine syntax.
    831 The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, \eg:
     807The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, e.g.:
    832808\begin{lstlisting}
    833809®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) {
     
    841817\Index*{Michael Tiemann}, with help from \Index*{Doug Lea}, provided named return values in g++, circa 1989.}
    842818The value of each local return variable is automatically returned at routine termination.
    843 Declaration qualifiers can only appear at the start of a routine definition, \eg:
     819Declaration qualifiers can only appear at the start of a routine definition, e.g.:
    844820\begin{lstlisting}
    845821®extern® [ int x ] g( int y ) {§\,§}
     
    873849The inability to use \CFA declarations in these two contexts is probably a blessing because it precludes programmers from arbitrarily switching between declarations forms within a declaration contexts.
    874850
    875 C-style declarations can be used to declare parameters for \CFA style routine definitions, \eg:
     851C-style declarations can be used to declare parameters for \CFA style routine definitions, e.g.:
    876852\begin{lstlisting}
    877853[ int ] f( * int, int * );              §\C{// returns an integer, accepts 2 pointers to integers}§
     
    922898
    923899The syntax of the new routine prototype declaration follows directly from the new routine definition syntax;
    924 as well, parameter names are optional, \eg:
     900as well, parameter names are optional, e.g.:
    925901\begin{lstlisting}
    926902[ int x ] f ();                                 §\C{// returning int with no parameters}§
     
    930906\end{lstlisting}
    931907This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa).
    932 It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), \eg:
     908It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), e.g.:
    933909\begin{quote2}
    934910\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     
    943919\end{tabular}
    944920\end{quote2}
    945 Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} \eg:
     921Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} e.g.:
    946922\begin{lstlisting}
    947923extern [ int ] f (int);
     
    952928\section{Routine Pointers}
    953929
    954 The syntax for pointers to \CFA routines specifies the pointer name on the right, \eg:
     930The syntax for pointers to \CFA routines specifies the pointer name on the right, e.g.:
    955931\begin{lstlisting}
    956932* [ int x ] () fp;                      §\C{// pointer to routine returning int with no parameters}§
     
    10701046p( /* positional */, /* named */, . . . );
    10711047\end{lstlisting}
    1072 While it is possible to implement both approaches, the first possibly is more complex than the second, \eg:
     1048While it is possible to implement both approaches, the first possibly is more complex than the second, e.g.:
    10731049\begin{lstlisting}
    10741050p( int x, int y, int z, . . . );
     
    10801056In the second call, the named arguments separate the positional and ellipse arguments, making it trivial to read the call.
    10811057
    1082 The problem is exacerbated with default arguments, \eg:
     1058The problem is exacerbated with default arguments, e.g.:
    10831059\begin{lstlisting}
    10841060void p( int x, int y = 2, int z = 3. . . );
     
    12881264
    12891265As mentioned, tuples can appear in contexts requiring a list of value, such as an argument list of a routine call.
    1290 In unambiguous situations, the tuple brackets may be omitted, \eg a tuple that appears as an argument may have its
     1266In unambiguous situations, the tuple brackets may be omitted, e.g., a tuple that appears as an argument may have its
    12911267square brackets omitted for convenience; therefore, the following routine invocations are equivalent:
    12921268\begin{lstlisting}
     
    13271303
    13281304Type qualifiers, i.e., const and volatile, may modify a tuple type.
    1329 The meaning is the same as for a type qualifier modifying an aggregate type [Int99, x 6.5.2.3(7),x 6.7.3(11)], i.e., the qualifier is distributed across all of the types in the tuple, \eg:
     1305The meaning is the same as for a type qualifier modifying an aggregate type [Int99, x 6.5.2.3(7),x 6.7.3(11)], i.e., the qualifier is distributed across all of the types in the tuple, e.g.:
    13301306\begin{lstlisting}
    13311307const volatile [ int, float, const int ] x;
     
    13351311[ const volatile int, const volatile float, const volatile int ] x;
    13361312\end{lstlisting}
    1337 Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, \eg:
     1313Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, e.g.:
    13381314\begin{lstlisting}
    13391315extern [ int, int ] w1;
     
    13431319Unfortunately, C's syntax for subscripts precluded treating them as tuples.
    13441320The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©.
    1345 Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, \eg ©f[g()]© always means a single subscript value because there is only one set of brackets.
     1321Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, e.g., ©f[g()]© always means a single subscript value because there is only one set of brackets.
    13461322Fixing this requires a major change to C because the syntactic form ©M[i, j, k]© already has a particular meaning: ©i, j, k© is a comma expression.
    13471323\end{rationale}
     
    14041380Clearly, the types of the entities being assigned must be type compatible with the value of the expression.
    14051381
    1406 Mass assignment has parallel semantics, \eg the statement:
     1382Mass assignment has parallel semantics, e.g., the statement:
    14071383\begin{lstlisting}
    14081384[ x, y, z ] = 1.5;
     
    14931469\section{Unnamed Structure Fields}
    14941470
    1495 C requires each field of a structure to have a name, except for a bit field associated with a basic type, \eg:
     1471C requires each field of a structure to have a name, except for a bit field associated with a basic type, e.g.:
    14961472\begin{lstlisting}
    14971473struct {
    1498         int f1;                                 §\C{// named field}§
    1499         int f2 : 4;                             §\C{// named field with bit field size}§
    1500         int : 3;                                §\C{// unnamed field for basic type with bit field size}§
    1501         int ;                                   §\C{// disallowed, unnamed field}§
    1502         int *;                                  §\C{// disallowed, unnamed field}§
    1503         int (*)(int);                   §\C{// disallowed, unnamed field}§
     1474        int f1;                 // named field
     1475        int f2 : 4;             // named field with bit field size
     1476        int : 3;                // unnamed field for basic type with bit field size
     1477        int ;                   // disallowed, unnamed field
     1478        int *;                  // disallowed, unnamed field
     1479        int (*)(int);   // disallowed, unnamed field
    15041480};
    15051481\end{lstlisting}
    15061482This requirement is relaxed by making the field name optional for all field declarations; therefore, all the field declarations in the example are allowed.
    15071483As for unnamed bit fields, an unnamed field is used for padding a structure to a particular size.
    1508 A list of unnamed fields is also supported, \eg:
     1484A list of unnamed fields is also supported, e.g.:
    15091485\begin{lstlisting}
    15101486struct {
    1511         int , , ;                               §\C{// 3 unnamed fields}§
     1487        int , , ;               // 3 unnamed fields
    15121488}
    15131489\end{lstlisting}
     
    15221498§\emph{expr}§ -> [ §\emph{fieldlist}§ ]
    15231499\end{lstlisting}
    1524 \emph{expr} is any expression yielding a value of type record, \eg ©struct©, ©union©.
     1500\emph{expr} is any expression yielding a value of type record, e.g., ©struct©, ©union©.
    15251501Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}.
    15261502A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is
     
    17841760}
    17851761\end{lstlisting}
    1786 While the declaration of the local variable ©y© is useful with a scope across all ©case© clauses, the initialization for such a variable is defined to never be executed because control always transfers over it.
    1787 Furthermore, any statements before the first ©case© clause can only be executed if labelled and transferred to using a ©goto©, either from outside or inside of the ©switch©, both of which are problematic.
    1788 As well, the declaration of ©z© cannot occur after the ©case© because a label can only be attached to a statement, and without a fall through to case 3, ©z© is uninitialized.
    1789 The key observation is that the ©switch© statement branches into control structure, i.e., there are multiple entry points into its statement body.
     1762While the declaration of the local variable ©y© is useful and its scope is across all ©case© clauses, the initialization for such a variable is defined to never be executed because control always transfers over it.
     1763Furthermore, any statements before the first ©case© clause can only be executed if labelled and transferred to using a ©goto©, either from outside or inside of the ©switch©.
     1764As mentioned, transfer into control structures should be forbidden;
     1765transfers from within the ©switch© body using a ©goto© are equally unpalatable.
     1766As well, the declaration of ©z© is cannot occur after the ©case© because a label can only be attached to a statement, and without a fall through to case 3, ©z© is uninitialized.
    17901767\end{enumerate}
    17911768
     
    18011778and there is only a medium amount of fall-through from one ©case© clause to the next, and most of these result from a list of case values executing common code, rather than a sequence of case actions that compound.
    18021779\end{itemize}
    1803 These observations help to put the \CFA changes to the ©switch© into perspective.
     1780These observations help to put the suggested changes to the ©switch© into perspective.
    18041781\begin{enumerate}
    18051782\item
    18061783Eliminating default fall-through has the greatest potential for affecting existing code.
    1807 However, even if fall-through is removed, most ©switch© statements would continue to work because of the explicit transfers already present at the end of each ©case© clause, the common placement of the ©default© clause at the end of the case list, and the most common use of fall-through, i.e., a list of ©case© clauses executing common code, \eg:
    1808  \begin{lstlisting}
     1784However, even if fall-through is removed, most ©switch© statements would continue to work because of the explicit transfers already present at the end of each ©case© clause, the common placement of the ©default© clause at the end of the case list, and the most common use of fall-through, i.e., a list of ©case© clauses executing common code, e.g.:
     1785\begin{lstlisting}
    18091786case 1:  case 2:  case 3: ...
    18101787\end{lstlisting}
    18111788still work.
    18121789Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    1813 <<<<<<< HEAD
    1814 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthru©, \eg:
    1815 =======
    1816 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, e.g.:
    1817 >>>>>>> 080615890f586cb9954c252b55cab47f52c25758
     1790Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthru©, e.g.:
    18181791\begin{lstlisting}
    18191792®choose® ( i ) {
     
    18421815Therefore, no change is made for this issue.
    18431816\item
    1844 Dealing with unreachable code in a ©switch©/©choose© body is solved by restricting declarations and associated initialization to the start of statement body, which is executed \emph{before} the transfer to the appropriate ©case© clause\footnote{
    1845 Essentially, these declarations are hoisted before the ©switch©/©choose© statement and both declarations and statement are surrounded by a compound statement.} and precluding statements before the first ©case© clause.
    1846 Further declarations at the same nesting level as the statement body are disallowed to ensure every transfer into the body is sound.
     1817Dealing with unreachable code in a ©switch©/©choose© body is solved by restricting declarations and associated initialization to the start of statement body, which is executed \emph{before} the transfer to the appropriate ©case© clause.\footnote{
     1818Essentially, these declarations are hoisted before the statement and both declarations and statement are surrounded by a compound statement.} and precluding statements before the first ©case© clause.
     1819Further declaration in the statement body are disallowed.
    18471820\begin{lstlisting}
    18481821switch ( x ) {
    1849         ®int i = 0;®                            §\C{// allowed only at start
     1822        ®int i = 0;®                            §\C{// allowed
    18501823  case 0:
    18511824        ...
    1852         ®int j = 0;®                            §\C{// disallowed}§
     1825        ®int i = 0;®                            §\C{// disallowed}§
    18531826  case 1:
    18541827    {
    1855                 ®int k = 0;®                    §\C{// allowed at different nesting levels
     1828                ®int i = 0;®                    §\C{// allowed in any compound statement
    18561829                ...
    18571830        }
     
    27342707Like the \Index*[C++]{\CC} lexical problem with closing template-syntax, e.g, ©Foo<Bar<int®>>®©, this issue can be solved with a more powerful lexer/parser.
    27352708
    2736 There are several ambiguous cases with operator identifiers, \eg ©int *?*?()©, where the string ©*?*?© can be lexed as ©*©/©?*?© or ©*?©/©*?©.
    2737 Since it is common practise to put a unary operator juxtaposed to an identifier, \eg ©*i©, users will be annoyed if they cannot do this with respect to operator identifiers.
     2709There are several ambiguous cases with operator identifiers, e.g., ©int *?*?()©, where the string ©*?*?© can be lexed as ©*©/©?*?© or ©*?©/©*?©.
     2710Since it is common practise to put a unary operator juxtaposed to an identifier, e.g., ©*i©, users will be annoyed if they cannot do this with respect to operator identifiers.
    27382711Even with this special hack, there are 5 general cases that cannot be handled.
    27392712The first case is for the function-call identifier ©?()©:
     
    28002773This means that a function requiring mutual exclusion could block if the lock is already held by another thread.
    28012774Blocking on a monitor lock does not block the kernel thread, it simply blocks the user thread, which yields its kernel thread while waiting to obtain the lock.
    2802 If multiple mutex parameters are specified, they will be locked in parameter order (\ie first parameter is locked first) and unlocked in the
     2775If multiple mutex parameters are specified, they will be locked in parameter order (i.e. first parameter is locked first) and unlocked in the
    28032776reverse order.
    28042777\begin{lstlisting}
     
    43694342
    43704343
    4371 \section{New Keywords}
    4372 \label{s:NewKeywords}
    4373 
    4374 \begin{quote2}
    4375 \begin{tabular}{ll}
    4376 ©catch©                 & ©lvalue©              \\
    4377 ©catchResume©   &                               \\
    4378 ©choose©                & ©otype©               \\
    4379                                 &                               \\
    4380 ©disable©               & ©throw©               \\
    4381 ©dtype©                 & ©throwResume© \\
    4382                                 & ©trait©               \\
    4383 ©enable©                & ©try©                 \\
    4384                                 &                               \\
    4385 ©fallthrough©                                   \\
    4386 ©fallthru©                                              \\
    4387 ©finally©                                               \\
    4388 ©forall©                                                \\
    4389 ©ftype©                                                 \\
    4390 \end{tabular}
    4391 \end{quote2}
    4392 
    4393 
    4394 \section{Standard Headers}
    4395 \label{s:StandardHeaders}
    4396 
    4397 C prescribes the following standard header-files:
    4398 \begin{quote2}
    4399 \begin{minipage}{\linewidth}
    4400 \begin{tabular}{lll}
    4401 assert.h        & math.h                & stdlib.h              \\
    4402 complex.h       & setjmp.h              & stdnoreturn.h \\
    4403 ctype.h         & signal.h              & string.h              \\
    4404 errno.h         & stdalign.h    & tgmath.h              \\
    4405 fenv.h          & stdarg.h              & threads.h             \\
    4406 float.h         & stdatomic.h   & time.h                \\
    4407 inttypes.h      & stdbool.h             & uchar.h               \\
    4408 iso646.h        & stddef.h              & wchar.h               \\
    4409 limits.h        & stdint.h              & wctype.h              \\
    4410 locale.h        & stdio.h               & unistd.h\footnote{\CFA extension}
    4411 \end{tabular}
    4412 \end{minipage}
    4413 \end{quote2}
    4414 For the prescribed head-files, \CFA implicit wraps their includes in an ©extern "C"©;
    4415 hence, names in these include files are not mangled\index{mangling!name} (see~\VRef{s:Interoperability}).
    4416 All other C header files must be explicitly wrapped in ©extern "C"© to prevent name mangling.
    4417 
    4418 
    44194344\section{Incompatible}
    44204345
     
    44244349\item
    44254350\begin{description}
    4426 \item[Change:] add new keywords (see~\VRef{s:NewKeywords}) \\
     4351\item[Change:] add new keywords \\
    44274352New keywords are added to \CFA.
    44284353\item[Rationale:] keywords added to implement new semantics of \CFA.
     
    45224447\begin{description}
    45234448\item[Change:] have ©struct© introduce a scope for nested types
    4524 In C, the name of the nested types belongs to the same scope as the name of the outermost enclosing
     4449In C, the name of the nested types belongs to the same scope as the name of the outermost enclosing 
    45254450Example:
    45264451\begin{lstlisting}
     
    45464471\CFA is C \emph{incompatible} on this issue, and provides semantics similar to \Index*[C++]{\CC}.
    45474472Nested types are not hoisted and can be referenced using the field selection operator ``©.©'', unlike the \CC scope-resolution operator ``©::©''.
    4548 Given that nested types in C are equivalent to not using them, \ie they are essentially useless, it is unlikely there are any realistic usages that break because of this incompatibility.
     4473Given that nested types in C are equivalent to not using them, i.e., they are essentially useless, it is unlikely there are any realistic usages that break because of this incompatibility.
    45494474\end{description}
    45504475
     
    46454570%$
    46464571\begin{lstlisting}[mathescape=off]
    4647 sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7
    4648          | "x ¿" | 8 | "x «" | 9 | endl;
     4572sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7 | "x ¿" | 8 | "x «" | 9 | endl;
    46494573\end{lstlisting}
    46504574%$
     
    46564580A seperator does not appear after a C string ending with the (extended) \Index{ASCII}\index{ASCII!extended} characters: ©,.:;!?)]}%¢»©
    46574581\begin{lstlisting}[belowskip=0pt]
    4658 sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7
    4659          | ") x" | 8 | "] x" | 9 | "} x" | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
     4582sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7 | ") x" | 8 | "] x" | 9 | "} x"
     4583         | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
    46604584\end{lstlisting}
    46614585\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46734597The following \CC-style \Index{manipulator}s allow further control over implicit seperation.
    46744598\begin{lstlisting}[mathescape=off,belowskip=0pt]
    4675 sout | sepOn | 1 | 2 | 3 | sepOn | endl;        §\C{// separator at start of line}§
     4599sout | sepOn | 1 | 2 | 3 | sepOn | endl;        // separator at start of line
    46764600\end{lstlisting}
    46774601\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46794603\end{lstlisting}
    46804604\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4681 sout | 1 | sepOff | 2 | 3 | endl;                       §\C{// turn off implicit separator temporarily}§
     4605sout | 1 | sepOff | 2 | 3 | endl;                       // turn off implicit separator temporarily
    46824606\end{lstlisting}
    46834607\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46854609\end{lstlisting}
    46864610\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4687 sout | sepDisable | 1 | 2 | 3 | endl;           §\C{// turn off implicit separation, affects all subsequent prints}§
     4611sout | sepDisable | 1 | 2 | 3 | endl;           // turn off implicit separation, affects all subsequent prints
    46884612\end{lstlisting}
    46894613\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46914615\end{lstlisting}
    46924616\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4693 sout | 1 | sepOn | 2 | 3 | endl;                        §\C{// turn on implicit separator temporarily}§
     4617sout | 1 | sepOn | 2 | 3 | endl;                        // turn on implicit separator temporarily
    46944618\end{lstlisting}
    46954619\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46974621\end{lstlisting}
    46984622\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4699 sout | sepEnable | 1 | 2 | 3 | endl;            §\C{// turn on implicit separation, affects all subsequent prints}§
     4623sout | sepEnable | 1 | 2 | 3 | endl;            // turn on implicit separation, affects all subsequent prints
    47004624\end{lstlisting}
    47014625\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    47034627\end{lstlisting}
    47044628\begin{lstlisting}[mathescape=off,aboveskip=0pt,aboveskip=0pt,belowskip=0pt]
    4705 sepSet( sout, ", $" );                                          §\C{// change separator from " " to ", \$"}§
     4629sepSet( sout, ", $" );                                          // change separator from " " to ", $"
    47064630sout | 1 | 2 | 3 | endl;
    47074631\end{lstlisting}
     
    52385162\label{s:RationalNumbers}
    52395163
    5240 Rational numbers are numbers written as a ratio, \ie as a fraction, where the numerator (top number) and the denominator (bottom number) are whole numbers.
     5164Rational numbers are numbers written as a ratio, i.e., as a fraction, where the numerator (top number) and the denominator (bottom number) are whole numbers.
    52415165When creating and computing with rational numbers, results are constantly reduced to keep the numerator and denominator as small as possible.
    52425166
  • src/CodeGen/CodeGenerator.cc

    ra14187f rac43954  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By :
    12 // Last Modified On : Sun Jul 31 08:42:18 2016
    13 // Update Count     : 345
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul 15 15:53:15 2016
     13// Update Count     : 306
    1414//
    1515
     
    4545        bool wantSpacing( Statement * stmt) {
    4646                return dynamic_cast< IfStmt * >( stmt ) || dynamic_cast< CompoundStmt * >( stmt ) ||
    47                         dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * >( stmt ) || dynamic_cast< SwitchStmt *>( stmt );
     47                        dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * > ( stmt ) || dynamic_cast< SwitchStmt *>( stmt );
    4848        }
    4949
     
    8383        }
    8484
    85         CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ) {}
     85        CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ) { }
    8686
    8787        CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
     
    155155                        objectDecl->get_init()->accept( *this );
    156156                } // if
    157 
    158157                if ( objectDecl->get_bitfieldWidth() ) {
    159158                        output << ":";
     
    173172
    174173                        cur_indent += CodeGenerator::tabsize;
    175                         for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) {
     174                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    176175                                output << indent;
    177176                                (*i)->accept( *this );
    178177                                output << ";" << endl;
    179                         } // for
     178                        }
    180179
    181180                        cur_indent -= CodeGenerator::tabsize;
     
    258257                                (*iter)->accept( *this );
    259258                                output << "]";
    260                         } // if
    261                 } // for
     259                        }
     260                }
    262261                output << " = ";
    263262        }
     
    318317                                        // do nothing
    319318                                        ;
    320                                 } // switch
     319                                }
    321320
    322321                                switch ( opInfo.type ) {
     
    386385                                        // there are no intrinsic definitions of 0/1 or label addresses as functions
    387386                                        assert( false );
    388                                 } // switch
     387                                }
    389388                        } else {
    390389                                varExpr->accept( *this );
     
    418417                                  case OT_CALL:
    419418                                        assert( false );
     419
    420420
    421421                                  case OT_CTOR:
     
    437437                                                // no constructors with 0 or more than 2 parameters
    438438                                                assert( false );
    439                                         } // if
     439                                        }
    440440                                        break;
    441441
     
    470470                                        // there are no intrinsic definitions of 0 or 1 as functions
    471471                                        assert( false );
    472                                 } // switch
     472                                }
    473473                        } else {
    474                                 if ( nameExpr->get_name() == "Range" ) { // case V1 ... V2 or case V1~V2
    475                                         assert( untypedExpr->get_args().size() == 2 );
    476                                         (*untypedExpr->get_args().begin())->accept( *this );
    477                                         output << " ... ";
    478                                         (*--untypedExpr->get_args().end())->accept( *this );
    479                                 } else {                                                                // builtin routines
    480                                         nameExpr->accept( *this );
    481                                         output << "(";
    482                                         genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
    483                                         output << ")";
    484                                 } // if
     474                                nameExpr->accept( *this );
     475                                output << "(";
     476                                genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
     477                                output << ")";
    485478                        } // if
    486479                } else {
     
    528521                        // otherwise, the cast is to an lvalue type, so the cast should be dropped, since the result of a cast is
    529522                        // never an lvalue in C
    530                 } // if
     523                }
    531524                castExpr->get_arg()->accept( *this );
    532525                output << ")";
     
    661654                        if ( wantSpacing( *i ) ) {
    662655                                output << endl;
    663                         } // if
     656                        }
    664657                }
    665658                cur_indent -= CodeGenerator::tabsize;
     
    744737                        (*i)->accept( *this );
    745738                        output << endl;
    746                 } // for
     739                }
    747740                cur_indent -= CodeGenerator::tabsize;
    748741        }
     
    766759                        output << "continue";
    767760                        break;
    768                 } // switch
     761                }
    769762                output << ";";
    770763        }
     
    805798                if ( forStmt->get_condition() != 0 ) {
    806799                        forStmt->get_condition()->accept( *this );
    807                 } // if
     800                }
    808801                output << ";";
    809802
     
    812805                        Expression * expr = new CastExpr( forStmt->get_increment() );
    813806                        expr->accept( *this );
    814                 } // if
     807                }
    815808                output << ") ";
    816809
  • src/CodeGen/CodeGenerator.h

    ra14187f rac43954  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 30 11:10:42 2016
    13 // Update Count     : 37
     12// Last Modified On : Mon Jul  4 17:12:40 2016
     13// Update Count     : 34
    1414//
    1515
     
    118118                void handleAggregate( AggregateDecl *aggDecl );
    119119                void handleTypedef( NamedTypeDecl *namedType );
    120         }; // CodeGenerator
     120        };
    121121
    122122        template< class Iterator >
  • src/ControlStruct/CaseRangeMutator.cc

    ra14187f rac43954  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By :
    12 // Last Modified On : Sun Jul 31 12:16:28 2016
    13 // Update Count     : 32
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:35:13 2016
     13// Update Count     : 9
    1414//
    1515
     
    3434                std::list< Statement * >::iterator i = cases.begin();
    3535                while ( i != cases.end() ) {
    36                         (*i)->acceptMutator( *this );
     36                        (*i )->acceptMutator( *this );
    3737
    3838                        if ( ! newCaseLabels.empty() ) {
    39                                 std::cout << "FRED" << std::endl;
    4039                                std::list< Statement * > newCases;
    4140
    4241                                // transform( newCaseLabels.begin(), newCaseLabels.end(), bnd1st( ptr_fun( ctor< CaseStmt, Label, Expression * > ) ) );
    4342
    44                                 for ( std::list< Expression * >::iterator j = newCaseLabels.begin(); j != newCaseLabels.end(); j++ ) {
    45                                         std::list< Label > emptyLabels;
    46                                         std::list< Statement * > emptyStmts;
     43                                for ( std::list< Expression * >::iterator j = newCaseLabels.begin();
     44                                          j != newCaseLabels.end(); j++ ) {
     45                                        std::list<Label> emptyLabels;
     46                                        std::list< Statement *> emptyStmts;
    4747                                        newCases.push_back( new CaseStmt( emptyLabels, *j, emptyStmts ) );
    4848                                } // for
    4949
    50                                 if ( CaseStmt *currentCase = dynamic_cast< CaseStmt * >( *i ) )
     50                                if ( CaseStmt *currentCase = dynamic_cast< CaseStmt * > ( *i ) )
    5151                                        if ( ! currentCase->get_statements().empty() ) {
    52                                                 CaseStmt *lastCase = dynamic_cast< CaseStmt * >( newCases.back() );
     52                                                CaseStmt *lastCase = dynamic_cast< CaseStmt * > ( newCases.back() );
    5353                                                if ( lastCase == 0 ) { throw ( 0 ); /* FIXME */ } // something is very wrong, as I just made these, and they were all cases
    5454                                                // transfer the statement block ( if any ) to the new list:
    5555                                                lastCase->set_statements( currentCase->get_statements() );
    5656                                        } // if
    57                                 std::list< Statement * >::iterator j = i;
    58                                 advance( j, 1 );
    59                                 replace( cases, i, newCases );
     57                                std::list< Statement * >::iterator j = i; advance( j, 1 );
     58                                replace ( cases, i, newCases );
    6059                                i = j;
    6160                                newCaseLabels.clear();
     
    6564
    6665                return switchStmt;
    67         } // CaseRangeMutator::mutate
     66        }
    6867
    6968        Statement *CaseRangeMutator::mutate( CaseStmt *caseStmt ) {
    70                 // case list, e.g., case 1, 3, 5:
    71                 if ( TupleExpr *tcond = dynamic_cast< TupleExpr * >( caseStmt->get_condition() ) ) {
     69                UntypedExpr *cond;
     70                if ( ( cond = dynamic_cast< UntypedExpr * >( caseStmt->get_condition() )) != 0 ) {
     71                        NameExpr *nmfunc;
     72                        if ( ( nmfunc = dynamic_cast< NameExpr *>( cond->get_function() )) != 0 ) {
     73                                if ( nmfunc->get_name() == std::string("Range") ) {
     74                                        assert( cond->get_args().size() == 2 );
     75                                        std::list<Expression *>::iterator i = cond->get_args().begin();
     76                                        Expression *lo = *i, *hi = *(++i ); // "unnecessary" temporaries
     77                                        fillRange( lo, hi );
     78                                } // if
     79                        } // if
     80                } else if ( TupleExpr *tcond = dynamic_cast< TupleExpr * >( caseStmt->get_condition() ) ) {
     81                        // case list
    7282                        assert( ! tcond->get_exprs().empty() );
    73                         for ( std::list< Expression * >::iterator i = tcond->get_exprs().begin(); i != tcond->get_exprs().end(); i++ ) {
    74                                 newCaseLabels.push_back( *i );                  // do I need to clone them?
    75                         } // for
     83                        for ( std::list< Expression * >::iterator i = tcond->get_exprs().begin(); i != tcond->get_exprs().end(); i++ )
     84                                newCaseLabels.push_back( *i ); // do I need to clone them?
    7685                } // if
    7786
    7887                std::list< Statement * > &stmts = caseStmt->get_statements();
    79                 mutateAll( stmts, *this );
     88                mutateAll ( stmts, *this );
    8089
    8190                return caseStmt;
    82         } // CaseRangeMutator::mutate
     91        }
     92
     93        void CaseRangeMutator::fillRange( Expression *lo, Expression *hi ) {
     94                // generate the actual range ( and check for consistency )
     95                Constant *c_lo, *c_hi;
     96                ConstantExpr *ce_lo, *ce_hi;
     97                ce_lo = dynamic_cast< ConstantExpr * >( lo );
     98                ce_hi = dynamic_cast< ConstantExpr * >( hi );
     99
     100                if ( ce_lo && ce_hi ) {
     101                        c_lo = ce_lo->get_constant(); c_hi = ce_hi->get_constant();
     102                } /* else {
     103                         if ( ! ce_lo ) ;
     104                         if ( ! ce_hi ) ;
     105                         } */
     106                BasicType *ty_lo = dynamic_cast< BasicType * >( c_lo->get_type() ),
     107                        *ty_hi = dynamic_cast< BasicType * >( c_hi->get_type() );
     108       
     109                if ( ! ty_lo || ! ty_hi )
     110                        return; // one of them is not a constant
     111
     112                switch ( ty_lo->get_kind() ) {
     113                  case BasicType::Char:
     114                  case BasicType::UnsignedChar:
     115                        switch ( ty_hi->get_kind() ) {
     116                          case BasicType::Char:
     117                          case BasicType::UnsignedChar:
     118                                // first case, they are both printable ASCII characters represented as 'x'
     119                                if ( c_lo->get_value().size() == 3 && c_hi->get_value().size() == 3 ) {
     120                                        char ch_lo = ( c_lo->get_value())[1], ch_hi = ( c_hi->get_value())[1];
     121
     122                                        if ( ch_lo > ch_hi ) { char t=ch_lo; ch_lo=ch_hi; ch_hi=t; }
     123
     124                                        for ( char c = ch_lo; c <=  ch_hi; c++ ) {
     125                                                Type::Qualifiers q;
     126                                                Constant cnst( new BasicType( q, BasicType::Char ),
     127                                                                           std::string("'") + c + std::string("'") );
     128                                                newCaseLabels.push_back( new ConstantExpr( cnst ) );
     129                                        } // for
     130
     131                                        return;
     132                                } // if
     133                                break;
     134                          default:
     135                                // error: incompatible constants
     136                                break;
     137                        } // switch
     138                        break;
     139                  case BasicType::ShortSignedInt:
     140                  case BasicType::ShortUnsignedInt:
     141                  case BasicType::SignedInt:
     142                  case BasicType::UnsignedInt:
     143                  case BasicType::LongSignedInt:
     144                  case BasicType::LongUnsignedInt:
     145                  case BasicType::LongLongSignedInt:
     146                  case BasicType::LongLongUnsignedInt:
     147                        switch ( ty_hi->get_kind() ) {
     148                          case BasicType::ShortSignedInt:
     149                          case BasicType::ShortUnsignedInt:
     150                          case BasicType::SignedInt:
     151                          case BasicType::UnsignedInt:
     152                          case BasicType::LongSignedInt:
     153                          case BasicType::LongUnsignedInt:
     154                          case BasicType::LongLongSignedInt:
     155                          case BasicType::LongLongUnsignedInt: {
     156                                  int i_lo = atoi( c_lo->get_value().c_str()),
     157                                          i_hi = atoi( c_hi->get_value().c_str());
     158
     159                                  if ( i_lo > i_hi ) { int t=i_lo; i_lo=i_hi; i_hi=t; }
     160
     161                                  for ( int c = i_lo; c <=  i_hi; c++ ) {
     162                                          Type::Qualifiers q;
     163                                          Constant cnst( new BasicType( q, ty_hi->get_kind()), // figure can't hurt (used to think in positives)
     164                                                                         toString< int >( c ) );
     165                                          newCaseLabels.push_back( new ConstantExpr( cnst ) );
     166                                  }
     167
     168                                  return;
     169                          }
     170                          default:
     171                                // error: incompatible constants
     172                                break;
     173                        }
     174                        break;
     175                  default:
     176                        break;
     177                } // switch
     178
     179                /* End: */{
     180                        // invalid range, signal a warning (it still generates the two case labels)
     181                        newCaseLabels.push_back( lo );
     182                        newCaseLabels.push_back( hi );
     183                        return;
     184                }
     185        }
    83186} // namespace ControlStruct
    84187
  • src/ControlStruct/CaseRangeMutator.h

    ra14187f rac43954  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 30 23:41:57 2016
    13 // Update Count     : 5
     12// Last Modified On : Tue Jul 12 17:35:30 2016
     13// Update Count     : 4
    1414//
    1515
     
    3030                virtual Statement *mutate( CaseStmt * );
    3131          private:
     32                void fillRange( Expression *lo, Expression *hi );
     33
    3234                Expression *currentCondition;
    3335                std::list< Expression * > newCaseLabels;
  • src/GenPoly/Box.cc

    ra14187f rac43954  
    619619                        return 0;
    620620                }
    621 
     621               
    622622                /// Returns T if the given declaration is a function with parameters (T*, T) for some TypeInstType T, NULL otherwise
    623623                TypeInstType *isTypeInstPtrValFn( DeclarationWithType *decl ) {
     
    637637                        return 0;
    638638                }
    639 
     639               
    640640                /// Returns T if the given declaration is (*?=?)(T *, T) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
    641641                TypeInstType *isTypeInstAssignment( DeclarationWithType *decl ) {
     
    677677                        return 0;
    678678                }
    679 
     679               
    680680                /// Returns T if the given declaration is a function with parameters (T*, T) for some type T, where neither parameter is cv-qualified,
    681681                /// NULL otherwise
     
    772772                                copyOps.beginScope();
    773773                                dtorOps.beginScope();
    774 
     774                               
    775775                                DeclarationWithType *oldRetval = retval;
    776776                                bool oldUseRetval = useRetval;
     
    14711471                VariableExpr *wrapFunctionDecl( DeclarationWithType *functionDecl ) {
    14721472                        // line below cloned from FixFunction.cc
    1473                         // xxx - functionObj is never added to a list of declarations...
    14741473                        ObjectDecl *functionObj = new ObjectDecl( functionDecl->get_name(), functionDecl->get_storageClass(), functionDecl->get_linkage(), 0,
    14751474                                                                  new PointerType( Type::Qualifiers(), functionDecl->get_type()->clone() ), 0 );
    14761475                        functionObj->set_mangleName( functionDecl->get_mangleName() );
    1477                         functionObj->set_scopeLevel( functionDecl->get_scopeLevel() );
    14781476                        return new VariableExpr( functionObj );
    14791477                }
     
    14941492                                        = ParamEntry( assertOp->get_uniqueId(), assertOp->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertOp ) );
    14951493                }
    1496 
     1494               
    14971495                Statement * Pass1::mutate( ReturnStmt *returnStmt ) {
    14981496                        if ( retval && returnStmt->get_expr() ) {
     
    15561554                                                DeclarationWithType *assertDtor = findOpForType( formalType, dtorOps, scopedDtorOps );
    15571555                                                if ( ! assertDtor ) throw SemanticError( "No destructor found for ", formalType );
    1558 
     1556                                               
    15591557                                                // add inferred parameters for otype operators to assignment expression
    15601558                                                // NOTE: Code here assumes that first four assertions are assign op, ctor, copy ctor, dtor, in that order
     
    15701568                                                ++actualIt;
    15711569                                                addAssertionFor( assignExpr, *actualIt, assertDtor );
    1572 
     1570                                               
     1571                                                //DeclarationWithType *actualDecl = asserts.front();
     1572                                                //assignExpr->get_inferParams()[ actualDecl->get_uniqueId() ]
     1573                                                //      = ParamEntry( assertAssign->get_uniqueId(), assertAssign->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertAssign ) );
    15731574                                        }
    15741575                                }
     
    21802181                bool PolyGenericCalculator::findGeneric( Type *ty ) {
    21812182                        ty = replaceTypeInst( ty, env );
    2182 
     2183                       
    21832184                        if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( ty ) ) {
    21842185                                if ( scopeTyVars.find( typeInst->get_name() ) != scopeTyVars.end() ) {
  • src/Parser/lex.cc

    ra14187f rac43954  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 181
    385 #define YY_END_OF_BUFFER 182
     384#define YY_NUM_RULES 180
     385#define YY_END_OF_BUFFER 181
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[892] =
     393static yyconst flex_int16_t yy_accept[888] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  116,  116,  119,  119,
    396       182,  180,    7,    9,    8,  139,  118,  103,  144,  147,
    397       115,  126,  127,  142,  140,  130,  141,  133,  143,  108,
    398       109,  110,  131,  132,  149,  151,  150,  152,  180,  103,
    399       124,  180,  125,  145,  103,  105,  103,  103,  103,  103,
    400       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    401       103,  103,  128,  148,  129,  146,    7,  180,    4,    4,
    402       181,  106,  181,  107,  116,  117,  123,  119,  120,    7,
    403         9,    0,    8,  156,  175,  103,    0,  168,  138,  161,
    404       169,  166,  153,  164,  154,  165,  163,    0,  113,    3,
    405 
    406         0,  167,  113,  111,    0,    0,  111,  111,    0,    0,
    407       111,  110,  110,  110,    0,  110,  136,  137,  135,  157,
    408       159,  155,  160,  158,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
    410       174,    0,  118,  115,  103,    0,    0,  171,    0,  103,
    411       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    412       103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
    413       103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
    414       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    415       103,  103,  103,  103,  170,  162,    7,    0,    0,    0,
    416 
    417         2,    0,    5,  106,    0,    0,    0,  116,    0,  122,
    418       121,  121,    0,    0,    0,  119,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  115,  115,  118,  118,
     396      181,  179,    7,    9,    8,  138,  117,  102,  143,  146,
     397      114,  125,  126,  141,  139,  129,  140,  132,  142,  107,
     398      108,  109,  130,  131,  148,  150,  149,  151,  179,  102,
     399      123,  179,  124,  144,  102,  104,  102,  102,  102,  102,
     400      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     401      102,  102,  127,  147,  128,  145,    7,  179,    4,    4,
     402      180,  105,  180,  106,  115,  116,  122,  118,  119,    7,
     403        9,    0,    8,  155,  174,  102,    0,  167,  137,  160,
     404      168,  165,  152,  163,  153,  164,  162,    0,  112,    3,
     405
     406        0,  166,  112,  110,    0,    0,  110,  110,    0,    0,
     407      110,  109,  109,  109,    0,  109,  135,  136,  134,  156,
     408      158,  154,  159,  157,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
     410      173,    0,  117,  114,  102,    0,    0,  170,    0,  102,
     411      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     412      102,  102,  102,  102,  102,  102,   38,  102,  102,  102,
     413      102,  102,  102,  102,  102,  102,  102,   56,  102,  102,
     414      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     415      102,  102,  102,  102,  169,  161,    7,    0,    0,    0,
     416
     417        2,    0,    5,  105,    0,    0,    0,  115,    0,  121,
     418      120,  120,    0,    0,    0,  118,    0,    0,    0,    0,
    419419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,  134,  113,  113,    0,  113,  113,    0,    0,    6,
    421         0,  111,    0,    0,    0,  113,    0,  111,  111,  111,
    422       111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
    423       172,  173,    0,  178,  176,    0,    0,    0,  104,    0,
    424         0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
    425       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    426       103,  103,  103,  103,  103,  103,  103,   14,  103,  103,
    427 
    428       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    429       103,  103,  103,  103,  103,  103,   51,  103,  103,  103,
    430        64,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    431       103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
    432       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    433         0,  121,    0,    0,    0,    0,    0,  121,    0,    0,
    434       179,    0,    0,    0,    0,    0,    0,    0,  113,    0,
    435       113,    0,  113,    0,    0,  113,    0,  111,  111,    0,
    436         0,  112,  112,    0,  112,    0,  112,  110,  110,    0,
    437         0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
    438 
    439       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    440       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    441       103,  103,  103,   21,  103,   24,  103,   27,  103,  103,
    442       103,  103,  103,  103,  103,   41,  103,   43,  103,  103,
    443       103,  103,  103,  103,  103,   56,  103,   67,  103,  103,
    444       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    445       103,  103,  103,  103,   98,  103,  103,    0,    0,    0,
     420        0,  133,  112,  112,    0,  112,  112,    0,    0,    6,
     421        0,  110,    0,    0,    0,  112,    0,  110,  110,  110,
     422      110,    0,  111,    0,    0,  109,  109,  109,  109,    0,
     423      171,  172,    0,  177,  175,    0,    0,    0,  103,    0,
     424        0,    0,    0,    0,    0,    0,    0,  102,   17,  102,
     425      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     426      102,  102,  102,  102,  102,  102,  102,   14,  102,  102,
     427
     428      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     429      102,  102,  102,  102,  102,  102,   50,  102,  102,  102,
     430       63,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     431      102,  102,  102,  102,  102,   89,  102,  102,  102,  102,
     432      102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
     433        0,  120,    0,    0,    0,    0,    0,  120,    0,    0,
     434      178,    0,    0,    0,    0,    0,    0,    0,  112,    0,
     435      112,    0,  112,    0,    0,  112,    0,  110,  110,    0,
     436        0,  111,  111,    0,  111,    0,  111,  109,  109,    0,
     437        0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
     438
     439      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     440      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     441      102,  102,  102,   21,  102,   24,  102,   27,  102,  102,
     442      102,  102,  102,  102,  102,   41,  102,   43,  102,  102,
     443      102,  102,  102,  102,  102,   55,  102,   66,  102,  102,
     444      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     445      102,  102,  102,  102,   97,  102,  102,    0,    0,    0,
    446446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    447         0,  121,    0,    0,    0,    0,    0,  113,    0,    0,
    448         0,    0,    0,    0,  112,  112,    0,  114,    0,  112,
    449 
    450       112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    451         0,    0,    0,    0,  103,  103,   22,  103,  103,  103,
    452       103,  103,  103,  103,   15,  103,  103,  103,  103,  103,
    453       103,  103,  103,  103,  103,  103,  103,  103,  103,   23,
    454        25,  103,   32,  103,  103,  103,  103,   40,  103,  103,
    455       103,  103,   49,  103,  103,   54,  103,  103,   71,  103,
    456       103,  103,   77,  103,  103,  103,  103,  103,   87,   89,
    457       103,  103,   95,  103,  103,  102,    0,    0,    0,    0,
     447        0,  120,    0,    0,    0,    0,    0,  112,    0,    0,
     448        0,    0,    0,    0,  111,  111,    0,  113,    0,  111,
     449
     450      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,  102,  102,   22,  102,  102,  102,
     452      102,  102,  102,  102,   15,  102,  102,  102,  102,  102,
     453      102,  102,  102,  102,  102,  102,  102,  102,  102,   23,
     454       25,  102,   32,  102,  102,  102,  102,   40,  102,  102,
     455      102,  102,   48,  102,  102,   53,  102,  102,   70,  102,
     456      102,  102,   76,  102,  102,  102,  102,  102,   86,   88,
     457      102,  102,   94,  102,  102,  101,    0,    0,    0,    0,
    458458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    459         0,    0,    0,    0,    0,  114,    0,    0,  112,  114,
    460 
    461       114,  114,  114,    0,  112,    0,    0,    0,    0,    0,
    462         0,    0,    0,    0,    0,  103,    0,  103,  103,  103,
    463       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    464       103,  103,  103,   59,  103,  103,  103,  103,  103,  103,
    465       103,  103,   28,  103,  103,  103,   39,   42,   45,  103,
    466       103,   52,  103,   61,   68,  103,  103,   76,   78,   81,
    467        82,   84,   85,  103,  103,   92,  103,  103,    0,    1,
    468         0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
    469       121,    0,    0,    0,    0,  114,    0,  114,  114,    0,
    470         0,    0,    0,    0,    0,    0,    0,    0,  103,  103,
    471 
    472        18,  103,  103,  103,  103,  103,  103,  103,   16,  103,
    473       103,  103,   33,  103,  103,  103,  103,  103,  103,  103,
    474       103,  103,  103,  103,  103,   36,   37,  103,   48,   53,
    475       103,  103,  103,   91,  103,  103,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,  113,    0,    0,  111,  113,
     460
     461      113,  113,  113,    0,  111,    0,    0,    0,    0,    0,
     462        0,    0,    0,    0,    0,  102,    0,  102,  102,  102,
     463      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     464      102,  102,  102,   58,  102,  102,  102,  102,  102,  102,
     465      102,  102,   28,  102,  102,  102,   39,   42,   45,  102,
     466      102,   51,  102,   60,   67,  102,  102,   75,   77,   80,
     467       81,   83,   84,  102,  102,   91,  102,  102,    0,    1,
     468        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     469      120,    0,    0,    0,    0,  113,    0,  113,  113,    0,
     470        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     471
     472       18,  102,  102,  102,  102,  102,  102,  102,   16,  102,
     473      102,  102,   33,  102,  102,  102,  102,  102,  102,  102,
     474      102,  102,  102,  102,  102,   36,   37,  102,   47,   52,
     475      102,  102,  102,   90,  102,  102,    0,    0,    0,    0,
    476476        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
    477        11,   29,   55,  103,  103,  103,  103,  103,  103,  103,
    478       103,  103,  103,  103,   60,   62,   65,  103,  103,   79,
    479        93,  103,  103,   35,  103,   47,   72,   73,  103,   96,
    480        99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    481         0,    0,    0,  103,   69,  103,  103,   12,  103,  103,
    482 
    483        30,   34,  103,  103,  103,   66,  103,  103,  103,  103,
    484       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    485         0,    0,    0,    0,    0,    0,   58,  103,  103,  103,
    486       103,  103,  103,  103,   50,   63,   74,   80,   94,  100,
    487       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    488         0,  103,  103,   13,   19,  103,  103,   31,  103,  103,
    489       103,   26,   46,   88,    0,    0,  103,  103,  103,  103,
    490       103,  103,   75,  101,  103,   86,   20,  103,  103,   44,
    491        83,  103,  103,  103,  103,  103,  103,  103,   97,   70,
    492         0
    493 
     477       11,   29,   54,  102,  102,  102,  102,  102,  102,  102,
     478      102,  102,  102,  102,   59,   61,   64,  102,  102,   78,
     479       92,  102,  102,   35,   46,   71,   72,  102,   95,   98,
     480        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     481        0,    0,  102,   68,  102,  102,   12,  102,  102,   30,
     482
     483       34,  102,  102,  102,   65,  102,  102,  102,  102,  102,
     484      102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     485        0,    0,    0,    0,   57,  102,  102,  102,  102,  102,
     486      102,  102,   49,   62,   73,   79,   93,   99,  102,  102,
     487        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     488       13,   19,  102,  102,   31,  102,  102,  102,   26,   87,
     489        0,    0,  102,  102,  102,  102,  102,  102,   74,  100,
     490      102,   85,   20,  102,  102,   44,   82,  102,  102,  102,
     491      102,  102,  102,  102,   96,   69,    0
    494492    } ;
    495493
     
    539537    } ;
    540538
    541 static yyconst flex_int16_t yy_base[1066] =
     539static yyconst flex_int16_t yy_base[1062] =
    542540    {   0,
    543         0,   84, 2285, 2282,   94,    0,  177,  178,  179,  180,
    544      2298, 2825,  191, 2825,  197,   55, 2825, 2244,   60,  173,
    545      2825, 2825, 2825,   56,  188, 2825,  191,  189,  204,  216,
    546       275,    0, 2262, 2825,  216, 2260,  152,  344,  155,  220,
    547      2825,  159, 2825,  217,  226, 2825,  185,  154,  212,  251,
     541        0,   84, 2272, 2269,   94,    0,  177,  178,  179,  180,
     542     2285, 2822,  191, 2822,  197,   55, 2822, 2231,   60,  173,
     543     2822, 2822, 2822,   56,  188, 2822,  191,  189,  204,  216,
     544      275,    0, 2249, 2822,  216, 2247,  152,  344,  155,  220,
     545     2822,  159, 2822,  217,  226, 2822,  185,  154,  212,  251,
    548546      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
    549       238,  228, 2825,  225, 2825, 2255,  402,  390, 2825, 2266,
    550      2825, 2234,  235, 2825,    0, 2825,  426,    0, 2825,  417,
    551      2825,  439,  451, 2825,  498, 2232,  264, 2825, 2825, 2825,
    552      2825, 2825, 2248, 2825, 2245, 2825, 2825, 2257,  559, 2825,
    553 
    554      2274, 2825,  438,  444,  511,  534,  289,  253,  197,  380,
    555       305,    0,  319,  280,  198,  322, 2825, 2825, 2825, 2243,
    556      2825, 2825, 2825, 2240, 2237,  218,  255, 2252,  298,  350,
    557       368,  312,  440,  398,  405, 2233,  441, 2181,  446, 2209,
    558      2825,  335, 2825, 2825,  468, 2203, 2202, 2825, 2175,  439,
     547      238,  228, 2822,  225, 2822, 2242,  402,  390, 2822, 2253,
     548     2822, 2221,  235, 2822,    0, 2822,  426,    0, 2822,  417,
     549     2822,  439,  451, 2822,  498, 2219,  264, 2822, 2822, 2822,
     550     2822, 2822, 2235, 2822, 2232, 2822, 2822, 2244,  559, 2822,
     551
     552     2261, 2822,  438,  444,  511,  534,  289,  253,  197,  380,
     553      305,    0,  319,  280,  198,  322, 2822, 2822, 2822, 2230,
     554     2822, 2822, 2822, 2227, 2224,  218,  255, 2239,  298,  350,
     555      368,  312,  440,  398,  405, 2220,  441, 2168,  446, 2196,
     556     2822,  335, 2822, 2822,  468, 2190, 2189, 2822, 2162,  439,
    559557      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
    560558      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
    561       489,  503,  496,  521,  276,  515,  516, 2202,  526,  510,
     559      489,  503,  496,  521,  276,  515,  516, 2189,  526,  510,
    562560      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
    563       599,  582,  593,  584, 2825, 2825,  660,  651, 2249,  666,
    564 
    565      2825,  678, 2825, 2196,  607, 2192, 2191,    0,  693, 2825,
    566      2825,  684, 2189, 2186, 2183,    0, 2206,  578,  608,  617,
    567       654,  679,  650,  683,  684,  687, 2203,  690,  691, 2179,
    568      2159, 2825,    0,  683,  710,  686,  700, 2157, 2209, 2825,
    569       714,    0,  427,  746,  764,  786,  808,  621, 2825, 2165,
    570      2138,    0,  794, 2184,  795,  709, 2825, 2160, 2134,  832,
    571      2825, 2825, 2165, 2825, 2825,  711,  714, 2142, 2142,  717,
    572      2138, 2136, 2133,    0, 2130,    0, 2101,  694,  679,  712,
     561      599,  582,  593,  584, 2822, 2822,  660,  651, 2236,  666,
     562
     563     2822,  678, 2822, 2183,  607, 2179, 2178,    0,  693, 2822,
     564     2822,  684, 2176, 2156, 2154,    0, 2177,  578,  608,  617,
     565      654,  679,  650,  683,  684,  687, 2172,  690,  691, 2147,
     566     2146, 2822,    0,  683,  710,  686,  700, 2145, 2196, 2822,
     567      714,    0,  427,  746,  764,  786,  808,  621, 2822, 2152,
     568     2125,    0,  794, 2171,  795,  709, 2822, 2147, 2121,  832,
     569     2822, 2822, 2152, 2822, 2822,  711,  714, 2129, 2129,  717,
     570     2125, 2123, 2120,    0, 2117,    0, 2088,  694,  679,  712,
    573571      709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
    574       800,  795,  742,  744,  814,  816,  818, 2131,  819,  745,
     572      800,  795,  742,  744,  814,  816,  818, 2118,  819,  745,
    575573
    576574      820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
    577575      826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
    578      2129,  858,  859,  860,  862,  861,  864,  865,  867,  868,
    579       866,  871,  876,  872,  878, 2126,  880,  689,  881,  882,
    580       892,  896,  893,  953,  954, 2120, 2119, 2118,    0, 2116,
    581         0,  941,  945, 2113,    0, 2112,    0, 2111,    0, 2131,
    582      2825,  940,  941, 2108, 2105,    0, 2104,    0, 2825,  953,
    583       975,  964, 2825,  981,  997, 1021, 2102, 2825, 2825,  939,
    584       940, 1006,  982, 1041,  310, 1039, 1004, 2825, 2825, 2099,
    585      2095, 2091,    0, 2089,    0, 2087,    0, 2084,    0, 2825,
     576     2116,  858,  859,  860,  862,  861,  864,  865,  867,  868,
     577      866,  871,  876,  872,  878, 2113,  880,  689,  881,  882,
     578      892,  896,  893,  953,  954, 2109, 2108, 2106,    0, 2103,
     579        0,  941,  945, 2102,    0, 2101,    0, 2099,    0, 2118,
     580     2822,  940,  941, 2094, 2088,    0, 2086,    0, 2822,  953,
     581      975,  964, 2822,  981,  997, 1021, 2084, 2822, 2822,  939,
     582      940, 1006,  982, 1041,  310, 1039, 1004, 2822, 2822, 2081,
     583     2079, 2077,    0, 2074,    0, 2071,    0, 2070,    0, 2822,
    586584
    587585      886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
    588586     1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
    589      1038, 1041, 1053, 2085, 1055, 2083, 1045, 2080, 1056, 1061,
    590      1063, 1065, 1066, 1067, 1070, 2077, 1071, 2076, 1073, 1074,
    591      1075, 1078, 1080, 1081, 1085, 2075, 1087, 2073, 1084, 1089,
     587     1038, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061,
     588     1063, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074,
     589     1075, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089,
    592590     1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
    593      1109, 1116, 1110, 1122, 2070, 1120, 1123, 1179, 2064,    0,
    594      2063,    0, 2062,    0, 2060,    0, 1166, 2057,    0, 2054,
    595         0, 2053, 2052, 2050,    0, 2047,    0, 1173, 2044, 1179,
    596      1137, 1195, 1181, 1178, 1176, 2825, 1219, 1231, 1253, 2055,
    597 
    598      2030, 2040, 2037,    0, 2034,    0, 2033,    0, 2032,    0,
    599      2030,    0, 2027,    0, 1141, 1172, 2027, 1180, 1155, 1196,
     591     1109, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051,    0,
     592     2050,    0, 2049,    0, 2047,    0, 1166, 2044,    0, 2041,
     593        0, 2040, 2039, 2037,    0, 2034,    0, 1173, 2031, 1179,
     594     1137, 1195, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042,
     595
     596     2017, 2027, 2024,    0, 2021,    0, 2020,    0, 2019,    0,
     597     2017,    0, 2014,    0, 1141, 1172, 2014, 1180, 1155, 1196,
    600598     1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
    601      1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2026,
    602      1261, 1256, 2025, 1260, 1263, 1264, 1257, 2023, 1271, 1268,
    603      1269, 1273, 2020, 1275, 1282, 2017, 1283, 1284, 2016, 1276,
    604      1286, 1289, 2015, 1294, 1291, 1296, 1295, 1297, 1310, 2013,
    605      1305, 1308, 2010, 1307, 1300, 2009, 2058, 2003,    0, 2000,
    606         0, 1999,    0, 1998,    0, 1996,    0, 1963,    0, 1961,
    607         0, 1960,    0, 1355, 1361, 1389, 1372, 1957, 2825, 1378,
    608 
    609      1325, 1365, 1379, 1954, 2825, 1953,    0, 1952,    0, 1950,
    610         0, 1947,    0,    0,    0, 1947,    0, 1366, 1312, 1311,
     599     1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013,
     600     1261, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268,
     601     1269, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276,
     602     1286, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000,
     603     1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960,    0, 1958,
     604        0, 1957,    0, 1954,    0, 1951,    0, 1950,    0, 1949,
     605        0, 1947,    0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,
     606
     607     1325, 1365, 1379, 1941, 2822, 1940,    0, 1939,    0, 1937,
     608        0, 1934,    0,    0,    0, 1936,    0, 1366, 1312, 1311,
    611609     1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
    612610     1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
    613      1413, 1414, 1946, 1409, 1416, 1419, 1945, 1943, 1940, 1422,
    614      1424, 1939, 1429, 1938, 1936, 1425, 1430, 1933, 1932, 1931,
    615      1929, 1926, 1922, 1436, 1433, 1918, 1439, 1440, 1964, 2825,
    616      1895,    0, 1894,    0,    0,    0, 1896,    0,    0,    0,
    617      2825,    0,    0,    0,    0, 1486, 1891, 2825, 2825, 1492,
    618      1888,    0, 1887,    0,    0,    0,    0, 1886, 1447, 1444,
    619 
    620      1887, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1884, 1486,
     611     1413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422,
     612     1424, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,
     613     1895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,
     614     1884,    0, 1883,    0,    0,    0, 1884,    0,    0,    0,
     615     2822,    0,    0,    0,    0, 1486, 1878, 2822, 2822, 1492,
     616     1877,    0, 1876,    0,    0,    0,    0, 1874, 1447, 1444,
     617
     618     1874, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,
    621619     1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
    622      1508, 1512, 1513, 1514, 1515, 1883, 1882, 1518, 1880, 1877,
    623      1517, 1520, 1523, 1876, 1521, 1525,    0,    0,    0, 1872,
    624      1870, 1867, 1575,    0, 1866, 1865, 1863, 1860, 1859, 1861,
    625      1859, 1856, 1855, 1531, 1538, 1527, 1528, 1530, 1533, 1552,
    626      1539, 1554, 1553, 1586, 1854, 1559, 1852, 1560, 1561, 1564,
    627      1570, 1572, 1571, 1849, 1574, 1848, 1847, 1845, 1575, 1842,
    628      1841, 1837, 1835, 1828, 1826, 1825, 1822, 1821, 1820, 1818,
    629      1801, 1792, 1791, 1576, 1791, 1579, 1577, 1580, 1582, 1581,
    630 
    631      1585, 1784, 1589, 1616, 1593, 1781, 1591, 1599, 1605, 1592,
    632      1606, 1609, 1610, 1771, 1769, 1768, 1747, 1746, 1745, 1738,
    633      1736, 1735, 1693, 1689, 1688, 1687, 1689, 1611, 1612, 1614,
    634      1615, 1618, 1625, 1621, 1686, 1683, 1627, 1682, 1681, 1631,
    635      1635, 1441, 1637, 1677, 1674, 1354, 1319, 1318, 1267, 1212,
    636      1210, 1639, 1640, 1211, 1647, 1623, 1649, 1178, 1652, 1653,
    637      1657, 1177, 1126,  964,  937,  903, 1641, 1643, 1659, 1663,
    638      1664, 1665,  788,  752, 1629,  607,  487, 1666, 1669,  394,
    639       357, 1670, 1672, 1671, 1674, 1676, 1675, 1678,  233,  137,
    640      2825, 1750, 1763, 1776, 1786, 1796, 1809, 1819, 1832, 1845,
    641 
    642      1858, 1866, 1876, 1883, 1890, 1897, 1904, 1911, 1918, 1925,
    643      1932, 1939, 1952, 1959, 1963, 1971, 1974, 1981, 1988, 1995,
    644      1998, 2005, 2011, 2024, 2037, 2044, 2051, 2058, 2065, 2068,
    645      2075, 2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118,
    646      2125, 2128, 2135, 2143, 2150, 2157, 2164, 2171, 2174, 2181,
    647      2184, 2191, 2194, 2201, 2207, 2220, 2227, 2234, 2237, 2244,
    648      2247, 2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294,
    649      2301, 2304, 2311, 2314, 2321, 2328, 2335, 2338, 2345, 2348,
    650      2355, 2358, 2365, 2368, 2375, 2378, 2385, 2391, 2404, 2411,
    651      2418, 2421, 2428, 2431, 2438, 2441, 2448, 2451, 2458, 2461,
    652 
    653      2468, 2471, 2478, 2481, 2488, 2491, 2498, 2505, 2508, 2515,
    654      2518, 2525, 2528, 2535, 2538, 2541, 2547, 2554, 2563, 2570,
    655      2577, 2580, 2587, 2590, 2593, 2599, 2606, 2609, 2612, 2615,
    656      2618, 2621, 2624, 2627, 2634, 2637, 2644, 2647, 2650, 2653,
    657      2656, 2666, 2673, 2676, 2679, 2682, 2689, 2696, 2703, 2706,
    658      2713, 2720, 2727, 2734, 2741, 2748, 2755, 2762, 2769, 2776,
    659      2783, 2790, 2797, 2804, 2811
     620     1508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866,
     621     1518, 1520, 1523, 1865, 1521, 1525,    0,    0,    0, 1860,
     622     1857, 1856, 1575,    0, 1855, 1853, 1850, 1849, 1848, 1849,
     623     1846, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,
     624     1539, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,
     625     1572, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,
     626     1819, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775,
     627     1768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,
     628
     629     1747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,
     630     1606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,
     631     1682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,
     632     1616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,
     633     1438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,
     634     1178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126,  964,
     635      937,  903, 1651, 1652, 1654, 1655, 1656, 1658,  788,  752,
     636     1660,  607,  487, 1662, 1663,  394,  357, 1664, 1666, 1668,
     637     1670, 1669, 1672, 1674,  233,  137, 2822, 1747, 1760, 1773,
     638     1783, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880,
     639
     640     1887, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,
     641     1960, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,
     642     2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,
     643     2092, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,
     644     2147, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,
     645     2204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,
     646     2264, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,
     647     2318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,
     648     2372, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,
     649     2435, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,
     650
     651     2485, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,
     652     2535, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,
     653     2590, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,
     654     2631, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,
     655     2676, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,
     656     2738, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,
     657     2808
    660658    } ;
    661659
    662 static yyconst flex_int16_t yy_def[1066] =
     660static yyconst flex_int16_t yy_def[1062] =
    663661    {   0,
    664       891,    1,  892,  892,  891,    5,  893,  893,  894,  894,
    665       891,  891,  891,  891,  891,  891,  891,  895,  891,  891,
     662      887,    1,  888,  888,  887,    5,  889,  889,  890,  890,
     663      887,  887,  887,  887,  887,  887,  887,  891,  887,  887,
     664      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     665      887,   31,  887,  887,  887,  887,  887,  887,  892,  891,
     666      887,  887,  887,  887,  891,  887,  891,  891,  891,  891,
    666667      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    667       891,   31,  891,  891,  891,  891,  891,  891,  896,  895,
    668       891,  891,  891,  891,  895,  891,  895,  895,  895,  895,
    669       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    670       895,  895,  891,  891,  891,  891,  891,  897,  891,  891,
    671       891,  898,  891,  891,  899,  891,  891,  900,  891,  891,
    672       891,  891,  891,  891,  891,  895,  891,  891,  891,  891,
    673       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    674 
    675       901,  891,   99,   30,  891,  891,  891,  891,  902,   30,
    676       891,   31,  891,  891,   31,  891,  891,  891,  891,  891,
    677       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    678       891,  891,  891,  891,  891,  891,  891,  891,  891,  903,
    679       891,  891,  891,  891,  895,  904,  905,  891,  891,  895,
    680       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    681       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    682       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    683       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    684       895,  895,  895,  895,  891,  891,  891,  897,  897,  897,
    685 
    686       891,  897,  891,  898,  891,  906,  907,  899,  891,  891,
    687       891,  891,  908,  909,  910,  900,  891,  891,  891,  891,
    688       891,  891,  891,  891,  891,  891,  891,  891,  891,  911,
    689       912,  891,   99,  891,  891,  891,  891,   99,  913,  891,
    690       891,  104,  104,  891,  891,  891,  891,  891,  891,  891,
    691       891,  914,  915,  916,  891,  891,  891,  891,  891,  891,
    692       891,  891,  891,  891,  891,  891,  891,  891,  903,  891,
    693       917,  918,  919,  920,  921,  922,  891,  923,  923,  923,
    694       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    695       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    696 
    697       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    698       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    699       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    700       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    701       923,  923,  923,  924,  925,  926,  927,  928,  929,  930,
    702       931,  891,  891,  932,  933,  934,  935,  936,  937,  891,
    703       891,  891,  891,  891,  938,  939,  940,  941,  891,  891,
    704       891,  891,  891,  891,  891,  371,  376,  891,  891,  942,
    705       943,  944,  891,  891,  891,  944,  891,  891,  891,  945,
    706       946,  947,  948,  949,  950,  951,  952,  953,  954,  891,
    707 
    708       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    709       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    710       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    711       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    712       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    713       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    714       955,  955,  955,  955,  955,  955,  955,  956,  957,  958,
    715       959,  960,  961,  962,  963,  964,  891,  965,  966,  967,
    716       968,  969,  969,  970,  971,  972,  973,  891,  488,  891,
    717       974,  891,  974,  891,  891,  891,  891,  891,  891,  891,
    718 
    719       891,  975,  976,  977,  978,  979,  980,  981,  982,  983,
    720       984,  985,  986,  987,  988,  988,  988,  988,  988,  988,
    721       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    722       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    723       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    724       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    725       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    726       988,  988,  988,  988,  988,  988,  989,  990,  991,  992,
    727       993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
    728      1003, 1004, 1005,  891,  891,  891,  891, 1006,  891,  596,
    729 
    730       891,  891,  891,  600,  891, 1007, 1008, 1009, 1010, 1011,
    731      1012, 1013, 1014, 1015, 1016, 1017, 1018, 1017, 1017, 1017,
    732      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    733      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    734      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    735      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    736      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1019,  891,
    737      1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
    738       891, 1030, 1031, 1032, 1033,  891,  686,  891,  891,  891,
    739      1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1042,
    740 
    741      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    742      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    743      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    744      1042, 1042, 1042, 1042, 1042, 1042, 1043, 1044, 1045, 1046,
    745      1047, 1048,  891, 1049, 1034, 1036, 1050, 1051, 1041, 1042,
    746      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    747      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    748      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    749      1042, 1052, 1053, 1046, 1054, 1047, 1055, 1048, 1056, 1057,
    750      1050, 1058, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    751 
    752      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    753      1042, 1042, 1042, 1059, 1052, 1060, 1053, 1061, 1054, 1062,
    754      1055, 1063, 1056, 1064, 1057, 1058, 1042, 1042, 1042, 1042,
    755      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    756      1042, 1042, 1042, 1065, 1059, 1060, 1061, 1062, 1036, 1063,
    757      1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    758      1042, 1042, 1042, 1042, 1065, 1036, 1042, 1042, 1042, 1042,
    759      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    760      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    761         0,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    762 
     668      891,  891,  887,  887,  887,  887,  887,  893,  887,  887,
     669      887,  894,  887,  887,  895,  887,  887,  896,  887,  887,
     670      887,  887,  887,  887,  887,  891,  887,  887,  887,  887,
     671      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     672
     673      897,  887,   99,   30,  887,  887,  887,  887,  898,   30,
     674      887,   31,  887,  887,   31,  887,  887,  887,  887,  887,
     675      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     676      887,  887,  887,  887,  887,  887,  887,  887,  887,  899,
     677      887,  887,  887,  887,  891,  900,  901,  887,  887,  891,
    763678      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    764679      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    765680      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    766681      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    767       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    768       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    769       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    770       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    771       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    772       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    773 
    774       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    775       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    776       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    777       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    778       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    779       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    780       891,  891,  891,  891,  891
     682      891,  891,  891,  891,  887,  887,  887,  893,  893,  893,
     683
     684      887,  893,  887,  894,  887,  902,  903,  895,  887,  887,
     685      887,  887,  904,  905,  906,  896,  887,  887,  887,  887,
     686      887,  887,  887,  887,  887,  887,  887,  887,  887,  907,
     687      908,  887,   99,  887,  887,  887,  887,   99,  909,  887,
     688      887,  104,  104,  887,  887,  887,  887,  887,  887,  887,
     689      887,  910,  911,  912,  887,  887,  887,  887,  887,  887,
     690      887,  887,  887,  887,  887,  887,  887,  887,  899,  887,
     691      913,  914,  915,  916,  917,  918,  887,  919,  919,  919,
     692      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     693      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     694
     695      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     696      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     697      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     698      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     699      919,  919,  919,  920,  921,  922,  923,  924,  925,  926,
     700      927,  887,  887,  928,  929,  930,  931,  932,  933,  887,
     701      887,  887,  887,  887,  934,  935,  936,  937,  887,  887,
     702      887,  887,  887,  887,  887,  371,  376,  887,  887,  938,
     703      939,  940,  887,  887,  887,  940,  887,  887,  887,  941,
     704      942,  943,  944,  945,  946,  947,  948,  949,  950,  887,
     705
     706      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     707      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     708      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     709      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     710      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     711      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     712      951,  951,  951,  951,  951,  951,  951,  952,  953,  954,
     713      955,  956,  957,  958,  959,  960,  887,  961,  962,  963,
     714      964,  965,  965,  966,  967,  968,  969,  887,  488,  887,
     715      970,  887,  970,  887,  887,  887,  887,  887,  887,  887,
     716
     717      887,  971,  972,  973,  974,  975,  976,  977,  978,  979,
     718      980,  981,  982,  983,  984,  984,  984,  984,  984,  984,
     719      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     720      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     721      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     722      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     723      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     724      984,  984,  984,  984,  984,  984,  985,  986,  987,  988,
     725      989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
     726      999, 1000, 1001,  887,  887,  887,  887, 1002,  887,  596,
     727
     728      887,  887,  887,  600,  887, 1003, 1004, 1005, 1006, 1007,
     729     1008, 1009, 1010, 1011, 1012, 1013, 1014, 1013, 1013, 1013,
     730     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     731     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     732     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     733     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     734     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1015,  887,
     735     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
     736      887, 1026, 1027, 1028, 1029,  887,  686,  887,  887,  887,
     737     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1038,
     738
     739     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     740     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     741     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     742     1038, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1041, 1042,
     743     1043, 1044,  887, 1045, 1030, 1032, 1046, 1047, 1037, 1038,
     744     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     745     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     746     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     747     1048, 1049, 1042, 1050, 1043, 1051, 1044, 1052, 1053, 1046,
     748     1054, 1047, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     749
     750     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     751     1038, 1055, 1048, 1056, 1049, 1057, 1050, 1058, 1051, 1059,
     752     1052, 1060, 1053, 1054, 1038, 1038, 1038, 1038, 1038, 1038,
     753     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     754     1061, 1055, 1056, 1057, 1058, 1032, 1059, 1060, 1038, 1038,
     755     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     756     1061, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     757     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     758     1038, 1038, 1038, 1038, 1038, 1038,    0,  887,  887,  887,
     759      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     760
     761      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     762      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     763      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     764      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     765      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     766      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     767      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     768      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     769      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     770      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     771
     772      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     773      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     774      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     775      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     776      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     777      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     778      887
    781779    } ;
    782780
    783 static yyconst flex_int16_t yy_nxt[2911] =
     781static yyconst flex_int16_t yy_nxt[2908] =
    784782    {   0,
    785783       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    806804
    807805       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
    808        95,   99,   99,   99,   99,   99,   99,  252,  891,   94,
     806       95,   99,   99,   99,   99,   99,   99,  252,  887,   94,
    809807      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
    810808       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     
    827825      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
    828826
    829       891,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     827      887,  264,  192,  197,   81,   82,   82,   82,  197,   87,
    830828      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
    831829       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
    832       891,  264,  209,  282,  211,  255,  263,  267,  264,  211,
    833        82,   81,   82,   82,   82,   82,   87,  891,  212,  212,
    834       212,  212,   82,   81,   83,   83,   83,   82,  891,  211,
     830      887,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     831       82,   81,   82,   82,   82,   82,   87,  887,  212,  212,
     832      212,  212,   82,   81,   83,   83,   83,   82,  887,  211,
    835833       99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
    836834      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
    837835       87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
    838        87,   87,  286,  241,  891,  211,   87,   87,  211,  243,
     836       87,   87,  286,  241,  887,  211,   87,   87,  211,  243,
    839837
    840838      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
    841839      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
    842        87,   87,  891,   87,  309,  300,   87,   87,  224,  225,
     840       87,   87,  887,   87,  309,  300,   87,   87,  224,  225,
    843841      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
    844842      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     
    887885       87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
    888886      457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
    889       459,  463,  465,  466,  344,  201,  201,   87,  891,  344,
     887      459,  463,  465,  466,  344,  201,  201,   87,  887,  344,
    890888      467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
    891889      352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
    892890      371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
    893       371,  371,  891,   87,  493,  494,  477,  488,  488,  488,
     891      371,  371,  887,   87,  493,  494,  477,  488,  488,  488,
    894892
    895893      488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
     
    898896      489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
    899897      237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
    900        87,  384,  375,  496,   87,  385,  522,  496,  497,  891,
     898       87,  384,  375,  496,   87,  385,  522,  496,  497,  887,
    901899      497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
    902900      525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
     
    921919      236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
    922920      597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
    923       631,  622,   87,   87,  625,  891,   87,  891,   87,  601,
     921      631,  622,   87,  887,  625,  887,   87,  862,   87,  601,
    924922      497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
    925923      498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
     
    928926      634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
    929927      637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
    930        87,   87,  866,   87,   87,   87,  638,   87,   87,  644,
     928       87,   87,  887,   87,   87,   87,  638,   87,   87,  644,
    931929      645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
    932930      651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
    933931      656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
    934932       87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
    935       666,  701,  702,  891,  891,   87,  667,  488,  488,  488,
     933      666,  701,  702,  887,  887,   87,  667,  488,  488,  488,
    936934      488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
    937935      688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
    938936
    939       600,  600,  600,  600,  600,  600,  703,  688,   87,  891,
     937      600,  600,  600,  600,  600,  600,  703,  688,   87,  887,
    940938      594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
    941939       87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
     
    946944      715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
    947945      727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
    948       726,   87,   87,   87,  728,  734,   87,  733,  730,   87,
    949 
    950       735,   87,   87,  729,   87,  863,  751,  736,  686,  686,
     946      726,   87,   87,  861,  728,  734,   87,  733,  730,   87,
     947
     948      735,   87,   87,  729,   87,   87,  751,  736,  686,  686,
    951949      686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
    952950      750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
     
    956954       87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
    957955       87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
    958        87,  780,   87,   87,  796,   87,  781,  773,  775,  777,
    959        87,   87,  798,  776,  778,  797,  779,  686,  686,  686,
    960 
    961       686,  686,  686,  794,   87,   87,   87,  795,  799,  802,
    962       804,   87,   87,   87,  805,  806,   87,  801,  803,  808,
    963       807,  800,   87,   87,   87,  809,   87,   87,   87,   87,
    964       743,   87,   87,   87,   87,  830,  832,   87,   87,  810,
    965       833,   87,  835,   87,   87,   87,  811,  829,  836,  812,
    966       813,   87,  828,  840,  838,  827,  831,   87,   87,  834,
    967       839,   87,   87,   87,   87,  837,   87,   87,   87,  854,
    968        87,  853,  842,   87,  841,   87,  855,   87,  843,   87,
    969       858,   87,  860,   87,  852,  870,  861,   87,  856,   87,
    970       859,   87,   87,   87,  857,   87,  862,  868,  864,   87,
    971 
    972       867,   87,  869,  881,   87,   87,  871,  872,  873,   87,
    973       876,   87,  874,  875,  877,   87,   87,   87,   87,  879,
    974       880,   87,   87,   87,   87,  878,   87,   87,   87,  891,
    975        87,  884,  865,   87,   87,   87,  883,  885,   87,  882,
    976       890,   87,  891,  891,  851,  886,  888,  887,  891,  889,
     956       87,  779,   87,   87,  795,   87,  780,  773,   87,   87,
     957      776,   87,  775,  803,  777,  796,  778,  686,  686,  686,
     958
     959      686,  686,  686,  793,   87,  794,  799,   87,  798,   87,
     960      801,   87,   87,   87,  797,  804,  805,  800,  806,   87,
     961       87,   87,  802,  807,   87,   87,   87,  808,   87,   87,
     962      743,   87,   87,   87,  809,  828,   87,   87,   87,  830,
     963      831,  833,   87,   87,   87,  834,   87,  836,  810,  811,
     964      826,  827,   87,  829,   87,  825,  832,  837,   87,   87,
     965       87,  838,  839,   87,   87,  835,   87,   87,   87,  851,
     966      850,  855,   87,  852,  840,   87,   87,   87,  853,  857,
     967      849,   87,   87,   87,  854,  858,  859,   87,   87,  856,
     968      860,   87,  863,  864,  865,   87,   87,  866,   87,  868,
     969
     970      867,  869,   87,   87,   87,  870,   87,   87,   87,  873,
     971       87,  875,   87,  876,   87,   87,   87,  874,   87,  872,
     972       87,   87,   87,  871,   87,  880,   87,   87,   87,  887,
     973      879,  881,  887,  848,  877,  878,  886,  887,  847,  884,
     974      887,  845,  882,  883,  887,  844,  885,   69,   69,   69,
    977975       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
    978        69,   69,   69,   75,   75,   75,   75,   75,   75,   75,
    979        75,   75,   75,   75,   75,   75,   78,   78,   78,   78,
    980        78,   78,   78,   78,   78,   78,   78,   78,   78,   86,
    981       850,  891,   86,  848,   86,   86,   86,   86,   86,  140,
    982 
    983       891,  847,  891,  140,  140,  140,  140,  140,  140,  199,
    984       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
    985       199,  199,  204,  846,  891,  204,  845,  204,  204,  204,
    986       204,  204,  208,   87,  208,  208,   87,  208,  208,  208,
    987       208,  208,  208,   87,  208,  216,  891,  826,  216,  216,
    988       216,  216,  216,  216,  216,  216,  891,  216,  239,  239,
     976       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
     977       75,   75,   75,   78,   78,   78,   78,   78,   78,   78,
     978       78,   78,   78,   78,   78,   78,   86,  887,  843,   86,
     979      887,   86,   86,   86,   86,   86,  140,  842,   87,   87,
     980
     981      140,  140,  140,  140,  140,  140,  199,  199,  199,  199,
     982      199,  199,  199,  199,  199,  199,  199,  199,  199,  204,
     983       87,  887,  204,  824,  204,  204,  204,  204,  204,  208,
     984      887,  208,  208,  823,  208,  208,  208,  208,  208,  208,
     985      821,  208,  216,  887,  819,  216,  216,  216,  216,  216,
     986      216,  216,  216,  887,  216,  239,  239,  239,  239,  239,
     987      239,  239,  239,  239,  239,  239,  239,  239,  253,  253,
     988      817,  253,  887,  815,  813,  253,  269,   87,   87,  269,
     989       87,  269,  269,  269,  269,  269,  273,   87,  273,   87,
     990       87,   87,  273,  275,   87,  275,   87,   87,   87,  275,
     991
     992      348,   87,  348,  887,  792,  790,  348,  350,  887,  350,
     993      887,  787,  785,  350,  354,  783,  354,   87,   87,   87,
     994      354,  356,   87,  356,   87,   87,   87,  356,  358,  749,
     995      358,  746,  745,  743,  358,  365,  205,  365,  739,  738,
     996      670,  365,  367,   87,  367,   87,   87,   87,  367,  239,
    989997      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
    990       239,  253,  253,  825,  253,  823,  891,  821,  253,  269,
    991       891,  819,  269,  891,  269,  269,  269,  269,  269,  273,
    992       817,  273,  815,   87,   87,  273,  275,   87,  275,   87,
    993 
    994        87,   87,  275,  348,   87,  348,   87,   87,   87,  348,
    995       350,   87,  350,   87,  891,  793,  350,  354,  791,  354,
    996       891,  891,  788,  354,  356,  786,  356,  784,   87,   87,
    997       356,  358,   87,  358,   87,   87,   87,  358,  365,   87,
    998       365,  749,  746,  745,  365,  367,  743,  367,  205,  739,
    999       738,  367,  239,  239,  239,  239,  239,  239,  239,  239,
    1000       239,  239,  239,  239,  239,  380,  670,  380,  382,  382,
    1001        87,  382,  382,  382,   87,  382,  253,  253,   87,  253,
    1002       392,   87,  392,   87,   87,   87,  392,  394,   87,  394,
    1003        87,   87,   87,  394,  396,   87,  396,   87,   87,   87,
    1004 
    1005       396,  273,  697,  273,  398,  696,  398,  694,  692,  690,
    1006       398,  275,  598,  275,   86,  685,  684,   86,  682,   86,
    1007        86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
    1008       199,  199,  199,  199,  199,  199,  199,  468,  468,  468,
     998      239,  239,  380,   87,  380,  382,  382,   87,  382,  382,
     999      382,   87,  382,  253,  253,   87,  253,  392,   87,  392,
     1000       87,   87,   87,  392,  394,   87,  394,   87,   87,  697,
     1001      394,  396,  696,  396,  694,  692,  690,  396,  273,  598,
     1002
     1003      273,  398,  685,  398,  684,  682,  680,  398,  275,  678,
     1004      275,   86,  676,  674,   86,  672,   86,   86,   86,   86,
     1005       86,  199,  199,  199,  199,  199,  199,  199,  199,  199,
     1006      199,  199,  199,  199,  468,  468,  468,  468,  468,  468,
     1007      468,  468,  468,  468,  468,  468,  468,  469,  670,  469,
     1008       87,   87,   87,  469,  471,   87,  471,   87,   87,   87,
     1009      471,  473,   87,  473,   87,   87,   87,  473,  348,  617,
     1010      348,  475,  615,  475,  613,  611,  609,  475,  350,  607,
     1011      350,  478,  502,  478,  605,  605,  594,  478,  354,  593,
     1012      354,  480,  591,  480,  483,  483,  589,  480,  356,  587,
     1013
     1014      356,  482,  585,  482,  583,  581,  579,  482,  358,   87,
     1015      358,  484,   87,  484,   87,   87,   87,  484,  365,   87,
     1016      365,  486,   87,  486,   87,  514,  512,  486,  367,  510,
     1017      367,  491,  508,  491,  506,  491,  504,  491,  380,  490,
     1018      380,  487,  380,  485,  380,  382,  382,  361,  382,  382,
     1019      382,  361,  382,  503,  483,  503,  481,  479,  476,  503,
     1020      505,  474,  505,  472,  470,   87,  505,  507,   87,  507,
     1021       87,  400,  399,  507,  392,  397,  392,  509,  395,  509,
     1022      393,  270,  265,  509,  394,  264,  394,  511,  389,  511,
     1023      389,  252,  379,  511,  396,  379,  396,  513,  240,  513,
     1024
     1025      374,  368,  366,  513,  398,  364,  398,   86,  360,  359,
     1026       86,  357,   86,   86,   86,   86,   86,  468,  468,  468,
    10091027      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1010       469,  680,  469,  678,  676,  674,  469,  471,  672,  471,
    1011       670,   87,   87,  471,  473,   87,  473,   87,   87,   87,
    1012       473,  348,   87,  348,  475,   87,  475,   87,   87,   87,
    1013       475,  350,  617,  350,  478,  615,  478,  613,  611,  609,
    1014       478,  354,  607,  354,  480,  502,  480,  605,  605,  594,
    1015 
    1016       480,  356,  593,  356,  482,  591,  482,  483,  483,  589,
    1017       482,  358,  587,  358,  484,  585,  484,  583,  581,  579,
    1018       484,  365,   87,  365,  486,   87,  486,   87,   87,   87,
    1019       486,  367,   87,  367,  491,   87,  491,   87,  491,  514,
    1020       491,  380,  512,  380,  510,  380,  508,  380,  382,  382,
    1021       506,  382,  382,  382,  504,  382,  503,  490,  503,  487,
    1022       485,  361,  503,  505,  361,  505,  483,  481,  479,  505,
    1023       507,  476,  507,  474,  472,  470,  507,  392,   87,  392,
    1024       509,   87,  509,   87,  400,  399,  509,  394,  397,  394,
    1025       511,  395,  511,  393,  270,  265,  511,  396,  264,  396,
    1026 
    1027       513,  389,  513,  389,  252,  379,  513,  398,  379,  398,
    1028        86,  240,  374,   86,  368,   86,   86,   86,   86,   86,
    1029       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1030       468,  468,  468,  578,  366,  578,  364,  360,  359,  578,
    1031       469,  357,  469,  580,  355,  580,  351,  349,  205,  580,
    1032       471,  201,  471,  582,   87,  582,  277,  276,  274,  582,
    1033       473,  270,  473,  584,  265,  584,  268,  265,  263,  584,
    1034       475,  262,  475,  586,  261,  586,  240,  232,   85,  586,
    1035       478,   85,  478,  588,   87,  588,  205,  203,   85,  588,
    1036       480,  122,  480,  482,  117,  482,   87,  891,   70,  482,
    1037 
    1038       590,   70,  590,  891,  891,  891,  590,  484,  891,  484,
    1039       592,  891,  592,  891,  891,  891,  592,  486,  891,  486,
    1040       491,  891,  491,  891,  491,  891,  491,  382,  891,  382,
    1041       891,  891,  891,  382,  606,  891,  606,  891,  891,  891,
    1042       606,  503,  891,  503,  608,  891,  608,  891,  891,  891,
    1043       608,  505,  891,  505,  610,  891,  610,  891,  891,  891,
    1044       610,  507,  891,  507,  612,  891,  612,  891,  891,  891,
    1045       612,  509,  891,  509,  614,  891,  614,  891,  891,  891,
    1046       614,  511,  891,  511,  616,  891,  616,  891,  891,  891,
    1047       616,  513,  891,  513,   86,  891,  891,   86,  891,   86,
    1048 
    1049        86,   86,   86,   86,  669,  669,  669,  669,  669,  669,
    1050       669,  669,  669,  669,  669,  669,  669,  671,  891,  671,
    1051       891,  891,  891,  671,  578,  891,  578,  673,  891,  673,
    1052       891,  891,  891,  673,  580,  891,  580,  675,  891,  675,
    1053       891,  891,  891,  675,  582,  891,  582,  677,  891,  677,
    1054       891,  891,  891,  677,  584,  891,  584,  679,  891,  679,
    1055       891,  891,  891,  679,  586,  891,  586,  681,  891,  681,
    1056       891,  891,  891,  681,  588,  891,  588,  683,  891,  683,
    1057       891,  891,  891,  683,  590,  891,  590,   86,  891,   86,
    1058       891,  891,  891,   86,  592,  891,  592,  491,  891,  491,
    1059 
    1060       891,  891,  891,  491,  691,  891,  691,  891,  891,  891,
    1061       691,  606,  891,  606,  693,  891,  693,  891,  891,  891,
    1062       693,  608,  891,  608,  695,  891,  695,  891,  891,  891,
    1063       695,  610,  891,  610,  140,  891,  140,  891,  891,  891,
    1064       140,  612,  891,  612,  698,  891,  698,  614,  891,  614,
    1065        86,  891,  891,   86,  891,   86,   86,   86,   86,   86,
    1066       616,  891,  616,  669,  669,  669,  669,  669,  669,  669,
    1067       669,  669,  669,  669,  669,  669,  737,  891,  737,  891,
    1068       891,  891,  737,  671,  891,  671,  204,  891,  204,  891,
    1069       891,  891,  204,  673,  891,  673,  740,  891,  740,  675,
    1070 
    1071       891,  675,  204,  891,  891,  204,  891,  204,  204,  204,
    1072       204,  204,  677,  891,  677,  741,  891,  741,  679,  891,
    1073       679,  681,  891,  681,  742,  891,  742,  683,  891,  683,
    1074        86,  891,   86,  744,  891,  744,  891,  891,  891,  744,
    1075       691,  891,  691,  269,  891,  269,  891,  891,  891,  269,
    1076       693,  891,  693,  747,  891,  747,  695,  891,  695,  140,
    1077       891,  140,  748,  891,  748,  891,  891,  891,  748,   86,
    1078       891,  891,   86,  891,   86,   86,   86,   86,   86,  782,
    1079       891,  782,  737,  891,  737,  204,  891,  204,  783,  891,
    1080       783,  891,  891,  891,  783,  785,  891,  785,  891,  891,
    1081 
    1082       891,  785,  787,  891,  787,  891,  891,  891,  787,  789,
    1083       891,  789,  790,  891,  790,  891,  891,  891,  790,  792,
    1084       891,  792,  891,  891,  891,  792,  814,  891,  814,  891,
    1085       891,  891,  814,  816,  891,  816,  891,  891,  891,  816,
    1086       818,  891,  818,  891,  891,  891,  818,  820,  891,  820,
    1087       891,  891,  891,  820,  822,  891,  822,  891,  891,  891,
    1088       822,  824,  891,  824,  891,  891,  891,  824,  616,  891,
    1089       616,  891,  891,  891,  616,  844,  891,  844,  891,  891,
    1090       891,  844,  677,  891,  677,  891,  891,  891,  677,  681,
    1091       891,  681,  891,  891,  891,  681,   86,  891,   86,  891,
    1092 
    1093       891,  891,   86,  849,  891,  849,  891,  891,  891,  849,
    1094       140,  891,  140,  891,  891,  891,  140,  204,  891,  204,
    1095       891,  891,  891,  204,   11,  891,  891,  891,  891,  891,
    1096       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1097       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1098       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1099       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1100       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1101       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1102       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1103 
    1104       891,  891,  891,  891,  891,  891,  891,  891,  891,  891
     1028      578,  355,  578,  351,  349,  205,  578,  469,  201,  469,
     1029      580,   87,  580,  277,  276,  274,  580,  471,  270,  471,
     1030      582,  265,  582,  268,  265,  263,  582,  473,  262,  473,
     1031      584,  261,  584,  240,  232,   85,  584,  475,   85,  475,
     1032      586,   87,  586,  205,  203,   85,  586,  478,  122,  478,
     1033      588,  117,  588,   87,  887,   70,  588,  480,   70,  480,
     1034      482,  887,  482,  887,  887,  887,  482,  590,  887,  590,
     1035
     1036      887,  887,  887,  590,  484,  887,  484,  592,  887,  592,
     1037      887,  887,  887,  592,  486,  887,  486,  491,  887,  491,
     1038      887,  491,  887,  491,  382,  887,  382,  887,  887,  887,
     1039      382,  606,  887,  606,  887,  887,  887,  606,  503,  887,
     1040      503,  608,  887,  608,  887,  887,  887,  608,  505,  887,
     1041      505,  610,  887,  610,  887,  887,  887,  610,  507,  887,
     1042      507,  612,  887,  612,  887,  887,  887,  612,  509,  887,
     1043      509,  614,  887,  614,  887,  887,  887,  614,  511,  887,
     1044      511,  616,  887,  616,  887,  887,  887,  616,  513,  887,
     1045      513,   86,  887,  887,   86,  887,   86,   86,   86,   86,
     1046
     1047       86,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1048      669,  669,  669,  669,  671,  887,  671,  887,  887,  887,
     1049      671,  578,  887,  578,  673,  887,  673,  887,  887,  887,
     1050      673,  580,  887,  580,  675,  887,  675,  887,  887,  887,
     1051      675,  582,  887,  582,  677,  887,  677,  887,  887,  887,
     1052      677,  584,  887,  584,  679,  887,  679,  887,  887,  887,
     1053      679,  586,  887,  586,  681,  887,  681,  887,  887,  887,
     1054      681,  588,  887,  588,  683,  887,  683,  887,  887,  887,
     1055      683,  590,  887,  590,   86,  887,   86,  887,  887,  887,
     1056       86,  592,  887,  592,  491,  887,  491,  887,  887,  887,
     1057
     1058      491,  691,  887,  691,  887,  887,  887,  691,  606,  887,
     1059      606,  693,  887,  693,  887,  887,  887,  693,  608,  887,
     1060      608,  695,  887,  695,  887,  887,  887,  695,  610,  887,
     1061      610,  140,  887,  140,  887,  887,  887,  140,  612,  887,
     1062      612,  698,  887,  698,  614,  887,  614,   86,  887,  887,
     1063       86,  887,   86,   86,   86,   86,   86,  616,  887,  616,
     1064      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1065      669,  669,  669,  737,  887,  737,  887,  887,  887,  737,
     1066      671,  887,  671,  204,  887,  204,  887,  887,  887,  204,
     1067      673,  887,  673,  740,  887,  740,  675,  887,  675,  204,
     1068
     1069      887,  887,  204,  887,  204,  204,  204,  204,  204,  677,
     1070      887,  677,  741,  887,  741,  679,  887,  679,  681,  887,
     1071      681,  742,  887,  742,  683,  887,  683,   86,  887,   86,
     1072      744,  887,  744,  887,  887,  887,  744,  691,  887,  691,
     1073      269,  887,  269,  887,  887,  887,  269,  693,  887,  693,
     1074      747,  887,  747,  695,  887,  695,  140,  887,  140,  748,
     1075      887,  748,  887,  887,  887,  748,   86,  887,  887,   86,
     1076      887,   86,   86,   86,   86,   86,  781,  887,  781,  737,
     1077      887,  737,  204,  887,  204,  782,  887,  782,  887,  887,
     1078      887,  782,  784,  887,  784,  887,  887,  887,  784,  786,
     1079
     1080      887,  786,  887,  887,  887,  786,  788,  887,  788,  789,
     1081      887,  789,  887,  887,  887,  789,  791,  887,  791,  887,
     1082      887,  887,  791,  812,  887,  812,  887,  887,  887,  812,
     1083      814,  887,  814,  887,  887,  887,  814,  816,  887,  816,
     1084      887,  887,  887,  816,  818,  887,  818,  887,  887,  887,
     1085      818,  820,  887,  820,  887,  887,  887,  820,  822,  887,
     1086      822,  887,  887,  887,  822,  616,  887,  616,  887,  887,
     1087      887,  616,  841,  887,  841,  887,  887,  887,  841,  677,
     1088      887,  677,  887,  887,  887,  677,  681,  887,  681,  887,
     1089      887,  887,  681,   86,  887,   86,  887,  887,  887,   86,
     1090
     1091      846,  887,  846,  887,  887,  887,  846,  140,  887,  140,
     1092      887,  887,  887,  140,  204,  887,  204,  887,  887,  887,
     1093      204,   11,  887,  887,  887,  887,  887,  887,  887,  887,
     1094      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1095      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1096      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1097      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1098      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1099      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1100      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1101
     1102      887,  887,  887,  887,  887,  887,  887
    11051103    } ;
    11061104
    1107 static yyconst flex_int16_t yy_chk[2911] =
     1105static yyconst flex_int16_t yy_chk[2908] =
    11081106    {   0,
    11091107        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11261124        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11271125        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1128         8,    9,   10,   37,   37,   20,   39,    9,   10,  890,
     1126        8,    9,   10,   37,   37,   20,   39,    9,   10,  886,
    11291127        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11301128
     
    11371135       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    11381136       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
    1139        62,   45,   49,   30,   73,  889,  127,   53,  127,   51,
     1137       62,   45,   49,   30,   73,  885,  127,   53,  127,   51,
    11401138       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
    11411139
     
    11511149      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
    11521150
    1153       110,  131,   60,   67,   67,   67,   67,   67,   67,  881,
     1151      110,  131,   60,   67,   67,   67,   67,   67,   67,  877,
    11541152      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
    11551153       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
    11561154      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
    1157        82,   82,   82,   82,   82,   82,  880,  243,   77,   77,
     1155       82,   82,   82,   82,   82,   82,  876,  243,   77,   77,
    11581156       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
    11591157      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
     
    11651163       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
    11661164      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
    1167        85,  105,  163,  105,  105,  105,  105,  105,  105,  877,
     1165       85,  105,  163,  105,  105,  105,  105,  105,  105,  873,
    11681166      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
    11691167      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     
    11781176      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
    11791177      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
    1180       220,  191,  198,  198,  191,  192,  205,  198,  193,  876,
     1178      220,  191,  198,  198,  191,  192,  205,  198,  193,  872,
    11811179      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
    11821180      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
     
    11951193      245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
    11961194
    1197       308,  244,  300,  306,  874,  294,  308,  244,  246,  246,
     1195      308,  244,  300,  306,  870,  294,  308,  244,  246,  246,
    11981196      246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
    11991197      255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
    12001198      247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
    1201       873,  246,  289,  253,  287,  287,  246,  292,  246,  253,
     1199      869,  246,  289,  253,  287,  287,  246,  292,  246,  253,
    12021200      255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
    12031201      289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
     
    12111209      335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
    12121210      331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
    1213       333,  339,  341,  342,  344,  344,  345,  460,  866,  344,
     1211      333,  339,  341,  342,  344,  344,  345,  460,  862,  344,
    12141212      343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
    12151213      353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
    12161214      370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
    1217       372,  372,  865,  402,  380,  381,  352,  371,  371,  371,
     1215      372,  372,  861,  402,  380,  381,  352,  371,  371,  371,
    12181216
    12191217      371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
    1220       380,  381,  403,  371,  404,  371,  864,  371,  371,  375,
     1218      380,  381,  403,  371,  404,  371,  860,  371,  371,  375,
    12211219      375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
    12221220      371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
     
    12351233      450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
    12361234      459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
    1237       457,  453,  466,  456,  464,  467,  462,  525,  863,  463,
     1235      457,  453,  466,  456,  464,  467,  462,  525,  859,  463,
    12381236      525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
    12391237      477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
     
    12411239      488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
    12421240      515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
    1243       492,  492,  492,  494,  516,  495,  493,  519,  488,  862,
    1244       858,  521,  518,  488,  490,  488,  493,  516,  488,  529,
     1241      492,  492,  492,  494,  516,  495,  493,  519,  488,  855,
     1242      851,  521,  518,  488,  490,  488,  493,  516,  488,  529,
    12451243      488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
    12461244      492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
    1247       529,  520,  526,  854,  523,  851,  528,  850,  522,  498,
     1245      529,  520,  526,  848,  523,  847,  528,  846,  522,  498,
    12481246      499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
    12491247      499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
     
    12521250      532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
    12531251      535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
    1254       550,  551,  849,  549,  534,  552,  536,  554,  560,  544,
     1252      550,  551,  845,  549,  534,  552,  536,  554,  560,  544,
    12551253      545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
    12561254      552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
    12571255      560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
    12581256      572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
    1259       572,  619,  620,  848,  847,  622,  574,  594,  594,  594,
     1257      572,  619,  620,  844,  843,  622,  574,  594,  594,  594,
    12601258      594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
    12611259      601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
    12621260
    1263       600,  600,  600,  600,  600,  600,  621,  602,  626,  846,
     1261      600,  600,  600,  600,  600,  600,  621,  602,  626,  842,
    12641262      594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
    12651263      623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
     
    12701268      633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
    12711269      646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
    1272       645,  667,  668,  842,  650,  665,  700,  664,  653,  699,
    1273 
    1274       667,  702,  705,  651,  714,  842,  700,  668,  686,  686,
     1270      645,  667,  668,  841,  650,  665,  700,  664,  653,  699,
     1271
     1272      667,  702,  705,  651,  714,  837,  700,  668,  686,  686,
    12751273      686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
    12761274      699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
     
    12781276      712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
    12791277      720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
    1280       721,  719,  715,  720,  722,  723,  724,  725,  721,  731,
    1281       728,  718,  732,  735,  722,  733,  725,  736,  723,  756,
    1282       757,  735,  758,  754,  756,  759,  736,  724,  728,  731,
    1283       755,  761,  758,  728,  732,  757,  733,  743,  743,  743,
    1284 
    1285       743,  743,  743,  754,  760,  763,  762,  755,  759,  762,
    1286       764,  766,  768,  769,  766,  768,  770,  761,  763,  770,
    1287       769,  760,  771,  773,  772,  771,  775,  779,  794,  797,
    1288       743,  796,  798,  800,  799,  798,  800,  801,  764,  772,
    1289       801,  803,  804,  807,  810,  805,  773,  797,  805,  775,
    1290       779,  808,  796,  810,  808,  794,  799,  809,  811,  803,
    1291       809,  812,  813,  828,  829,  807,  830,  831,  804,  830,
    1292       832,  829,  812,  834,  811,  856,  831,  833,  813,  837,
    1293       833,  875,  837,  840,  828,  856,  840,  841,  832,  843,
    1294       834,  852,  853,  867,  832,  868,  841,  853,  843,  855,
    1295 
    1296       852,  857,  855,  875,  859,  860,  857,  859,  860,  861,
    1297       868,  869,  861,  867,  869,  870,  871,  872,  878,  871,
    1298       872,  879,  882,  884,  883,  870,  885,  887,  886,  845,
    1299       888,  882,  844,  839,  838,  836,  879,  883,  835,  878,
    1300       888,  827,  826,  825,  824,  884,  886,  885,  823,  887,
    1301       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    1302       892,  892,  892,  893,  893,  893,  893,  893,  893,  893,
    1303       893,  893,  893,  893,  893,  893,  894,  894,  894,  894,
    1304       894,  894,  894,  894,  894,  894,  894,  894,  894,  895,
    1305       822,  821,  895,  820,  895,  895,  895,  895,  895,  896,
    1306 
    1307       819,  818,  817,  896,  896,  896,  896,  896,  896,  897,
    1308       897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
    1309       897,  897,  898,  816,  815,  898,  814,  898,  898,  898,
    1310       898,  898,  899,  806,  899,  899,  802,  899,  899,  899,
    1311       899,  899,  899,  795,  899,  900,  793,  792,  900,  900,
    1312       900,  900,  900,  900,  900,  900,  791,  900,  901,  901,
    1313       901,  901,  901,  901,  901,  901,  901,  901,  901,  901,
    1314       901,  902,  902,  790,  902,  789,  788,  787,  902,  903,
    1315       786,  785,  903,  784,  903,  903,  903,  903,  903,  904,
    1316       783,  904,  782,  781,  780,  904,  905,  778,  905,  777,
    1317 
    1318       776,  774,  905,  906,  767,  906,  765,  753,  752,  906,
    1319       907,  751,  907,  750,  749,  748,  907,  908,  747,  908,
    1320       746,  745,  742,  908,  909,  741,  909,  740,  734,  730,
    1321       909,  910,  729,  910,  727,  726,  709,  910,  911,  701,
    1322       911,  698,  693,  691,  911,  912,  687,  912,  677,  673,
    1323       671,  912,  913,  913,  913,  913,  913,  913,  913,  913,
    1324       913,  913,  913,  913,  913,  914,  669,  914,  915,  915,
    1325       666,  915,  915,  915,  663,  915,  916,  916,  662,  916,
    1326       917,  661,  917,  660,  659,  658,  917,  918,  655,  918,
    1327       654,  652,  649,  918,  919,  648,  919,  647,  643,  616,
    1328 
    1329       919,  920,  612,  920,  921,  610,  921,  608,  606,  604,
    1330       921,  922,  598,  922,  923,  592,  590,  923,  588,  923,
    1331       923,  923,  923,  923,  924,  924,  924,  924,  924,  924,
    1332       924,  924,  924,  924,  924,  924,  924,  925,  925,  925,
    1333       925,  925,  925,  925,  925,  925,  925,  925,  925,  925,
    1334       926,  586,  926,  584,  582,  580,  926,  927,  578,  927,
    1335       577,  576,  573,  927,  928,  570,  928,  563,  559,  556,
    1336       928,  929,  553,  929,  930,  548,  930,  543,  540,  517,
    1337       930,  931,  513,  931,  932,  511,  932,  509,  507,  505,
    1338       932,  933,  503,  933,  934,  502,  934,  501,  500,  489,
    1339 
    1340       934,  935,  486,  935,  936,  484,  936,  483,  482,  480,
    1341       936,  937,  478,  937,  938,  475,  938,  473,  471,  469,
    1342       938,  939,  465,  939,  940,  448,  940,  446,  438,  436,
    1343       940,  941,  428,  941,  942,  426,  942,  424,  942,  398,
    1344       942,  943,  396,  943,  394,  943,  392,  943,  944,  944,
    1345       391,  944,  944,  944,  390,  944,  945,  377,  945,  367,
    1346       365,  364,  945,  946,  360,  946,  358,  356,  354,  946,
    1347       947,  350,  947,  348,  347,  346,  947,  948,  336,  948,
    1348       949,  321,  949,  298,  277,  275,  949,  950,  273,  950,
    1349       951,  272,  951,  271,  269,  268,  951,  952,  263,  952,
    1350 
    1351       953,  259,  953,  258,  254,  251,  953,  954,  250,  954,
    1352       955,  239,  238,  955,  231,  955,  955,  955,  955,  955,
    1353       956,  956,  956,  956,  956,  956,  956,  956,  956,  956,
    1354       956,  956,  956,  957,  230,  957,  227,  217,  215,  957,
    1355       958,  214,  958,  959,  213,  959,  207,  206,  204,  959,
    1356       960,  199,  960,  961,  178,  961,  149,  147,  146,  961,
    1357       962,  140,  962,  963,  138,  963,  136,  128,  125,  963,
    1358       964,  124,  964,  965,  120,  965,  101,   98,   95,  965,
    1359       966,   93,  966,  967,   86,  967,   72,   70,   66,  967,
    1360       968,   36,  968,  969,   33,  969,   18,   11,    4,  969,
    1361 
    1362       970,    3,  970,    0,    0,    0,  970,  971,    0,  971,
    1363       972,    0,  972,    0,    0,    0,  972,  973,    0,  973,
    1364       974,    0,  974,    0,  974,    0,  974,  975,    0,  975,
    1365         0,    0,    0,  975,  976,    0,  976,    0,    0,    0,
    1366       976,  977,    0,  977,  978,    0,  978,    0,    0,    0,
    1367       978,  979,    0,  979,  980,    0,  980,    0,    0,    0,
    1368       980,  981,    0,  981,  982,    0,  982,    0,    0,    0,
    1369       982,  983,    0,  983,  984,    0,  984,    0,    0,    0,
    1370       984,  985,    0,  985,  986,    0,  986,    0,    0,    0,
    1371       986,  987,    0,  987,  988,    0,    0,  988,    0,  988,
    1372 
    1373       988,  988,  988,  988,  989,  989,  989,  989,  989,  989,
    1374       989,  989,  989,  989,  989,  989,  989,  990,    0,  990,
    1375         0,    0,    0,  990,  991,    0,  991,  992,    0,  992,
    1376         0,    0,    0,  992,  993,    0,  993,  994,    0,  994,
    1377         0,    0,    0,  994,  995,    0,  995,  996,    0,  996,
    1378         0,    0,    0,  996,  997,    0,  997,  998,    0,  998,
    1379         0,    0,    0,  998,  999,    0,  999, 1000,    0, 1000,
    1380         0,    0,    0, 1000, 1001,    0, 1001, 1002,    0, 1002,
    1381         0,    0,    0, 1002, 1003,    0, 1003, 1004,    0, 1004,
    1382         0,    0,    0, 1004, 1005,    0, 1005, 1006,    0, 1006,
    1383 
    1384         0,    0,    0, 1006, 1007,    0, 1007,    0,    0,    0,
    1385      1007, 1008,    0, 1008, 1009,    0, 1009,    0,    0,    0,
    1386      1009, 1010,    0, 1010, 1011,    0, 1011,    0,    0,    0,
    1387      1011, 1012,    0, 1012, 1013,    0, 1013,    0,    0,    0,
    1388      1013, 1014,    0, 1014, 1015,    0, 1015, 1016,    0, 1016,
    1389      1017,    0,    0, 1017,    0, 1017, 1017, 1017, 1017, 1017,
    1390      1018,    0, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
    1391      1019, 1019, 1019, 1019, 1019, 1019, 1020,    0, 1020,    0,
    1392         0,    0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,
    1393         0,    0, 1022, 1023,    0, 1023, 1024,    0, 1024, 1025,
    1394 
    1395         0, 1025, 1026,    0,    0, 1026,    0, 1026, 1026, 1026,
    1396      1026, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
    1397      1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0, 1032,
    1398      1033,    0, 1033, 1034,    0, 1034,    0,    0,    0, 1034,
    1399      1035,    0, 1035, 1036,    0, 1036,    0,    0,    0, 1036,
    1400      1037,    0, 1037, 1038,    0, 1038, 1039,    0, 1039, 1040,
    1401         0, 1040, 1041,    0, 1041,    0,    0,    0, 1041, 1042,
    1402         0,    0, 1042,    0, 1042, 1042, 1042, 1042, 1042, 1043,
    1403         0, 1043, 1044,    0, 1044, 1045,    0, 1045, 1046,    0,
    1404      1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,    0,
    1405 
    1406         0, 1047, 1048,    0, 1048,    0,    0,    0, 1048, 1049,
    1407         0, 1049, 1050,    0, 1050,    0,    0,    0, 1050, 1051,
    1408         0, 1051,    0,    0,    0, 1051, 1052,    0, 1052,    0,
    1409         0,    0, 1052, 1053,    0, 1053,    0,    0,    0, 1053,
    1410      1054,    0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,
    1411         0,    0,    0, 1055, 1056,    0, 1056,    0,    0,    0,
    1412      1056, 1057,    0, 1057,    0,    0,    0, 1057, 1058,    0,
    1413      1058,    0,    0,    0, 1058, 1059,    0, 1059,    0,    0,
    1414         0, 1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,
    1415         0, 1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,
    1416 
    1417         0,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
    1418      1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
    1419         0,    0,    0, 1065,  891,  891,  891,  891,  891,  891,
    1420       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1421       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1422       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1423       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1424       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1425       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1426       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1427 
    1428       891,  891,  891,  891,  891,  891,  891,  891,  891,  891
     1278      721,  719,  715,  720,  722,  723,  724,  725,  721,  728,
     1279      731,  718,  732,  735,  722,  733,  725,  736,  723,  756,
     1280      757,  735,  836,  754,  756,  759,  736,  724,  755,  760,
     1281      731,  761,  728,  764,  732,  757,  733,  743,  743,  743,
     1282
     1283      743,  743,  743,  754,  758,  755,  760,  762,  759,  763,
     1284      762,  769,  766,  768,  758,  766,  768,  761,  769,  772,
     1285      770,  764,  763,  770,  771,  773,  778,  771,  793,  795,
     1286      743,  798,  797,  796,  772,  797,  799,  800,  802,  799,
     1287      800,  803,  804,  806,  807,  804,  810,  807,  773,  778,
     1288      795,  796,  809,  798,  808,  793,  802,  808,  811,  826,
     1289      830,  809,  810,  827,  829,  806,  828,  803,  831,  828,
     1290      827,  831,  832,  829,  811,  834,  835,  839,  830,  835,
     1291      826,  840,  838,  849,  830,  838,  839,  853,  850,  832,
     1292      840,  852,  849,  850,  852,  854,  856,  853,  857,  856,
     1293
     1294      854,  857,  858,  863,  864,  858,  865,  866,  867,  865,
     1295      868,  867,  871,  868,  874,  875,  878,  866,  879,  864,
     1296      880,  882,  881,  863,  883,  878,  884,  833,  825,  824,
     1297      875,  879,  823,  822,  871,  874,  884,  821,  820,  882,
     1298      819,  818,  880,  881,  817,  816,  883,  888,  888,  888,
     1299      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1300      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     1301      889,  889,  889,  890,  890,  890,  890,  890,  890,  890,
     1302      890,  890,  890,  890,  890,  890,  891,  815,  814,  891,
     1303      813,  891,  891,  891,  891,  891,  892,  812,  805,  801,
     1304
     1305      892,  892,  892,  892,  892,  892,  893,  893,  893,  893,
     1306      893,  893,  893,  893,  893,  893,  893,  893,  893,  894,
     1307      794,  792,  894,  791,  894,  894,  894,  894,  894,  895,
     1308      790,  895,  895,  789,  895,  895,  895,  895,  895,  895,
     1309      788,  895,  896,  787,  786,  896,  896,  896,  896,  896,
     1310      896,  896,  896,  785,  896,  897,  897,  897,  897,  897,
     1311      897,  897,  897,  897,  897,  897,  897,  897,  898,  898,
     1312      784,  898,  783,  782,  781,  898,  899,  780,  779,  899,
     1313      777,  899,  899,  899,  899,  899,  900,  776,  900,  775,
     1314      774,  767,  900,  901,  765,  901,  753,  752,  751,  901,
     1315
     1316      902,  750,  902,  749,  748,  747,  902,  903,  746,  903,
     1317      745,  742,  741,  903,  904,  740,  904,  734,  730,  729,
     1318      904,  905,  727,  905,  726,  709,  701,  905,  906,  698,
     1319      906,  693,  691,  687,  906,  907,  677,  907,  673,  671,
     1320      669,  907,  908,  666,  908,  663,  662,  661,  908,  909,
     1321      909,  909,  909,  909,  909,  909,  909,  909,  909,  909,
     1322      909,  909,  910,  660,  910,  911,  911,  659,  911,  911,
     1323      911,  658,  911,  912,  912,  655,  912,  913,  654,  913,
     1324      652,  649,  648,  913,  914,  647,  914,  643,  616,  612,
     1325      914,  915,  610,  915,  608,  606,  604,  915,  916,  598,
     1326
     1327      916,  917,  592,  917,  590,  588,  586,  917,  918,  584,
     1328      918,  919,  582,  580,  919,  578,  919,  919,  919,  919,
     1329      919,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     1330      920,  920,  920,  920,  921,  921,  921,  921,  921,  921,
     1331      921,  921,  921,  921,  921,  921,  921,  922,  577,  922,
     1332      576,  573,  570,  922,  923,  563,  923,  559,  556,  553,
     1333      923,  924,  548,  924,  543,  540,  517,  924,  925,  513,
     1334      925,  926,  511,  926,  509,  507,  505,  926,  927,  503,
     1335      927,  928,  502,  928,  501,  500,  489,  928,  929,  486,
     1336      929,  930,  484,  930,  483,  482,  480,  930,  931,  478,
     1337
     1338      931,  932,  475,  932,  473,  471,  469,  932,  933,  465,
     1339      933,  934,  448,  934,  446,  438,  436,  934,  935,  428,
     1340      935,  936,  426,  936,  424,  398,  396,  936,  937,  394,
     1341      937,  938,  392,  938,  391,  938,  390,  938,  939,  377,
     1342      939,  367,  939,  365,  939,  940,  940,  364,  940,  940,
     1343      940,  360,  940,  941,  358,  941,  356,  354,  350,  941,
     1344      942,  348,  942,  347,  346,  336,  942,  943,  321,  943,
     1345      298,  277,  275,  943,  944,  273,  944,  945,  272,  945,
     1346      271,  269,  268,  945,  946,  263,  946,  947,  259,  947,
     1347      258,  254,  251,  947,  948,  250,  948,  949,  239,  949,
     1348
     1349      238,  231,  230,  949,  950,  227,  950,  951,  217,  215,
     1350      951,  214,  951,  951,  951,  951,  951,  952,  952,  952,
     1351      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     1352      953,  213,  953,  207,  206,  204,  953,  954,  199,  954,
     1353      955,  178,  955,  149,  147,  146,  955,  956,  140,  956,
     1354      957,  138,  957,  136,  128,  125,  957,  958,  124,  958,
     1355      959,  120,  959,  101,   98,   95,  959,  960,   93,  960,
     1356      961,   86,  961,   72,   70,   66,  961,  962,   36,  962,
     1357      963,   33,  963,   18,   11,    4,  963,  964,    3,  964,
     1358      965,    0,  965,    0,    0,    0,  965,  966,    0,  966,
     1359
     1360        0,    0,    0,  966,  967,    0,  967,  968,    0,  968,
     1361        0,    0,    0,  968,  969,    0,  969,  970,    0,  970,
     1362        0,  970,    0,  970,  971,    0,  971,    0,    0,    0,
     1363      971,  972,    0,  972,    0,    0,    0,  972,  973,    0,
     1364      973,  974,    0,  974,    0,    0,    0,  974,  975,    0,
     1365      975,  976,    0,  976,    0,    0,    0,  976,  977,    0,
     1366      977,  978,    0,  978,    0,    0,    0,  978,  979,    0,
     1367      979,  980,    0,  980,    0,    0,    0,  980,  981,    0,
     1368      981,  982,    0,  982,    0,    0,    0,  982,  983,    0,
     1369      983,  984,    0,    0,  984,    0,  984,  984,  984,  984,
     1370
     1371      984,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     1372      985,  985,  985,  985,  986,    0,  986,    0,    0,    0,
     1373      986,  987,    0,  987,  988,    0,  988,    0,    0,    0,
     1374      988,  989,    0,  989,  990,    0,  990,    0,    0,    0,
     1375      990,  991,    0,  991,  992,    0,  992,    0,    0,    0,
     1376      992,  993,    0,  993,  994,    0,  994,    0,    0,    0,
     1377      994,  995,    0,  995,  996,    0,  996,    0,    0,    0,
     1378      996,  997,    0,  997,  998,    0,  998,    0,    0,    0,
     1379      998,  999,    0,  999, 1000,    0, 1000,    0,    0,    0,
     1380     1000, 1001,    0, 1001, 1002,    0, 1002,    0,    0,    0,
     1381
     1382     1002, 1003,    0, 1003,    0,    0,    0, 1003, 1004,    0,
     1383     1004, 1005,    0, 1005,    0,    0,    0, 1005, 1006,    0,
     1384     1006, 1007,    0, 1007,    0,    0,    0, 1007, 1008,    0,
     1385     1008, 1009,    0, 1009,    0,    0,    0, 1009, 1010,    0,
     1386     1010, 1011,    0, 1011, 1012,    0, 1012, 1013,    0,    0,
     1387     1013,    0, 1013, 1013, 1013, 1013, 1013, 1014,    0, 1014,
     1388     1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
     1389     1015, 1015, 1015, 1016,    0, 1016,    0,    0,    0, 1016,
     1390     1017,    0, 1017, 1018,    0, 1018,    0,    0,    0, 1018,
     1391     1019,    0, 1019, 1020,    0, 1020, 1021,    0, 1021, 1022,
     1392
     1393        0,    0, 1022,    0, 1022, 1022, 1022, 1022, 1022, 1023,
     1394        0, 1023, 1024,    0, 1024, 1025,    0, 1025, 1026,    0,
     1395     1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0, 1029,
     1396     1030,    0, 1030,    0,    0,    0, 1030, 1031,    0, 1031,
     1397     1032,    0, 1032,    0,    0,    0, 1032, 1033,    0, 1033,
     1398     1034,    0, 1034, 1035,    0, 1035, 1036,    0, 1036, 1037,
     1399        0, 1037,    0,    0,    0, 1037, 1038,    0,    0, 1038,
     1400        0, 1038, 1038, 1038, 1038, 1038, 1039,    0, 1039, 1040,
     1401        0, 1040, 1041,    0, 1041, 1042,    0, 1042,    0,    0,
     1402        0, 1042, 1043,    0, 1043,    0,    0,    0, 1043, 1044,
     1403
     1404        0, 1044,    0,    0,    0, 1044, 1045,    0, 1045, 1046,
     1405        0, 1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,
     1406        0,    0, 1047, 1048,    0, 1048,    0,    0,    0, 1048,
     1407     1049,    0, 1049,    0,    0,    0, 1049, 1050,    0, 1050,
     1408        0,    0,    0, 1050, 1051,    0, 1051,    0,    0,    0,
     1409     1051, 1052,    0, 1052,    0,    0,    0, 1052, 1053,    0,
     1410     1053,    0,    0,    0, 1053, 1054,    0, 1054,    0,    0,
     1411        0, 1054, 1055,    0, 1055,    0,    0,    0, 1055, 1056,
     1412        0, 1056,    0,    0,    0, 1056, 1057,    0, 1057,    0,
     1413        0,    0, 1057, 1058,    0, 1058,    0,    0,    0, 1058,
     1414
     1415     1059,    0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,
     1416        0,    0,    0, 1060, 1061,    0, 1061,    0,    0,    0,
     1417     1061,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1418      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1419      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1420      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1421      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1422      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1423      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1424      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1425
     1426      887,  887,  887,  887,  887,  887,  887
    14291427    } ;
    14301428
    14311429/* Table of booleans, true if rule could match eol. */
    1432 static yyconst flex_int32_t yy_rule_can_match_eol[182] =
     1430static yyconst flex_int32_t yy_rule_can_match_eol[181] =
    14331431    {   0,
    143414321, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14371435    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14381436    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1439     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
    1440     1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1437    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
     1438    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14411439    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14421440    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1443     0, 0,     };
     1441    0,     };
    14441442
    14451443static yy_state_type yy_last_accepting_state;
     
    14681466 * Author           : Peter A. Buhr
    14691467 * Created On       : Sat Sep 22 08:58:10 2001
    1470  * Last Modified By :
    1471  * Last Modified On : Sun Jul 31 07:19:36 2016
    1472  * Update Count     : 459
     1468 * Last Modified By : Peter A. Buhr
     1469 * Last Modified On : Thu Jun 23 07:29:30 2016
     1470 * Update Count     : 457
    14731471 */
    14741472#line 20 "lex.ll"
     
    15311529
    15321530
    1533 #line 1534 "Parser/lex.cc"
     1531#line 1532 "Parser/lex.cc"
    15341532
    15351533#define INITIAL 0
     
    17261724
    17271725                                   /* line directives */
    1728 #line 1729 "Parser/lex.cc"
     1726#line 1727 "Parser/lex.cc"
    17291727
    17301728        if ( !(yy_init) )
     
    17801778                                {
    17811779                                yy_current_state = (int) yy_def[yy_current_state];
    1782                                 if ( yy_current_state >= 892 )
     1780                                if ( yy_current_state >= 888 )
    17831781                                        yy_c = yy_meta[(unsigned int) yy_c];
    17841782                                }
     
    17861784                        ++yy_cp;
    17871785                        }
    1788                 while ( yy_base[yy_current_state] != 2825 );
     1786                while ( yy_base[yy_current_state] != 2822 );
    17891787
    17901788yy_find_action:
     
    20832081YY_RULE_SETUP
    20842082#line 216 "lex.ll"
    2085 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2083{ KEYWORD_RETURN(FINALLY); }                    // CFA
    20862084        YY_BREAK
    20872085case 48:
    20882086YY_RULE_SETUP
    20892087#line 217 "lex.ll"
    2090 { KEYWORD_RETURN(FINALLY); }                    // CFA
     2088{ KEYWORD_RETURN(FLOAT); }
    20912089        YY_BREAK
    20922090case 49:
    20932091YY_RULE_SETUP
    20942092#line 218 "lex.ll"
    2095 { KEYWORD_RETURN(FLOAT); }
     2093{ KEYWORD_RETURN(FLOAT); }                              // GCC
    20962094        YY_BREAK
    20972095case 50:
    20982096YY_RULE_SETUP
    20992097#line 219 "lex.ll"
    2100 { KEYWORD_RETURN(FLOAT); }                              // GCC
     2098{ KEYWORD_RETURN(FOR); }
    21012099        YY_BREAK
    21022100case 51:
    21032101YY_RULE_SETUP
    21042102#line 220 "lex.ll"
    2105 { KEYWORD_RETURN(FOR); }
     2103{ KEYWORD_RETURN(FORALL); }                             // CFA
    21062104        YY_BREAK
    21072105case 52:
    21082106YY_RULE_SETUP
    21092107#line 221 "lex.ll"
    2110 { KEYWORD_RETURN(FORALL); }                             // CFA
     2108{ KEYWORD_RETURN(FORTRAN); }
    21112109        YY_BREAK
    21122110case 53:
    21132111YY_RULE_SETUP
    21142112#line 222 "lex.ll"
    2115 { KEYWORD_RETURN(FORTRAN); }
     2113{ KEYWORD_RETURN(FTYPE); }                              // CFA
    21162114        YY_BREAK
    21172115case 54:
    21182116YY_RULE_SETUP
    21192117#line 223 "lex.ll"
    2120 { KEYWORD_RETURN(FTYPE); }                              // CFA
     2118{ KEYWORD_RETURN(GENERIC); }                    // C11
    21212119        YY_BREAK
    21222120case 55:
    21232121YY_RULE_SETUP
    21242122#line 224 "lex.ll"
    2125 { KEYWORD_RETURN(GENERIC); }                    // C11
     2123{ KEYWORD_RETURN(GOTO); }
    21262124        YY_BREAK
    21272125case 56:
    21282126YY_RULE_SETUP
    21292127#line 225 "lex.ll"
    2130 { KEYWORD_RETURN(GOTO); }
     2128{ KEYWORD_RETURN(IF); }
    21312129        YY_BREAK
    21322130case 57:
    21332131YY_RULE_SETUP
    21342132#line 226 "lex.ll"
    2135 { KEYWORD_RETURN(IF); }
     2133{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    21362134        YY_BREAK
    21372135case 58:
    21382136YY_RULE_SETUP
    21392137#line 227 "lex.ll"
    2140 { KEYWORD_RETURN(IMAGINARY); }                  // C99
     2138{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21412139        YY_BREAK
    21422140case 59:
     
    21482146YY_RULE_SETUP
    21492147#line 229 "lex.ll"
    2150 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2148{ KEYWORD_RETURN(INLINE); }                             // C99
    21512149        YY_BREAK
    21522150case 61:
    21532151YY_RULE_SETUP
    21542152#line 230 "lex.ll"
    2155 { KEYWORD_RETURN(INLINE); }                             // C99
     2153{ KEYWORD_RETURN(INLINE); }                             // GCC
    21562154        YY_BREAK
    21572155case 62:
     
    21632161YY_RULE_SETUP
    21642162#line 232 "lex.ll"
    2165 { KEYWORD_RETURN(INLINE); }                             // GCC
     2163{ KEYWORD_RETURN(INT); }
    21662164        YY_BREAK
    21672165case 64:
    21682166YY_RULE_SETUP
    21692167#line 233 "lex.ll"
    2170 { KEYWORD_RETURN(INT); }
     2168{ KEYWORD_RETURN(INT); }                                // GCC
    21712169        YY_BREAK
    21722170case 65:
    21732171YY_RULE_SETUP
    21742172#line 234 "lex.ll"
    2175 { KEYWORD_RETURN(INT); }                                // GCC
     2173{ KEYWORD_RETURN(LABEL); }                              // GCC
    21762174        YY_BREAK
    21772175case 66:
    21782176YY_RULE_SETUP
    21792177#line 235 "lex.ll"
    2180 { KEYWORD_RETURN(LABEL); }                              // GCC
     2178{ KEYWORD_RETURN(LONG); }
    21812179        YY_BREAK
    21822180case 67:
    21832181YY_RULE_SETUP
    21842182#line 236 "lex.ll"
    2185 { KEYWORD_RETURN(LONG); }
     2183{ KEYWORD_RETURN(LVALUE); }                             // CFA
    21862184        YY_BREAK
    21872185case 68:
    21882186YY_RULE_SETUP
    21892187#line 237 "lex.ll"
    2190 { KEYWORD_RETURN(LVALUE); }                             // CFA
     2188{ KEYWORD_RETURN(NORETURN); }                   // C11
    21912189        YY_BREAK
    21922190case 69:
    21932191YY_RULE_SETUP
    21942192#line 238 "lex.ll"
    2195 { KEYWORD_RETURN(NORETURN); }                   // C11
     2193{ KEYWORD_RETURN(OFFSETOF); }           // GCC
    21962194        YY_BREAK
    21972195case 70:
    21982196YY_RULE_SETUP
    21992197#line 239 "lex.ll"
    2200 { KEYWORD_RETURN(OFFSETOF); }           // GCC
     2198{ KEYWORD_RETURN(OTYPE); }                              // CFA
    22012199        YY_BREAK
    22022200case 71:
    22032201YY_RULE_SETUP
    22042202#line 240 "lex.ll"
    2205 { KEYWORD_RETURN(OTYPE); }                              // CFA
     2203{ KEYWORD_RETURN(REGISTER); }
    22062204        YY_BREAK
    22072205case 72:
    22082206YY_RULE_SETUP
    22092207#line 241 "lex.ll"
    2210 { KEYWORD_RETURN(REGISTER); }
     2208{ KEYWORD_RETURN(RESTRICT); }                   // C99
    22112209        YY_BREAK
    22122210case 73:
    22132211YY_RULE_SETUP
    22142212#line 242 "lex.ll"
    2215 { KEYWORD_RETURN(RESTRICT); }                   // C99
     2213{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22162214        YY_BREAK
    22172215case 74:
     
    22232221YY_RULE_SETUP
    22242222#line 244 "lex.ll"
    2225 { KEYWORD_RETURN(RESTRICT); }                   // GCC
     2223{ KEYWORD_RETURN(RETURN); }
    22262224        YY_BREAK
    22272225case 76:
    22282226YY_RULE_SETUP
    22292227#line 245 "lex.ll"
    2230 { KEYWORD_RETURN(RETURN); }
     2228{ KEYWORD_RETURN(SHORT); }
    22312229        YY_BREAK
    22322230case 77:
    22332231YY_RULE_SETUP
    22342232#line 246 "lex.ll"
    2235 { KEYWORD_RETURN(SHORT); }
     2233{ KEYWORD_RETURN(SIGNED); }
    22362234        YY_BREAK
    22372235case 78:
    22382236YY_RULE_SETUP
    22392237#line 247 "lex.ll"
    2240 { KEYWORD_RETURN(SIGNED); }
     2238{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22412239        YY_BREAK
    22422240case 79:
     
    22482246YY_RULE_SETUP
    22492247#line 249 "lex.ll"
    2250 { KEYWORD_RETURN(SIGNED); }                             // GCC
     2248{ KEYWORD_RETURN(SIZEOF); }
    22512249        YY_BREAK
    22522250case 81:
    22532251YY_RULE_SETUP
    22542252#line 250 "lex.ll"
    2255 { KEYWORD_RETURN(SIZEOF); }
     2253{ KEYWORD_RETURN(STATIC); }
    22562254        YY_BREAK
    22572255case 82:
    22582256YY_RULE_SETUP
    22592257#line 251 "lex.ll"
    2260 { KEYWORD_RETURN(STATIC); }
     2258{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22612259        YY_BREAK
    22622260case 83:
    22632261YY_RULE_SETUP
    22642262#line 252 "lex.ll"
    2265 { KEYWORD_RETURN(STATICASSERT); }               // C11
     2263{ KEYWORD_RETURN(STRUCT); }
    22662264        YY_BREAK
    22672265case 84:
    22682266YY_RULE_SETUP
    22692267#line 253 "lex.ll"
    2270 { KEYWORD_RETURN(STRUCT); }
     2268{ KEYWORD_RETURN(SWITCH); }
    22712269        YY_BREAK
    22722270case 85:
    22732271YY_RULE_SETUP
    22742272#line 254 "lex.ll"
    2275 { KEYWORD_RETURN(SWITCH); }
     2273{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22762274        YY_BREAK
    22772275case 86:
    22782276YY_RULE_SETUP
    22792277#line 255 "lex.ll"
    2280 { KEYWORD_RETURN(THREADLOCAL); }                // C11
     2278{ KEYWORD_RETURN(THROW); }                              // CFA
    22812279        YY_BREAK
    22822280case 87:
    22832281YY_RULE_SETUP
    22842282#line 256 "lex.ll"
    2285 { KEYWORD_RETURN(THROW); }                              // CFA
     2283{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    22862284        YY_BREAK
    22872285case 88:
    22882286YY_RULE_SETUP
    22892287#line 257 "lex.ll"
    2290 { KEYWORD_RETURN(THROWRESUME); }                // CFA
     2288{ KEYWORD_RETURN(TRAIT); }                              // CFA
    22912289        YY_BREAK
    22922290case 89:
    22932291YY_RULE_SETUP
    22942292#line 258 "lex.ll"
    2295 { KEYWORD_RETURN(TRAIT); }                              // CFA
     2293{ KEYWORD_RETURN(TRY); }                                // CFA
    22962294        YY_BREAK
    22972295case 90:
    22982296YY_RULE_SETUP
    22992297#line 259 "lex.ll"
    2300 { KEYWORD_RETURN(TRY); }                                // CFA
     2298{ KEYWORD_RETURN(TYPEDEF); }
    23012299        YY_BREAK
    23022300case 91:
    23032301YY_RULE_SETUP
    23042302#line 260 "lex.ll"
    2305 { KEYWORD_RETURN(TYPEDEF); }
     2303{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23062304        YY_BREAK
    23072305case 92:
     
    23182316YY_RULE_SETUP
    23192317#line 263 "lex.ll"
    2320 { KEYWORD_RETURN(TYPEOF); }                             // GCC
     2318{ KEYWORD_RETURN(UNION); }
    23212319        YY_BREAK
    23222320case 95:
    23232321YY_RULE_SETUP
    23242322#line 264 "lex.ll"
    2325 { KEYWORD_RETURN(UNION); }
     2323{ KEYWORD_RETURN(UNSIGNED); }
    23262324        YY_BREAK
    23272325case 96:
    23282326YY_RULE_SETUP
    23292327#line 265 "lex.ll"
    2330 { KEYWORD_RETURN(UNSIGNED); }
     2328{ KEYWORD_RETURN(VALIST); }                     // GCC
    23312329        YY_BREAK
    23322330case 97:
    23332331YY_RULE_SETUP
    23342332#line 266 "lex.ll"
    2335 { KEYWORD_RETURN(VALIST); }                     // GCC
     2333{ KEYWORD_RETURN(VOID); }
    23362334        YY_BREAK
    23372335case 98:
    23382336YY_RULE_SETUP
    23392337#line 267 "lex.ll"
    2340 { KEYWORD_RETURN(VOID); }
     2338{ KEYWORD_RETURN(VOLATILE); }
    23412339        YY_BREAK
    23422340case 99:
    23432341YY_RULE_SETUP
    23442342#line 268 "lex.ll"
    2345 { KEYWORD_RETURN(VOLATILE); }
     2343{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23462344        YY_BREAK
    23472345case 100:
     
    23532351YY_RULE_SETUP
    23542352#line 270 "lex.ll"
    2355 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2356         YY_BREAK
     2353{ KEYWORD_RETURN(WHILE); }
     2354        YY_BREAK
     2355/* identifier */
    23572356case 102:
    23582357YY_RULE_SETUP
    2359 #line 271 "lex.ll"
    2360 { KEYWORD_RETURN(WHILE); }
    2361         YY_BREAK
    2362 /* identifier */
     2358#line 273 "lex.ll"
     2359{ IDENTIFIER_RETURN(); }
     2360        YY_BREAK
    23632361case 103:
    23642362YY_RULE_SETUP
    23652363#line 274 "lex.ll"
     2364{ ATTRIBUTE_RETURN(); }
     2365        YY_BREAK
     2366case 104:
     2367YY_RULE_SETUP
     2368#line 275 "lex.ll"
     2369{ BEGIN BKQUOTE; }
     2370        YY_BREAK
     2371case 105:
     2372YY_RULE_SETUP
     2373#line 276 "lex.ll"
    23662374{ IDENTIFIER_RETURN(); }
    23672375        YY_BREAK
    2368 case 104:
    2369 YY_RULE_SETUP
    2370 #line 275 "lex.ll"
    2371 { ATTRIBUTE_RETURN(); }
    2372         YY_BREAK
    2373 case 105:
    2374 YY_RULE_SETUP
    2375 #line 276 "lex.ll"
    2376 { BEGIN BKQUOTE; }
    2377         YY_BREAK
    23782376case 106:
    23792377YY_RULE_SETUP
    23802378#line 277 "lex.ll"
    2381 { IDENTIFIER_RETURN(); }
    2382         YY_BREAK
     2379{ BEGIN 0; }
     2380        YY_BREAK
     2381/* numeric constants */
    23832382case 107:
    23842383YY_RULE_SETUP
    2385 #line 278 "lex.ll"
    2386 { BEGIN 0; }
    2387         YY_BREAK
    2388 /* numeric constants */
     2384#line 280 "lex.ll"
     2385{ NUMERIC_RETURN(ZERO); }                               // CFA
     2386        YY_BREAK
    23892387case 108:
    23902388YY_RULE_SETUP
    23912389#line 281 "lex.ll"
    2392 { NUMERIC_RETURN(ZERO); }                               // CFA
     2390{ NUMERIC_RETURN(ONE); }                                // CFA
    23932391        YY_BREAK
    23942392case 109:
    23952393YY_RULE_SETUP
    23962394#line 282 "lex.ll"
    2397 { NUMERIC_RETURN(ONE); }                                // CFA
     2395{ NUMERIC_RETURN(INTEGERconstant); }
    23982396        YY_BREAK
    23992397case 110:
     
    24102408YY_RULE_SETUP
    24112409#line 285 "lex.ll"
    2412 { NUMERIC_RETURN(INTEGERconstant); }
     2410{ NUMERIC_RETURN(FLOATINGconstant); }
    24132411        YY_BREAK
    24142412case 113:
     
    24172415{ NUMERIC_RETURN(FLOATINGconstant); }
    24182416        YY_BREAK
     2417/* character constant, allows empty value */
    24192418case 114:
    24202419YY_RULE_SETUP
    2421 #line 287 "lex.ll"
    2422 { NUMERIC_RETURN(FLOATINGconstant); }
    2423         YY_BREAK
    2424 /* character constant, allows empty value */
     2420#line 289 "lex.ll"
     2421{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2422        YY_BREAK
    24252423case 115:
    24262424YY_RULE_SETUP
    24272425#line 290 "lex.ll"
    2428 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2426{ *strtext += std::string( yytext ); }
    24292427        YY_BREAK
    24302428case 116:
     2429/* rule 116 can match eol */
    24312430YY_RULE_SETUP
    24322431#line 291 "lex.ll"
    2433 { *strtext += std::string( yytext ); }
    2434         YY_BREAK
    2435 case 117:
    2436 /* rule 117 can match eol */
    2437 YY_RULE_SETUP
    2438 #line 292 "lex.ll"
    24392432{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    24402433        YY_BREAK
    24412434/* ' stop highlighting */
    24422435/* string constant */
     2436case 117:
     2437YY_RULE_SETUP
     2438#line 295 "lex.ll"
     2439{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2440        YY_BREAK
    24432441case 118:
    24442442YY_RULE_SETUP
    24452443#line 296 "lex.ll"
    2446 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2444{ *strtext += std::string( yytext ); }
    24472445        YY_BREAK
    24482446case 119:
     2447/* rule 119 can match eol */
    24492448YY_RULE_SETUP
    24502449#line 297 "lex.ll"
    2451 { *strtext += std::string( yytext ); }
    2452         YY_BREAK
    2453 case 120:
    2454 /* rule 120 can match eol */
    2455 YY_RULE_SETUP
    2456 #line 298 "lex.ll"
    24572450{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    24582451        YY_BREAK
    24592452/* " stop highlighting */
    24602453/* common character/string constant */
     2454case 120:
     2455YY_RULE_SETUP
     2456#line 301 "lex.ll"
     2457{ rm_underscore(); *strtext += std::string( yytext ); }
     2458        YY_BREAK
    24612459case 121:
     2460/* rule 121 can match eol */
    24622461YY_RULE_SETUP
    24632462#line 302 "lex.ll"
    2464 { rm_underscore(); *strtext += std::string( yytext ); }
     2463{}                                              // continuation (ALSO HANDLED BY CPP)
    24652464        YY_BREAK
    24662465case 122:
    2467 /* rule 122 can match eol */
    24682466YY_RULE_SETUP
    24692467#line 303 "lex.ll"
    2470 {}                                              // continuation (ALSO HANDLED BY CPP)
    2471         YY_BREAK
     2468{ *strtext += std::string( yytext ); } // unknown escape character
     2469        YY_BREAK
     2470/* punctuation */
    24722471case 123:
    24732472YY_RULE_SETUP
    2474 #line 304 "lex.ll"
    2475 { *strtext += std::string( yytext ); } // unknown escape character
    2476         YY_BREAK
    2477 /* punctuation */
     2473#line 306 "lex.ll"
     2474{ ASCIIOP_RETURN(); }
     2475        YY_BREAK
    24782476case 124:
    24792477YY_RULE_SETUP
     
    25042502YY_RULE_SETUP
    25052503#line 312 "lex.ll"
     2504{ ASCIIOP_RETURN(); }                                   // also operator
     2505        YY_BREAK
     2506case 130:
     2507YY_RULE_SETUP
     2508#line 313 "lex.ll"
    25062509{ ASCIIOP_RETURN(); }
    2507         YY_BREAK
    2508 case 130:
    2509 YY_RULE_SETUP
    2510 #line 313 "lex.ll"
    2511 { ASCIIOP_RETURN(); }                                   // also operator
    25122510        YY_BREAK
    25132511case 131:
     
    25192517YY_RULE_SETUP
    25202518#line 315 "lex.ll"
     2519{ ASCIIOP_RETURN(); }                                   // also operator
     2520        YY_BREAK
     2521case 133:
     2522YY_RULE_SETUP
     2523#line 316 "lex.ll"
     2524{ NAMEDOP_RETURN(ELLIPSIS); }
     2525        YY_BREAK
     2526/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
     2527case 134:
     2528YY_RULE_SETUP
     2529#line 319 "lex.ll"
     2530{ RETURN_VAL('['); }
     2531        YY_BREAK
     2532case 135:
     2533YY_RULE_SETUP
     2534#line 320 "lex.ll"
     2535{ RETURN_VAL(']'); }
     2536        YY_BREAK
     2537case 136:
     2538YY_RULE_SETUP
     2539#line 321 "lex.ll"
     2540{ RETURN_VAL('{'); }
     2541        YY_BREAK
     2542case 137:
     2543YY_RULE_SETUP
     2544#line 322 "lex.ll"
     2545{ RETURN_VAL('}'); }
     2546        YY_BREAK
     2547/* operators */
     2548case 138:
     2549YY_RULE_SETUP
     2550#line 325 "lex.ll"
    25212551{ ASCIIOP_RETURN(); }
    25222552        YY_BREAK
    2523 case 133:
    2524 YY_RULE_SETUP
    2525 #line 316 "lex.ll"
    2526 { ASCIIOP_RETURN(); }                                   // also operator
    2527         YY_BREAK
    2528 case 134:
    2529 YY_RULE_SETUP
    2530 #line 317 "lex.ll"
    2531 { NAMEDOP_RETURN(ELLIPSIS); }
    2532         YY_BREAK
    2533 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2534 case 135:
    2535 YY_RULE_SETUP
    2536 #line 320 "lex.ll"
    2537 { RETURN_VAL('['); }
    2538         YY_BREAK
    2539 case 136:
    2540 YY_RULE_SETUP
    2541 #line 321 "lex.ll"
    2542 { RETURN_VAL(']'); }
    2543         YY_BREAK
    2544 case 137:
    2545 YY_RULE_SETUP
    2546 #line 322 "lex.ll"
    2547 { RETURN_VAL('{'); }
    2548         YY_BREAK
    2549 case 138:
    2550 YY_RULE_SETUP
    2551 #line 323 "lex.ll"
    2552 { RETURN_VAL('}'); }
    2553         YY_BREAK
    2554 /* operators */
    25552553case 139:
    25562554YY_RULE_SETUP
     
    26202618case 152:
    26212619YY_RULE_SETUP
    2622 #line 339 "lex.ll"
    2623 { ASCIIOP_RETURN(); }
     2620#line 340 "lex.ll"
     2621{ NAMEDOP_RETURN(ICR); }
    26242622        YY_BREAK
    26252623case 153:
    26262624YY_RULE_SETUP
    26272625#line 341 "lex.ll"
    2628 { NAMEDOP_RETURN(ICR); }
     2626{ NAMEDOP_RETURN(DECR); }
    26292627        YY_BREAK
    26302628case 154:
    26312629YY_RULE_SETUP
    26322630#line 342 "lex.ll"
    2633 { NAMEDOP_RETURN(DECR); }
     2631{ NAMEDOP_RETURN(EQ); }
    26342632        YY_BREAK
    26352633case 155:
    26362634YY_RULE_SETUP
    26372635#line 343 "lex.ll"
    2638 { NAMEDOP_RETURN(EQ); }
     2636{ NAMEDOP_RETURN(NE); }
    26392637        YY_BREAK
    26402638case 156:
    26412639YY_RULE_SETUP
    26422640#line 344 "lex.ll"
    2643 { NAMEDOP_RETURN(NE); }
     2641{ NAMEDOP_RETURN(LS); }
    26442642        YY_BREAK
    26452643case 157:
    26462644YY_RULE_SETUP
    26472645#line 345 "lex.ll"
    2648 { NAMEDOP_RETURN(LS); }
     2646{ NAMEDOP_RETURN(RS); }
    26492647        YY_BREAK
    26502648case 158:
    26512649YY_RULE_SETUP
    26522650#line 346 "lex.ll"
    2653 { NAMEDOP_RETURN(RS); }
     2651{ NAMEDOP_RETURN(LE); }
    26542652        YY_BREAK
    26552653case 159:
    26562654YY_RULE_SETUP
    26572655#line 347 "lex.ll"
    2658 { NAMEDOP_RETURN(LE); }
     2656{ NAMEDOP_RETURN(GE); }
    26592657        YY_BREAK
    26602658case 160:
    26612659YY_RULE_SETUP
    26622660#line 348 "lex.ll"
    2663 { NAMEDOP_RETURN(GE); }
     2661{ NAMEDOP_RETURN(ANDAND); }
    26642662        YY_BREAK
    26652663case 161:
    26662664YY_RULE_SETUP
    26672665#line 349 "lex.ll"
    2668 { NAMEDOP_RETURN(ANDAND); }
     2666{ NAMEDOP_RETURN(OROR); }
    26692667        YY_BREAK
    26702668case 162:
    26712669YY_RULE_SETUP
    26722670#line 350 "lex.ll"
    2673 { NAMEDOP_RETURN(OROR); }
     2671{ NAMEDOP_RETURN(ARROW); }
    26742672        YY_BREAK
    26752673case 163:
    26762674YY_RULE_SETUP
    26772675#line 351 "lex.ll"
    2678 { NAMEDOP_RETURN(ARROW); }
     2676{ NAMEDOP_RETURN(PLUSassign); }
    26792677        YY_BREAK
    26802678case 164:
    26812679YY_RULE_SETUP
    26822680#line 352 "lex.ll"
    2683 { NAMEDOP_RETURN(PLUSassign); }
     2681{ NAMEDOP_RETURN(MINUSassign); }
    26842682        YY_BREAK
    26852683case 165:
    26862684YY_RULE_SETUP
    26872685#line 353 "lex.ll"
    2688 { NAMEDOP_RETURN(MINUSassign); }
     2686{ NAMEDOP_RETURN(MULTassign); }
    26892687        YY_BREAK
    26902688case 166:
    26912689YY_RULE_SETUP
    26922690#line 354 "lex.ll"
    2693 { NAMEDOP_RETURN(MULTassign); }
     2691{ NAMEDOP_RETURN(DIVassign); }
    26942692        YY_BREAK
    26952693case 167:
    26962694YY_RULE_SETUP
    26972695#line 355 "lex.ll"
    2698 { NAMEDOP_RETURN(DIVassign); }
     2696{ NAMEDOP_RETURN(MODassign); }
    26992697        YY_BREAK
    27002698case 168:
    27012699YY_RULE_SETUP
    27022700#line 356 "lex.ll"
    2703 { NAMEDOP_RETURN(MODassign); }
     2701{ NAMEDOP_RETURN(ANDassign); }
    27042702        YY_BREAK
    27052703case 169:
    27062704YY_RULE_SETUP
    27072705#line 357 "lex.ll"
    2708 { NAMEDOP_RETURN(ANDassign); }
     2706{ NAMEDOP_RETURN(ORassign); }
    27092707        YY_BREAK
    27102708case 170:
    27112709YY_RULE_SETUP
    27122710#line 358 "lex.ll"
    2713 { NAMEDOP_RETURN(ORassign); }
     2711{ NAMEDOP_RETURN(ERassign); }
    27142712        YY_BREAK
    27152713case 171:
    27162714YY_RULE_SETUP
    27172715#line 359 "lex.ll"
    2718 { NAMEDOP_RETURN(ERassign); }
     2716{ NAMEDOP_RETURN(LSassign); }
    27192717        YY_BREAK
    27202718case 172:
    27212719YY_RULE_SETUP
    27222720#line 360 "lex.ll"
    2723 { NAMEDOP_RETURN(LSassign); }
     2721{ NAMEDOP_RETURN(RSassign); }
    27242722        YY_BREAK
    27252723case 173:
    27262724YY_RULE_SETUP
    2727 #line 361 "lex.ll"
    2728 { NAMEDOP_RETURN(RSassign); }
    2729         YY_BREAK
     2725#line 362 "lex.ll"
     2726{ NAMEDOP_RETURN(ATassign); }
     2727        YY_BREAK
     2728/* CFA, operator identifier */
    27302729case 174:
    27312730YY_RULE_SETUP
    2732 #line 363 "lex.ll"
    2733 { NAMEDOP_RETURN(ATassign); }                   // CFA
    2734         YY_BREAK
    2735 /* CFA, operator identifier */
     2731#line 365 "lex.ll"
     2732{ IDENTIFIER_RETURN(); }                                // unary
     2733        YY_BREAK
    27362734case 175:
    27372735YY_RULE_SETUP
    27382736#line 366 "lex.ll"
    2739 { IDENTIFIER_RETURN(); }                                // unary
     2737{ IDENTIFIER_RETURN(); }
    27402738        YY_BREAK
    27412739case 176:
     
    27472745YY_RULE_SETUP
    27482746#line 368 "lex.ll"
    2749 { IDENTIFIER_RETURN(); }
    2750         YY_BREAK
    2751 case 178:
    2752 YY_RULE_SETUP
    2753 #line 369 "lex.ll"
    27542747{ IDENTIFIER_RETURN(); }                // binary
    27552748        YY_BREAK
     
    27802773          an argument list.
    27812774        */
    2782 case 179:
    2783 YY_RULE_SETUP
    2784 #line 396 "lex.ll"
     2775case 178:
     2776YY_RULE_SETUP
     2777#line 395 "lex.ll"
    27852778{
    27862779        // 1 or 2 character unary operator ?
     
    27952788        YY_BREAK
    27962789/* unknown characters */
     2790case 179:
     2791YY_RULE_SETUP
     2792#line 407 "lex.ll"
     2793{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
     2794        YY_BREAK
    27972795case 180:
    27982796YY_RULE_SETUP
    2799 #line 408 "lex.ll"
    2800 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    2801         YY_BREAK
    2802 case 181:
    2803 YY_RULE_SETUP
    2804 #line 410 "lex.ll"
     2797#line 409 "lex.ll"
    28052798ECHO;
    28062799        YY_BREAK
    2807 #line 2808 "Parser/lex.cc"
     2800#line 2801 "Parser/lex.cc"
    28082801case YY_STATE_EOF(INITIAL):
    28092802case YY_STATE_EOF(COMMENT):
     
    31023095                        {
    31033096                        yy_current_state = (int) yy_def[yy_current_state];
    3104                         if ( yy_current_state >= 892 )
     3097                        if ( yy_current_state >= 888 )
    31053098                                yy_c = yy_meta[(unsigned int) yy_c];
    31063099                        }
     
    31303123                {
    31313124                yy_current_state = (int) yy_def[yy_current_state];
    3132                 if ( yy_current_state >= 892 )
     3125                if ( yy_current_state >= 888 )
    31333126                        yy_c = yy_meta[(unsigned int) yy_c];
    31343127                }
    31353128        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3136         yy_is_jam = (yy_current_state == 891);
     3129        yy_is_jam = (yy_current_state == 887);
    31373130
    31383131        return yy_is_jam ? 0 : yy_current_state;
     
    37803773#define YYTABLES_NAME "yytables"
    37813774
    3782 #line 410 "lex.ll"
     3775#line 409 "lex.ll"
    37833776
    37843777
  • src/Parser/lex.ll

    ra14187f rac43954  
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    11  * Last Modified By :
    12  * Last Modified On : Sun Jul 31 07:19:36 2016
    13  * Update Count     : 459
     11 * Last Modified By : Peter A. Buhr
     12 * Last Modified On : Thu Jun 23 07:29:30 2016
     13 * Update Count     : 457
    1414 */
    1515
     
    213213__extension__   { KEYWORD_RETURN(EXTENSION); }                  // GCC
    214214extern                  { KEYWORD_RETURN(EXTERN); }
    215 fallthrough             { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    216215fallthru                { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    217216finally                 { KEYWORD_RETURN(FINALLY); }                    // CFA
     
    361360">>="                   { NAMEDOP_RETURN(RSassign); }
    362361
    363 "@="                    { NAMEDOP_RETURN(ATassign); }                   // CFA
     362"@="                    { NAMEDOP_RETURN(ATassign); }
    364363
    365364                                /* CFA, operator identifier */
  • src/SymTab/Validate.cc

    ra14187f rac43954  
    541541                if ( StructInstType *aggDecl = dynamic_cast< StructInstType * >( tyDecl->get_base() ) ) {
    542542                        return new StructDecl( aggDecl->get_name() );
     543//                      return aggDecl->get_baseStruct();
    543544                } else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( tyDecl->get_base() ) ) {
    544545                        return new UnionDecl( aggDecl->get_name() );
    545                 } else if ( EnumInstType *enumDecl = dynamic_cast< EnumInstType * >( tyDecl->get_base() ) ) {
    546                         return new EnumDecl( enumDecl->get_name() );
    547546                } else {
    548547                        return ret;
  • src/driver/cfa.cc

    ra14187f rac43954  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug  2 12:23:11 2016
    13 // Update Count     : 147
     12// Last Modified On : Thu Jul  7 08:56:01 2016
     13// Update Count     : 144
    1414//
    1515
     
    8787        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    8888        bool std_flag = false;                                                          // -std= flag
    89         bool noincstd_flag = false;                                                     // -no-include-std= flag
    9089        bool debugging __attribute(( unused )) = false;         // -g flag
    9190
     
    145144                        } else if ( arg == "-nohelp" ) {
    146145                                help = false;                                                   // strip the nohelp flag
    147                         } else if ( arg == "-no-include-std" ) {
    148                                 noincstd_flag = true;                                   // strip the no-include-std flag
    149146                        } else if ( arg == "-compiler" ) {
    150147                                // use the user specified compiler
     
    251248        args[nargs] = "-I" CFA_INCDIR;
    252249        nargs += 1;
    253         if ( ! noincstd_flag ) {                                                        // do not use during build
    254                 args[nargs] = "-I" CFA_INCDIR "/stdhdr";
    255                 nargs += 1;
    256         } // if
     250        args[nargs] = "-I" CFA_INCDIR "/stdhdr";
     251        nargs += 1;
    257252        args[nargs] = "-I" CFA_INCDIR "/containers";
    258253        nargs += 1;
  • src/libcfa/Makefile.am

    ra14187f rac43954  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Tue Aug  2 12:17:23 2016
    14 ## Update Count     : 196
     13## Last Modified On : Fri Jul  8 23:05:11 2016
     14## Update Count     : 192
    1515###############################################################################
    1616
     
    2626# create extra forward types/declarations to reduce inclusion of library files
    2727extras.cf : extras.regx extras.c
    28         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     28        $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    2929
    3030# create forward declarations for gcc builtins
    3131builtins.cf : builtins.c
    32         ${AM_V_GEN}if [ -e $< ] ; then \
     32        $(AM_V_GEN)if [ -e $< ] ; then \
    3333                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    3434        fi
    3535
    3636builtins.c : builtins.def prototypes.awk
    37         ${AM_V_GEN}if [ -e $< ] ; then \
     37        $(AM_V_GEN)if [ -e $< ] ; then \
    3838                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    3939        fi
     
    4848
    4949libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    50         ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     50        $(AM_V_GEN)${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    5151
    5252libcfa-prelude.o : libcfa-prelude.c
    53          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     53         $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    5454
    55 CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     55CFLAGS = -quiet -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    5656CC = ${abs_top_srcdir}/src/driver/cfa
    5757
     
    6363        @true
    6464
    65 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     65${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA}        # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    6666
    6767libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
  • src/libcfa/Makefile.in

    ra14187f rac43954  
    136136CFA_LIBDIR = @CFA_LIBDIR@
    137137CFA_PREFIX = @CFA_PREFIX@
    138 CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     138CFLAGS = -quiet -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    139139CPP = @CPP@
    140140CPPFLAGS = @CPPFLAGS@
     
    603603# create extra forward types/declarations to reduce inclusion of library files
    604604extras.cf : extras.regx extras.c
    605         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     605        $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    606606
    607607# create forward declarations for gcc builtins
    608608builtins.cf : builtins.c
    609         ${AM_V_GEN}if [ -e $< ] ; then \
     609        $(AM_V_GEN)if [ -e $< ] ; then \
    610610                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    611611        fi
    612612
    613613builtins.c : builtins.def prototypes.awk
    614         ${AM_V_GEN}if [ -e $< ] ; then \
     614        $(AM_V_GEN)if [ -e $< ] ; then \
    615615                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    616616        fi
     
    623623
    624624libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    625         ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     625        $(AM_V_GEN)${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    626626
    627627libcfa-prelude.o : libcfa-prelude.c
    628          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     628         $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    629629
    630630# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     
    632632        @true
    633633
    634 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     634${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA}        # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    635635
    636636maintainer-clean-local:
  • src/tests/switch.c

    ra14187f rac43954  
    1010// Created On       : Tue Jul 12 06:50:22 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 30 14:41:32 2016
    13 // Update Count     : 30
     12// Last Modified On : Tue Jul 12 18:02:23 2016
     13// Update Count     : 22
    1414//
    1515
     
    3333        } // switch
    3434
    35         switch ( 3 ) {
    36                 int j;
    37           case 3:
    38                 break;
    39           case 4:
    40                 j = 0;
    41         }
     35        // switch (3 ) {
     36        //      int j;
     37        //   case 3:
     38        //      break;
     39        //   case 4:
     40        //      j = 0;
     41        // }
    4242
    4343        switch ( i ) {
     
    4949          default:
    5050                i = 3;
    51           case 19:
     51          case 3:
    5252          case 'A' ... 'Z':
    53           case 1 ... 6:
    54           case 20, 30:
     53          case 5 ... 6:
     54          case 2, 4:
    5555                j = 3;
    5656                f( 3 );
     
    7878                struct S { int i; };
    7979                S s;
    80           case 19:
     80          case 3:
    8181          case 'A' ... 'Z':
    82           case 0 ... 6:
    83           case 20, 30, 40:
     82          case 5 ... 6:
     83          case 2, 4, 7:
    8484                i = 3;
    8585                f( 3 );
  • src/tests/test.py

    ra14187f rac43954  
    3333def listTests():
    3434        machineType = getMachineType()
     35
     36        print(machineType)
    3537
    3638        # tests directly in the .expect folder will always be processed
Note: See TracChangeset for help on using the changeset viewer.