Changeset e7b2559
- Timestamp:
- Aug 2, 2016, 9:30:34 AM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 155cce0f
- Parents:
- e21c72d (diff), 79f64f1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 3 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
INSTALL
re21c72d re7b2559 3 3 4 4 Cforall is built using GNU Make and the GNU Autoconf system. It also requires 5 g++ version 4, bison and flex. On systems where GNU Make is the default make6 it may suffice to build the system by entering the commands 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: 7 7 8 8 ./configure … … 17 17 18 18 --prefix=/some/directory controls the path prefix common to all installed 19 cfa-cc components. Some components will be installed in /some/directory/bin,19 cfa-cc components. Some components are installed in /some/directory/bin, 20 20 others in /some/directory/lib. If unspecified, this defaults to /usr/local. 21 If you wish to use (a subdirectory of) your home directory, ${HOME}/some/dir22 works, but it is important not to put quotes around the directory path;23 Cforall mayappear to build, but the installed version may not work properly.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. 24 24 25 25 --with-backend-compiler=PROGRAM specifies the installed path of gcc. It -
doc/LaTeXmacros/common.tex
re21c72d re7b2559 11 11 %% Created On : Sat Apr 9 10:06:17 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Tue Jul 12 20:37:57201614 %% Update Count : 2 0613 %% Last Modified On : Mon Aug 1 09:11:20 2016 14 %% Update Count : 225 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 16 19 17 \setlength{\textheight}{9in} 20 18 %\oddsidemargin 0.0in 21 \renewcommand{\topfraction}{0.8} % float must be greater than X of the page before it is forced onto its own page22 \renewcommand{\bottomfraction}{0.8} % float must be greater than X of the page before it is forced onto its own page19 \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 23 21 \renewcommand{\floatpagefraction}{0.8} % float must be greater than X of the page before it is forced onto its own page 24 \renewcommand{\textfraction}{0.0} % the entire page maybe devoted to floats with no text on the page at all25 26 \lefthyphenmin=4 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 27 25 \righthyphenmin=4 28 26 … … 38 36 % Names used in the document. 39 37 40 \newcommand{\CFA}{C$\mathbf\forall$\xspace} 41 \newcommand{\CFL}{Cforall\xspace} 38 \newcommand{\CFA}{C$\mathbf\forall$\xspace} % set language symbolic name 39 \newcommand{\CFL}{Cforall\xspace} % set language text name 42 40 \newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name 43 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name) 41 \newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name 42 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name) 44 43 45 44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 51 50 \setlength{\parindentlnth}{\parindent} 52 51 53 \newlength{\gcolumnposn} 52 \newlength{\gcolumnposn} % temporary hack because lstlisting does handle tabs correctly 54 53 \newlength{\columnposn} 55 54 \setlength{\gcolumnposn}{2.5in} … … 62 61 %\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}} 63 62 64 \usepackage{pslatex} 65 \usepackage{relsize} 63 \usepackage{pslatex} % reduce size of san serif font 64 \usepackage{relsize} % must be after change to small or selects old size 66 65 67 66 % reduce size of chapter/section titles … … 119 118 120 119 % inline text and lowercase index: \Index{inline and lowercase index text} 120 \newcommand{\Index}{\@ifstar\@sIndex\@Index} 121 121 % inline text and as-in index: \Index[as-is index text]{inline text} 122 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi} 122 123 % inline text but index with different as-is text: \Index[index text]{inline text} 123 \newcommand{\Index}{\@ifstar\@sIndex\@Index}124 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}125 124 \newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi} 126 125 127 % cannot use ©126 % inline text and code index (cannot use ©) 128 127 \newcommand{\Indexc}[1]{\lstinline$#1$\index{#1@\lstinline$#1$}} 128 % code index (cannot use ©) 129 129 \newcommand{\indexc}[1]{\index{#1@\lstinline$#1$}} 130 130 … … 136 136 \newcommand{\@newterm}[2][\@empty]{\lowercase{\def\temp{#2}}{\newtermFontInline{#2}}\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi} 137 137 \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 }% 138 155 \makeatother 139 156 … … 144 161 \endlist 145 162 }% quote2 163 146 164 \newenvironment{rationale}{% 147 165 \begin{quote2}\noindent$\Box$\enspace … … 187 205 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}} 188 206 189 % Go programming language 207 % Go programming language: https://github.com/julienc91/listings-golang/blob/master/listings-golang.sty 190 208 \lstdefinelanguage{Golang}{ 191 209 morekeywords=[1]{package,import,func,type,struct,return,defer,panic, recover,select,var,const,iota,},% … … 203 221 } 204 222 205 % CFA programming language, based on ANSI C 223 % CFA programming language, based on ANSI C (with some gcc additions) 206 224 \lstdefinelanguage{CFA}[ANSI]{C}{ 207 225 morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto, 208 226 _Bool,catch,catchResume,choose,_Complex,__complex,__complex__,__const,__const__,disable,dtype,enable,__extension__, 209 fallthr u,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,227 fallthrough,fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert, 210 228 _Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,}, 211 229 }% … … 214 232 language=CFA, 215 233 columns=fullflexible, 216 basicstyle=\linespread{0.9}\sf, 217 stringstyle=\tt, 218 tabsize=4, 219 xleftmargin=\parindentlnth, 220 extendedchars=true, 221 escapechar=§, 222 mathescape=true, 223 keepspaces=true, 224 showstringspaces=false, 225 showlines=true, 226 aboveskip=4pt, 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 227 245 belowskip=3pt, 228 moredelim=**[is][\color{red}]{®}{®}, 229 moredelim=**[is][\color{blue}]{ß}{ß}, 246 moredelim=**[is][\color{red}]{®}{®}, % red highlighting 247 moredelim=**[is][\color{blue}]{ß}{ß}, % blue highlighting 230 248 moredelim=**[is][\color{OliveGreen}]{¢}{¢}, % green highlighting 231 249 moredelim=[is][\lstset{keywords={}}]{¶}{¶}, % temporarily turn off keywords … … 241 259 \renewcommand\thebibliography[1]{ 242 260 \Oldthebibliography{#1} 243 \setlength{\parskip}{0pt} % reduce vertical spacing between references261 \setlength{\parskip}{0pt} % reduce vertical spacing between references 244 262 \setlength{\itemsep}{5pt plus 0.3ex} 245 263 }% -
doc/bibliography/cfa.bib
re21c72d re7b2559 1623 1623 year = 1974, 1624 1624 } 1625 1626 @unpublished{Ditchfield:conversions, 1627 contributer = {a3moss@uwaterloo.ca}, 1628 author = {Glen Ditchfield}, 1629 title = {Conversions for {Cforall}}, 1630 note = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}}, 1631 month = {Nov}, 1632 year = {2002}, 1633 urldate = {28 July 2016}, 1634 } 1635 1625 1636 1626 1637 @techreport{Dijkstra65, -
doc/user/user.tex
re21c72d re7b2559 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Wed Jul 13 08:14:39201614 %% Update Count : 12 4713 %% Last Modified On : Mon Aug 1 09:11:24 2016 14 %% Update Count : 1271 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 211 211 however, it largely extended the language, and did not address many existing problems.\footnote{% 212 212 Two 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 ( e.g.,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 (\eg objects, concurrency) are added and problems fixed within the framework of the existing language. 214 214 \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. 215 215 These languages have different syntax and semantics from C, and do not interoperate directly with C, largely because of garbage collection. … … 265 265 \section[Compiling CFA Program]{Compiling \CFA Program} 266 266 267 The command ©cfa© is used to compile \CFA program(s), and is based on the GNU \Indexc{gcc} command, e.g.:267 The command ©cfa© is used to compile \CFA program(s), and is based on the GNU \Indexc{gcc} command, \eg: 268 268 \begin{lstlisting} 269 269 cfa§\indexc{cfa}\index{compilation!cfa@©cfa©}§ [ gcc-options ] C/§\CFA§-files [ assembler/loader-files ] … … 350 350 \section{Underscores in Constants} 351 351 352 Numeric constants are extended to allow \Index{underscore}s within constants\index{constant!underscore}, e.g.:352 Numeric constants are extended to allow \Index{underscore}s within constants\index{constant!underscore}, \eg: 353 353 \begin{lstlisting} 354 354 2®_®147®_®483®_®648; §\C{// decimal constant}§ … … 366 366 \begin{enumerate} 367 367 \item 368 A sequence of underscores is disallowed, e.g.,©12__34© is invalid.368 A sequence of underscores is disallowed, \eg ©12__34© is invalid. 369 369 \item 370 370 Underscores may only appear within a sequence of digits (regardless of the digit radix). 371 In 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).371 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). 372 372 \item 373 373 A numeric prefix may end with an underscore; … … 498 498 \end{quote2} 499 499 500 All 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.:500 All type qualifiers, \eg ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, \eg: 501 501 \begin{quote2} 502 502 \begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}} … … 518 518 \end{tabular} 519 519 \end{quote2} 520 All 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}521 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}} e.g.:520 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} 521 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: 522 522 \begin{quote2} 523 523 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}} … … 542 542 Unsupported are K\&R C declarations where the base type defaults to ©int©, if no type is specified,\footnote{ 543 543 At 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}} 544 e.g.:544 \eg: 545 545 \begin{lstlisting} 546 546 x; §\C{// int x}§ … … 612 612 A \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. 613 613 (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.) 614 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, e.g.:614 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, \eg: 615 615 \begin{quote2} 616 616 \begin{tabular}{@{}ll@{}} … … 669 669 Except for auto-dereferencing by the compiler, this reference example is the same as the previous pointer example. 670 670 Hence, a reference behaves like the variable name for the current variable it is pointing-to. 671 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, e.g.:671 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: 672 672 \begin{lstlisting} 673 673 r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15); … … 677 677 ®*®r2 = ((®*®r1 + ®*®r2) ®*® (®**®r3 - ®*®r1)) / (®**®r3 - 15); 678 678 \end{lstlisting} 679 When a reference operation appears beside a dereference operation, e.g.,©&*©, they cancel out.\footnote{679 When a reference operation appears beside a dereference operation, \eg ©&*©, they cancel out.\footnote{ 680 680 The unary ©&© operator yields the address of its operand. 681 681 If the operand has type ``type'', the result has type ``pointer to type''. … … 721 721 ®&®crc = &cx; §\C{// error, cannot change crc}§ 722 722 \end{lstlisting} 723 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}, e.g.:723 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: 724 724 \begin{lstlisting} 725 725 int & const r = *0; §\C{// where 0 is the int * zero}§ 726 726 \end{lstlisting} 727 727 Otherwise, 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. 728 Finally, the position of the ©const© qualifier \emph{after} the pointer/reference qualifier causes confuse for C programmers. 729 The ©const© qualifier cannot be moved before the pointer/reference qualifier for C style-declarations; 730 \CFA-style declarations attempt to address this issue: 731 \begin{quote2} 732 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 733 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 734 \begin{lstlisting} 735 ®const® * ®const® * const int ccp; 736 ®const® & ®const® & const int ccr; 737 \end{lstlisting} 738 & 739 \begin{lstlisting} 740 const int * ®const® * ®const® ccp; 741 742 \end{lstlisting} 743 \end{tabular} 744 \end{quote2} 745 where the \CFA declaration is read left-to-right (see \VRef{s:Declarations}). 728 746 729 747 \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. … … 785 803 \section{Type Operators} 786 804 787 The new declaration syntax can be used in other contexts where types are required, e.g.,casts and the pseudo-routine ©sizeof©:805 The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-routine ©sizeof©: 788 806 \begin{quote2} 789 807 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} … … 805 823 806 824 \CFA also supports a new syntax for routine definition, as well as ISO C and K\&R routine syntax. 807 The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, e.g.:825 The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, \eg: 808 826 \begin{lstlisting} 809 827 ®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) { … … 817 835 \Index*{Michael Tiemann}, with help from \Index*{Doug Lea}, provided named return values in g++, circa 1989.} 818 836 The value of each local return variable is automatically returned at routine termination. 819 Declaration qualifiers can only appear at the start of a routine definition, e.g.:837 Declaration qualifiers can only appear at the start of a routine definition, \eg: 820 838 \begin{lstlisting} 821 839 ®extern® [ int x ] g( int y ) {§\,§} … … 849 867 The 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. 850 868 851 C-style declarations can be used to declare parameters for \CFA style routine definitions, e.g.:869 C-style declarations can be used to declare parameters for \CFA style routine definitions, \eg: 852 870 \begin{lstlisting} 853 871 [ int ] f( * int, int * ); §\C{// returns an integer, accepts 2 pointers to integers}§ … … 898 916 899 917 The syntax of the new routine prototype declaration follows directly from the new routine definition syntax; 900 as well, parameter names are optional, e.g.:918 as well, parameter names are optional, \eg: 901 919 \begin{lstlisting} 902 920 [ int x ] f (); §\C{// returning int with no parameters}§ … … 906 924 \end{lstlisting} 907 925 This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa). 908 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}), e.g.:926 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: 909 927 \begin{quote2} 910 928 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} … … 919 937 \end{tabular} 920 938 \end{quote2} 921 Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} e.g.:939 Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} \eg: 922 940 \begin{lstlisting} 923 941 extern [ int ] f (int); … … 928 946 \section{Routine Pointers} 929 947 930 The syntax for pointers to \CFA routines specifies the pointer name on the right, e.g.:948 The syntax for pointers to \CFA routines specifies the pointer name on the right, \eg: 931 949 \begin{lstlisting} 932 950 * [ int x ] () fp; §\C{// pointer to routine returning int with no parameters}§ … … 1046 1064 p( /* positional */, /* named */, . . . ); 1047 1065 \end{lstlisting} 1048 While it is possible to implement both approaches, the first possibly is more complex than the second, e.g.:1066 While it is possible to implement both approaches, the first possibly is more complex than the second, \eg: 1049 1067 \begin{lstlisting} 1050 1068 p( int x, int y, int z, . . . ); … … 1056 1074 In the second call, the named arguments separate the positional and ellipse arguments, making it trivial to read the call. 1057 1075 1058 The problem is exacerbated with default arguments, e.g.:1076 The problem is exacerbated with default arguments, \eg: 1059 1077 \begin{lstlisting} 1060 1078 void p( int x, int y = 2, int z = 3. . . ); … … 1264 1282 1265 1283 As mentioned, tuples can appear in contexts requiring a list of value, such as an argument list of a routine call. 1266 In unambiguous situations, the tuple brackets may be omitted, e.g.,a tuple that appears as an argument may have its1284 In unambiguous situations, the tuple brackets may be omitted, \eg a tuple that appears as an argument may have its 1267 1285 square brackets omitted for convenience; therefore, the following routine invocations are equivalent: 1268 1286 \begin{lstlisting} … … 1303 1321 1304 1322 Type qualifiers, i.e., const and volatile, may modify a tuple type. 1305 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, e.g.:1323 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: 1306 1324 \begin{lstlisting} 1307 1325 const volatile [ int, float, const int ] x; … … 1311 1329 [ const volatile int, const volatile float, const volatile int ] x; 1312 1330 \end{lstlisting} 1313 Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, e.g.:1331 Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, \eg: 1314 1332 \begin{lstlisting} 1315 1333 extern [ int, int ] w1; … … 1319 1337 Unfortunately, C's syntax for subscripts precluded treating them as tuples. 1320 1338 The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©. 1321 Therefore, 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.1339 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. 1322 1340 Fixing 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. 1323 1341 \end{rationale} … … 1380 1398 Clearly, the types of the entities being assigned must be type compatible with the value of the expression. 1381 1399 1382 Mass assignment has parallel semantics, e.g.,the statement:1400 Mass assignment has parallel semantics, \eg the statement: 1383 1401 \begin{lstlisting} 1384 1402 [ x, y, z ] = 1.5; … … 1469 1487 \section{Unnamed Structure Fields} 1470 1488 1471 C requires each field of a structure to have a name, except for a bit field associated with a basic type, e.g.:1489 C requires each field of a structure to have a name, except for a bit field associated with a basic type, \eg: 1472 1490 \begin{lstlisting} 1473 1491 struct { 1474 int f1; // named field1475 int f2 : 4; // named field with bit field size1476 int : 3; // unnamed field for basic type with bit field size1477 int ; // disallowed, unnamed field1478 int *; // disallowed, unnamed field1479 int (*)(int); // disallowed, unnamed field1492 int f1; §\C{// named field}§ 1493 int f2 : 4; §\C{// named field with bit field size}§ 1494 int : 3; §\C{// unnamed field for basic type with bit field size}§ 1495 int ; §\C{// disallowed, unnamed field}§ 1496 int *; §\C{// disallowed, unnamed field}§ 1497 int (*)(int); §\C{// disallowed, unnamed field}§ 1480 1498 }; 1481 1499 \end{lstlisting} 1482 1500 This requirement is relaxed by making the field name optional for all field declarations; therefore, all the field declarations in the example are allowed. 1483 1501 As for unnamed bit fields, an unnamed field is used for padding a structure to a particular size. 1484 A list of unnamed fields is also supported, e.g.:1502 A list of unnamed fields is also supported, \eg: 1485 1503 \begin{lstlisting} 1486 1504 struct { 1487 int , , ; // 3 unnamed fields1505 int , , ; §\C{// 3 unnamed fields}§ 1488 1506 } 1489 1507 \end{lstlisting} … … 1498 1516 §\emph{expr}§ -> [ §\emph{fieldlist}§ ] 1499 1517 \end{lstlisting} 1500 \emph{expr} is any expression yielding a value of type record, e.g.,©struct©, ©union©.1518 \emph{expr} is any expression yielding a value of type record, \eg ©struct©, ©union©. 1501 1519 Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}. 1502 1520 A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is … … 1760 1778 } 1761 1779 \end{lstlisting} 1762 While 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. 1763 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©. 1764 As mentioned, transfer into control structures should be forbidden; 1765 transfers from within the ©switch© body using a ©goto© are equally unpalatable. 1766 As 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. 1780 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. 1781 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. 1782 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. 1783 The key observation is that the ©switch© statement branches into control structure, i.e., there are multiple entry points into its statement body. 1767 1784 \end{enumerate} 1768 1785 … … 1778 1795 and 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. 1779 1796 \end{itemize} 1780 These observations help to put the suggestedchanges to the ©switch© into perspective.1797 These observations help to put the \CFA changes to the ©switch© into perspective. 1781 1798 \begin{enumerate} 1782 1799 \item 1783 1800 Eliminating default fall-through has the greatest potential for affecting existing code. 1784 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, e.g.:1785 \begin{lstlisting}1801 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: 1802 \begin{lstlisting} 1786 1803 case 1: case 2: case 3: ... 1787 1804 \end{lstlisting} 1788 1805 still work. 1789 1806 Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments. 1790 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©, e.g.: 1807 <<<<<<< HEAD 1808 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: 1809 ======= 1810 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.: 1811 >>>>>>> 080615890f586cb9954c252b55cab47f52c25758 1791 1812 \begin{lstlisting} 1792 1813 ®choose® ( i ) { … … 1815 1836 Therefore, no change is made for this issue. 1816 1837 \item 1817 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{1818 Essentially, 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.1819 Further declaration in the statement body are disallowed.1838 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{ 1839 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. 1840 Further declarations at the same nesting level as the statement body are disallowed to ensure every transfer into the body is sound. 1820 1841 \begin{lstlisting} 1821 1842 switch ( x ) { 1822 ®int i = 0;® §\C{// allowed }§1843 ®int i = 0;® §\C{// allowed only at start}§ 1823 1844 case 0: 1824 1845 ... 1825 ®int i= 0;® §\C{// disallowed}§1846 ®int j = 0;® §\C{// disallowed}§ 1826 1847 case 1: 1827 1848 { 1828 ®int i = 0;® §\C{// allowed in any compound statement}§1849 ®int k = 0;® §\C{// allowed at different nesting levels}§ 1829 1850 ... 1830 1851 } … … 2707 2728 Like 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. 2708 2729 2709 There are several ambiguous cases with operator identifiers, e.g.,©int *?*?()©, where the string ©*?*?© can be lexed as ©*©/©?*?© or ©*?©/©*?©.2710 Since 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.2730 There are several ambiguous cases with operator identifiers, \eg ©int *?*?()©, where the string ©*?*?© can be lexed as ©*©/©?*?© or ©*?©/©*?©. 2731 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. 2711 2732 Even with this special hack, there are 5 general cases that cannot be handled. 2712 2733 The first case is for the function-call identifier ©?()©: … … 2773 2794 This means that a function requiring mutual exclusion could block if the lock is already held by another thread. 2774 2795 Blocking 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. 2775 If multiple mutex parameters are specified, they will be locked in parameter order ( i.e.first parameter is locked first) and unlocked in the2796 If multiple mutex parameters are specified, they will be locked in parameter order (\ie first parameter is locked first) and unlocked in the 2776 2797 reverse order. 2777 2798 \begin{lstlisting} … … 4342 4363 4343 4364 4365 \section{New Keywowrds} 4366 4367 ©catch©, ©catchResume©, ©choose©, \quad ©disable©, ©dtype©, \quad ©enable©, \quad ©fallthrough©, ©fallthru©, ©finally©, ©forall©, ©ftype©, \quad ©lvalue©, \quad ©otype©, \quad ©throw©, ©throwResume©, ©trait©, ©try© 4368 4369 4344 4370 \section{Incompatible} 4345 4371 … … 4471 4497 \CFA is C \emph{incompatible} on this issue, and provides semantics similar to \Index*[C++]{\CC}. 4472 4498 Nested types are not hoisted and can be referenced using the field selection operator ``©.©'', unlike the \CC scope-resolution operator ``©::©''. 4473 Given 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.4499 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. 4474 4500 \end{description} 4475 4501 … … 5162 5188 \label{s:RationalNumbers} 5163 5189 5164 Rational 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.5190 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. 5165 5191 When creating and computing with rational numbers, results are constantly reduced to keep the numerator and denominator as small as possible. 5166 5192 -
src/CodeGen/CodeGenerator.cc
re21c72d re7b2559 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Jul 15 15:53:15201613 // Update Count : 3 0611 // Last Modified By : 12 // Last Modified On : Sun Jul 31 08:42:18 2016 13 // Update Count : 345 14 14 // 15 15 … … 45 45 bool wantSpacing( Statement * stmt) { 46 46 return dynamic_cast< IfStmt * >( stmt ) || dynamic_cast< CompoundStmt * >( stmt ) || 47 dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * > 47 dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * >( stmt ) || dynamic_cast< SwitchStmt *>( stmt ); 48 48 } 49 49 … … 83 83 } 84 84 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 ) {} 86 86 87 87 CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp ) … … 155 155 objectDecl->get_init()->accept( *this ); 156 156 } // if 157 157 158 if ( objectDecl->get_bitfieldWidth() ) { 158 159 output << ":"; … … 172 173 173 174 cur_indent += CodeGenerator::tabsize; 174 for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++) {175 for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) { 175 176 output << indent; 176 177 (*i)->accept( *this ); 177 178 output << ";" << endl; 178 } 179 } // for 179 180 180 181 cur_indent -= CodeGenerator::tabsize; … … 257 258 (*iter)->accept( *this ); 258 259 output << "]"; 259 } 260 } 260 } // if 261 } // for 261 262 output << " = "; 262 263 } … … 317 318 // do nothing 318 319 ; 319 } 320 } // switch 320 321 321 322 switch ( opInfo.type ) { … … 385 386 // there are no intrinsic definitions of 0/1 or label addresses as functions 386 387 assert( false ); 387 } 388 } // switch 388 389 } else { 389 390 varExpr->accept( *this ); … … 417 418 case OT_CALL: 418 419 assert( false ); 419 420 420 421 421 case OT_CTOR: … … 437 437 // no constructors with 0 or more than 2 parameters 438 438 assert( false ); 439 } 439 } // if 440 440 break; 441 441 … … 470 470 // there are no intrinsic definitions of 0 or 1 as functions 471 471 assert( false ); 472 } 472 } // switch 473 473 } else { 474 nameExpr->accept( *this ); 475 output << "("; 476 genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() ); 477 output << ")"; 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 478 485 } // if 479 486 } else { … … 521 528 // otherwise, the cast is to an lvalue type, so the cast should be dropped, since the result of a cast is 522 529 // never an lvalue in C 523 } 530 } // if 524 531 castExpr->get_arg()->accept( *this ); 525 532 output << ")"; … … 654 661 if ( wantSpacing( *i ) ) { 655 662 output << endl; 656 } 663 } // if 657 664 } 658 665 cur_indent -= CodeGenerator::tabsize; … … 737 744 (*i)->accept( *this ); 738 745 output << endl; 739 } 746 } // for 740 747 cur_indent -= CodeGenerator::tabsize; 741 748 } … … 759 766 output << "continue"; 760 767 break; 761 } 768 } // switch 762 769 output << ";"; 763 770 } … … 798 805 if ( forStmt->get_condition() != 0 ) { 799 806 forStmt->get_condition()->accept( *this ); 800 } 807 } // if 801 808 output << ";"; 802 809 … … 805 812 Expression * expr = new CastExpr( forStmt->get_increment() ); 806 813 expr->accept( *this ); 807 } 814 } // if 808 815 output << ") "; 809 816 -
src/CodeGen/CodeGenerator.h
re21c72d re7b2559 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 4 17:12:40201613 // Update Count : 3 412 // Last Modified On : Sat Jul 30 11:10:42 2016 13 // Update Count : 37 14 14 // 15 15 … … 118 118 void handleAggregate( AggregateDecl *aggDecl ); 119 119 void handleTypedef( NamedTypeDecl *namedType ); 120 }; 120 }; // CodeGenerator 121 121 122 122 template< class Iterator > -
src/ControlStruct/CaseRangeMutator.cc
re21c72d re7b2559 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue Jul 12 17:35:13201613 // Update Count : 911 // Last Modified By : 12 // Last Modified On : Sun Jul 31 12:16:28 2016 13 // Update Count : 32 14 14 // 15 15 … … 34 34 std::list< Statement * >::iterator i = cases.begin(); 35 35 while ( i != cases.end() ) { 36 (*i 36 (*i)->acceptMutator( *this ); 37 37 38 38 if ( ! newCaseLabels.empty() ) { 39 std::cout << "FRED" << std::endl; 39 40 std::list< Statement * > newCases; 40 41 41 42 // transform( newCaseLabels.begin(), newCaseLabels.end(), bnd1st( ptr_fun( ctor< CaseStmt, Label, Expression * > ) ) ); 42 43 43 for ( std::list< Expression * >::iterator j = newCaseLabels.begin(); 44 j != newCaseLabels.end(); j++ ) { 45 std::list<Label> emptyLabels; 46 std::list< Statement *> emptyStmts; 44 for ( std::list< Expression * >::iterator j = newCaseLabels.begin(); j != newCaseLabels.end(); j++ ) { 45 std::list< Label > emptyLabels; 46 std::list< Statement * > emptyStmts; 47 47 newCases.push_back( new CaseStmt( emptyLabels, *j, emptyStmts ) ); 48 48 } // for 49 49 50 if ( CaseStmt *currentCase = dynamic_cast< CaseStmt * > 50 if ( CaseStmt *currentCase = dynamic_cast< CaseStmt * >( *i ) ) 51 51 if ( ! currentCase->get_statements().empty() ) { 52 CaseStmt *lastCase = dynamic_cast< CaseStmt * > 52 CaseStmt *lastCase = dynamic_cast< CaseStmt * >( newCases.back() ); 53 53 if ( lastCase == 0 ) { throw ( 0 ); /* FIXME */ } // something is very wrong, as I just made these, and they were all cases 54 54 // transfer the statement block ( if any ) to the new list: 55 55 lastCase->set_statements( currentCase->get_statements() ); 56 56 } // if 57 std::list< Statement * >::iterator j = i; advance( j, 1 ); 58 replace ( cases, i, newCases ); 57 std::list< Statement * >::iterator j = i; 58 advance( j, 1 ); 59 replace( cases, i, newCases ); 59 60 i = j; 60 61 newCaseLabels.clear(); … … 64 65 65 66 return switchStmt; 66 } 67 } // CaseRangeMutator::mutate 67 68 68 69 Statement *CaseRangeMutator::mutate( CaseStmt *caseStmt ) { 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 70 // case list, e.g., case 1, 3, 5: 71 if ( TupleExpr *tcond = dynamic_cast< TupleExpr * >( caseStmt->get_condition() ) ) { 82 72 assert( ! tcond->get_exprs().empty() ); 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? 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 85 76 } // if 86 77 87 78 std::list< Statement * > &stmts = caseStmt->get_statements(); 88 mutateAll 79 mutateAll( stmts, *this ); 89 80 90 81 return caseStmt; 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 } 82 } // CaseRangeMutator::mutate 186 83 } // namespace ControlStruct 187 84 -
src/ControlStruct/CaseRangeMutator.h
re21c72d re7b2559 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 17:35:30201613 // Update Count : 412 // Last Modified On : Sat Jul 30 23:41:57 2016 13 // Update Count : 5 14 14 // 15 15 … … 30 30 virtual Statement *mutate( CaseStmt * ); 31 31 private: 32 void fillRange( Expression *lo, Expression *hi );33 34 32 Expression *currentCondition; 35 33 std::list< Expression * > newCaseLabels; -
src/Parser/ParseNode.cc
re21c72d re7b2559 10 10 // Created On : Sat May 16 13:26:29 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 15 18:49:25201613 // Update Count : 6212 // Last Modified On : Sun Jul 24 02:17:01 2016 13 // Update Count : 90 14 14 // 15 15 … … 29 29 // because the CONT rule is NOT triggered if the pattern is empty. Hence, constants are reparsed here to determine their 30 30 // type. 31 32 static Type::Qualifiers emptyQualifiers; // no qualifiers on constants 31 33 32 34 static inline bool checkU( char c ) { return c == 'u' || c == 'U'; } … … 37 39 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; } 38 40 39 BasicType::Kind literalType( ConstantNode::Type type, string &value ) { 40 BasicType::Kind btype; 41 42 // lexing divides constants into 4 kinds 43 switch ( type ) { 44 case ConstantNode::Integer: 45 { 46 static const BasicType::Kind kind[2][3] = { 47 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt }, 48 { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt }, 49 }; 50 bool dec = true, Unsigned = false; // decimal, unsigned constant 51 int size; // 0 => int, 1 => long, 2 => long long 52 unsigned long long v; // converted integral value 53 size_t last = value.length() - 1; // last character of constant 54 55 if ( value[0] == '0' ) { // octal/hex constant ? 56 dec = false; 57 if ( last != 0 && checkX( value[1] ) ) { // hex constant ? 58 sscanf( (char *)value.c_str(), "%llx", &v ); 59 //printf( "%llx %llu\n", v, v ); 60 } else { // octal constant 61 sscanf( (char *)value.c_str(), "%llo", &v ); 62 //printf( "%llo %llu\n", v, v ); 63 } // if 64 } else { // decimal constant ? 65 sscanf( (char *)value.c_str(), "%llu", &v ); 66 //printf( "%llu %llu\n", v, v ); 67 } // if 68 69 if ( v <= INT_MAX ) { // signed int 70 size = 0; 71 } else if ( v <= UINT_MAX && ! dec ) { // unsigned int 72 size = 0; 73 Unsigned = true; // unsigned 74 } else if ( v <= LONG_MAX ) { // signed long int 75 size = 1; 76 } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int 77 size = 1; 78 Unsigned = true; // unsigned long int 79 } else if ( v <= LLONG_MAX ) { // signed long long int 80 size = 2; 81 } else { // unsigned long long int 82 size = 2; 83 Unsigned = true; // unsigned long long int 84 } // if 85 86 if ( checkU( value[last] ) ) { // suffix 'u' ? 87 Unsigned = true; 88 if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'l' ? 89 size = 1; 90 if ( last > 1 && checkL( value[ last - 2 ] ) ) { // suffix 'll' ? 91 size = 2; 92 } // if 93 } // if 94 } else if ( checkL( value[ last ] ) ) { // suffix 'l' ? 95 size = 1; 96 if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'll' ? 97 size = 2; 98 if ( last > 1 && checkU( value[ last - 2 ] ) ) { // suffix 'u' ? 99 Unsigned = true; 100 } // if 101 } else { 102 if ( last > 0 && checkU( value[ last - 1 ] ) ) { // suffix 'u' ? 103 Unsigned = true; 104 } // if 105 } // if 106 } // if 107 btype = kind[Unsigned][size]; // lookup constant type 108 break; 109 } 110 case ConstantNode::Float: 111 { 112 //long double v; 113 static const BasicType::Kind kind[2][3] = { 114 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, 115 { BasicType::FloatComplex, BasicType::DoubleComplex, BasicType::LongDoubleComplex }, 116 }; 117 bool complx = false; // real, complex 118 int size = 1; // 0 => float, 1 => double (default), 2 => long double 119 // floating-point constant has minimum of 2 characters: 1. or .1 120 size_t last = value.length() - 1; 121 122 if ( checkI( value[last] ) ) { // imaginary ? 123 complx = true; 124 last -= 1; // backup one character 125 } // if 126 127 //sscanf( (char *)value.c_str(), "%Lf", &v ); 128 //printf( "%s %24.22Lf %Lf\n", value.c_str(), v, v ); 129 130 if ( checkF( value[last] ) ) { // float ? 131 size = 0; 132 } else if ( checkD( value[last] ) ) { // double ? 133 size = 1; 134 } else if ( checkL( value[last] ) ) { // long double ? 41 ConstantNode *makeConstantInteger( std::string & str ) { 42 static const BasicType::Kind kind[2][3] = { 43 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt }, 44 { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt }, 45 }; 46 bool dec = true, Unsigned = false; // decimal, unsigned constant 47 int size; // 0 => int, 1 => long, 2 => long long 48 unsigned long long v; // converted integral value 49 size_t last = str.length() - 1; // last character of constant 50 51 if ( str[0] == '0' ) { // octal/hex constant ? 52 dec = false; 53 if ( last != 0 && checkX( str[1] ) ) { // hex constant ? 54 sscanf( (char *)str.c_str(), "%llx", &v ); 55 //printf( "%llx %llu\n", v, v ); 56 } else { // octal constant 57 sscanf( (char *)str.c_str(), "%llo", &v ); 58 //printf( "%llo %llu\n", v, v ); 59 } // if 60 } else { // decimal constant ? 61 sscanf( (char *)str.c_str(), "%llu", &v ); 62 //printf( "%llu %llu\n", v, v ); 63 } // if 64 65 if ( v <= INT_MAX ) { // signed int 66 size = 0; 67 } else if ( v <= UINT_MAX && ! dec ) { // unsigned int 68 size = 0; 69 Unsigned = true; // unsigned 70 } else if ( v <= LONG_MAX ) { // signed long int 71 size = 1; 72 } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int 73 size = 1; 74 Unsigned = true; // unsigned long int 75 } else if ( v <= LLONG_MAX ) { // signed long long int 76 size = 2; 77 } else { // unsigned long long int 78 size = 2; 79 Unsigned = true; // unsigned long long int 80 } // if 81 82 if ( checkU( str[last] ) ) { // suffix 'u' ? 83 Unsigned = true; 84 if ( last > 0 && checkL( str[last - 1] ) ) { // suffix 'l' ? 85 size = 1; 86 if ( last > 1 && checkL( str[last - 2] ) ) { // suffix 'll' ? 135 87 size = 2; 136 88 } // if 137 if ( ! complx && checkI( value[last - 1] ) ) { // imaginary ? 138 complx = true; 89 } // if 90 } else if ( checkL( str[ last ] ) ) { // suffix 'l' ? 91 size = 1; 92 if ( last > 0 && checkL( str[last - 1] ) ) { // suffix 'll' ? 93 size = 2; 94 if ( last > 1 && checkU( str[last - 2] ) ) { // suffix 'u' ? 95 Unsigned = true; 139 96 } // if 140 btype = kind[complx][size]; // lookup constant type 141 break; 142 } 143 case ConstantNode::Character: 144 btype = BasicType::Char; // default 145 if ( string( "LUu" ).find( value[0] ) != string::npos ) { 146 // ??? 147 } // if 148 break; 149 case ConstantNode::String: 150 assert( false ); 151 // array of char 152 if ( string( "LUu" ).find( value[0] ) != string::npos ) { 153 if ( value[0] == 'u' && value[1] == '8' ) { 154 // ??? 155 } else { 156 // ??? 97 } else { 98 if ( last > 0 && checkU( str[last - 1] ) ) { // suffix 'u' ? 99 Unsigned = true; 157 100 } // if 158 101 } // if 159 break; 160 } // switch 161 return btype; 162 } // literalType 163 164 165 ConstantNode *makeConstant( ConstantNode::Type type, std::string *str ) { 166 ::Type::Qualifiers emptyQualifiers; // no qualifiers on constants 167 return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, literalType( type, *str ) ), *str ), nullptr ) ); 168 } 169 170 ConstantNode *makeConstantStr( ConstantNode::Type type, std::string *str ) { 171 ::Type::Qualifiers emptyQualifiers; // no qualifiers on constants 102 } // if 103 104 return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ), nullptr ) ); 105 } // makeConstantInteger 106 107 ConstantNode *makeConstantFloat( std::string & str ) { 108 static const BasicType::Kind kind[2][3] = { 109 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, 110 { BasicType::FloatComplex, BasicType::DoubleComplex, BasicType::LongDoubleComplex }, 111 }; 112 113 bool complx = false; // real, complex 114 int size = 1; // 0 => float, 1 => double (default), 2 => long double 115 // floating-point constant has minimum of 2 characters: 1. or .1 116 size_t last = str.length() - 1; 117 118 if ( checkI( str[last] ) ) { // imaginary ? 119 complx = true; 120 last -= 1; // backup one character 121 } // if 122 123 if ( checkF( str[last] ) ) { // float ? 124 size = 0; 125 } else if ( checkD( str[last] ) ) { // double ? 126 size = 1; 127 } else if ( checkL( str[last] ) ) { // long double ? 128 size = 2; 129 } // if 130 if ( ! complx && checkI( str[last - 1] ) ) { // imaginary ? 131 complx = true; 132 } // if 133 134 return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ), nullptr ) ); 135 } // makeConstantFloat 136 137 ConstantNode *makeConstantChar( std::string & str ) { 138 return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ), nullptr ) ); 139 } // makeConstantChar 140 141 ConstantNode *makeConstantStr( std::string & str ) { 172 142 // string should probably be a primitive type 173 143 ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ), 174 144 new ConstantExpr( 175 145 Constant( new BasicType( emptyQualifiers, BasicType::UnsignedInt ), 176 toString( str ->size()+1-2 ) ) ), // +1 for '\0' and -2 for '"'146 toString( str.size()+1-2 ) ) ), // +1 for '\0' and -2 for '"' 177 147 false, false ); 178 return new ConstantNode( new ConstantExpr( Constant( at, *str ), nullptr ) );179 } 148 return new ConstantNode( new ConstantExpr( Constant( at, str ), nullptr ) ); 149 } // makeConstantStr 180 150 181 151 -
src/Parser/ParseNode.h
re21c72d re7b2559 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 20:50:21201613 // Update Count : 26 112 // Last Modified On : Sun Jul 24 02:17:00 2016 13 // Update Count : 269 14 14 // 15 15 … … 141 141 }; 142 142 143 ConstantNode *makeConstant( ConstantNode::Type, std::string * ); 144 ConstantNode *makeConstantStr( ConstantNode::Type type, std::string *str ); 143 ConstantNode *makeConstantInteger( std::string & ); 144 ConstantNode *makeConstantFloat( std::string & ); 145 ConstantNode *makeConstantChar( std::string & ); 146 ConstantNode *makeConstantStr( std::string & ); 145 147 146 148 class VarRefNode : public ExpressionNode { -
src/Parser/lex.cc
re21c72d re7b2559 382 382 (yy_c_buf_p) = yy_cp; 383 383 384 #define YY_NUM_RULES 18 0385 #define YY_END_OF_BUFFER 18 1384 #define YY_NUM_RULES 181 385 #define YY_END_OF_BUFFER 182 386 386 /* This struct is not used in this scanner, 387 387 but its presence is necessary. */ … … 391 391 flex_int32_t yy_nxt; 392 392 }; 393 static yyconst flex_int16_t yy_accept[8 88] =393 static yyconst flex_int16_t yy_accept[892] = 394 394 { 0, 395 0, 0, 0, 0, 0, 0, 11 5, 115, 118, 118,396 18 1, 179, 7, 9, 8, 138, 117, 102, 143, 146,397 11 4, 125, 126, 141, 139, 129, 140, 132, 142, 107,398 10 8, 109, 130, 131, 148, 150, 149, 151, 179, 102,399 12 3, 179, 124, 144, 102, 104, 102, 102, 102, 102,400 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,401 10 2, 102, 127, 147, 128, 145, 7, 179, 4, 4,402 18 0, 105, 180, 106, 115, 116, 122, 118, 119, 7,403 9, 0, 8, 15 5, 174, 102, 0, 167, 137, 160,404 16 8, 165, 152, 163, 153, 164, 162, 0, 112, 3,405 406 0, 16 6, 112, 110, 0, 0, 110, 110, 0, 0,407 11 0, 109, 109, 109, 0, 109, 135, 136, 134, 156,408 15 8, 154, 159, 157, 0, 0, 0, 0, 0, 0,409 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 3,410 17 3, 0, 117, 114, 102, 0, 0, 170, 0, 102,411 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,412 10 2, 102, 102, 102, 102, 102, 38, 102, 102, 102,413 10 2, 102, 102, 102, 102, 102, 102, 56, 102, 102,414 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,415 10 2, 102, 102, 102, 169, 161, 7, 0, 0, 0,416 417 2, 0, 5, 10 5, 0, 0, 0, 115, 0, 121,418 12 0, 120, 0, 0, 0, 118, 0, 0, 0, 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, 419 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420 0, 13 3, 112, 112, 0, 112, 112, 0, 0, 6,421 0, 11 0, 0, 0, 0, 112, 0, 110, 110, 110,422 11 0, 0, 111, 0, 0, 109, 109, 109, 109, 0,423 17 1, 172, 0, 177, 175, 0, 0, 0, 103, 0,424 0, 0, 0, 0, 0, 0, 0, 10 2, 17, 102,425 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,426 10 2, 102, 102, 102, 102, 102, 102, 14, 102, 102,427 428 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,429 10 2, 102, 102, 102, 102, 102, 50, 102, 102, 102,430 6 3, 102, 102, 102, 102, 102, 102, 102, 102, 102,431 10 2, 102, 102, 102, 102, 89, 102, 102, 102, 102,432 10 2, 102, 102, 0, 0, 0, 0, 0, 0, 0,433 0, 12 0, 0, 0, 0, 0, 0, 120, 0, 0,434 17 8, 0, 0, 0, 0, 0, 0, 0, 112, 0,435 11 2, 0, 112, 0, 0, 112, 0, 110, 110, 0,436 0, 11 1, 111, 0, 111, 0, 111, 109, 109, 0,437 0, 0, 0, 0, 0, 0, 0, 0, 0, 17 6,438 439 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,440 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,441 10 2, 102, 102, 21, 102, 24, 102, 27, 102, 102,442 10 2, 102, 102, 102, 102, 41, 102, 43, 102, 102,443 10 2, 102, 102, 102, 102, 55, 102, 66, 102, 102,444 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,445 10 2, 102, 102, 102, 97, 102, 102, 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, 446 446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447 0, 12 0, 0, 0, 0, 0, 0, 112, 0, 0,448 0, 0, 0, 0, 11 1, 111, 0, 113, 0, 111,449 450 11 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,451 0, 0, 0, 0, 10 2, 102, 22, 102, 102, 102,452 10 2, 102, 102, 102, 15, 102, 102, 102, 102, 102,453 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 23,454 25, 10 2, 32, 102, 102, 102, 102, 40, 102, 102,455 10 2, 102, 48, 102, 102, 53, 102, 102, 70, 102,456 10 2, 102, 76, 102, 102, 102, 102, 102, 86, 88,457 10 2, 102, 94, 102, 102, 101, 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, 458 458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 459 0, 0, 0, 0, 0, 11 3, 0, 0, 111, 113,460 461 11 3, 113, 113, 0, 111, 0, 0, 0, 0, 0,462 0, 0, 0, 0, 0, 10 2, 0, 102, 102, 102,463 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,464 10 2, 102, 102, 58, 102, 102, 102, 102, 102, 102,465 10 2, 102, 28, 102, 102, 102, 39, 42, 45, 102,466 10 2, 51, 102, 60, 67, 102, 102, 75, 77, 80,467 8 1, 83, 84, 102, 102, 91, 102, 102, 0, 1,468 0, 0, 0, 0, 0, 0, 10 5, 0, 0, 0,469 12 0, 0, 0, 0, 0, 113, 0, 113, 113, 0,470 0, 0, 0, 0, 0, 0, 0, 0, 10 2, 102,471 472 18, 10 2, 102, 102, 102, 102, 102, 102, 16, 102,473 10 2, 102, 33, 102, 102, 102, 102, 102, 102, 102,474 10 2, 102, 102, 102, 102, 36, 37, 102, 47, 52,475 10 2, 102, 102, 90, 102, 102, 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, 476 476 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 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 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 492 494 } ; 493 495 … … 537 539 } ; 538 540 539 static yyconst flex_int16_t yy_base[106 2] =541 static yyconst flex_int16_t yy_base[1066] = 540 542 { 0, 541 0, 84, 22 72, 2269, 94, 0, 177, 178, 179, 180,542 22 85, 2822, 191, 2822, 197, 55, 2822, 2231, 60, 173,543 282 2, 2822, 2822, 56, 188, 2822, 191, 189, 204, 216,544 275, 0, 22 49, 2822, 216, 2247, 152, 344, 155, 220,545 282 2, 159, 2822, 217, 226, 2822, 185, 154, 212, 251,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, 546 548 237, 270, 235, 257, 241, 205, 193, 305, 314, 333, 547 238, 228, 282 2, 225, 2822, 2242, 402, 390, 2822, 2253,548 282 2, 2221, 235, 2822, 0, 2822, 426, 0, 2822, 417,549 282 2, 439, 451, 2822, 498, 2219, 264, 2822, 2822, 2822,550 282 2, 2822, 2235, 2822, 2232, 2822, 2822, 2244, 559, 2822,551 552 22 61, 2822, 438, 444, 511, 534, 289, 253, 197, 380,553 305, 0, 319, 280, 198, 322, 282 2, 2822, 2822, 2230,554 282 2, 2822, 2822, 2227, 2224, 218, 255, 2239, 298, 350,555 368, 312, 440, 398, 405, 22 20, 441, 2168, 446, 2196,556 282 2, 335, 2822, 2822, 468, 2190, 2189, 2822, 2162, 439,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, 557 559 282, 433, 372, 281, 437, 434, 428, 570, 444, 466, 558 560 464, 469, 475, 321, 492, 438, 471, 445, 474, 512, 559 489, 503, 496, 521, 276, 515, 516, 2 189, 526, 510,561 489, 503, 496, 521, 276, 515, 516, 2202, 526, 510, 560 562 519, 525, 543, 522, 560, 553, 523, 561, 551, 544, 561 599, 582, 593, 584, 282 2, 2822, 660, 651, 2236, 666,562 563 282 2, 678, 2822, 2183, 607, 2179, 2178, 0, 693, 2822,564 282 2, 684, 2176, 2156, 2154, 0, 2177, 578, 608, 617,565 654, 679, 650, 683, 684, 687, 2 172, 690, 691, 2147,566 21 46, 2822, 0, 683, 710, 686, 700, 2145, 2196, 2822,567 714, 0, 427, 746, 764, 786, 808, 621, 282 2, 2152,568 21 25, 0, 794, 2171, 795, 709, 2822, 2147, 2121, 832,569 282 2, 2822, 2152, 2822, 2822, 711, 714, 2129, 2129, 717,570 21 25, 2123, 2120, 0, 2117, 0, 2088, 694, 679, 712,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, 571 573 709, 711, 698, 566, 726, 743, 771, 741, 790, 784, 572 800, 795, 742, 744, 814, 816, 818, 21 18, 819, 745,574 800, 795, 742, 744, 814, 816, 818, 2131, 819, 745, 573 575 574 576 820, 821, 822, 823, 824, 746, 825, 748, 659, 831, 575 577 826, 833, 838, 839, 848, 850, 851, 844, 834, 857, 576 21 16, 858, 859, 860, 862, 861, 864, 865, 867, 868,577 866, 871, 876, 872, 878, 21 13, 880, 689, 881, 882,578 892, 896, 893, 953, 954, 21 09, 2108, 2106, 0, 2103,579 0, 941, 945, 21 02, 0, 2101, 0, 2099, 0, 2118,580 282 2, 940, 941, 2094, 2088, 0, 2086, 0, 2822, 953,581 975, 964, 282 2, 981, 997, 1021, 2084, 2822, 2822, 939,582 940, 1006, 982, 1041, 310, 1039, 1004, 282 2, 2822, 2081,583 20 79, 2077, 0, 2074, 0, 2071, 0, 2070, 0, 2822,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, 584 586 585 587 886, 941, 960, 962, 977, 976, 980, 982, 1017, 1010, 586 588 1002, 998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043, 587 1038, 1041, 1053, 20 72, 1055, 2070, 1045, 2067, 1056, 1061,588 1063, 1065, 1066, 1067, 1070, 20 64, 1071, 2063, 1073, 1074,589 1075, 1078, 1080, 1081, 1085, 20 62, 1087, 2060, 1084, 1089,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, 590 592 1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108, 905, 591 1109, 1116, 1110, 1122, 20 57, 1120, 1123, 1179, 2051, 0,592 20 50, 0, 2049, 0, 2047, 0, 1166, 2044, 0, 2041,593 0, 20 40, 2039, 2037, 0, 2034, 0, 1173, 2031, 1179,594 1137, 1195, 1181, 1178, 1176, 282 2, 1219, 1231, 1253, 2042,595 596 20 17, 2027, 2024, 0, 2021, 0, 2020, 0, 2019, 0,597 20 17, 0, 2014, 0, 1141, 1172, 2014, 1180, 1155, 1196,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, 598 600 1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236, 599 1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 20 13,600 1261, 1256, 20 12, 1260, 1263, 1264, 1257, 2010, 1271, 1268,601 1269, 1273, 20 07, 1275, 1282, 2006, 1283, 1284, 2005, 1276,602 1286, 1289, 20 03, 1294, 1291, 1296, 1295, 1297, 1310, 2000,603 1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960, 0, 1958,604 0, 19 57, 0, 1954, 0, 1951, 0, 1950, 0, 1949,605 0, 19 47, 0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,606 607 1325, 1365, 1379, 19 41, 2822, 1940, 0, 1939, 0, 1937,608 0, 19 34, 0, 0, 0, 1936, 0, 1366, 1312, 1311,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, 609 611 1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390, 610 612 1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408, 611 1413, 1414, 19 35, 1409, 1416, 1419, 1933, 1930, 1929, 1422,612 1424, 19 28, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,613 1 895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,614 18 84, 0, 1883, 0, 0, 0, 1884, 0, 0, 0,615 282 2, 0, 0, 0, 0, 1486, 1878, 2822, 2822, 1492,616 18 77, 0, 1876, 0, 0, 0, 0, 1874, 1447, 1444,617 618 18 74, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,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, 619 621 1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498, 620 1508, 1512, 1513, 1514, 1515, 18 72, 1870, 1517, 1867, 1866,621 151 8, 1520, 1523, 1865, 1521, 1525, 0, 0, 0, 1860,622 18 57, 1856, 1575, 0, 1855, 1853, 1850, 1849, 1848, 1849,623 18 46, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,624 1539, 155 5, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,625 157 2, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,626 18 19, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775,627 1 768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,628 629 1 747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,630 1606, 1 742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,631 1 682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,632 161 6, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,633 1 438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,634 1 178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126, 964,635 937, 903, 1651, 1652, 1654, 1655, 1656, 1658, 788, 752,636 166 0, 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 18 87, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,641 19 60, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,642 2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,643 20 92, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,644 21 47, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,645 2 204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,646 22 64, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,647 23 18, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,648 23 72, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,649 24 35, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,650 651 24 85, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,652 25 35, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,653 25 90, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,654 26 31, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,655 26 76, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,656 27 38, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,657 2 808622 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 658 660 } ; 659 661 660 static yyconst flex_int16_t yy_def[106 2] =662 static yyconst flex_int16_t yy_def[1066] = 661 663 { 0, 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, 664 891, 1, 892, 892, 891, 5, 893, 893, 894, 894, 665 891, 891, 891, 891, 891, 891, 891, 895, 891, 891, 667 666 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 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, 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 678 763 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 679 764 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 680 765 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 681 766 891, 891, 891, 891, 891, 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 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 779 781 } ; 780 782 781 static yyconst flex_int16_t yy_nxt[29 08] =783 static yyconst flex_int16_t yy_nxt[2911] = 782 784 { 0, 783 785 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 804 806 805 807 83, 83, 83, 82, 91, 93, 87, 142, 146, 98, 806 95, 99, 99, 99, 99, 99, 99, 252, 8 87, 94,808 95, 99, 99, 99, 99, 99, 99, 252, 891, 94, 807 809 100, 85, 96, 97, 85, 101, 161, 118, 143, 77, 808 810 77, 77, 77, 144, 147, 102, 103, 87, 104, 104, … … 825 827 305, 200, 201, 190, 257, 136, 200, 257, 137, 263, 826 828 827 8 87, 264, 192, 197, 81, 82, 82, 82, 197, 87,829 891, 264, 192, 197, 81, 82, 82, 82, 197, 87, 828 830 272, 198, 202, 202, 202, 202, 202, 202, 80, 81, 829 831 82, 82, 82, 80, 87, 138, 139, 209, 210, 263, 830 8 87, 264, 209, 282, 211, 255, 263, 267, 264, 211,831 82, 81, 82, 82, 82, 82, 87, 8 87, 212, 212,832 212, 212, 82, 81, 83, 83, 83, 82, 8 87, 211,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, 833 835 99, 99, 99, 99, 99, 99, 242, 242, 242, 242, 834 836 266, 263, 263, 264, 264, 213, 143, 263, 211, 264, 835 837 87, 144, 375, 211, 211, 87, 87, 211, 211, 87, 836 87, 87, 286, 241, 8 87, 211, 87, 87, 211, 243,838 87, 87, 286, 241, 891, 211, 87, 87, 211, 243, 837 839 838 840 211, 214, 211, 281, 215, 217, 278, 284, 285, 218, 839 841 219, 307, 298, 279, 220, 221, 87, 222, 87, 223, 840 87, 87, 8 87, 87, 309, 300, 87, 87, 224, 225,842 87, 87, 891, 87, 309, 300, 87, 87, 224, 225, 841 843 226, 103, 303, 105, 105, 105, 105, 105, 105, 87, 842 844 299, 87, 301, 302, 87, 304, 308, 310, 87, 227, … … 885 887 87, 450, 87, 87, 87, 452, 455, 454, 87, 453, 886 888 457, 462, 460, 461, 87, 87, 458, 464, 87, 515, 887 459, 463, 465, 466, 344, 201, 201, 87, 8 87, 344,889 459, 463, 465, 466, 344, 201, 201, 87, 891, 344, 888 890 467, 345, 199, 211, 211, 211, 211, 352, 352, 352, 889 891 352, 360, 360, 361, 361, 371, 371, 371, 371, 371, 890 892 371, 370, 569, 370, 492, 492, 371, 371, 371, 371, 891 371, 371, 8 87, 87, 493, 494, 477, 488, 488, 488,893 371, 371, 891, 87, 493, 494, 477, 488, 488, 488, 892 894 893 895 488, 488, 488, 233, 233, 233, 233, 233, 233, 516, … … 896 898 489, 496, 87, 518, 87, 236, 374, 236, 519, 520, 897 899 237, 521, 236, 376, 376, 376, 376, 376, 376, 383, 898 87, 384, 375, 496, 87, 385, 522, 496, 497, 8 87,900 87, 384, 375, 496, 87, 385, 522, 496, 497, 891, 899 901 497, 386, 87, 498, 498, 498, 498, 498, 498, 87, 900 902 525, 495, 526, 387, 87, 524, 377, 384, 523, 496, … … 919 921 236, 498, 498, 498, 498, 498, 498, 620, 87, 492, 920 922 597, 599, 492, 600, 600, 600, 600, 600, 600, 87, 921 631, 622, 87, 887, 625, 887, 87, 862, 87, 601,923 631, 622, 87, 87, 625, 891, 87, 891, 87, 601, 922 924 497, 602, 497, 603, 602, 498, 498, 498, 498, 498, 923 925 498, 624, 628, 87, 87, 630, 604, 87, 87, 87, … … 926 928 634, 87, 87, 635, 87, 87, 87, 642, 87, 87, 927 929 637, 641, 87, 87, 640, 87, 87, 643, 647, 639, 928 87, 87, 8 87, 87, 87, 87, 638, 87, 87, 644,930 87, 87, 866, 87, 87, 87, 638, 87, 87, 644, 929 931 645, 646, 648, 650, 87, 87, 87, 649, 87, 653, 930 932 651, 87, 652, 87, 654, 655, 87, 87, 87, 87, 931 933 656, 657, 87, 660, 659, 661, 664, 87, 658, 87, 932 934 87, 663, 87, 87, 87, 668, 665, 688, 688, 662, 933 666, 701, 702, 8 87, 887, 87, 667, 488, 488, 488,935 666, 701, 702, 891, 891, 87, 667, 488, 488, 488, 934 936 488, 488, 488, 596, 596, 596, 596, 596, 596, 595, 935 937 688, 595, 704, 87, 596, 596, 596, 596, 596, 596, 936 938 937 600, 600, 600, 600, 600, 600, 703, 688, 87, 8 87,939 600, 600, 600, 600, 600, 600, 703, 688, 87, 891, 938 940 594, 686, 686, 686, 686, 686, 686, 689, 87, 689, 939 941 87, 87, 689, 699, 87, 708, 87, 601, 706, 602, … … 944 946 715, 87, 721, 719, 87, 724, 87, 87, 722, 720, 945 947 727, 87, 87, 87, 725, 87, 731, 723, 87, 732, 946 726, 87, 87, 861, 728, 734, 87, 733, 730, 87,947 948 735, 87, 87, 729, 87, 87, 751, 736, 686, 686,948 726, 87, 87, 87, 728, 734, 87, 733, 730, 87, 949 950 735, 87, 87, 729, 87, 863, 751, 736, 686, 686, 949 951 686, 686, 686, 686, 600, 600, 600, 600, 600, 600, 950 952 750, 87, 755, 87, 601, 763, 602, 752, 603, 602, … … 954 956 87, 768, 87, 769, 87, 87, 87, 87, 770, 87, 955 957 87, 87, 87, 87, 771, 87, 774, 87, 772, 87, 956 87, 7 79, 87, 87, 795, 87, 780, 773, 87, 87,957 776, 87, 775, 803, 777, 796, 778, 686, 686, 686,958 959 686, 686, 686, 79 3, 87, 794, 799, 87, 798, 87,960 80 1, 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 83 1, 833, 87, 87, 87, 834, 87, 836, 810, 811,964 8 26, 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 8 49, 87, 87, 87, 854, 858, 859, 87, 87, 856,968 8 60, 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 8 87, 845, 882, 883, 887, 844, 885, 69, 69, 69,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, 975 977 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 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, 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, 997 989 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 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, 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, 1027 1009 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 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 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 1103 1105 } ; 1104 1106 1105 static yyconst flex_int16_t yy_chk[29 08] =1107 static yyconst flex_int16_t yy_chk[2911] = 1106 1108 { 0, 1107 1109 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1124 1126 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1125 1127 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1126 8, 9, 10, 37, 37, 20, 39, 9, 10, 8 86,1128 8, 9, 10, 37, 37, 20, 39, 9, 10, 890, 1127 1129 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1128 1130 … … 1135 1137 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1136 1138 45, 30, 40, 45, 45, 40, 49, 30, 45, 56, 1137 62, 45, 49, 30, 73, 88 5, 127, 53, 127, 51,1139 62, 45, 49, 30, 73, 889, 127, 53, 127, 51, 1138 1140 61, 30, 62, 55, 30, 31, 108, 31, 31, 31, 1139 1141 … … 1149 1151 164, 68, 68, 59, 113, 38, 68, 116, 38, 131, 1150 1152 1151 110, 131, 60, 67, 67, 67, 67, 67, 67, 8 77,1153 110, 131, 60, 67, 67, 67, 67, 67, 67, 881, 1152 1154 142, 67, 68, 68, 68, 68, 68, 68, 80, 80, 1153 1155 80, 80, 80, 80, 153, 38, 38, 77, 77, 134, 1154 1156 110, 134, 77, 153, 77, 110, 135, 135, 135, 77, 1155 82, 82, 82, 82, 82, 82, 8 76, 243, 77, 77,1157 82, 82, 82, 82, 82, 82, 880, 243, 77, 77, 1156 1158 77, 77, 83, 83, 83, 83, 83, 83, 110, 77, 1157 1159 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, … … 1163 1165 85, 166, 159, 150, 85, 85, 161, 85, 160, 85, 1164 1166 145, 162, 104, 167, 168, 161, 169, 163, 85, 85, 1165 85, 105, 163, 105, 105, 105, 105, 105, 105, 87 3,1167 85, 105, 163, 105, 105, 105, 105, 105, 105, 877, 1166 1168 160, 171, 162, 162, 165, 163, 167, 169, 173, 85, 1167 1169 105, 106, 85, 106, 165, 172, 106, 106, 106, 106, … … 1176 1178 189, 158, 158, 188, 192, 158, 194, 158, 284, 219, 1177 1179 185, 219, 158, 158, 158, 193, 158, 192, 220, 194, 1178 220, 191, 198, 198, 191, 192, 205, 198, 193, 87 2,1180 220, 191, 198, 198, 191, 192, 205, 198, 193, 876, 1179 1181 193, 197, 197, 197, 197, 197, 197, 200, 200, 197, 1180 1182 248, 221, 200, 198, 198, 198, 198, 198, 198, 202, … … 1193 1195 245, 245, 270, 288, 293, 286, 294, 300, 306, 293, 1194 1196 1195 308, 244, 300, 306, 87 0, 294, 308, 244, 246, 246,1197 308, 244, 300, 306, 874, 294, 308, 244, 246, 246, 1196 1198 246, 246, 246, 246, 253, 286, 288, 255, 255, 255, 1197 1199 255, 255, 255, 287, 246, 247, 246, 247, 246, 246, 1198 1200 247, 247, 247, 247, 247, 247, 290, 253, 287, 253, 1199 8 69, 246, 289, 253, 287, 287, 246, 292, 246, 253,1201 873, 246, 289, 253, 287, 287, 246, 292, 246, 253, 1200 1202 255, 246, 291, 246, 260, 260, 260, 260, 260, 260, 1201 1203 289, 253, 290, 292, 292, 253, 295, 291, 296, 253, … … 1209 1211 335, 324, 337, 339, 340, 326, 329, 328, 401, 327, 1210 1212 331, 337, 334, 335, 341, 343, 332, 340, 342, 401, 1211 333, 339, 341, 342, 344, 344, 345, 460, 86 2, 344,1213 333, 339, 341, 342, 344, 344, 345, 460, 866, 344, 1212 1214 343, 344, 345, 352, 352, 352, 352, 353, 353, 353, 1213 1215 353, 362, 363, 362, 363, 370, 370, 370, 370, 370, 1214 1216 370, 372, 460, 372, 380, 381, 372, 372, 372, 372, 1215 372, 372, 86 1, 402, 380, 381, 352, 371, 371, 371,1217 372, 372, 865, 402, 380, 381, 352, 371, 371, 371, 1216 1218 1217 1219 371, 371, 371, 374, 374, 374, 374, 374, 374, 402, 1218 380, 381, 403, 371, 404, 371, 86 0, 371, 371, 375,1220 380, 381, 403, 371, 404, 371, 864, 371, 371, 375, 1219 1221 375, 375, 375, 375, 375, 383, 382, 403, 406, 405, 1220 1222 371, 383, 407, 404, 408, 371, 374, 371, 405, 406, … … 1233 1235 450, 453, 442, 444, 455, 456, 447, 457, 458, 449, 1234 1236 459, 461, 463, 455, 451, 458, 454, 459, 462, 452, 1235 457, 453, 466, 456, 464, 467, 462, 525, 8 59, 463,1237 457, 453, 466, 456, 464, 467, 462, 525, 863, 463, 1236 1238 525, 468, 491, 461, 467, 464, 462, 468, 477, 477, 1237 1239 477, 477, 491, 515, 466, 488, 488, 488, 488, 488, … … 1239 1241 488, 490, 490, 490, 490, 490, 490, 519, 491, 521, 1240 1242 515, 488, 492, 488, 492, 488, 488, 492, 492, 492, 1241 492, 492, 492, 494, 516, 495, 493, 519, 488, 8 55,1242 85 1, 521, 518, 488, 490, 488, 493, 516, 488, 529,1243 492, 492, 492, 494, 516, 495, 493, 519, 488, 862, 1244 858, 521, 518, 488, 490, 488, 493, 516, 488, 529, 1243 1245 488, 497, 497, 497, 497, 497, 497, 518, 520, 494, 1244 1246 492, 495, 493, 498, 498, 498, 498, 498, 498, 523, 1245 529, 520, 526, 8 48, 523, 847, 528, 846, 522, 498,1247 529, 520, 526, 854, 523, 851, 528, 850, 522, 498, 1246 1248 499, 498, 499, 498, 498, 499, 499, 499, 499, 499, 1247 1249 499, 522, 526, 524, 527, 528, 498, 531, 530, 532, … … 1250 1252 532, 535, 537, 533, 536, 538, 539, 541, 542, 547, 1251 1253 535, 539, 544, 541, 538, 545, 546, 542, 547, 537, 1252 550, 551, 84 5, 549, 534, 552, 536, 554, 560, 544,1254 550, 551, 849, 549, 534, 552, 536, 554, 560, 544, 1253 1255 545, 546, 549, 551, 555, 557, 558, 550, 561, 555, 1254 1256 552, 562, 554, 565, 557, 558, 564, 567, 566, 568, 1255 1257 560, 561, 575, 565, 564, 566, 569, 571, 562, 574, 1256 1258 572, 568, 569, 620, 619, 575, 571, 601, 601, 567, 1257 572, 619, 620, 84 4, 843, 622, 574, 594, 594, 594,1259 572, 619, 620, 848, 847, 622, 574, 594, 594, 594, 1258 1260 594, 594, 594, 595, 595, 595, 595, 595, 595, 597, 1259 1261 601, 597, 622, 621, 597, 597, 597, 597, 597, 597, 1260 1262 1261 600, 600, 600, 600, 600, 600, 621, 602, 626, 84 2,1263 600, 600, 600, 600, 600, 600, 621, 602, 626, 846, 1262 1264 594, 596, 596, 596, 596, 596, 596, 603, 618, 603, 1263 1265 623, 624, 603, 618, 628, 626, 625, 596, 624, 596, … … 1268 1270 633, 646, 639, 637, 650, 642, 651, 656, 640, 638, 1269 1271 646, 653, 657, 636, 644, 665, 656, 641, 664, 657, 1270 645, 667, 668, 84 1, 650, 665, 700, 664, 653, 699,1271 1272 667, 702, 705, 651, 714, 8 37, 700, 668, 686, 686,1272 645, 667, 668, 842, 650, 665, 700, 664, 653, 699, 1273 1274 667, 702, 705, 651, 714, 842, 700, 668, 686, 686, 1273 1275 686, 686, 686, 686, 690, 690, 690, 690, 690, 690, 1274 1276 699, 708, 705, 703, 686, 714, 686, 702, 686, 686, … … 1276 1278 712, 686, 711, 717, 710, 718, 686, 690, 686, 712, 1277 1279 720, 686, 717, 686, 713, 711, 716, 713, 719, 716, 1278 721, 719, 715, 720, 722, 723, 724, 725, 721, 7 28,1279 7 31, 718, 732, 735, 722, 733, 725, 736, 723, 756,1280 757, 735, 836, 754, 756, 759, 736, 724, 755, 760,1281 7 31, 761, 728, 764, 732, 757, 733, 743, 743, 743,1282 1283 743, 743, 743, 754, 7 58, 755, 760, 762, 759, 763,1284 76 2, 769, 766, 768, 758, 766, 768, 761, 769, 772,1285 7 70, 764, 763, 770, 771, 773, 778, 771, 793, 795,1286 743, 79 8, 797, 796, 772, 797, 799, 800, 802, 799,1287 80 0, 803, 804, 806, 807, 804, 810, 807, 773, 778,1288 7 95, 796, 809, 798, 808, 793, 802, 808, 811, 826,1289 8 30, 809, 810, 827, 829, 806, 828, 803, 831, 828,1290 8 27, 831, 832, 829, 811, 834, 835, 839, 830, 835,1291 8 26, 840, 838, 849, 830, 838, 839, 853, 850, 832,1292 8 40, 852, 849, 850, 852, 854, 856, 853, 857, 856,1293 1294 85 4, 857, 858, 863, 864, 858, 865, 866, 867, 865,1295 868, 86 7, 871, 868, 874, 875, 878, 866, 879, 864,1296 8 80, 882, 881, 863, 883, 878, 884, 833, 825, 824,1297 8 75, 879, 823, 822, 871, 874, 884, 821, 820, 882,1298 8 19, 818, 880, 881, 817, 816, 883, 888, 888, 888,1299 8 88, 888, 888, 888, 888, 888, 888, 888, 888, 888,1300 8 89, 889, 889, 889, 889, 889, 889, 889, 889, 889,1301 8 89, 889, 889, 890, 890, 890, 890, 890, 890, 890,1302 89 0, 890, 890, 890, 890, 890, 891, 815, 814, 891,1303 8 13, 891, 891, 891, 891, 891, 892, 812, 805, 801,1304 1305 8 92, 892, 892, 892, 892, 892, 893, 893, 893, 893,1306 89 3, 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 7 77, 899, 899, 899, 899, 899, 900, 776, 900, 775,1314 7 74, 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 90 6, 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 9 09, 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 91 6, 917, 592, 917, 590, 588, 586, 917, 918, 584,1328 9 18, 919, 582, 580, 919, 578, 919, 919, 919, 919,1329 9 19, 920, 920, 920, 920, 920, 920, 920, 920, 920,1330 92 0, 920, 920, 920, 921, 921, 921, 921, 921, 921,1331 92 1, 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 92 5, 926, 511, 926, 509, 507, 505, 926, 927, 503,1335 9 27, 928, 502, 928, 501, 500, 489, 928, 929, 486,1336 9 29, 930, 484, 930, 483, 482, 480, 930, 931, 478,1337 1338 93 1, 932, 475, 932, 473, 471, 469, 932, 933, 465,1339 93 3, 934, 448, 934, 446, 438, 436, 934, 935, 428,1340 93 5, 936, 426, 936, 424, 398, 396, 936, 937, 394,1341 9 37, 938, 392, 938, 391, 938, 390, 938, 939, 377,1342 9 39, 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 95 1, 214, 951, 951, 951, 951, 951, 952, 952, 952,1351 95 2, 952, 952, 952, 952, 952, 952, 952, 952, 952,1352 95 3, 213, 953, 207, 206, 204, 953, 954, 199, 954,1353 95 5, 178, 955, 149, 147, 146, 955, 956, 140, 956,1354 9 57, 138, 957, 136, 128, 125, 957, 958, 124, 958,1355 9 59, 120, 959, 101, 98, 95, 959, 960, 93, 960,1356 96 1, 86, 961, 72, 70, 66, 961, 962, 36, 962,1357 96 3, 33, 963, 18, 11, 4, 963, 964, 3, 964,1358 96 5, 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 97 3, 974, 0, 974, 0, 0, 0, 974, 975, 0,1365 97 5, 976, 0, 976, 0, 0, 0, 976, 977, 0,1366 9 77, 978, 0, 978, 0, 0, 0, 978, 979, 0,1367 9 79, 980, 0, 980, 0, 0, 0, 980, 981, 0,1368 98 1, 982, 0, 982, 0, 0, 0, 982, 983, 0,1369 98 3, 984, 0, 0, 984, 0, 984, 984, 984, 984,1370 1371 98 4, 985, 985, 985, 985, 985, 985, 985, 985, 985,1372 98 5, 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 100 4, 1005, 0, 1005, 0, 0, 0, 1005, 1006, 0,1384 100 6, 1007, 0, 1007, 0, 0, 0, 1007, 1008, 0,1385 10 08, 1009, 0, 1009, 0, 0, 0, 1009, 1010, 0,1386 101 0, 1011, 0, 1011, 1012, 0, 1012, 1013, 0, 0,1387 101 3, 0, 1013, 1013, 1013, 1013, 1013, 1014, 0, 1014,1388 101 5, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,1389 101 5, 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 102 6, 1027, 0, 1027, 1028, 0, 1028, 1029, 0, 1029,1396 103 0, 0, 1030, 0, 0, 0, 1030, 1031, 0, 1031,1397 103 2, 0, 1032, 0, 0, 0, 1032, 1033, 0, 1033,1398 103 4, 0, 1034, 1035, 0, 1035, 1036, 0, 1036, 1037,1399 0, 10 37, 0, 0, 0, 1037, 1038, 0, 0, 1038,1400 0, 1038, 1038, 1038, 1038, 1038, 1039, 0, 1039, 1040,1401 0, 104 0, 1041, 0, 1041, 1042, 0, 1042, 0, 0,1402 0, 1042, 1043, 0, 1043, 0, 0, 0, 1043, 1044,1403 1404 0, 104 4, 0, 0, 0, 1044, 1045, 0, 1045, 1046,1405 0, 104 6, 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 105 3, 0, 0, 0, 1053, 1054, 0, 1054, 0, 0,1411 0, 1054, 1055, 0, 1055, 0, 0, 0, 1055, 1056,1412 0, 105 6, 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 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1419 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1420 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1421 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1422 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1423 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1424 8 87, 887, 887, 887, 887, 887, 887, 887, 887, 887,1425 1426 8 87, 887, 887, 887, 887, 887, 8871280 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 1427 1429 } ; 1428 1430 1429 1431 /* Table of booleans, true if rule could match eol. */ 1430 static yyconst flex_int32_t yy_rule_can_match_eol[18 1] =1432 static yyconst flex_int32_t yy_rule_can_match_eol[182] = 1431 1433 { 0, 1432 1434 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1435 1437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1436 1438 0, 0, 0, 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,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, 1439 1441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1440 1442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1441 0, };1443 0, 0, }; 1442 1444 1443 1445 static yy_state_type yy_last_accepting_state; … … 1466 1468 * Author : Peter A. Buhr 1467 1469 * Created On : Sat Sep 22 08:58:10 2001 1468 * Last Modified By : Peter A. Buhr1469 * Last Modified On : Thu Jun 23 07:29:3020161470 * Update Count : 45 71470 * Last Modified By : 1471 * Last Modified On : Sun Jul 31 07:19:36 2016 1472 * Update Count : 459 1471 1473 */ 1472 1474 #line 20 "lex.ll" … … 1529 1531 1530 1532 1531 #line 153 2"Parser/lex.cc"1533 #line 1534 "Parser/lex.cc" 1532 1534 1533 1535 #define INITIAL 0 … … 1724 1726 1725 1727 /* line directives */ 1726 #line 172 7"Parser/lex.cc"1728 #line 1729 "Parser/lex.cc" 1727 1729 1728 1730 if ( !(yy_init) ) … … 1778 1780 { 1779 1781 yy_current_state = (int) yy_def[yy_current_state]; 1780 if ( yy_current_state >= 8 88)1782 if ( yy_current_state >= 892 ) 1781 1783 yy_c = yy_meta[(unsigned int) yy_c]; 1782 1784 } … … 1784 1786 ++yy_cp; 1785 1787 } 1786 while ( yy_base[yy_current_state] != 282 2);1788 while ( yy_base[yy_current_state] != 2825 ); 1787 1789 1788 1790 yy_find_action: … … 2081 2083 YY_RULE_SETUP 2082 2084 #line 216 "lex.ll" 2085 { KEYWORD_RETURN(FALLTHRU); } // CFA 2086 YY_BREAK 2087 case 48: 2088 YY_RULE_SETUP 2089 #line 217 "lex.ll" 2083 2090 { KEYWORD_RETURN(FINALLY); } // CFA 2084 2091 YY_BREAK 2085 case 4 8:2086 YY_RULE_SETUP 2087 #line 21 7"lex.ll"2092 case 49: 2093 YY_RULE_SETUP 2094 #line 218 "lex.ll" 2088 2095 { KEYWORD_RETURN(FLOAT); } 2089 2096 YY_BREAK 2090 case 49:2091 YY_RULE_SETUP 2092 #line 21 8"lex.ll"2097 case 50: 2098 YY_RULE_SETUP 2099 #line 219 "lex.ll" 2093 2100 { KEYWORD_RETURN(FLOAT); } // GCC 2094 2101 YY_BREAK 2095 case 5 0:2096 YY_RULE_SETUP 2097 #line 2 19"lex.ll"2102 case 51: 2103 YY_RULE_SETUP 2104 #line 220 "lex.ll" 2098 2105 { KEYWORD_RETURN(FOR); } 2099 2106 YY_BREAK 2100 case 5 1:2101 YY_RULE_SETUP 2102 #line 22 0"lex.ll"2107 case 52: 2108 YY_RULE_SETUP 2109 #line 221 "lex.ll" 2103 2110 { KEYWORD_RETURN(FORALL); } // CFA 2104 2111 YY_BREAK 2105 case 5 2:2106 YY_RULE_SETUP 2107 #line 22 1"lex.ll"2112 case 53: 2113 YY_RULE_SETUP 2114 #line 222 "lex.ll" 2108 2115 { KEYWORD_RETURN(FORTRAN); } 2109 2116 YY_BREAK 2110 case 5 3:2111 YY_RULE_SETUP 2112 #line 22 2"lex.ll"2117 case 54: 2118 YY_RULE_SETUP 2119 #line 223 "lex.ll" 2113 2120 { KEYWORD_RETURN(FTYPE); } // CFA 2114 2121 YY_BREAK 2115 case 5 4:2116 YY_RULE_SETUP 2117 #line 22 3"lex.ll"2122 case 55: 2123 YY_RULE_SETUP 2124 #line 224 "lex.ll" 2118 2125 { KEYWORD_RETURN(GENERIC); } // C11 2119 2126 YY_BREAK 2120 case 5 5:2121 YY_RULE_SETUP 2122 #line 22 4"lex.ll"2127 case 56: 2128 YY_RULE_SETUP 2129 #line 225 "lex.ll" 2123 2130 { KEYWORD_RETURN(GOTO); } 2124 2131 YY_BREAK 2125 case 5 6:2126 YY_RULE_SETUP 2127 #line 22 5"lex.ll"2132 case 57: 2133 YY_RULE_SETUP 2134 #line 226 "lex.ll" 2128 2135 { KEYWORD_RETURN(IF); } 2129 2136 YY_BREAK 2130 case 5 7:2131 YY_RULE_SETUP 2132 #line 22 6"lex.ll"2137 case 58: 2138 YY_RULE_SETUP 2139 #line 227 "lex.ll" 2133 2140 { KEYWORD_RETURN(IMAGINARY); } // C99 2134 YY_BREAK2135 case 58:2136 YY_RULE_SETUP2137 #line 227 "lex.ll"2138 { KEYWORD_RETURN(IMAGINARY); } // GCC2139 2141 YY_BREAK 2140 2142 case 59: … … 2146 2148 YY_RULE_SETUP 2147 2149 #line 229 "lex.ll" 2150 { KEYWORD_RETURN(IMAGINARY); } // GCC 2151 YY_BREAK 2152 case 61: 2153 YY_RULE_SETUP 2154 #line 230 "lex.ll" 2148 2155 { KEYWORD_RETURN(INLINE); } // C99 2149 YY_BREAK2150 case 61:2151 YY_RULE_SETUP2152 #line 230 "lex.ll"2153 { KEYWORD_RETURN(INLINE); } // GCC2154 2156 YY_BREAK 2155 2157 case 62: … … 2161 2163 YY_RULE_SETUP 2162 2164 #line 232 "lex.ll" 2165 { KEYWORD_RETURN(INLINE); } // GCC 2166 YY_BREAK 2167 case 64: 2168 YY_RULE_SETUP 2169 #line 233 "lex.ll" 2163 2170 { KEYWORD_RETURN(INT); } 2164 2171 YY_BREAK 2165 case 6 4:2166 YY_RULE_SETUP 2167 #line 23 3"lex.ll"2172 case 65: 2173 YY_RULE_SETUP 2174 #line 234 "lex.ll" 2168 2175 { KEYWORD_RETURN(INT); } // GCC 2169 2176 YY_BREAK 2170 case 6 5:2171 YY_RULE_SETUP 2172 #line 23 4"lex.ll"2177 case 66: 2178 YY_RULE_SETUP 2179 #line 235 "lex.ll" 2173 2180 { KEYWORD_RETURN(LABEL); } // GCC 2174 2181 YY_BREAK 2175 case 6 6:2176 YY_RULE_SETUP 2177 #line 23 5"lex.ll"2182 case 67: 2183 YY_RULE_SETUP 2184 #line 236 "lex.ll" 2178 2185 { KEYWORD_RETURN(LONG); } 2179 2186 YY_BREAK 2180 case 6 7:2181 YY_RULE_SETUP 2182 #line 23 6"lex.ll"2187 case 68: 2188 YY_RULE_SETUP 2189 #line 237 "lex.ll" 2183 2190 { KEYWORD_RETURN(LVALUE); } // CFA 2184 2191 YY_BREAK 2185 case 6 8:2186 YY_RULE_SETUP 2187 #line 23 7"lex.ll"2192 case 69: 2193 YY_RULE_SETUP 2194 #line 238 "lex.ll" 2188 2195 { KEYWORD_RETURN(NORETURN); } // C11 2189 2196 YY_BREAK 2190 case 69:2191 YY_RULE_SETUP 2192 #line 23 8"lex.ll"2197 case 70: 2198 YY_RULE_SETUP 2199 #line 239 "lex.ll" 2193 2200 { KEYWORD_RETURN(OFFSETOF); } // GCC 2194 2201 YY_BREAK 2195 case 7 0:2196 YY_RULE_SETUP 2197 #line 2 39"lex.ll"2202 case 71: 2203 YY_RULE_SETUP 2204 #line 240 "lex.ll" 2198 2205 { KEYWORD_RETURN(OTYPE); } // CFA 2199 2206 YY_BREAK 2200 case 7 1:2201 YY_RULE_SETUP 2202 #line 24 0"lex.ll"2207 case 72: 2208 YY_RULE_SETUP 2209 #line 241 "lex.ll" 2203 2210 { KEYWORD_RETURN(REGISTER); } 2204 2211 YY_BREAK 2205 case 7 2:2206 YY_RULE_SETUP 2207 #line 24 1"lex.ll"2212 case 73: 2213 YY_RULE_SETUP 2214 #line 242 "lex.ll" 2208 2215 { KEYWORD_RETURN(RESTRICT); } // C99 2209 YY_BREAK2210 case 73:2211 YY_RULE_SETUP2212 #line 242 "lex.ll"2213 { KEYWORD_RETURN(RESTRICT); } // GCC2214 2216 YY_BREAK 2215 2217 case 74: … … 2221 2223 YY_RULE_SETUP 2222 2224 #line 244 "lex.ll" 2225 { KEYWORD_RETURN(RESTRICT); } // GCC 2226 YY_BREAK 2227 case 76: 2228 YY_RULE_SETUP 2229 #line 245 "lex.ll" 2223 2230 { KEYWORD_RETURN(RETURN); } 2224 2231 YY_BREAK 2225 case 7 6:2226 YY_RULE_SETUP 2227 #line 24 5"lex.ll"2232 case 77: 2233 YY_RULE_SETUP 2234 #line 246 "lex.ll" 2228 2235 { KEYWORD_RETURN(SHORT); } 2229 2236 YY_BREAK 2230 case 7 7:2231 YY_RULE_SETUP 2232 #line 24 6"lex.ll"2237 case 78: 2238 YY_RULE_SETUP 2239 #line 247 "lex.ll" 2233 2240 { KEYWORD_RETURN(SIGNED); } 2234 YY_BREAK2235 case 78:2236 YY_RULE_SETUP2237 #line 247 "lex.ll"2238 { KEYWORD_RETURN(SIGNED); } // GCC2239 2241 YY_BREAK 2240 2242 case 79: … … 2246 2248 YY_RULE_SETUP 2247 2249 #line 249 "lex.ll" 2250 { KEYWORD_RETURN(SIGNED); } // GCC 2251 YY_BREAK 2252 case 81: 2253 YY_RULE_SETUP 2254 #line 250 "lex.ll" 2248 2255 { KEYWORD_RETURN(SIZEOF); } 2249 2256 YY_BREAK 2250 case 8 1:2251 YY_RULE_SETUP 2252 #line 25 0"lex.ll"2257 case 82: 2258 YY_RULE_SETUP 2259 #line 251 "lex.ll" 2253 2260 { KEYWORD_RETURN(STATIC); } 2254 2261 YY_BREAK 2255 case 8 2:2256 YY_RULE_SETUP 2257 #line 25 1"lex.ll"2262 case 83: 2263 YY_RULE_SETUP 2264 #line 252 "lex.ll" 2258 2265 { KEYWORD_RETURN(STATICASSERT); } // C11 2259 2266 YY_BREAK 2260 case 8 3:2261 YY_RULE_SETUP 2262 #line 25 2"lex.ll"2267 case 84: 2268 YY_RULE_SETUP 2269 #line 253 "lex.ll" 2263 2270 { KEYWORD_RETURN(STRUCT); } 2264 2271 YY_BREAK 2265 case 8 4:2266 YY_RULE_SETUP 2267 #line 25 3"lex.ll"2272 case 85: 2273 YY_RULE_SETUP 2274 #line 254 "lex.ll" 2268 2275 { KEYWORD_RETURN(SWITCH); } 2269 2276 YY_BREAK 2270 case 8 5:2271 YY_RULE_SETUP 2272 #line 25 4"lex.ll"2277 case 86: 2278 YY_RULE_SETUP 2279 #line 255 "lex.ll" 2273 2280 { KEYWORD_RETURN(THREADLOCAL); } // C11 2274 2281 YY_BREAK 2275 case 8 6:2276 YY_RULE_SETUP 2277 #line 25 5"lex.ll"2282 case 87: 2283 YY_RULE_SETUP 2284 #line 256 "lex.ll" 2278 2285 { KEYWORD_RETURN(THROW); } // CFA 2279 2286 YY_BREAK 2280 case 8 7:2281 YY_RULE_SETUP 2282 #line 25 6"lex.ll"2287 case 88: 2288 YY_RULE_SETUP 2289 #line 257 "lex.ll" 2283 2290 { KEYWORD_RETURN(THROWRESUME); } // CFA 2284 2291 YY_BREAK 2285 case 8 8:2286 YY_RULE_SETUP 2287 #line 25 7"lex.ll"2292 case 89: 2293 YY_RULE_SETUP 2294 #line 258 "lex.ll" 2288 2295 { KEYWORD_RETURN(TRAIT); } // CFA 2289 2296 YY_BREAK 2290 case 89:2291 YY_RULE_SETUP 2292 #line 25 8"lex.ll"2297 case 90: 2298 YY_RULE_SETUP 2299 #line 259 "lex.ll" 2293 2300 { KEYWORD_RETURN(TRY); } // CFA 2294 2301 YY_BREAK 2295 case 9 0:2296 YY_RULE_SETUP 2297 #line 2 59"lex.ll"2302 case 91: 2303 YY_RULE_SETUP 2304 #line 260 "lex.ll" 2298 2305 { KEYWORD_RETURN(TYPEDEF); } 2299 YY_BREAK2300 case 91:2301 YY_RULE_SETUP2302 #line 260 "lex.ll"2303 { KEYWORD_RETURN(TYPEOF); } // GCC2304 2306 YY_BREAK 2305 2307 case 92: … … 2316 2318 YY_RULE_SETUP 2317 2319 #line 263 "lex.ll" 2320 { KEYWORD_RETURN(TYPEOF); } // GCC 2321 YY_BREAK 2322 case 95: 2323 YY_RULE_SETUP 2324 #line 264 "lex.ll" 2318 2325 { KEYWORD_RETURN(UNION); } 2319 2326 YY_BREAK 2320 case 9 5:2321 YY_RULE_SETUP 2322 #line 26 4"lex.ll"2327 case 96: 2328 YY_RULE_SETUP 2329 #line 265 "lex.ll" 2323 2330 { KEYWORD_RETURN(UNSIGNED); } 2324 2331 YY_BREAK 2325 case 9 6:2326 YY_RULE_SETUP 2327 #line 26 5"lex.ll"2332 case 97: 2333 YY_RULE_SETUP 2334 #line 266 "lex.ll" 2328 2335 { KEYWORD_RETURN(VALIST); } // GCC 2329 2336 YY_BREAK 2330 case 9 7:2331 YY_RULE_SETUP 2332 #line 26 6"lex.ll"2337 case 98: 2338 YY_RULE_SETUP 2339 #line 267 "lex.ll" 2333 2340 { KEYWORD_RETURN(VOID); } 2334 2341 YY_BREAK 2335 case 9 8:2336 YY_RULE_SETUP 2337 #line 26 7"lex.ll"2342 case 99: 2343 YY_RULE_SETUP 2344 #line 268 "lex.ll" 2338 2345 { KEYWORD_RETURN(VOLATILE); } 2339 YY_BREAK2340 case 99:2341 YY_RULE_SETUP2342 #line 268 "lex.ll"2343 { KEYWORD_RETURN(VOLATILE); } // GCC2344 2346 YY_BREAK 2345 2347 case 100: … … 2351 2353 YY_RULE_SETUP 2352 2354 #line 270 "lex.ll" 2355 { KEYWORD_RETURN(VOLATILE); } // GCC 2356 YY_BREAK 2357 case 102: 2358 YY_RULE_SETUP 2359 #line 271 "lex.ll" 2353 2360 { KEYWORD_RETURN(WHILE); } 2354 2361 YY_BREAK 2355 2362 /* identifier */ 2356 case 10 2:2357 YY_RULE_SETUP 2358 #line 27 3"lex.ll"2363 case 103: 2364 YY_RULE_SETUP 2365 #line 274 "lex.ll" 2359 2366 { IDENTIFIER_RETURN(); } 2360 2367 YY_BREAK 2361 case 10 3:2362 YY_RULE_SETUP 2363 #line 27 4"lex.ll"2368 case 104: 2369 YY_RULE_SETUP 2370 #line 275 "lex.ll" 2364 2371 { ATTRIBUTE_RETURN(); } 2365 2372 YY_BREAK 2366 case 10 4:2367 YY_RULE_SETUP 2368 #line 27 5"lex.ll"2373 case 105: 2374 YY_RULE_SETUP 2375 #line 276 "lex.ll" 2369 2376 { BEGIN BKQUOTE; } 2370 2377 YY_BREAK 2371 case 10 5:2372 YY_RULE_SETUP 2373 #line 27 6"lex.ll"2378 case 106: 2379 YY_RULE_SETUP 2380 #line 277 "lex.ll" 2374 2381 { IDENTIFIER_RETURN(); } 2375 2382 YY_BREAK 2376 case 10 6:2377 YY_RULE_SETUP 2378 #line 27 7"lex.ll"2383 case 107: 2384 YY_RULE_SETUP 2385 #line 278 "lex.ll" 2379 2386 { BEGIN 0; } 2380 2387 YY_BREAK 2381 2388 /* numeric constants */ 2382 case 10 7:2383 YY_RULE_SETUP 2384 #line 28 0"lex.ll"2389 case 108: 2390 YY_RULE_SETUP 2391 #line 281 "lex.ll" 2385 2392 { NUMERIC_RETURN(ZERO); } // CFA 2386 2393 YY_BREAK 2387 case 10 8:2388 YY_RULE_SETUP 2389 #line 28 1"lex.ll"2394 case 109: 2395 YY_RULE_SETUP 2396 #line 282 "lex.ll" 2390 2397 { NUMERIC_RETURN(ONE); } // CFA 2391 YY_BREAK2392 case 109:2393 YY_RULE_SETUP2394 #line 282 "lex.ll"2395 { NUMERIC_RETURN(INTEGERconstant); }2396 2398 YY_BREAK 2397 2399 case 110: … … 2408 2410 YY_RULE_SETUP 2409 2411 #line 285 "lex.ll" 2410 { NUMERIC_RETURN( FLOATINGconstant); }2412 { NUMERIC_RETURN(INTEGERconstant); } 2411 2413 YY_BREAK 2412 2414 case 113: … … 2415 2417 { NUMERIC_RETURN(FLOATINGconstant); } 2416 2418 YY_BREAK 2419 case 114: 2420 YY_RULE_SETUP 2421 #line 287 "lex.ll" 2422 { NUMERIC_RETURN(FLOATINGconstant); } 2423 YY_BREAK 2417 2424 /* character constant, allows empty value */ 2418 case 11 4:2419 YY_RULE_SETUP 2420 #line 2 89"lex.ll"2425 case 115: 2426 YY_RULE_SETUP 2427 #line 290 "lex.ll" 2421 2428 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2422 2429 YY_BREAK 2423 case 11 5:2424 YY_RULE_SETUP 2425 #line 29 0"lex.ll"2430 case 116: 2431 YY_RULE_SETUP 2432 #line 291 "lex.ll" 2426 2433 { *strtext += std::string( yytext ); } 2427 2434 YY_BREAK 2428 case 11 6:2429 /* rule 11 6can match eol */2430 YY_RULE_SETUP 2431 #line 29 1"lex.ll"2435 case 117: 2436 /* rule 117 can match eol */ 2437 YY_RULE_SETUP 2438 #line 292 "lex.ll" 2432 2439 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2433 2440 YY_BREAK 2434 2441 /* ' stop highlighting */ 2435 2442 /* string constant */ 2436 case 11 7:2437 YY_RULE_SETUP 2438 #line 29 5"lex.ll"2443 case 118: 2444 YY_RULE_SETUP 2445 #line 296 "lex.ll" 2439 2446 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2440 2447 YY_BREAK 2441 case 11 8:2442 YY_RULE_SETUP 2443 #line 29 6"lex.ll"2448 case 119: 2449 YY_RULE_SETUP 2450 #line 297 "lex.ll" 2444 2451 { *strtext += std::string( yytext ); } 2445 2452 YY_BREAK 2446 case 1 19:2447 /* rule 1 19can match eol */2448 YY_RULE_SETUP 2449 #line 29 7"lex.ll"2453 case 120: 2454 /* rule 120 can match eol */ 2455 YY_RULE_SETUP 2456 #line 298 "lex.ll" 2450 2457 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2451 2458 YY_BREAK 2452 2459 /* " stop highlighting */ 2453 2460 /* common character/string constant */ 2454 case 12 0:2455 YY_RULE_SETUP 2456 #line 30 1"lex.ll"2461 case 121: 2462 YY_RULE_SETUP 2463 #line 302 "lex.ll" 2457 2464 { rm_underscore(); *strtext += std::string( yytext ); } 2458 2465 YY_BREAK 2459 case 12 1:2460 /* rule 12 1can match eol */2461 YY_RULE_SETUP 2462 #line 30 2"lex.ll"2466 case 122: 2467 /* rule 122 can match eol */ 2468 YY_RULE_SETUP 2469 #line 303 "lex.ll" 2463 2470 {} // continuation (ALSO HANDLED BY CPP) 2464 2471 YY_BREAK 2465 case 12 2:2466 YY_RULE_SETUP 2467 #line 30 3"lex.ll"2472 case 123: 2473 YY_RULE_SETUP 2474 #line 304 "lex.ll" 2468 2475 { *strtext += std::string( yytext ); } // unknown escape character 2469 2476 YY_BREAK 2470 2477 /* punctuation */ 2471 case 123:2472 YY_RULE_SETUP2473 #line 306 "lex.ll"2474 { ASCIIOP_RETURN(); }2475 YY_BREAK2476 2478 case 124: 2477 2479 YY_RULE_SETUP … … 2502 2504 YY_RULE_SETUP 2503 2505 #line 312 "lex.ll" 2506 { ASCIIOP_RETURN(); } 2507 YY_BREAK 2508 case 130: 2509 YY_RULE_SETUP 2510 #line 313 "lex.ll" 2504 2511 { ASCIIOP_RETURN(); } // also operator 2505 YY_BREAK2506 case 130:2507 YY_RULE_SETUP2508 #line 313 "lex.ll"2509 { ASCIIOP_RETURN(); }2510 2512 YY_BREAK 2511 2513 case 131: … … 2517 2519 YY_RULE_SETUP 2518 2520 #line 315 "lex.ll" 2521 { ASCIIOP_RETURN(); } 2522 YY_BREAK 2523 case 133: 2524 YY_RULE_SETUP 2525 #line 316 "lex.ll" 2519 2526 { ASCIIOP_RETURN(); } // also operator 2520 2527 YY_BREAK 2521 case 13 3:2522 YY_RULE_SETUP 2523 #line 31 6"lex.ll"2528 case 134: 2529 YY_RULE_SETUP 2530 #line 317 "lex.ll" 2524 2531 { NAMEDOP_RETURN(ELLIPSIS); } 2525 2532 YY_BREAK 2526 2533 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2527 case 13 4:2528 YY_RULE_SETUP 2529 #line 3 19"lex.ll"2534 case 135: 2535 YY_RULE_SETUP 2536 #line 320 "lex.ll" 2530 2537 { RETURN_VAL('['); } 2531 2538 YY_BREAK 2532 case 13 5:2533 YY_RULE_SETUP 2534 #line 32 0"lex.ll"2539 case 136: 2540 YY_RULE_SETUP 2541 #line 321 "lex.ll" 2535 2542 { RETURN_VAL(']'); } 2536 2543 YY_BREAK 2537 case 13 6:2538 YY_RULE_SETUP 2539 #line 32 1"lex.ll"2544 case 137: 2545 YY_RULE_SETUP 2546 #line 322 "lex.ll" 2540 2547 { RETURN_VAL('{'); } 2541 2548 YY_BREAK 2542 case 13 7:2543 YY_RULE_SETUP 2544 #line 32 2"lex.ll"2549 case 138: 2550 YY_RULE_SETUP 2551 #line 323 "lex.ll" 2545 2552 { RETURN_VAL('}'); } 2546 2553 YY_BREAK 2547 2554 /* operators */ 2548 case 138:2549 YY_RULE_SETUP2550 #line 325 "lex.ll"2551 { ASCIIOP_RETURN(); }2552 YY_BREAK2553 2555 case 139: 2554 2556 YY_RULE_SETUP … … 2618 2620 case 152: 2619 2621 YY_RULE_SETUP 2620 #line 340 "lex.ll" 2622 #line 339 "lex.ll" 2623 { ASCIIOP_RETURN(); } 2624 YY_BREAK 2625 case 153: 2626 YY_RULE_SETUP 2627 #line 341 "lex.ll" 2621 2628 { NAMEDOP_RETURN(ICR); } 2622 2629 YY_BREAK 2623 case 15 3:2624 YY_RULE_SETUP 2625 #line 34 1"lex.ll"2630 case 154: 2631 YY_RULE_SETUP 2632 #line 342 "lex.ll" 2626 2633 { NAMEDOP_RETURN(DECR); } 2627 2634 YY_BREAK 2628 case 15 4:2629 YY_RULE_SETUP 2630 #line 34 2"lex.ll"2635 case 155: 2636 YY_RULE_SETUP 2637 #line 343 "lex.ll" 2631 2638 { NAMEDOP_RETURN(EQ); } 2632 2639 YY_BREAK 2633 case 15 5:2634 YY_RULE_SETUP 2635 #line 34 3"lex.ll"2640 case 156: 2641 YY_RULE_SETUP 2642 #line 344 "lex.ll" 2636 2643 { NAMEDOP_RETURN(NE); } 2637 2644 YY_BREAK 2638 case 15 6:2639 YY_RULE_SETUP 2640 #line 34 4"lex.ll"2645 case 157: 2646 YY_RULE_SETUP 2647 #line 345 "lex.ll" 2641 2648 { NAMEDOP_RETURN(LS); } 2642 2649 YY_BREAK 2643 case 15 7:2644 YY_RULE_SETUP 2645 #line 34 5"lex.ll"2650 case 158: 2651 YY_RULE_SETUP 2652 #line 346 "lex.ll" 2646 2653 { NAMEDOP_RETURN(RS); } 2647 2654 YY_BREAK 2648 case 15 8:2649 YY_RULE_SETUP 2650 #line 34 6"lex.ll"2655 case 159: 2656 YY_RULE_SETUP 2657 #line 347 "lex.ll" 2651 2658 { NAMEDOP_RETURN(LE); } 2652 2659 YY_BREAK 2653 case 1 59:2654 YY_RULE_SETUP 2655 #line 34 7"lex.ll"2660 case 160: 2661 YY_RULE_SETUP 2662 #line 348 "lex.ll" 2656 2663 { NAMEDOP_RETURN(GE); } 2657 2664 YY_BREAK 2658 case 16 0:2659 YY_RULE_SETUP 2660 #line 34 8"lex.ll"2665 case 161: 2666 YY_RULE_SETUP 2667 #line 349 "lex.ll" 2661 2668 { NAMEDOP_RETURN(ANDAND); } 2662 2669 YY_BREAK 2663 case 16 1:2664 YY_RULE_SETUP 2665 #line 3 49"lex.ll"2670 case 162: 2671 YY_RULE_SETUP 2672 #line 350 "lex.ll" 2666 2673 { NAMEDOP_RETURN(OROR); } 2667 2674 YY_BREAK 2668 case 16 2:2669 YY_RULE_SETUP 2670 #line 35 0"lex.ll"2675 case 163: 2676 YY_RULE_SETUP 2677 #line 351 "lex.ll" 2671 2678 { NAMEDOP_RETURN(ARROW); } 2672 2679 YY_BREAK 2673 case 16 3:2674 YY_RULE_SETUP 2675 #line 35 1"lex.ll"2680 case 164: 2681 YY_RULE_SETUP 2682 #line 352 "lex.ll" 2676 2683 { NAMEDOP_RETURN(PLUSassign); } 2677 2684 YY_BREAK 2678 case 16 4:2679 YY_RULE_SETUP 2680 #line 35 2"lex.ll"2685 case 165: 2686 YY_RULE_SETUP 2687 #line 353 "lex.ll" 2681 2688 { NAMEDOP_RETURN(MINUSassign); } 2682 2689 YY_BREAK 2683 case 16 5:2684 YY_RULE_SETUP 2685 #line 35 3"lex.ll"2690 case 166: 2691 YY_RULE_SETUP 2692 #line 354 "lex.ll" 2686 2693 { NAMEDOP_RETURN(MULTassign); } 2687 2694 YY_BREAK 2688 case 16 6:2689 YY_RULE_SETUP 2690 #line 35 4"lex.ll"2695 case 167: 2696 YY_RULE_SETUP 2697 #line 355 "lex.ll" 2691 2698 { NAMEDOP_RETURN(DIVassign); } 2692 2699 YY_BREAK 2693 case 16 7:2694 YY_RULE_SETUP 2695 #line 35 5"lex.ll"2700 case 168: 2701 YY_RULE_SETUP 2702 #line 356 "lex.ll" 2696 2703 { NAMEDOP_RETURN(MODassign); } 2697 2704 YY_BREAK 2698 case 16 8:2699 YY_RULE_SETUP 2700 #line 35 6"lex.ll"2705 case 169: 2706 YY_RULE_SETUP 2707 #line 357 "lex.ll" 2701 2708 { NAMEDOP_RETURN(ANDassign); } 2702 2709 YY_BREAK 2703 case 1 69:2704 YY_RULE_SETUP 2705 #line 35 7"lex.ll"2710 case 170: 2711 YY_RULE_SETUP 2712 #line 358 "lex.ll" 2706 2713 { NAMEDOP_RETURN(ORassign); } 2707 2714 YY_BREAK 2708 case 17 0:2709 YY_RULE_SETUP 2710 #line 35 8"lex.ll"2715 case 171: 2716 YY_RULE_SETUP 2717 #line 359 "lex.ll" 2711 2718 { NAMEDOP_RETURN(ERassign); } 2712 2719 YY_BREAK 2713 case 17 1:2714 YY_RULE_SETUP 2715 #line 3 59"lex.ll"2720 case 172: 2721 YY_RULE_SETUP 2722 #line 360 "lex.ll" 2716 2723 { NAMEDOP_RETURN(LSassign); } 2717 2724 YY_BREAK 2718 case 17 2:2719 YY_RULE_SETUP 2720 #line 36 0"lex.ll"2725 case 173: 2726 YY_RULE_SETUP 2727 #line 361 "lex.ll" 2721 2728 { NAMEDOP_RETURN(RSassign); } 2722 2729 YY_BREAK 2723 case 17 3:2724 YY_RULE_SETUP 2725 #line 36 2"lex.ll"2726 { NAMEDOP_RETURN(ATassign); } 2730 case 174: 2731 YY_RULE_SETUP 2732 #line 363 "lex.ll" 2733 { NAMEDOP_RETURN(ATassign); } // CFA 2727 2734 YY_BREAK 2728 2735 /* CFA, operator identifier */ 2729 case 17 4:2730 YY_RULE_SETUP 2731 #line 36 5"lex.ll"2736 case 175: 2737 YY_RULE_SETUP 2738 #line 366 "lex.ll" 2732 2739 { IDENTIFIER_RETURN(); } // unary 2733 YY_BREAK2734 case 175:2735 YY_RULE_SETUP2736 #line 366 "lex.ll"2737 { IDENTIFIER_RETURN(); }2738 2740 YY_BREAK 2739 2741 case 176: … … 2745 2747 YY_RULE_SETUP 2746 2748 #line 368 "lex.ll" 2749 { IDENTIFIER_RETURN(); } 2750 YY_BREAK 2751 case 178: 2752 YY_RULE_SETUP 2753 #line 369 "lex.ll" 2747 2754 { IDENTIFIER_RETURN(); } // binary 2748 2755 YY_BREAK … … 2773 2780 an argument list. 2774 2781 */ 2775 case 17 8:2776 YY_RULE_SETUP 2777 #line 39 5"lex.ll"2782 case 179: 2783 YY_RULE_SETUP 2784 #line 396 "lex.ll" 2778 2785 { 2779 2786 // 1 or 2 character unary operator ? … … 2788 2795 YY_BREAK 2789 2796 /* unknown characters */ 2790 case 1 79:2791 YY_RULE_SETUP 2792 #line 40 7"lex.ll"2797 case 180: 2798 YY_RULE_SETUP 2799 #line 408 "lex.ll" 2793 2800 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2794 2801 YY_BREAK 2795 case 18 0:2796 YY_RULE_SETUP 2797 #line 4 09"lex.ll"2802 case 181: 2803 YY_RULE_SETUP 2804 #line 410 "lex.ll" 2798 2805 ECHO; 2799 2806 YY_BREAK 2800 #line 280 1"Parser/lex.cc"2807 #line 2808 "Parser/lex.cc" 2801 2808 case YY_STATE_EOF(INITIAL): 2802 2809 case YY_STATE_EOF(COMMENT): … … 3095 3102 { 3096 3103 yy_current_state = (int) yy_def[yy_current_state]; 3097 if ( yy_current_state >= 8 88)3104 if ( yy_current_state >= 892 ) 3098 3105 yy_c = yy_meta[(unsigned int) yy_c]; 3099 3106 } … … 3123 3130 { 3124 3131 yy_current_state = (int) yy_def[yy_current_state]; 3125 if ( yy_current_state >= 8 88)3132 if ( yy_current_state >= 892 ) 3126 3133 yy_c = yy_meta[(unsigned int) yy_c]; 3127 3134 } 3128 3135 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3129 yy_is_jam = (yy_current_state == 8 87);3136 yy_is_jam = (yy_current_state == 891); 3130 3137 3131 3138 return yy_is_jam ? 0 : yy_current_state; … … 3773 3780 #define YYTABLES_NAME "yytables" 3774 3781 3775 #line 4 09"lex.ll"3782 #line 410 "lex.ll" 3776 3783 3777 3784 -
src/Parser/lex.ll
re21c72d re7b2559 9 9 * Author : Peter A. Buhr 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 * Last Modified By : Peter A. Buhr12 * Last Modified On : Thu Jun 23 07:29:30201613 * Update Count : 45 711 * Last Modified By : 12 * Last Modified On : Sun Jul 31 07:19:36 2016 13 * Update Count : 459 14 14 */ 15 15 … … 213 213 __extension__ { KEYWORD_RETURN(EXTENSION); } // GCC 214 214 extern { KEYWORD_RETURN(EXTERN); } 215 fallthrough { KEYWORD_RETURN(FALLTHRU); } // CFA 215 216 fallthru { KEYWORD_RETURN(FALLTHRU); } // CFA 216 217 finally { KEYWORD_RETURN(FINALLY); } // CFA … … 360 361 ">>=" { NAMEDOP_RETURN(RSassign); } 361 362 362 "@=" { NAMEDOP_RETURN(ATassign); } 363 "@=" { NAMEDOP_RETURN(ATassign); } // CFA 363 364 364 365 /* CFA, operator identifier */ -
src/Parser/parser.cc
re21c72d re7b2559 5235 5235 /* Line 1806 of yacc.c */ 5236 5236 #line 305 "parser.yy" 5237 { (yyval.constant) = makeConstant ( ConstantNode::Integer,(yyvsp[(1) - (1)].tok) ); }5237 { (yyval.constant) = makeConstantInteger( *(yyvsp[(1) - (1)].tok) ); } 5238 5238 break; 5239 5239 … … 5242 5242 /* Line 1806 of yacc.c */ 5243 5243 #line 306 "parser.yy" 5244 { (yyval.constant) = makeConstant ( ConstantNode::Float,(yyvsp[(1) - (1)].tok) ); }5244 { (yyval.constant) = makeConstantFloat( *(yyvsp[(1) - (1)].tok) ); } 5245 5245 break; 5246 5246 … … 5249 5249 /* Line 1806 of yacc.c */ 5250 5250 #line 307 "parser.yy" 5251 { (yyval.constant) = makeConstant ( ConstantNode::Character,(yyvsp[(1) - (1)].tok) ); }5251 { (yyval.constant) = makeConstantChar( *(yyvsp[(1) - (1)].tok) ); } 5252 5252 break; 5253 5253 … … 5256 5256 /* Line 1806 of yacc.c */ 5257 5257 #line 332 "parser.yy" 5258 { (yyval.constant) = makeConstantStr( ConstantNode::String,(yyvsp[(1) - (1)].tok) ); }5258 { (yyval.constant) = makeConstantStr( *(yyvsp[(1) - (1)].tok) ); } 5259 5259 break; 5260 5260 -
src/Parser/parser.yy
re21c72d re7b2559 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 20:52:53201613 // Update Count : 166 112 // Last Modified On : Sat Jul 23 17:01:30 2016 13 // Update Count : 1668 14 14 // 15 15 … … 303 303 constant: 304 304 // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant". 305 INTEGERconstant { $$ = makeConstant ( ConstantNode::Integer,$1 ); }306 | FLOATINGconstant { $$ = makeConstant ( ConstantNode::Float,$1 ); }307 | CHARACTERconstant { $$ = makeConstant ( ConstantNode::Character,$1 ); }305 INTEGERconstant { $$ = makeConstantInteger( *$1 ); } 306 | FLOATINGconstant { $$ = makeConstantFloat( *$1 ); } 307 | CHARACTERconstant { $$ = makeConstantChar( *$1 ); } 308 308 ; 309 309 … … 330 330 331 331 string_literal_list: // juxtaposed strings are concatenated 332 STRINGliteral { $$ = makeConstantStr( ConstantNode::String,$1 ); }332 STRINGliteral { $$ = makeConstantStr( *$1 ); } 333 333 | string_literal_list STRINGliteral { $$ = $1->appendstr( $2 ); } 334 334 ; -
src/tests/switch.c
re21c72d re7b2559 10 10 // Created On : Tue Jul 12 06:50:22 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 18:02:23201613 // Update Count : 2212 // Last Modified On : Sat Jul 30 14:41:32 2016 13 // Update Count : 30 14 14 // 15 15 … … 33 33 } // switch 34 34 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 } 42 42 43 43 switch ( i ) { … … 49 49 default: 50 50 i = 3; 51 case 3:51 case 19: 52 52 case 'A' ... 'Z': 53 case 5... 6:54 case 2 , 4:53 case 1 ... 6: 54 case 20, 30: 55 55 j = 3; 56 56 f( 3 ); … … 78 78 struct S { int i; }; 79 79 S s; 80 case 3:80 case 19: 81 81 case 'A' ... 'Z': 82 case 5... 6:83 case 2 , 4, 7:82 case 0 ... 6: 83 case 20, 30, 40: 84 84 i = 3; 85 85 f( 3 );
Note: See TracChangeset
for help on using the changeset viewer.