Changes in / [bdad1679:540ddb7d]
- Files:
-
- 2 deleted
- 37 edited
-
configure (modified) (1 diff)
-
configure.ac (modified) (1 diff)
-
doc/refrat/Makefile (modified) (1 diff)
-
doc/refrat/refrat.tex (modified) (178 diffs)
-
src/Makefile.am (modified) (2 diffs)
-
src/Makefile.in (modified) (2 diffs)
-
src/Parser/DeclarationNode.cc (modified) (5 diffs)
-
src/Parser/ParseNode.h (modified) (6 diffs)
-
src/Parser/TypeData.cc (modified) (8 diffs)
-
src/Parser/TypeData.h (modified) (4 diffs)
-
src/Parser/lex.cc (modified) (40 diffs)
-
src/Parser/lex.ll (modified) (2 diffs)
-
src/Parser/parser.cc (modified) (327 diffs)
-
src/Parser/parser.h (modified) (4 diffs)
-
src/Parser/parser.yy (modified) (4 diffs)
-
src/ResolvExpr/ConversionCost.cc (modified) (2 diffs)
-
src/SynTree/Type.h (modified) (2 diffs)
-
src/driver/Makefile.in (modified) (1 diff)
-
src/examples/Makefile.in (modified) (1 diff)
-
src/examples/abs.c (modified) (2 diffs)
-
src/examples/ato.c (modified) (2 diffs)
-
src/examples/fstream_test.c (modified) (2 diffs)
-
src/examples/hello.c (modified) (2 diffs)
-
src/examples/identity.c (modified) (1 diff)
-
src/examples/minmax.c (modified) (2 diffs)
-
src/examples/quad.c (modified) (2 diffs)
-
src/examples/read.c (deleted)
-
src/examples/read.data (deleted)
-
src/examples/sum.c (modified) (7 diffs)
-
src/examples/swap.c (modified) (2 diffs)
-
src/examples/tests/vector_test.out.txt (modified) (1 diff)
-
src/libcfa/Makefile.in (modified) (1 diff)
-
src/libcfa/builtins.cf (modified) (4 diffs)
-
src/libcfa/fstream (modified) (3 diffs)
-
src/libcfa/fstream.c (modified) (7 diffs)
-
src/libcfa/iostream (modified) (5 diffs)
-
src/libcfa/iostream.c (modified) (3 diffs)
-
src/libcfa/stdlib (modified) (2 diffs)
-
src/libcfa/stdlib.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
configure
rbdad1679 r540ddb7d 2409 2409 2410 2410 2411 if test "x${CXXFLAGS}" = "x"; then2412 export CXXFLAGS="-std=c++11 -g -O2 ${CXXFLAGS}"2413 else2414 export CXXFLAGS="-std=c++11 ${CXXFLAGS}"2415 fi2416 2417 2411 am__api_version='1.11' 2418 2412 -
configure.ac
rbdad1679 r540ddb7d 7 7 #AC_CONFIG_SRCDIR([src/main.cc]) 8 8 AC_CONFIG_HEADERS([config.h]) 9 10 if test "x${CXXFLAGS}" = "x"; then11 export CXXFLAGS="-std=c++11 -g -O2 ${CXXFLAGS}"12 else13 export CXXFLAGS="-std=c++11 ${CXXFLAGS}"14 fi15 9 16 10 AM_INIT_AUTOMAKE -
doc/refrat/Makefile
rbdad1679 r540ddb7d 1 1 ## Define the appropriate configuration variables. 2 2 3 Macros = 4 TeXLIB = .:${Macros}: 3 TeXLIB = .:: 5 4 LaTeX = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex 6 5 BibTeX = BSTINPUTS=${TeXLIB} && export BSTINPUTS && bibtex -
doc/refrat/refrat.tex
rbdad1679 r540ddb7d 33 33 34 34 \makeatletter 35 \renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}} 36 \renewenvironment{itemize}{\begin{list}{\labelitemi}{\topsep=5pt\itemsep=5pt\parsep=0pt}}{\end{list}} 37 38 % Reduce size of chapter/section titles 39 \def\@makechapterhead#1{% 40 \vspace*{50\p@}% 41 {\parindent \z@ \raggedright \normalfont 42 \ifnum \c@secnumdepth >\m@ne 43 \large\bfseries \@chapapp\space \thechapter 44 \par\nobreak 45 \vskip 5\p@ 46 \fi 47 \interlinepenalty\@M 48 \Large \bfseries #1\par\nobreak 49 \vskip 50\p@ 50 }} 51 \def\@makeschapterhead#1{% 52 \vspace*{50\p@}% 53 {\parindent \z@ \raggedright 54 \normalfont 55 \interlinepenalty\@M 56 \Large \bfseries #1\par\nobreak 57 \vskip 50\p@ 58 }} 59 \renewcommand\section{\@startsection{section}{1}{\z@}{-3.0ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\large\bfseries}} 60 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}} 61 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.0ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}} 62 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-2.0ex \@plus -1ex \@minus -.2ex}{-1em}{\normalfont\normalsize\bfseries}} 63 35 % index macros 64 36 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}} 65 37 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}} … … 88 60 %\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}} 89 61 90 % inline text and lowercase index: \Index{inline and lowercaseindex text}91 % inline text and as-in index: \Index[as-is index text]{inlinetext}92 % inline textbut index with different as-is text: \Index[index text]{inline text}62 % text inline and lowercase index: \Index{Inline and index text} 63 % text inline and as-in index: \Index{Inline and Index text} 64 % text inline but index with different as-is text: \Index[index text]{inline text} 93 65 \newcommand{\Index}{\@ifstar\@sIndex\@Index} 94 66 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi} … … 173 145 \linenumbers % comment out to turn off line numbering 174 146 175 \title{\Huge 176 \CFA (\CFAA) Reference Manual and Rationale 177 }% title 178 \author{\huge 179 Glen Ditchfield and Peter A. Buhr 180 }% author 181 \date{ 182 DRAFT\\\today 183 }% date 147 \title{\CFA (\CFAA) Reference Manual and Rationale} 148 \author{Glen Ditchfield \and Peter A. Buhr} 149 \date{DRAFT\\\today} 184 150 185 151 \pagenumbering{roman} … … 193 159 \copyright\,2015 Glen Ditchfield \\ \\ 194 160 \noindent 195 This work is licensed under the Creative Commons Attribution 4.0 International License. 196 To view acopy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.161 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a 162 copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}. 197 163 \vspace*{1in} 198 164 … … 207 173 \chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction} 208 174 209 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C programming language. 210 It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and occasionally compares \CFA to {\CC} \cite{c++}. 211 212 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering differs). 213 Unfortunately, this means the manual contains more ``forward references'' than usual, making it harder to follow if the reader does not have a copy of the {\c11} standard. 214 For a simple introduction to \CFA, see the companion document ``An Overview of \CFA'' 175 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C 176 programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and 177 occasionally compares \CFA to {\CC} \cite{c++}. 178 179 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering 180 differs). Unfortunately, this means the manual contains more ``forward references'' than usual, 181 making it harder to follow if the reader does not have a copy of the {\c11} standard. For a simple 182 introduction to \CFA, see the companion document ``An Overview of \CFA'' 215 183 \cite{Ditchfield96:Overview}. 216 184 217 185 \begin{rationale} 218 Commentary (like this) is quoted with quads. 219 Commentary usually deals with subtle points, therationale behind a rule, and design decisions.186 Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the 187 rationale behind a rule, and design decisions. 220 188 \end{rationale} 221 189 … … 226 194 \chapter{Terms, definitions, and symbols} 227 195 228 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11} standard. 196 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11} 197 standard. 229 198 230 199 % No ``Conformance'' or ``Environment'' chapters yet. … … 236 205 237 206 \section{Notation} 238 The syntax notation used in this document is the same as in the {\c11} standard, with one exception: ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that these rules extend a previous definition, which occurs in this document or in the {\c11} standard. 207 The syntax notation used in this document is the same as in the {\c11} standard, with one exception: 208 ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that 209 these rules extend a previous definition, which occurs in this document or in the {\c11} standard. 239 210 240 211 … … 244 215 \subsection{Scopes of identifiers}\index{scopes} 245 216 246 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may overload\index{overloading} outer declarations of lexically identical identifiers in the same 247 \Index{name space}, instead of hiding them. 248 The outer declaration is hidden if the two declarations have \Index{compatible type}, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or 217 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may 218 overload\index{overloading} outer declarations of lexically identical identifiers in the same 219 \Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations 220 have \Index{compatible type}, or if one declares an array type and the other declares a pointer type 221 and the element type and pointed-at type are compatible, or if one has function type and the other 222 is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or 249 223 \lstinline$typedef$\use{typedef} declaration and the other is not. The outer declaration becomes 250 224 \Index{visible} when the scope of the inner declaration terminates. 251 225 \begin{rationale} 252 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same scope;253 a {\CC} program can not.226 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same 227 scope; a {\CC} program can not. 254 228 \end{rationale} 255 229 … … 258 232 \index{linkage} 259 233 260 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with external or internal linkage do not necessarily denote the same object or function. 261 Instead, in the set of translation units and libraries that constitutes an entire program, any two instances of a particular identifier with \Index{external linkage} denote the same object or function if they have 262 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type. 263 Within one translation unit, each instance of an identifier with \Index{internal linkage} denotes the same object or function in the same circumstances. 234 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with 235 external or internal linkage do not necessarily denote the same object or function. Instead, in the 236 set of translation units and libraries that constitutes an entire program, any two instances of a 237 particular identifier with \Index{external linkage} denote the same object or function if they have 238 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and 239 the element type and pointed-at type are compatible, or if one has function type and the other is a 240 pointer to a compatible function type. Within one translation unit, each instance of an identifier 241 with \Index{internal linkage} denotes the same object or function in the same circumstances. 264 242 Identifiers with \Index{no linkage} always denote unique entities. 265 243 \begin{rationale} 266 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; 267 a Cprogram cannot.244 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C 245 program cannot. 268 246 \end{rationale} 269 247 … … 275 253 \subsubsection{Semantics} 276 254 277 \CFA provides a capability for generic types; 278 using this capability a single "generic type generator" can be written that can represent multiple concrete type instantiations by substitution of the "type parameters" of the generic type for concrete types. 279 Syntactically a generic type generator is represented by putting a forall specifier on a struct or union declaration, as defined in \VRef{forall}. 280 An instantiation of the generic type is written by specifying the type parameters in parentheses after the name of the generic type generator: 255 \CFA provides a capability for generic types; using this capability a single "generic type 256 generator" can be written that can represent multiple concrete type instantiations by substitution 257 of the "type parameters" of the generic type for concrete types. Syntactically a generic type 258 generator is represented by putting a forall specifier on a struct or union declaration, as defined 259 in \VRef{forall}. An instantiation of the generic type is written by specifying the type parameters 260 in parentheses after the name of the generic type generator: 281 261 \begin{lstlisting} 282 262 forall( type T | sumable( T ) ) struct pair { … … 287 267 \end{lstlisting} 288 268 289 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall specifier on the type generator declaration, e.g., \lstinline$sumable$. 290 The instantiation then has the semantics that would result if the type parameters were substituted into the type generator declaration by macro substitution. 291 292 Polymorphic functions may have generic types as parameters, and those generic types may use type parameters of the polymorphic function as type parameters of the generic type: 269 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall 270 specifier on the type generator declaration, e.g., \lstinline$sumable$. The instantiation then has 271 the semantics that would result if the type parameters were substituted into the type generator 272 declaration by macro substitution. 273 274 Polymorphic functions may have generic types as parameters, and those generic types may use type 275 parameters of the polymorphic function as type parameters of the generic type: 293 276 \begin{lstlisting} 294 277 forall( type T ) void swap( pair(T) *p ) { … … 302 285 \subsubsection{Constraints} 303 286 304 To avoid unduly constraining implementors, the generic type generator definition must be visible at any point where it is instantiated. Forward declarations of generic type generators are not forbidden, but the definition must be visible to instantiate the generic type. Equivalently, instantiations of generic types are not allowed to be incomplete types. 287 To avoid unduly constraining implementors, the generic type generator definition must be visible at 288 any point where it is instantiated. Forward declarations of generic type generators are not 289 forbidden, but the definition must be visible to instantiate the generic type. Equivalently, 290 instantiations of generic types are not allowed to be incomplete types. 305 291 306 292 \examples … … 309 295 310 296 forall( type T ) struct B { 311 A(T) *a; // legal, but cannot instantiate B(T)297 A(T) *a; // legal, but cannot instantiate B(T) 312 298 }; 313 299 314 B(T) x; // illegal, *x.a is of an incomplete generic type315 300 B(T) x; // illegal, *x.a is of an incomplete generic type 301 316 302 forall( type T ) struct A { 317 303 B( T ) *b; 318 304 }; 319 305 320 B( T ) y; // legal, *x.a is now of a complete generic type 306 B( T ) y; // legal, *x.a is now of a complete generic type 307 321 308 322 309 // box.h: … … 326 313 327 314 // main.c: 328 box( int ) *b = make_box( 42 ); // illegal, def inition of box not visible329 use_box( b ); // illegal315 box( int ) *b = make_box( 42 ); // illegal, def'n of box not visible 316 use_box( b ); // illegal 330 317 \end{lstlisting} 331 318 … … 333 320 \section{Conversions} 334 321 \CFA defines situations where values of one type are automatically converted to another type. 335 These conversions are called \define{implicit conversion}s. 336 The programmer can request 322 These conversions are called \define{implicit conversion}s. The programmer can request 337 323 \define{explicit conversion}s using cast expressions. 338 324 … … 344 330 \subsubsection{Safe arithmetic conversions} 345 331 346 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most binary arithmetic operators to convert the operands to a common type and determine the type of the operator's result. 347 In \CFA, these conversions play a role in overload resolution, and collectively are called the \define{safe arithmetic conversion}s. 348 349 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. 350 Let \(unsigned_{mr}\) be the unsigned integer type with maximal rank. 332 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most 333 binary arithmetic operators to convert the operands to a common type and determine the type of the 334 operator's result. In \CFA, these conversions play a role in overload resolution, and 335 collectively are called the \define{safe arithmetic conversion}s. 336 337 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion 338 rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let 339 \(unsigned_{mr}\) be the unsigned integer type with maximal rank. 351 340 352 341 The following conversions are \emph{direct} safe arithmetic conversions. … … 354 343 \item 355 344 The \Index{integer promotion}s. 356 \item 357 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\) to \(unsigned_r\). 358 \item 359 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\). 345 346 \item 347 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\) 348 to \(unsigned_r\). 349 350 \item 351 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists 352 and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\). 353 360 354 \item 361 355 Conversion from \(unsigned_{mr}\) to \lstinline$float$. 356 362 357 \item 363 358 Conversion from an enumerated type to its compatible integer type. 364 \item 365 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to \lstinline$long double$. 366 \item 367 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$, and from \lstinline$double _Complex$ to \lstinline$long double _Complex$. 359 360 \item 361 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to 362 \lstinline$long double$. 363 364 \item 365 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$, 366 and from \lstinline$double _Complex$ to \lstinline$long double _Complex$. 367 368 368 \begin{sloppypar} 369 369 \item 370 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the implementation supports imaginary types. 370 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from 371 \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the 372 implementation supports imaginary types. 371 373 \end{sloppypar} 372 374 \end{itemize} 373 375 374 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic conversion. 375 376 \begin{rationale} 377 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the usual arithmetic conversions, and \CFA does not include them as safe conversions. 376 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion 377 and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then 378 the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic 379 conversion. 380 381 \begin{rationale} 382 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the 383 usual arithmetic conversions, and \CFA does not include them as safe conversions. 378 384 \end{rationale} 379 385 … … 387 393 388 394 If an expression's type is a pointer to a structure or union type that has a member that is an 389 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's type. 390 The result of the conversion is a pointer to the member. 395 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly 396 converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's 397 type. The result of the conversion is a pointer to the member. 391 398 392 399 \examples … … 395 402 int x, y; 396 403 }; 397 void move_by( struct point * p1, struct point * p2) {@\impl{move_by}@404 void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@ 398 405 p1->x += p2.x; 399 406 p1->y += p2.y; 400 407 } 408 401 409 struct color_point { 402 410 enum { RED, BLUE, GREEN } color; 403 411 struct point; 404 412 } cp1, cp2; 405 move_to( &cp1, &cp2);413 move_to(&cp1, &cp2); 406 414 \end{lstlisting} 407 415 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to … … 411 419 \subsubsection{Specialization} 412 420 A function or value whose type is polymorphic may be implicitly converted to one whose type is 413 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. 414 Any value that is legal for the inferred parameter may be used, including other inferred parameters. 415 416 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters in its type, then an object or function must be visible at the point of the specialization that has the same identifier as the assertion parameter and has a type that is compatible\index{compatible 417 type} with or can be specialized to the type of the assertion parameter. The assertion parameter is bound to that object or function. 418 419 The type of the specialization is the type of the original with the bound inferred parameters and the bound assertion parameters replaced by their bound values. 421 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any 422 value that is legal for the inferred parameter may be used, including other inferred parameters. 423 424 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters 425 in its type, then an object or function must be visible at the point of the specialization that has 426 the same identifier as the assertion parameter and has a type that is compatible\index{compatible 427 type} with or can be specialized to the type of the assertion parameter. The assertion parameter 428 is bound to that object or function. 429 430 The type of the specialization is the type of the original with the bound inferred parameters and 431 the bound assertion parameters replaced by their bound values. 420 432 421 433 \examples … … 426 438 can be specialized to (among other things) 427 439 \begin{lstlisting} 428 forall( type T ) void (*)( T, T ); // U bound to T 429 forall( type T ) void (*)( T, real ); // U bound to real 430 forall( type U ) void (*)( real, U ); // T bound to real 440 forall( type T ) void (*)( T, T ); // U bound to T 441 forall( type T ) void (*)( T, real ); // U bound to real 442 forall( type U ) void (*)( real, U ); // T bound to real 431 443 void f( real, real ); // both bound to real 432 444 \end{lstlisting} … … 434 446 The type 435 447 \begin{lstlisting} 436 forall( type T | T ?+?( T, T ) ) T (*)( T );448 forall( type T | T ?+?( T, T )) T (*)( T ); 437 449 \end{lstlisting} 438 450 can be specialized to (among other things) 439 451 \begin{lstlisting} 440 int (*)( int ); // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )452 int (*)( int ); // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int ) 441 453 \end{lstlisting} 442 454 … … 453 465 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$; 454 466 \item 455 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified type}; 456 \item 457 from a pointer to a structure or union type to a pointer to the type of a member of the structure or union that is an \Index{anonymous structure} or an \Index{anonymous union}; 458 \item 459 within the scope of an initialized \Index{type declaration}, conversions between a type and its implementation or between a pointer to a type and a pointer to its implementation. 467 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified 468 type}; 469 \item 470 from a pointer to a structure or union type to a pointer to the type of a member of the structure or 471 union that is an \Index{anonymous structure} or an \Index{anonymous union}; 472 \item 473 within the scope of an initialized \Index{type declaration}, conversions between a type and its 474 implementation or between a pointer to a type and a pointer to its implementation. 460 475 \end{itemize} 461 476 462 477 Conversions that are not safe conversions are \define{unsafe conversion}s. 463 478 \begin{rationale} 464 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. 465 This is clearly dangerous, and {\CC} does not have this implicit conversion. 466 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a superset of C as possible, but discourages it by making it unsafe. 479 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is 480 clearly dangerous, and {\CC} does not have this implicit conversion. 481 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a 482 superset of C as possible, but discourages it by making it unsafe. 467 483 \end{rationale} 468 484 … … 470 486 \subsection{Conversion cost} 471 487 472 The \define{conversion cost} of a safe\index{safe conversion} conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion costs.} is a measure of how desirable or undesirable it is. 473 It is defined as follows. 488 The \define{conversion cost} of a safe\index{safe conversion} 489 conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion 490 costs.} is a measure of how desirable or undesirable it is. It is defined as follows. 474 491 \begin{itemize} 475 492 \item … … 480 497 481 498 \item 482 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions needed to make up the conversion. 499 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions 500 needed to make up the conversion. 483 501 \end{itemize} 484 502 … … 488 506 \begin{itemize} 489 507 \item 490 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. 491 The cost of an implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and then to \lstinline$double$. 492 493 \item 494 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2: 495 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. 496 Otherwise, 508 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an 509 implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms 510 of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and 511 then to \lstinline$double$. 512 513 \item 514 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an 515 implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2: 516 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise, 497 517 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1. 498 518 499 519 \item 500 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost of \lstinline$unsigned$ to \lstinline$long$ is 1. 501 Otherwise, the conversion is an unsafe conversion, and its conversion cost is undefined. 520 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost 521 of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe 522 conversion, and its conversion cost is undefined. 502 523 \end{itemize} 503 524 … … 517 538 \subsection{Identifiers} 518 539 519 \CFA allows operator \Index{overloading} by associating operators with special function identifiers. 520 Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them as overloadable identifiers. 521 Programmers can use these identifiers to declare functions and objects that implement operators and constants for their own types. 540 \CFA allows operator \Index{overloading} by associating operators with special function 541 identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status 542 for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them 543 as overloadable identifiers. Programmers can use these identifiers to declare functions and objects 544 that implement operators and constants for their own types. 522 545 523 546 … … 531 554 \end{syntax} 532 555 533 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0} and ``\lstinline$1$''\impl{1} are identifiers. 534 No other tokens defined by the rules for integer constants are considered to be identifiers. 535 \begin{rationale} 536 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. 537 All scalar types can be incremented and decremented, which is defined in terms of adding or subtracting 1. 538 The operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any scalar arguments, and are defined in terms of comparison against 0. 539 A \nonterm{constant-expression} that evaluates to 0 is effectively compatible with every pointer type. 540 541 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to 542 0 as a special case. 543 However, user-defined arithmetic types often need the equivalent of a 1 or 0 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type matching their polymorphic parameters, and user-defined pointer-like types may need a null value. 544 Defining special constants for a user-defined type is more efficient than defining a conversion to the type from \lstinline$_Bool$. 545 546 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers have special status in C. 547 A facility that let programmers declare specific constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement. 548 Some facility for defining the creation of values of programmer-defined types from arbitrary integer tokens would be needed. 549 The complexity of such a feature doesn't seem worth the gain. 556 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0} 557 and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer 558 constants are considered to be identifiers. 559 \begin{rationale} 560 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar 561 types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The 562 operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any 563 scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression} 564 that evaluates to 0 is effectively compatible with every pointer type. 565 566 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to 567 any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to 568 0 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0 569 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type 570 matching their polymorphic parameters, and user-defined pointer-like types may need a null value. 571 Defining special constants for a user-defined type is more efficient than defining a conversion to 572 the type from \lstinline$_Bool$. 573 574 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers 575 have special status in C. A facility that let programmers declare specific 576 constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement. 577 Some facility for defining the creation of values of programmer-defined types from arbitrary integer 578 tokens would be needed. The complexity of such a feature doesn't seem worth the gain. 550 579 \end{rationale} 551 580 … … 553 582 \subsubsection{Operator identifiers} 554 583 555 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the programmer-definable operator identifiers and the operations they are associated with. 556 Functions that are declared with (or pointed at by function pointers that are declared with) these identifiers can be called by expressions that use the operator tokens and syntax, or the operator identifiers and ``function call'' syntax. 557 The relationships between operators and function calls are discussed in descriptions of the operators. 584 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the 585 programmer-definable operator identifiers and the operations they are associated with. Functions 586 that are declared with (or pointed at by function pointers that are declared with) these identifiers 587 can be called by expressions that use the operator tokens and syntax, or the operator identifiers 588 and ``function call'' syntax. The relationships between operators and function calls are discussed 589 in descriptions of the operators. 558 590 559 591 \begin{table}[hbt] … … 612 644 613 645 \begin{rationale} 614 Operator identifiers are made up of the characters of the operator token, with question marks added to mark the positions of the arguments of operators. 615 The question marks serve as mnemonic devices; 616 programmers can not create new operators by arbitrarily mixing question marks and other non-alphabetic characters. 617 Note that prefix and postfix versions of the increment and decrement operators are distinguished by the position of the question mark. 618 \end{rationale} 619 620 \begin{rationale} 621 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs. For instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a 622 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''. 646 Operator identifiers are made up of the characters of the operator token, with question marks added 647 to mark the positions of the arguments of operators. The question marks serve as mnemonic devices; 648 programmers can not create new operators by arbitrarily mixing question marks and other 649 non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement 650 operators are distinguished by the position of the question mark. 651 \end{rationale} 652 653 \begin{rationale} 654 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs. For 655 instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a 656 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not 657 as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''. 623 658 \end{rationale} 624 659 … … 628 663 \item 629 664 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator 630 ``\lstinline$?:$''. 631 These operators do not always evaluate their operands, and hence can not be properly defined by functions unless some mechanism like call-by-name is added to the language. 632 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$'' for user-defined types is enough to allow them to be used in logical expressions. 633 634 \item 635 The comma operator\index{comma expression}. 636 It is a control-flow operator like those above. 665 ``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be 666 properly defined by functions unless some mechanism like call-by-name is added to the language. 667 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by 668 checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$'' 669 for user-defined types is enough to allow them to be used in logical expressions. 670 671 \item 672 The comma operator\index{comma expression}. It is a control-flow operator like those above. 637 673 Changing its meaning seems pointless and confusing. 638 674 639 675 \item 640 The ``address of'' operator. 641 It would seem useful to define a unary ``\lstinline$&$'' operator that returns values of some programmer-defined pointer-like type. 642 The problem lies with the type of the operator. 643 Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type 644 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. 645 The expression might be treated as a call to the unary function ``\lstinline$&?$''. 646 Now what is the type of the function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by value, and there is no way to create a useful pointer-like result from a value. 647 Hence the parameter must have type \lstinline$T *$. 648 But then the expression must be rewritten as ``\lstinline$p = &?( &x )$'' 676 The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that 677 returns values of some programmer-defined pointer-like type. The problem lies with the type of the 678 operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type 679 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression 680 might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the 681 function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by 682 value, and there is no way to create a useful pointer-like result from a value. Hence the parameter 683 must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$'' 649 684 ---which doesn't seem like progress! 650 685 651 The rule for address-of expressions would have to be something like ``keep applying address-of functions until you get one that takes a pointer argument, then use the built-in operator and stop''. 652 It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$. 653 654 \item 655 The \lstinline$sizeof$ operator. 656 It is already defined for every object type, and intimately tied into the language's storage allocation model. 657 Redefining it seems pointless. 658 659 \item 660 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. 661 These are not really infix operators, since their right ``operand'' is not a value or object. 662 663 \item 664 Cast operators\index{cast expression}. 665 Anything that can be done with an explicit cast can be done with a function call. 666 The difference in syntax is small. 686 The rule for address-of expressions would have to be something like ``keep applying address-of 687 functions until you get one that takes a pointer argument, then use the built-in operator and 688 stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$. 689 690 \item 691 The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied 692 into the language's storage allocation model. Redefining it seems pointless. 693 694 \item 695 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix 696 operators, since their right ``operand'' is not a value or object. 697 698 \item 699 Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done 700 with a function call. The difference in syntax is small. 667 701 \end{itemize} 668 702 \end{rationale} … … 671 705 \section{Expressions} 672 706 673 \CFA allows operators and identifiers to be overloaded. 674 Hence, each expression can have a number of \define{interpretation}s, each of which has a different type. 675 The interpretations that are potentially executable are called \define{valid interpretation}s. 676 The set of interpretations depends on the kind of expression and on the interpretations of the subexpressions that it contains. 677 The rules for determining the valid interpretations of an expression are discussed below for each kind of expression. 678 Eventually the context of the outermost expression chooses one interpretation of that expression. 679 680 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or function denoted by every identifier in the expression. 681 An expression can have some interpretations that are ambiguous and others that are unambiguous. 682 An expression that is chosen to be executed shall not be ambiguous. 683 684 The \define{best valid interpretations} are the valid interpretations that use the fewest unsafe\index{unsafe conversion} conversions. 685 Of these, the best are those where the functions and objects involved are the least polymorphic\index{less polymorphic}. 686 Of these, the best have the lowest total \Index{conversion cost}, including all implicit conversions in the argument expressions. 687 Of these, the best have the highest total conversion cost for the implicit conversions 688 (if any) applied to the argument expressions. 689 If there is no single best valid interpretation, or if the best valid interpretation is ambiguous, then the resulting interpretation is ambiguous\index{ambiguous interpretation}. 690 691 \begin{rationale} 692 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to mimic C's operator semantics. 693 In C, the ``usual arithmetic conversions'' are applied to the operands of binary operators if necessary to convert the operands to types with a common real type. 694 In \CFA, those conversions are ``safe''. 695 The ``fewest unsafe conversions'' rule ensures that the usual conversions are done, if possible. 696 The ``lowest total expression cost'' rule chooses the proper common type. 697 The odd-looking ``highest argument conversion cost'' rule ensures that, when unary expressions must be converted, conversions of function results are preferred to conversion of function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$. 698 699 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such functions are presumably more expensive than monomorphic functions and since the more specific function is presumably more appropriate. 700 It also gives preference to monomorphic values (such as the 707 \CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number 708 of \define{interpretation}s, each of which has a different type. The interpretations that are 709 potentially executable are called \define{valid interpretation}s. The set of interpretations 710 depends on the kind of expression and on the interpretations of the subexpressions that it contains. 711 The rules for determining the valid interpretations of an expression are discussed below for each 712 kind of expression. Eventually the context of the outermost expression chooses one interpretation 713 of that expression. 714 715 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or 716 function denoted by every identifier in the expression. An expression can have some interpretations 717 that are ambiguous and others that are unambiguous. An expression that is chosen to be executed 718 shall not be ambiguous. 719 720 The \define{best valid interpretations} are the valid interpretations that use the fewest 721 unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and 722 objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the 723 lowest total \Index{conversion cost}, including all implicit conversions in the argument 724 expressions. Of these, the best have the highest total conversion cost for the implicit conversions 725 (if any) applied to the argument expressions. If there is no single best valid interpretation, or if 726 the best valid interpretation is ambiguous, then the resulting interpretation is 727 ambiguous\index{ambiguous interpretation}. 728 729 \begin{rationale} 730 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to 731 mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the 732 operands of binary operators if necessary to convert the operands to types with a common real type. 733 In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the 734 usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the 735 proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when 736 unary expressions must be converted, conversions of function results are preferred to conversion of 737 function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$. 738 739 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such 740 functions are presumably more expensive than monomorphic functions and since the more specific 741 function is presumably more appropriate. It also gives preference to monomorphic values (such as the 701 742 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer} 702 \lstinline$0$\use{0}). 703 However, interpretations that call polymorphic functions are preferred to interpretations that perform unsafe conversions, because those conversions potentially lose accuracy or violate strong typing. 743 \lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to 744 interpretations that perform unsafe conversions, because those conversions potentially lose accuracy 745 or violate strong typing. 704 746 705 747 There are two notable differences between \CFA's overload resolution rules and the rules for 706 {\CC} defined in \cite{c++}. 707 First, the result type of a function plays a role. 708 In {\CC}, a function call must be completely resolved based on the arguments to the call in most circumstances. 709 In \CFA, a function call may have several interpretations, each with a different result type, and the interpretations of the containing context choose among them. 710 Second, safe conversions are used to choose among interpretations of all sorts of functions; 711 in {\CC}, the ``usual arithmetic conversions'' are a separate set of rules that apply only to the built-in operators. 712 \end{rationale} 713 714 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent to function calls. 715 A transformation from ``operator'' syntax to ``function call'' syntax is defined by \define{rewrite rules}. 716 Each operator has a set of predefined functions that overload its identifier. 717 Overload resolution determines which member of the set is executed in a given expression. 718 The functions have \Index{internal linkage} and are implicitly declared with \Index{file scope}. 719 The predefined functions and rewrite rules are discussed below for each of these operators. 720 \begin{rationale} 721 Predefined functions and constants have internal linkage because that simplifies optimization in traditional compile-and-link environments. 722 For instance, ``\lstinline$an_int + an_int$'' is equivalent to ``\lstinline$?+?(an_int, an_int)$''. 723 If integer addition has not been redefined in the current scope, a compiler can generate code to perform the addition directly. 724 If predefined functions had external linkage, this optimization would be difficult. 725 \end{rationale} 726 727 \begin{rationale} 728 Since each subsection describes the interpretations of an expression in terms of the interpretations of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that uses one bottom-up pass over an expression tree. 729 Such an algorithm was first described (for Ada) by Baker~\cite{Bak:overload}. 730 It is extended here to handle polymorphic functions and arithmetic conversions. 731 The overload resolution rules and the predefined functions have been chosen so that, in programs that do not introduce overloaded declarations, expressions will have the same meaning in C and in \CFA. 732 \end{rationale} 733 734 \begin{rationale} 735 Expression syntax is quoted from the {\c11} standard. 736 The syntax itself defines the precedence and associativity of operators. 737 The sections are arranged in decreasing order of precedence, with all operators in a section having the same precedence. 748 {\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a 749 function call must be completely resolved based on the arguments to the call in most circumstances. 750 In \CFA, a function call may have several interpretations, each with a different result type, and 751 the interpretations of the containing context choose among them. Second, safe conversions are used 752 to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic 753 conversions'' are a separate set of rules that apply only to the built-in operators. 754 \end{rationale} 755 756 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent 757 to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined 758 by \define{rewrite rules}. Each operator has a set of predefined functions that overload its 759 identifier. Overload resolution determines which member of the set is executed in a given 760 expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file 761 scope}. The predefined functions and rewrite rules are discussed below for each of these 762 operators. 763 \begin{rationale} 764 Predefined functions and constants have internal linkage because that simplifies optimization in 765 traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is 766 equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in 767 the current scope, a compiler can generate code to perform the addition directly. If predefined 768 functions had external linkage, this optimization would be difficult. 769 \end{rationale} 770 771 \begin{rationale} 772 Since each subsection describes the interpretations of an expression in terms of the interpretations 773 of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that 774 uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by 775 Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic 776 conversions. The overload resolution rules and the predefined functions have been chosen so that, in 777 programs that do not introduce overloaded declarations, expressions will have the same meaning in C 778 and in \CFA. 779 \end{rationale} 780 781 \begin{rationale} 782 Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and 783 associativity of operators. The sections are arranged in decreasing order of precedence, with all 784 operators in a section having the same precedence. 738 785 \end{rationale} 739 786 … … 754 801 const int 1;@\use{1}@ 755 802 const int 0;@\use{0}@ 756 forall( dtype DT ) DT * const 0;757 forall( ftype FT ) FT * const 0;803 forall( dtype DT ) DT *const 0; 804 forall( ftype FT ) FT *const 0; 758 805 \end{lstlisting} 759 806 760 807 \semantics 761 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible} declarations of the identifier. 762 763 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type and value defined by {\c11}. 764 The predefined integer identifiers ``\lstinline$1$'' and ``\lstinline$0$'' have the integer values 1 and 0, respectively. 765 The other two predefined ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when specialized\index{specialization} with a data type or function type respectively, produce a null pointer of that type. 808 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible} 809 declarations of the identifier. 810 811 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type 812 and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and 813 ``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined 814 ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when 815 specialized\index{specialization} with a data type or function type respectively, produce a null 816 pointer of that type. 766 817 767 818 A parenthesised expression has the same interpretations as the contained \nonterm{expression}. 768 819 769 820 \examples 770 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe conversion from \lstinline$void *$ to \lstinline$const void *$. 771 In each case, the null pointer conversion is better\index{best valid interpretations} than the unsafe conversion of the integer 821 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null 822 pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe 823 conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer 824 conversion is better\index{best valid interpretations} than the unsafe conversion of the integer 772 825 \lstinline$0$ to a pointer. 773 826 … … 775 828 Note that the predefined identifiers have addresses. 776 829 777 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but special strings of tokens. 778 The C token ``\lstinline$0$'' is an expression of type \lstinline$int$ with the value ``zero'', and it \emph{also} is a null pointer constant. 779 Similarly, 780 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer, and it also is a null pointer constant. 781 However, in C, ``\lstinline$(void *)(void *)0$'' is 782 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The semantics of C expressions contain many special cases to deal with subexpressions that are null pointer constants. 783 784 \CFA handles these cases through overload resolution. 785 The declaration 786 \begin{lstlisting} 787 forall( dtype DT ) DT * const 0; 788 \end{lstlisting} means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any} pointer-to-object type or pointer-to-incomplete type. 789 The only such value is the null pointer. 790 Therefore the type \emph{alone} is enough to identify a null pointer. 791 Where C defines an operator with a special case for the null pointer constant, \CFA defines predefined functions with a polymorphic object parameter. 830 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but 831 special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$ 832 with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly, 833 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer, 834 and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is 835 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The 836 semantics of C expressions contain many special cases to deal with subexpressions that are null 837 pointer constants. 838 839 \CFA handles these cases through overload resolution. The declaration 840 \begin{lstlisting} 841 forall( dtype DT ) DT *const 0; 842 \end{lstlisting} 843 means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any} 844 pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer. 845 Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator 846 with a special case for the null pointer constant, \CFA defines predefined functions with a 847 polymorphic object parameter. 792 848 \end{rationale} 793 849 … … 795 851 \subsubsection{Generic selection} 796 852 797 \constraints The best interpretation of the controlling expression shall be unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the types named in its generic association list. 798 If a generic selection has no \lstinline$default$ generic association, the best interpretation of its controlling expression shall have type compatible with exactly one of the types named in its generic association list. 853 \constraints The best interpretation of the controlling expression shall be 854 unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the 855 types named in its generic association list. If a generic selection has no \lstinline$default$ 856 generic association, the best interpretation of its controlling expression shall have type 857 compatible with exactly one of the types named in its generic association list. 799 858 800 859 \semantics … … 824 883 \rewriterules 825 884 \begin{lstlisting} 826 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type @\use{?[?]}@885 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@ 827 886 a[b] @\rewrite@ ?[?]( a, b ) // otherwise 828 a( @\emph{arguments}@ ) @\rewrite@ ?()( a, @\emph{arguments}@ )@\use{?()}@887 a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@ 829 888 a++ @\rewrite@ ?++(&( a ))@\use{?++}@ 830 889 a-- @\rewrite@ ?--(&( a ))@\use{?--}@ … … 854 913 \end{lstlisting} 855 914 \semantics 856 The interpretations of subscript expressions are the interpretations of the corresponding function call expressions. 915 The interpretations of subscript expressions are the interpretations of the corresponding function 916 call expressions. 857 917 \begin{rationale} 858 918 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and 859 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the number of overloadings of \lstinline$?[?]$. 860 861 Subscript expressions are rewritten as function calls that pass the first parameter by value. 862 This is somewhat unfortunate, since array-like types tend to be large. 863 The alternative is to use the rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. 864 However, C semantics forbid this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which does not have an address. 919 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the 920 number of overloadings of \lstinline$?[?]$. 921 922 Subscript expressions are rewritten as function calls that pass the first parameter by value. This 923 is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the 924 rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid 925 this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which 926 does not have an address. 865 927 866 928 The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers 867 to qualified types} of \CFA's type system. 868 Type qualifiers are not included in type values, so polymorphic functions that take pointers to arbitrary types often come in one flavor for each possible qualification of the pointed-at type. 929 to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so 930 polymorphic functions that take pointers to arbitrary types often come in one flavor for each 931 possible qualification of the pointed-at type. 869 932 \end{rationale} 870 933 … … 873 936 874 937 \semantics 875 A \define{function designator} is an interpretation of an expression that has function type. 876 The 877 \nonterm{postfix-expression} in a function call may have some interpretations that are function designators and some that are not. 878 879 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. 880 The valid interpretations of the rewritten expression are determined in the manner described below. 881 882 Each combination of function designators and argument interpretations is considered. 883 For those interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function} designators, the combination has a \Index{valid interpretation} if the function designator accepts the number of arguments given, and each argument interpretation matches the corresponding explicit parameter: 938 A \define{function designator} is an interpretation of an expression that has function type. The 939 \nonterm{postfix-expression} in a function call may have some interpretations that are function 940 designators and some that are not. 941 942 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the 943 expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid 944 interpretations of the rewritten expression are determined in the manner described below. 945 946 Each combination of function designators and argument interpretations is considered. For those 947 interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function} 948 designators, the combination has a \Index{valid interpretation} if the function designator accepts 949 the number of arguments given, and each argument interpretation matches the corresponding explicit 950 parameter: 884 951 \begin{itemize} 885 \item if the argument corresponds to a parameter in the function designator's prototype, the argument interpretation must have the same type as the corresponding parameter, or be implicitly convertible to the parameter's type 886 \item if the function designator's type does not include a prototype or if the argument corresponds to 952 \item 953 if the argument corresponds to a parameter in the function designator's prototype, the argument 954 interpretation must have the same type as the corresponding parameter, or be implicitly convertible 955 to the parameter's type 956 \item 957 if the function designator's type does not include a prototype or if the argument corresponds to 887 958 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it. 888 959 \end{itemize} … … 890 961 891 962 For those combinations where the interpretation of the \nonterm{postfix-expression} is a 892 \Index{polymorphic function} designator and the function designator accepts the number of arguments given, there shall be at least one set of \define{implicit argument}s for the implicit parameters such that 963 \Index{polymorphic function} designator and the function designator accepts the number of arguments 964 given, there shall be at least one set of \define{implicit argument}s for the implicit parameters 965 such that 893 966 \begin{itemize} 894 967 \item 895 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the implicit argument must be an object type; 896 if it uses \lstinline$dtype$, the implicit argument must be an object type or an incomplete type; 897 and if it uses \lstinline$ftype$, the implicit argument must be a function type. 898 899 \item if an explicit parameter's type uses any implicit parameters, then the corresponding explicit argument must have a type that is (or can be safely converted\index{safe conversion} to) the type produced by substituting the implicit arguments for the implicit parameters in the explicit parameter type. 900 901 \item the remaining explicit arguments must match the remaining explicit parameters, as described for monomorphic function designators. 902 903 \item for each \Index{assertion parameter} in the function designator's type, there must be an object or function with the same identifier that is visible at the call site and whose type is compatible with or can be specialized to the type of the assertion declaration. 968 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the 969 implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must 970 be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument 971 must be a function type. 972 973 \item 974 if an explicit parameter's type uses any implicit parameters, then the corresponding explicit 975 argument must have a type that is (or can be safely converted\index{safe conversion} to) the type 976 produced by substituting the implicit arguments for the implicit parameters in the explicit 977 parameter type. 978 979 \item 980 the remaining explicit arguments must match the remaining explicit parameters, as described for 981 monomorphic function designators. 982 983 \item 984 for each \Index{assertion parameter} in the function designator's type, there must be an object or 985 function with the same identifier that is visible at the call site and whose type is compatible with 986 or can be specialized to the type of the assertion declaration. 904 987 \end{itemize} 905 There is a valid interpretation for each such set of implicit parameters. 906 The type of each valid interpretation is the return type of the function designator with implicit parameter values substituted for the implicit arguments. 907 908 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or any of the argument interpretations is ambiguous. 909 910 Every valid interpretation whose return type is not compatible with any other valid interpretation's return type is an interpretation of the function call expression. 911 912 Every set of valid interpretations that have mutually compatible\index{compatible type} result types also produces an interpretation of the function call expression. 913 The type of the interpretation is the \Index{composite type} of the types of the valid interpretations, and the value of the interpretation is that of the \Index{best valid interpretation}. 914 \begin{rationale} 915 One desirable property of a polymorphic programming language is \define{generalizability}: the ability to replace an abstraction with a more general but equivalent abstraction without requiring changes in any of the uses of the original\cite{Cormack90}. 916 For instance, it should be possible to replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$'' without affecting any calls of \lstinline$f$. 988 There is a valid interpretation for each such set of implicit parameters. The type of each valid 989 interpretation is the return type of the function designator with implicit parameter values 990 substituted for the implicit arguments. 991 992 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or 993 any of the argument interpretations is ambiguous. 994 995 Every valid interpretation whose return type is not compatible with any other valid interpretation's 996 return type is an interpretation of the function call expression. 997 998 Every set of valid interpretations that have mutually compatible\index{compatible type} result types 999 also produces an interpretation of the function call expression. The type of the interpretation is 1000 the \Index{composite type} of the types of the valid interpretations, and the value of the 1001 interpretation is that of the \Index{best valid interpretation}. 1002 \begin{rationale} 1003 One desirable property of a polymorphic programming language is \define{generalizability}: the 1004 ability to replace an abstraction with a more general but equivalent abstraction without requiring 1005 changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to 1006 replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$'' 1007 without affecting any calls of \lstinline$f$. 917 1008 918 1009 \CFA\index{deficiencies!generalizability} does not fully possess this property, because … … 924 1015 float f; 925 1016 double d; 926 f = g( f, f ); // (1) 927 f = g( i, f ); // (2) (safe conversion to float) 928 f = g( d, f ); // (3) (unsafe conversion to float) 929 \end{lstlisting} 930 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second calls would be unaffected, but the third would change: \lstinline$f$ would be converted to 1017 f = g( f, f ); // (1) 1018 f = g( i, f ); // (2) (safe conversion to float) 1019 f = g( d, f ); // (3) (unsafe conversion to float) 1020 \end{lstlisting} 1021 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second 1022 calls would be unaffected, but the third would change: \lstinline$f$ would be converted to 931 1023 \lstinline$double$, and the result would be a \lstinline$double$. 932 1024 933 Another example is the function ``\lstinline$void h( int *);$''. 934 This function can be passed a 935 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$'' can not. 936 In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an object type. 937 If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any}object type, which is undesirable.1025 Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a 1026 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$'' 1027 can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an 1028 object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any} 1029 object type, which is undesirable. 938 1030 \end{rationale} 939 1031 … … 953 1045 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''. 954 1046 \begin{lstlisting} 955 int f( long ); // (1) 956 int f( int, int ); // (2) 1047 int f( long ); // (1) 1048 int f( int, int ); // (2) 957 1049 int f( int *); // (3) 1050 958 1051 int i = f( 5 ); // calls (1) 959 1052 \end{lstlisting} 960 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit \lstinline$int$ to \lstinline$long$ conversion. 961 The other functions do not, since the second requires two arguments, and since there is no implicit conversion from \lstinline$int$ to \lstinline$int *$ that could be used with the third function. 1053 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit 1054 \lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second 1055 requires two arguments, and since there is no implicit conversion from \lstinline$int$ to 1056 \lstinline$int *$ that could be used with the third function. 962 1057 963 1058 \begin{lstlisting} … … 969 1064 970 1065 \begin{lstlisting} 971 forall( type T, type U ) void g( T, U ); // (4) 972 forall( type T ) void g( T, T ); // (5) 973 forall( type T ) void g( T, long ); // (6) 974 void g( long, long ); // (7) 1066 forall( type T, type U ) void g( T, U ); // (4) 1067 forall( type T ) void g( T, T ); // (5) 1068 forall( type T ) void g( T, long ); // (6) 1069 void g( long, long ); // (7) 975 1070 double d; 976 1071 int i; 977 1072 int *p; 978 g( d, d ); // calls (5) 979 g( d, i ); // calls (6) 980 g( i, i ); // calls (7) 1073 1074 g( d, d ); // calls (5) 1075 g( d, i ); // calls (6) 1076 g( i, i ); // calls (7) 981 1077 g( i, p ); // calls (4) 982 1078 \end{lstlisting} 983 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is chosen because it is less polymorphic than (4). 984 985 For the second call, (7) is again discarded. 986 Of the remaining interpretations for (4), (5), and (6) (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least polymorphic. 987 988 The third call has valid interpretations for all of the functions; 989 (7) is chosen since it is not polymorphic at all. 990 991 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4) is chosen because it does not involve unsafe conversions. 1079 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are 1080 discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is 1081 chosen because it is less polymorphic than (4). 1082 1083 For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6) 1084 (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least 1085 polymorphic. 1086 1087 The third call has valid interpretations for all of the functions; (7) is chosen since it is not 1088 polymorphic at all. 1089 1090 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4) 1091 is chosen because it does not involve unsafe conversions. 992 1092 \begin{lstlisting} 993 1093 forall( type T ) T min( T, T ); … … 998 1098 } 999 1099 forall( type U | min_max( U ) ) void shuffle( U, U ); 1000 shuffle( 9, 10 ); 1001 \end{lstlisting} 1002 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and 1100 shuffle(9, 10); 1101 \end{lstlisting} 1102 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the 1103 only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and 1003 1104 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$. 1004 1105 \begin{lstlisting} 1005 extern void q( int ); // (8) 1006 extern void q( void * ); // (9) 1106 extern void q( int ); // (8) 1107 extern void q( void * ); // (9) 1007 1108 extern void r(); 1008 1109 q( 0 ); 1009 1110 r( 0 ); 1010 1111 \end{lstlisting} 1011 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). 1012 The former is chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. 1013 For the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has \emph{no} declared parameter types. 1112 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of 1113 the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is 1114 chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For 1115 the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has 1116 \emph{no} declared parameter types. 1014 1117 1015 1118 1016 1119 \subsubsection{Structure and union members} 1017 1120 1018 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a member named \lstinline$m$. 1019 If two or more interpretations of \lstinline$s$ have members named 1020 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous interpretation} whose type is the composite type of the types of the members. 1021 If an interpretation of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other 1022 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. 1023 The expression has no other interpretations. 1121 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at 1122 least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a 1123 member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named 1124 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous 1125 interpretation} whose type is the composite type of the types of the members. If an interpretation 1126 of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other 1127 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The 1128 expression has no other interpretations. 1024 1129 1025 1130 The expression ``\lstinline$p->m$'' has the same interpretations as the expression … … 1031 1136 \predefined 1032 1137 \begin{lstlisting} 1033 _Bool ?++( volatile _Bool * ), ?++( _Atomic volatile _Bool * ); 1034 char ?++( volatile char * ), ?++( _Atomic volatile char * ); 1035 signed char ?++( volatile signed char * ), ?++( _Atomic volatile signed char * ); 1036 unsigned char ?++( volatile signed char * ), ?++( _Atomic volatile signed char * ); 1037 short int ?++( volatile short int * ), ?++( _Atomic volatile short int * ); 1038 unsigned short int ?++( volatile unsigned short int * ), ?++( _Atomic volatile unsigned short int * ); 1039 int ?++( volatile int * ), ?++( _Atomic volatile int * ); 1040 unsigned int ?++( volatile unsigned int * ), ?++( _Atomic volatile unsigned int * ); 1041 long int ?++( volatile long int * ), ?++( _Atomic volatile long int * ); 1042 long unsigned int ?++( volatile long unsigned int * ), ?++( _Atomic volatile long unsigned int * ); 1043 long long int ?++( volatile long long int * ), ?++( _Atomic volatile long long int * ); 1044 long long unsigned ?++( volatile long long unsigned int * ), ?++( _Atomic volatile long long unsigned int * ); 1045 float ?++( volatile float * ), ?++( _Atomic volatile float * ); 1046 double ?++( volatile double * ), ?++( _Atomic volatile double * ); 1047 long double ?++( volatile long double * ), ?++( _Atomic volatile long double * ); 1048 1049 forall( type T ) T * ?++( T * restrict volatile * ), * ?++( T * _Atomic restrict volatile * ); 1050 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), * ?++( _Atomic T * _Atomic restrict volatile * ); 1051 forall( type T ) const T * ?++( const T * restrict volatile * ), * ?++( const T * _Atomic restrict volatile * ); 1052 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ), * ?++( volatile T * _Atomic restrict volatile * ); 1053 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ), * ?++( restrict T * _Atomic restrict volatile * ); 1138 _Bool ?++( volatile _Bool * ), 1139 ?++( _Atomic volatile _Bool * ); 1140 char ?++( volatile char * ), 1141 ?++( _Atomic volatile char * ); 1142 signed char ?++( volatile signed char * ), 1143 ?++( _Atomic volatile signed char * ); 1144 unsigned char ?++( volatile signed char * ), 1145 ?++( _Atomic volatile signed char * ); 1146 short int ?++( volatile short int * ), 1147 ?++( _Atomic volatile short int * ); 1148 unsigned short int ?++( volatile unsigned short int * ), 1149 ?++( _Atomic volatile unsigned short int * ); 1150 int ?++( volatile int * ), 1151 ?++( _Atomic volatile int * ); 1152 unsigned int ?++( volatile unsigned int * ), 1153 ?++( _Atomic volatile unsigned int * ); 1154 long int ?++( volatile long int * ), 1155 ?++( _Atomic volatile long int * ); 1156 long unsigned int ?++( volatile long unsigned int * ), 1157 ?++( _Atomic volatile long unsigned int * ); 1158 long long int ?++( volatile long long int * ), 1159 ?++( _Atomic volatile long long int * ); 1160 long long unsigned ?++( volatile long long unsigned int * ), 1161 ?++( _Atomic volatile long long unsigned int * ); 1162 float ?++( volatile float * ), 1163 ?++( _Atomic volatile float * ); 1164 double ?++( volatile double * ), 1165 ?++( _Atomic volatile double * ); 1166 long double ?++( volatile long double * ), 1167 ?++( _Atomic volatile long double * ); 1168 1169 forall( type T ) T * ?++( T * restrict volatile * ), 1170 * ?++( T * _Atomic restrict volatile * ); 1171 1172 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), 1173 * ?++( _Atomic T * _Atomic restrict volatile * ); 1174 1175 forall( type T ) const T * ?++( const T * restrict volatile * ), 1176 * ?++( const T * _Atomic restrict volatile * ); 1177 1178 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ), 1179 * ?++( volatile T * _Atomic restrict volatile * ); 1180 1181 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ), 1182 * ?++( restrict T * _Atomic restrict volatile * ); 1183 1054 1184 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ), 1055 1185 * ?++( _Atomic const T * _Atomic restrict volatile * ); 1186 1056 1187 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ), 1057 1188 * ?++( _Atomic restrict T * _Atomic restrict volatile * ); 1189 1058 1190 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ), 1059 1191 * ?++( _Atomic volatile T * _Atomic restrict volatile * ); 1192 1060 1193 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ), 1061 1194 * ?++( const restrict T * _Atomic restrict volatile * ); 1195 1062 1196 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ), 1063 1197 * ?++( const volatile T * _Atomic restrict volatile * ); 1198 1064 1199 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ), 1065 1200 * ?++( restrict volatile T * _Atomic restrict volatile * ); 1201 1066 1202 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ), 1067 1203 * ?++( _Atomic const restrict T * _Atomic restrict volatile * ); 1204 1068 1205 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ), 1069 1206 * ?++( _Atomic const volatile T * _Atomic restrict volatile * ); 1207 1070 1208 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ), 1071 1209 * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1210 1072 1211 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ), 1073 1212 * ?++( const restrict volatile T * _Atomic restrict volatile * ); 1213 1074 1214 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ), 1075 1215 * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1076 1216 1077 _Bool ?--( volatile _Bool * ), ?--( _Atomic volatile _Bool * ); 1078 char ?--( volatile char * ), ?--( _Atomic volatile char * ); 1079 signed char ?--( volatile signed char * ), ?--( _Atomic volatile signed char * ); 1080 unsigned char ?--( volatile signed char * ), ?--( _Atomic volatile signed char * ); 1081 short int ?--( volatile short int * ), ?--( _Atomic volatile short int * ); 1082 unsigned short int ?--( volatile unsigned short int * ), ?--( _Atomic volatile unsigned short int * ); 1083 int ?--( volatile int * ), ?--( _Atomic volatile int * ); 1084 unsigned int ?--( volatile unsigned int * ), ?--( _Atomic volatile unsigned int * ); 1085 long int ?--( volatile long int * ), ?--( _Atomic volatile long int * ); 1086 long unsigned int ?--( volatile long unsigned int * ), ?--( _Atomic volatile long unsigned int * ); 1087 long long int ?--( volatile long long int * ), ?--( _Atomic volatile long long int * ); 1088 long long unsigned ?--( volatile long long unsigned int * ), ?--( _Atomic volatile long long unsigned int * ); 1089 float ?--( volatile float * ), ?--( _Atomic volatile float * ); 1090 double ?--( volatile double * ), ?--( _Atomic volatile double * ); 1091 long double ?--( volatile long double * ), ?--( _Atomic volatile long double * ); 1092 1093 forall( type T ) T * ?--( T * restrict volatile * ), * ?--( T * _Atomic restrict volatile * ); 1094 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), * ?--( _Atomic T * _Atomic restrict volatile * ); 1095 forall( type T ) const T * ?--( const T * restrict volatile * ), * ?--( const T * _Atomic restrict volatile * ); 1096 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ), * ?--( volatile T * _Atomic restrict volatile * ); 1097 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ), * ?--( restrict T * _Atomic restrict volatile * ); 1217 _Bool ?--( volatile _Bool * ), 1218 ?--( _Atomic volatile _Bool * ); 1219 char ?--( volatile char * ), 1220 ?--( _Atomic volatile char * ); 1221 signed char ?--( volatile signed char * ), 1222 ?--( _Atomic volatile signed char * ); 1223 unsigned char ?--( volatile signed char * ), 1224 ?--( _Atomic volatile signed char * ); 1225 short int ?--( volatile short int * ), 1226 ?--( _Atomic volatile short int * ); 1227 unsigned short int ?--( volatile unsigned short int * ), 1228 ?--( _Atomic volatile unsigned short int * ); 1229 int ?--( volatile int * ), 1230 ?--( _Atomic volatile int * ); 1231 unsigned int ?--( volatile unsigned int * ), 1232 ?--( _Atomic volatile unsigned int * ); 1233 long int ?--( volatile long int * ), 1234 ?--( _Atomic volatile long int * ); 1235 long unsigned int ?--( volatile long unsigned int * ), 1236 ?--( _Atomic volatile long unsigned int * ); 1237 long long int ?--( volatile long long int * ), 1238 ?--( _Atomic volatile long long int * ); 1239 long long unsigned ?--( volatile long long unsigned int * ), 1240 ?--( _Atomic volatile long long unsigned int * ); 1241 float ?--( volatile float * ), 1242 ?--( _Atomic volatile float * ); 1243 double ?--( volatile double * ), 1244 ?--( _Atomic volatile double * ); 1245 long double ?--( volatile long double * ), 1246 ?--( _Atomic volatile long double * ); 1247 1248 forall( type T ) T * ?--( T * restrict volatile * ), 1249 * ?--( T * _Atomic restrict volatile * ); 1250 1251 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), 1252 * ?--( _Atomic T * _Atomic restrict volatile * ); 1253 1254 forall( type T ) const T * ?--( const T * restrict volatile * ), 1255 * ?--( const T * _Atomic restrict volatile * ); 1256 1257 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ), 1258 * ?--( volatile T * _Atomic restrict volatile * ); 1259 1260 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ), 1261 * ?--( restrict T * _Atomic restrict volatile * ); 1262 1098 1263 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ), 1099 1264 * ?--( _Atomic const T * _Atomic restrict volatile * ); 1265 1100 1266 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ), 1101 1267 * ?--( _Atomic restrict T * _Atomic restrict volatile * ); 1268 1102 1269 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ), 1103 1270 * ?--( _Atomic volatile T * _Atomic restrict volatile * ); 1271 1104 1272 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ), 1105 1273 * ?--( const restrict T * _Atomic restrict volatile * ); 1274 1106 1275 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ), 1107 1276 * ?--( const volatile T * _Atomic restrict volatile * ); 1277 1108 1278 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ), 1109 1279 * ?--( restrict volatile T * _Atomic restrict volatile * ); 1280 1110 1281 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ), 1111 1282 * ?--( _Atomic const restrict T * _Atomic restrict volatile * ); 1283 1112 1284 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ), 1113 1285 * ?--( _Atomic const volatile T * _Atomic restrict volatile * ); 1286 1114 1287 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ), 1115 1288 * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1289 1116 1290 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ), 1117 1291 * ?--( const restrict volatile T * _Atomic restrict volatile * ); 1292 1118 1293 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ), 1119 1294 * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * ); … … 1133 1308 1134 1309 \begin{rationale} 1135 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald has pointed out, this forces the modified operand of such expressions to be an lvalue. 1136 This partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues. 1137 \end{rationale} 1138 1139 \begin{rationale} 1140 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to object types. 1141 Hence, \lstinline$void *$ objects cannot be incremented. 1142 In \CFA, the restriction follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the type parameter \lstinline$T$. 1310 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a 1311 pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald 1312 has pointed out, this forces the modified operand of such expressions to be an lvalue. This 1313 partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues. 1314 \end{rationale} 1315 1316 \begin{rationale} 1317 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to 1318 object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction 1319 follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as 1320 opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the 1321 type parameter \lstinline$T$. 1143 1322 \end{rationale} 1144 1323 1145 1324 \semantics 1146 First, each interpretation of the operand of an increment or decrement expression is considered separately. 1147 For each interpretation that is a bit-field or is declared with the 1148 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the expression has one valid interpretation, with the type of the operand, and the expression is ambiguous if the operand is. 1149 1150 For the remaining interpretations, the expression is rewritten, and the interpretations of the expression are the interpretations of the corresponding function call. 1151 Finally, all interpretations of the expression produced for the different interpretations of the operand are combined to produce the interpretations of the expression as a whole; where interpretations have compatible result types, the best interpretations are selected in the manner described for function call expressions. 1325 First, each interpretation of the operand of an increment or decrement expression is considered 1326 separately. For each interpretation that is a bit-field or is declared with the 1327 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the 1328 expression has one valid interpretation, with the type of the operand, and the expression is 1329 ambiguous if the operand is. 1330 1331 For the remaining interpretations, the expression is rewritten, and the interpretations of the 1332 expression are the interpretations of the corresponding function call. Finally, all interpretations 1333 of the expression produced for the different interpretations of the operand are combined to produce 1334 the interpretations of the expression as a whole; where interpretations have compatible result 1335 types, the best interpretations are selected in the manner described for function call expressions. 1152 1336 1153 1337 \examples … … 1162 1346 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter. 1163 1347 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to 1164 \lstinline$volatile short int *$. 1165 Note that there is no conversion that adds an \lstinline$_Atomic$ qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid interpretation. 1348 \lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$ 1349 qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid 1350 interpretation. 1166 1351 \end{sloppypar} 1167 1352 1168 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$, and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$ has no valid interpretations. 1169 1170 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the \lstinline$volatile$ qualifier. 1171 \begin{lstlisting} 1172 char * const restrict volatile * restrict volatile pqpc; 1173 pqpc++ 1174 char * * restrict volatile ppc; 1175 ppc++; 1176 \end{lstlisting} 1177 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$, the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring \lstinline$T$ to be \lstinline$char *$. 1178 1179 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$, and using the safe conversions from \lstinline$T$ to \lstinline$T const$ \lstinline$restrict volatile$. 1180 1181 \begin{rationale} 1182 Increment and decrement expressions show up a deficiency of \CFA's type system. 1183 There is no such thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}. 1184 Therefore, there is no way to define a function that alters them, and hence no way to define increment and decrement functions for them. 1185 As a result, the semantics of increment and decrement expressions must treat them specially. 1186 This holds true for all of the operators that may modify such objects. 1187 \end{rationale} 1188 1189 \begin{rationale} 1190 The polymorphic overloadings for pointer increment and decrement can be understood by considering increasingly complex types. 1353 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$, 1354 and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$ 1355 has no valid interpretations. 1356 1357 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the 1358 \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the 1359 \lstinline$volatile$ qualifier. 1360 1361 \begin{lstlisting} 1362 char * const restrict volatile * restrict volatile pqpc; pqpc++ 1363 char * * restrict volatile ppc; ppc++; 1364 \end{lstlisting} 1365 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$, 1366 the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function 1367 with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring 1368 \lstinline$T$ to be \lstinline$char *$. 1369 1370 \begin{sloppypar} 1371 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$, 1372 and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$. 1373 \end{sloppypar} 1374 1375 \begin{rationale} 1376 Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such 1377 thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}. 1378 Therefore, there is no way to define a function that alters them, and hence no way to define 1379 increment and decrement functions for them. As a result, the semantics of increment and decrement 1380 expressions must treat them specially. This holds true for all of the operators that may modify 1381 such objects. 1382 \end{rationale} 1383 1384 \begin{rationale} 1385 The polymorphic overloadings for pointer increment and decrement can be understood by considering 1386 increasingly complex types. 1191 1387 \begin{enumerate} 1192 1388 \item 1193 ``\lstinline$char * p; p++;$''. 1194 The argument to \lstinline$?++$ has type \lstinline$char * *$, and the result has type \lstinline$char *$. 1195 The expression would be valid if \lstinline$?++$ weredeclared by1389 ``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and 1390 the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were 1391 declared by 1196 1392 \begin{lstlisting} 1197 1393 forall( type T ) T * ?++( T * * ); 1198 \end{lstlisting} with \lstinline$T$ inferred to be \lstinline$char$. 1199 1200 \item 1201 ``\lstinline$char *restrict volatile qp; qp++$''. 1202 The result again has type \lstinline$char *$, but the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the hypothetical function declared in point 1. 1203 Hence the actual predefined function is 1394 \end{lstlisting} 1395 with \lstinline$T$ inferred to be \lstinline$char$. 1396 1397 \item 1398 ``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but 1399 the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the 1400 hypothetical function declared in point 1. Hence the actual predefined function is 1204 1401 \begin{lstlisting} 1205 1402 forall( type T ) T * ?++( T * restrict volatile * ); 1206 \end{lstlisting} which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add 1207 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so constant pointers cannot be incremented.) 1208 1209 \item 1210 ``\lstinline$char *_Atomic ap; ap++$''. 1211 The result again has type \lstinline$char *$, but no safe conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. 1212 A separate overloading of \lstinline$?++$ is required. 1213 1214 \item 1215 ``\lstinline$char const volatile * pq; pq++$''. 1216 Here the result has type 1403 \end{lstlisting} 1404 which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add 1405 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so 1406 constant pointers cannot be incremented.) 1407 1408 \item 1409 ``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe 1410 conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A 1411 separate overloading of \lstinline$?++$ is required. 1412 1413 \item 1414 ``\lstinline$char const volatile * pq; pq++$''. Here the result has type 1217 1415 \lstinline$char const volatile *$, so a new overloading is needed: 1218 1416 \begin{lstlisting} 1219 1417 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * ); 1220 1418 \end{lstlisting} 1221 One overloading is needed for each combination of qualifiers in the pointed-at type\index{deficiencies!pointers to qualified types}. 1419 One overloading is needed for each combination of qualifiers in the pointed-at 1420 type\index{deficiencies!pointers to qualified types}. 1222 1421 1223 1422 \item 1224 ``\lstinline$float *restrict * prp; prp++$''. 1225 The \lstinline$restrict$ qualifier is handled justlike \lstinline$const$ and \lstinline$volatile$ in the previous case:1423 ``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just 1424 like \lstinline$const$ and \lstinline$volatile$ in the previous case: 1226 1425 \begin{lstlisting} 1227 1426 forall( type T ) T restrict * ?++( T restrict *restrict volatile * ); 1228 \end{lstlisting} with \lstinline$T$ inferred to be \lstinline$float *$. 1229 This looks odd, because {\c11} contains a constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$ is not syntactically a pointer type. \CFA loosens the constraint. 1427 \end{lstlisting} 1428 with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a 1429 constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$ 1430 is not syntactically a pointer type. \CFA loosens the constraint. 1230 1431 \end{enumerate} 1231 1432 \end{rationale} … … 1235 1436 1236 1437 \semantics 1237 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the compound literal. 1438 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the 1439 compound literal. 1238 1440 1239 1441 … … 1253 1455 \rewriterules 1254 1456 \begin{lstlisting} 1255 *a @\rewrite@ *?( a) @\use{*?}@1256 +a @\rewrite@ +?( a) @\use{+?}@1257 -a @\rewrite@ -?( a) @\use{-?}@1258 ~a @\rewrite@ ~?( a) @\use{~?}@1259 !a @\rewrite@ !?( a) @\use{"!?}@1260 ++a @\rewrite@ ++?(&( a)) @\use{++?}@1261 --a @\rewrite@ --?(&( a)) @\use{--?}@1457 *a @\rewrite@ *?(a) @\use{*?}@ 1458 +a @\rewrite@ +?(a) @\use{+?}@ 1459 -a @\rewrite@ -?(a) @\use{-?}@ 1460 ~a @\rewrite@ ~?(a) @\use{~?}@ 1461 !a @\rewrite@ !?(a) @\use{"!?}@ 1462 ++a @\rewrite@ ++?(&(a)) @\use{++?}@ 1463 --a @\rewrite@ --?(&(a)) @\use{--?}@ 1262 1464 \end{lstlisting} 1263 1465 … … 1267 1469 \predefined 1268 1470 \begin{lstlisting} 1269 _Bool ++?( volatile _Bool * ), ++?( _Atomic volatile _Bool * ); 1270 char ++?( volatile char * ), ++?( _Atomic volatile char * ); 1271 signed char ++?( volatile signed char * ), ++?( _Atomic volatile signed char * ); 1272 unsigned char ++?( volatile signed char * ), ++?( _Atomic volatile signed char * ); 1273 short int ++?( volatile short int * ), ++?( _Atomic volatile short int * ); 1274 unsigned short int ++?( volatile unsigned short int * ), ++?( _Atomic volatile unsigned short int * ); 1275 int ++?( volatile int * ), ++?( _Atomic volatile int * ); 1276 unsigned int ++?( volatile unsigned int * ), ++?( _Atomic volatile unsigned int * ); 1277 long int ++?( volatile long int * ), ++?( _Atomic volatile long int * ); 1278 long unsigned int ++?( volatile long unsigned int * ), ++?( _Atomic volatile long unsigned int * ); 1279 long long int ++?( volatile long long int * ), ++?( _Atomic volatile long long int * ); 1280 long long unsigned ++?( volatile long long unsigned int * ), ++?( _Atomic volatile long long unsigned int * ); 1281 float ++?( volatile float * ), ++?( _Atomic volatile float * ); 1282 double ++?( volatile double * ), ++?( _Atomic volatile double * ); 1283 long double ++?( volatile long double * ), ++?( _Atomic volatile long double * ); 1284 1285 forall( type T ) T * ++?( T * restrict volatile * ), * ++?( T * _Atomic restrict volatile * ); 1286 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), * ++?( _Atomic T * _Atomic restrict volatile * ); 1287 forall( type T ) const T * ++?( const T * restrict volatile * ), * ++?( const T * _Atomic restrict volatile * ); 1288 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ), * ++?( volatile T * _Atomic restrict volatile * ); 1289 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ), * ++?( restrict T * _Atomic restrict volatile * ); 1471 _Bool ++?( volatile _Bool * ), 1472 ++?( _Atomic volatile _Bool * ); 1473 char ++?( volatile char * ), 1474 ++?( _Atomic volatile char * ); 1475 signed char ++?( volatile signed char * ), 1476 ++?( _Atomic volatile signed char * ); 1477 unsigned char ++?( volatile signed char * ), 1478 ++?( _Atomic volatile signed char * ); 1479 short int ++?( volatile short int * ), 1480 ++?( _Atomic volatile short int * ); 1481 unsigned short int ++?( volatile unsigned short int * ), 1482 ++?( _Atomic volatile unsigned short int * ); 1483 int ++?( volatile int * ), 1484 ++?( _Atomic volatile int * ); 1485 unsigned int ++?( volatile unsigned int * ), 1486 ++?( _Atomic volatile unsigned int * ); 1487 long int ++?( volatile long int * ), 1488 ++?( _Atomic volatile long int * ); 1489 long unsigned int ++?( volatile long unsigned int * ), 1490 ++?( _Atomic volatile long unsigned int * ); 1491 long long int ++?( volatile long long int * ), 1492 ++?( _Atomic volatile long long int * ); 1493 long long unsigned ++?( volatile long long unsigned int * ), 1494 ++?( _Atomic volatile long long unsigned int * ); 1495 float ++?( volatile float * ), 1496 ++?( _Atomic volatile float * ); 1497 double ++?( volatile double * ), 1498 ++?( _Atomic volatile double * ); 1499 long double ++?( volatile long double * ), 1500 ++?( _Atomic volatile long double * ); 1501 1502 forall( type T ) T * ++?( T * restrict volatile * ), 1503 * ++?( T * _Atomic restrict volatile * ); 1504 1505 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), 1506 * ++?( _Atomic T * _Atomic restrict volatile * ); 1507 1508 forall( type T ) const T * ++?( const T * restrict volatile * ), 1509 * ++?( const T * _Atomic restrict volatile * ); 1510 1511 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ), 1512 * ++?( volatile T * _Atomic restrict volatile * ); 1513 1514 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ), 1515 * ++?( restrict T * _Atomic restrict volatile * ); 1516 1290 1517 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ), 1291 1518 * ++?( _Atomic const T * _Atomic restrict volatile * ); 1519 1292 1520 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ), 1293 1521 * ++?( _Atomic volatile T * _Atomic restrict volatile * ); 1522 1294 1523 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ), 1295 1524 * ++?( _Atomic restrict T * _Atomic restrict volatile * ); 1525 1296 1526 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ), 1297 1527 * ++?( const volatile T * _Atomic restrict volatile * ); 1528 1298 1529 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ), 1299 1530 * ++?( const restrict T * _Atomic restrict volatile * ); 1531 1300 1532 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ), 1301 1533 * ++?( restrict volatile T * _Atomic restrict volatile * ); 1534 1302 1535 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ), 1303 1536 * ++?( _Atomic const volatile T * _Atomic restrict volatile * ); 1537 1304 1538 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ), 1305 1539 * ++?( _Atomic const restrict T * _Atomic restrict volatile * ); 1540 1306 1541 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ), 1307 1542 * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1543 1308 1544 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ), 1309 1545 * ++?( const restrict volatile T * _Atomic restrict volatile * ); 1546 1310 1547 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ), 1311 1548 * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1312 1549 1313 _Bool --?( volatile _Bool * ), --?( _Atomic volatile _Bool * ); 1314 char --?( volatile char * ), --?( _Atomic volatile char * ); 1315 signed char --?( volatile signed char * ), --?( _Atomic volatile signed char * ); 1316 unsigned char --?( volatile signed char * ), --?( _Atomic volatile signed char * ); 1317 short int --?( volatile short int * ), --?( _Atomic volatile short int * ); 1318 unsigned short int --?( volatile unsigned short int * ), --?( _Atomic volatile unsigned short int * ); 1319 int --?( volatile int * ), --?( _Atomic volatile int * ); 1320 unsigned int --?( volatile unsigned int * ), --?( _Atomic volatile unsigned int * ); 1321 long int --?( volatile long int * ), --?( _Atomic volatile long int * ); 1322 long unsigned int --?( volatile long unsigned int * ), --?( _Atomic volatile long unsigned int * ); 1323 long long int --?( volatile long long int * ), --?( _Atomic volatile long long int * ); 1324 long long unsigned --?( volatile long long unsigned int * ), --?( _Atomic volatile long long unsigned int * ); 1325 float --?( volatile float * ), --?( _Atomic volatile float * ); 1326 double --?( volatile double * ), --?( _Atomic volatile double * ); 1327 long double --?( volatile long double * ), --?( _Atomic volatile long double * ); 1328 1329 forall( type T ) T * --?( T * restrict volatile * ), * --?( T * _Atomic restrict volatile * ); 1330 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ), * --?( _Atomic T * _Atomic restrict volatile * ); 1331 forall( type T ) const T * --?( const T * restrict volatile * ), * --?( const T * _Atomic restrict volatile * ); 1332 forall( type T ) volatile T * --?( volatile T * restrict volatile * ), * --?( volatile T * _Atomic restrict volatile * ); 1333 forall( type T ) restrict T * --?( restrict T * restrict volatile * ), * --?( restrict T * _Atomic restrict volatile * ); 1550 _Bool --?( volatile _Bool * ), 1551 --?( _Atomic volatile _Bool * ); 1552 char --?( volatile char * ), 1553 --?( _Atomic volatile char * ); 1554 signed char --?( volatile signed char * ), 1555 --?( _Atomic volatile signed char * ); 1556 unsigned char --?( volatile signed char * ), 1557 --?( _Atomic volatile signed char * ); 1558 short int --?( volatile short int * ), 1559 --?( _Atomic volatile short int * ); 1560 unsigned short int --?( volatile unsigned short int * ), 1561 --?( _Atomic volatile unsigned short int * ); 1562 int --?( volatile int * ), 1563 --?( _Atomic volatile int * ); 1564 unsigned int --?( volatile unsigned int * ), 1565 --?( _Atomic volatile unsigned int * ); 1566 long int --?( volatile long int * ), 1567 --?( _Atomic volatile long int * ); 1568 long unsigned int --?( volatile long unsigned int * ), 1569 --?( _Atomic volatile long unsigned int * ); 1570 long long int --?( volatile long long int * ), 1571 --?( _Atomic volatile long long int * ); 1572 long long unsigned --?( volatile long long unsigned int * ), 1573 --?( _Atomic volatile long long unsigned int * ); 1574 float --?( volatile float * ), 1575 --?( _Atomic volatile float * ); 1576 double --?( volatile double * ), 1577 --?( _Atomic volatile double * ); 1578 long double --?( volatile long double * ), 1579 --?( _Atomic volatile long double * ); 1580 1581 forall( type T ) T * --?( T * restrict volatile * ), 1582 * --?( T * _Atomic restrict volatile * ); 1583 1584 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ), 1585 * --?( _Atomic T * _Atomic restrict volatile * ); 1586 1587 forall( type T ) const T * --?( const T * restrict volatile * ), 1588 * --?( const T * _Atomic restrict volatile * ); 1589 1590 forall( type T ) volatile T * --?( volatile T * restrict volatile * ), 1591 * --?( volatile T * _Atomic restrict volatile * ); 1592 1593 forall( type T ) restrict T * --?( restrict T * restrict volatile * ), 1594 * --?( restrict T * _Atomic restrict volatile * ); 1595 1334 1596 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ), 1335 1597 * --?( _Atomic const T * _Atomic restrict volatile * ); 1598 1336 1599 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ), 1337 1600 * --?( _Atomic volatile T * _Atomic restrict volatile * ); 1601 1338 1602 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ), 1339 1603 * --?( _Atomic restrict T * _Atomic restrict volatile * ); 1604 1340 1605 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ), 1341 1606 * --?( const volatile T * _Atomic restrict volatile * ); 1607 1342 1608 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ), 1343 1609 * --?( const restrict T * _Atomic restrict volatile * ); 1610 1344 1611 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ), 1345 1612 * --?( restrict volatile T * _Atomic restrict volatile * ); 1613 1346 1614 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ), 1347 1615 * --?( _Atomic const volatile T * _Atomic restrict volatile * ); 1616 1348 1617 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ), 1349 1618 * --?( _Atomic const restrict T * _Atomic restrict volatile * ); 1619 1350 1620 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ), 1351 1621 * --?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1622 1352 1623 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ), 1353 1624 * --?( const restrict volatile T * _Atomic restrict volatile * ); 1625 1354 1626 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ), 1355 1627 * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); … … 1373 1645 1374 1646 \semantics 1375 The interpretations of prefix increment and decrement expressions are determined in the same way as the interpretations of postfix increment and decrement expressions. 1647 The interpretations of prefix increment and decrement expressions are 1648 determined in the same way as the interpretations of postfix increment and 1649 decrement expressions. 1376 1650 1377 1651 … … 1396 1670 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * ); 1397 1671 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * ); 1672 1398 1673 forall( ftype FT ) FT *?( FT * ); 1399 1674 \end{lstlisting} … … 1407 1682 \lstinline$T$ is the type of the operand. 1408 1683 1409 The interpretations of an indirection expression are the interpretations of the corresponding function call. 1684 The interpretations of an indirection expression are the interpretations of the corresponding 1685 function call. 1410 1686 1411 1687 … … 1414 1690 \predefined 1415 1691 \begin{lstlisting} 1416 int +?( int ), -?( int ), ~?( int ); 1417 unsigned int +?( unsigned int ), -?( unsigned int ), ~?( unsigned int ); 1418 long int +?( long int ), -?( long int ), ~?( long int ); 1419 long unsigned int +?( long unsigned int ), -?( long unsigned int ), ~?( long unsigned int ); 1420 long long int +?( long long int ), -?( long long int ), ~?( long long int ); 1421 long long unsigned int +?( long long unsigned int ), -?( long long unsigned int ), ~?( long long unsigned int ); 1422 float +?( float ), -?( float ); 1423 double +?( double ), -?( double ); 1424 long double +?( long double ), -?( long double ); 1425 _Complex float +?( _Complex float ), -?( _Complex float ); 1426 _Complex double +?( _Complex double ), -?( _Complex double ); 1427 _Complex long double +?( _Complex long double ), -?( _Complex long double ); 1428 int !?( int ), !?( unsigned int ), !?( long ), !?( long unsigned int ), 1429 !?( long long int ), !?( long long unsigned int ), 1430 !?( float ), !?( double ), !?( long double ), 1431 !?( _Complex float ), !?( _Complex double ), !?( _Complex long double ); 1692 int 1693 +?( int ), 1694 -?( int ), 1695 ~?( int ); 1696 unsigned int 1697 +?( unsigned int ), 1698 -?( unsigned int ), 1699 ~?( unsigned int ); 1700 long int 1701 +?( long int ), 1702 -?( long int ), 1703 ~?( long int ); 1704 long unsigned int 1705 +?( long unsigned int ), 1706 -?( long unsigned int ), 1707 ~?( long unsigned int ); 1708 long long int 1709 +?( long long int ), 1710 -?( long long int ), 1711 ~?( long long int ); 1712 long long unsigned int 1713 +?( long long unsigned int ), 1714 -?( long long unsigned int ), 1715 ~?( long long unsigned int ); 1716 float 1717 +?( float ), 1718 -?( float ); 1719 double 1720 +?( double ), 1721 -?( double ); 1722 long double 1723 +?( long double ), 1724 -?( long double ); 1725 _Complex float 1726 +?( _Complex float ), 1727 -?( _Complex float ); 1728 _Complex double 1729 +?( _Complex double ), 1730 -?( _Complex double ); 1731 _Complex long double 1732 +?( _Complex long double ), 1733 -?( _Complex long double ); 1734 1735 int !?( int ), 1736 !?( unsigned int ), 1737 !?( long ), 1738 !?( long unsigned int ), 1739 !?( long long int ), 1740 !?( long long unsigned int ), 1741 !?( float ), 1742 !?( double ), 1743 !?( long double ), 1744 !?( _Complex float ), 1745 !?( _Complex double ), 1746 !?( _Complex long double ); 1747 1432 1748 forall( dtype DT ) int !?( const restrict volatile DT * ); 1433 1749 forall( dtype DT ) int !?( _Atomic const restrict volatile DT * ); 1434 1750 forall( ftype FT ) int !?( FT * ); 1435 1751 \end{lstlisting} 1436 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 1752 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 1753 rank of \lstinline$int$ there exist 1437 1754 % Don't use predefined: keep this out of prelude.cf. 1438 1755 \begin{lstlisting} … … 1442 1759 1443 1760 \semantics 1444 The interpretations of a unary arithmetic expression are the interpretations of the corresponding function call. 1761 The interpretations of a unary arithmetic expression are the interpretations of the corresponding 1762 function call. 1445 1763 1446 1764 \examples … … 1448 1766 long int li; 1449 1767 void eat_double( double );@\use{eat_double}@ 1450 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) ); 1768 1769 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) ); 1451 1770 \end{lstlisting} 1452 1771 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are 1453 1772 \begin{center} 1454 \begin{tabular}{llc} interpretation & result type & expression conversion cost \\ 1773 \begin{tabular}{llc} 1774 interpretation & result type & expression conversion cost \\ 1455 1775 \hline 1456 1776 \lstinline$-?( (int)li )$ & \lstinline$int$ & (unsafe) \\ … … 1468 1788 \end{tabular} 1469 1789 \end{center} 1470 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument conversion and the cost of the entire expression, are 1790 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument 1791 conversion and the cost of the entire expression, are 1471 1792 \begin{center} 1472 \begin{tabular}{lcc} interpretation & argument cost & expression cost \\ 1793 \begin{tabular}{lcc} 1794 interpretation & argument cost & expression cost \\ 1473 1795 \hline 1474 1796 \lstinline$eat_double( (double)-?( (int)li) )$ & 7 & (unsafe) \\ … … 1486 1808 \end{tabular} 1487 1809 \end{center} 1488 Each has result type \lstinline$void$, so the best must be selected. 1489 The interpretations involving unsafe conversions are discarded. 1490 The remainder have equal expression conversion costs, so the 1810 Each has result type \lstinline$void$, so the best must be selected. The interpretations involving 1811 unsafe conversions are discarded. The remainder have equal expression conversion costs, so the 1491 1812 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is 1492 1813 \lstinline$eat_double( (double)-?(li) )$. … … 1499 1820 \lstinline$dtype$, or \lstinline$ftype$. 1500 1821 1501 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one interpretation, of type \lstinline$size_t$. 1822 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall 1823 have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall 1824 be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one 1825 interpretation, of type \lstinline$size_t$. 1502 1826 1503 1827 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a 1504 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. 1505 When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression. 1828 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When 1829 the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the 1830 expression is not a constant expression. 1506 1831 1507 1832 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a 1508 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the operand. 1509 When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression. 1833 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the 1834 operand. When the operand is an opaque type or an inferred type parameter\index{inferred 1835 parameter}, the expression is not a constant expression. 1510 1836 \begin{rationale} 1511 1837 \begin{lstlisting} 1512 1838 type Pair = struct { int first, second; }; 1513 1839 size_t p_size = sizeof(Pair); // constant expression 1840 1514 1841 extern type Rational;@\use{Rational}@ 1515 1842 size_t c_size = sizeof(Rational); // non-constant expression 1843 1516 1844 forall(type T) T f(T p1, T p2) { 1517 1845 size_t t_size = sizeof(T); // non-constant expression … … 1519 1847 } 1520 1848 \end{lstlisting} 1521 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. 1522 Within \lstinline$f()$, 1849 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$, 1523 1850 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call. 1524 1851 \end{rationale} … … 1540 1867 1541 1868 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if 1542 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is the only interpretation of the cast expression; 1543 otherwise, \lstinline$e$ shall have some interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast expression is the cast of the interpretation that can be converted at the lowest cost. 1544 The cast expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous. 1545 1546 \begin{rationale} 1547 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of subexpressions, and to specialize polymorphic functions and values. 1869 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is 1870 the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some 1871 interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast 1872 expression is the cast of the interpretation that can be converted at the lowest cost. The cast 1873 expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one 1874 interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous. 1875 1876 \begin{rationale} 1877 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of 1878 subexpressions, and to specialize polymorphic functions and values. 1548 1879 \end{rationale} 1549 1880 … … 1568 1899 \predefined 1569 1900 \begin{lstlisting} 1570 int?*?( int, int ), ?/?( int, int ), ?%?( int, int ); 1571 unsigned int?*?( unsigned int, unsigned int ), ?/?( unsigned int, unsigned int ), ?%?( unsigned int, unsigned int ); 1572 long int?*?( long int, long int ), ?/?( long, long ), ?%?( long, long ); 1901 int?*?( int, int ), 1902 ?/?( int, int ), 1903 ?%?( int, int ); 1904 unsigned int?*?( unsigned int, unsigned int ), 1905 ?/?( unsigned int, unsigned int ), 1906 ?%?( unsigned int, unsigned int ); 1907 long int?*?( long int, long int ), 1908 ?/?( long, long ), 1909 ?%?( long, long ); 1573 1910 long unsigned int?*?( long unsigned int, long unsigned int ), 1574 ?/?( long unsigned int, long unsigned int ), ?%?( long unsigned int, long unsigned int ); 1575 long long int?*?( long long int, long long int ), ?/?( long long int, long long int ), 1911 ?/?( long unsigned int, long unsigned int ), 1912 ?%?( long unsigned int, long unsigned int ); 1913 long long int?*?( long long int, long long int ), 1914 ?/?( long long int, long long int ), 1576 1915 ?%?( long long int, long long int ); 1577 1916 long long unsigned int ?*?( long long unsigned int, long long unsigned int ), 1578 ?/?( long long unsigned int, long long unsigned int ), ?%?( long long unsigned int, long long unsigned int ); 1579 float?*?( float, float ), ?/?( float, float ); 1580 double?*?( double, double ), ?/?( double, double ); 1581 long double?*?( long double, long double ), ?/?( long double, long double ); 1582 _Complex float?*?( float, _Complex float ), ?/?( float, _Complex float ), 1583 ?*?( _Complex float, float ), ?/?( _Complex float, float ), 1584 ?*?( _Complex float, _Complex float ), ?/?( _Complex float, _Complex float ); 1585 _Complex double?*?( double, _Complex double ), ?/?( double, _Complex double ), 1586 ?*?( _Complex double, double ), ?/?( _Complex double, double ), 1587 ?*?( _Complex double, _Complex double ), ?/?( _Complex double, _Complex double ); 1588 _Complex long double?*?( long double, _Complex long double ), ?/?( long double, _Complex long double ), 1589 ?*?( _Complex long double, long double ), ?/?( _Complex long double, long double ), 1590 ?*?( _Complex long double, _Complex long double ), ?/?( _Complex long double, _Complex long double ); 1591 \end{lstlisting} 1592 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 1917 ?/?( long long unsigned int, long long unsigned int ), 1918 ?%?( long long unsigned int, long long unsigned int ); 1919 float?*?( float, float ), 1920 ?/?( float, float ); 1921 double?*?( double, double ), 1922 ?/?( double, double ); 1923 long double?*?( long double, long double ), 1924 ?/?( long double, long double ); 1925 _Complex float?*?( float, _Complex float ), 1926 ?/?( float, _Complex float ), 1927 ?*?( _Complex float, float ), 1928 ?/?( _Complex float, float ), 1929 ?*?( _Complex float, _Complex float ), 1930 ?/?( _Complex float, _Complex float ); 1931 _Complex double?*?( double, _Complex double ), 1932 ?/?( double, _Complex double ), 1933 ?*?( _Complex double, double ), 1934 ?/?( _Complex double, double ), 1935 ?*?( _Complex double, _Complex double ), 1936 ?/?( _Complex double, _Complex double ); 1937 _Complex long double?*?( long double, _Complex long double ), 1938 ?/?( long double, _Complex long double ), 1939 ?*?( _Complex long double, long double ), 1940 ?/?( _Complex long double, long double ), 1941 ?*?( _Complex long double, _Complex long double ), 1942 ?/?( _Complex long double, _Complex long double ); 1943 \end{lstlisting} 1944 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 1945 rank of \lstinline$int$ there exist 1593 1946 % Don't use predefined: keep this out of prelude.cf. 1594 1947 \begin{lstlisting} … … 1598 1951 \begin{rationale} 1599 1952 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the 1600 \Index{usual arithmetic conversion}s. Instead it specifies conversion of the result of binary operations on arguments from mixed type domains. \CFA's predefined operators match that pattern. 1953 \Index{usual arithmetic conversion}s. Instead it specifies conversion of the result of binary 1954 operations on arguments from mixed type domains. \CFA's predefined operators match that pattern. 1601 1955 \end{rationale} 1602 1956 1603 1957 \semantics 1604 The interpretations of multiplicative expressions are the interpretations of the corresponding function call. 1958 The interpretations of multiplicative expressions are the interpretations of the corresponding 1959 function call. 1605 1960 1606 1961 \examples … … 1611 1966 eat_double( li % i ); 1612 1967 \end{lstlisting} 1613 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. 1614 The valid interpretations of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and the cost of converting the result to \lstinline$double$ (assuming no extended integer types are present ) are 1968 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations 1969 of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and 1970 the cost of converting the result to \lstinline$double$ (assuming no extended integer types are 1971 present ) are 1615 1972 \begin{center} 1616 \begin{tabular}{lcc} interpretation & argument cost & result cost \\ 1973 \begin{tabular}{lcc} 1974 interpretation & argument cost & result cost \\ 1617 1975 \hline 1618 1976 \lstinline$ ?%?( (int)li, i )$ & (unsafe) & 6 \\ 1619 1977 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$ & (unsafe) & 5 \\ 1620 \lstinline$ ?%?( li,(long)i )$ & 1 & 4 \\1978 \lstinline$ ?%?(li,(long)i )$ & 1 & 4 \\ 1621 1979 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$ & 3 & 3 \\ 1622 1980 \lstinline$ ?%?( (long long)li,(long long)i )$ & 5 & 2 \\ … … 1625 1983 \end{center} 1626 1984 The best interpretation of \lstinline$eat_double( li, i )$ is 1627 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the lowest total cost. 1628 1629 \begin{rationale} 1630 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If 1985 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the 1986 lowest total cost. 1987 1988 \begin{rationale} 1989 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that 1990 belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If 1631 1991 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$; 1632 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches that pattern; 1633 it does not predefine ``\lstinline$short ?*?( short, short )$''. 1634 1635 These ``missing'' operators limit polymorphism. 1636 Consider 1992 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches 1993 that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''. 1994 1995 These ``missing'' operators limit polymorphism. Consider 1637 1996 \begin{lstlisting} 1638 1997 forall( type T | T ?*?( T, T ) ) T square( T ); … … 1642 2001 Since \CFA does not define a multiplication operator for \lstinline$short int$, 1643 2002 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type 1644 \lstinline$int$. 1645 This is mildly surprising, but it follows the {\c11} operator pattern. 2003 \lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern. 1646 2004 1647 2005 A more troubling example is … … 1652 2010 \end{lstlisting} 1653 2011 This has no valid interpretations, because \CFA has no conversion from ``array of 1654 \lstinline$short int$'' to ``array of \lstinline$int$''. 1655 The alternatives in such situationsinclude2012 \lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations 2013 include 1656 2014 \begin{itemize} 1657 2015 \item … … 1662 2020 \lstinline$product$. 1663 2021 \item 1664 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to the operator's argument type. 2022 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to 2023 the operator's argument type. 1665 2024 \end{itemize} 1666 2025 \end{rationale} … … 1684 2043 \predefined 1685 2044 \begin{lstlisting} 1686 int?+?( int, int ), ?-?( int, int ); 1687 unsigned int?+?( unsigned int, unsigned int ), ?-?( unsigned int, unsigned int ); 1688 long int?+?( long int, long int ), ?-?( long int, long int ); 1689 long unsigned int?+?( long unsigned int, long unsigned int ), ?-?( long unsigned int, long unsigned int ); 1690 long long int?+?( long long int, long long int ), ?-?( long long int, long long int ); 2045 int?+?( int, int ), 2046 ?-?( int, int ); 2047 unsigned int?+?( unsigned int, unsigned int ), 2048 ?-?( unsigned int, unsigned int ); 2049 long int?+?( long int, long int ), 2050 ?-?( long int, long int ); 2051 long unsigned int?+?( long unsigned int, long unsigned int ), 2052 ?-?( long unsigned int, long unsigned int ); 2053 long long int?+?( long long int, long long int ), 2054 ?-?( long long int, long long int ); 1691 2055 long long unsigned int ?+?( long long unsigned int, long long unsigned int ), 1692 2056 ?-?( long long unsigned int, long long unsigned int ); 1693 float?+?( float, float ), ?-?( float, float ); 1694 double?+?( double, double ), ?-?( double, double ); 1695 long double?+?( long double, long double ), ?-?( long double, long double ); 1696 _Complex float?+?( _Complex float, float ), ?-?( _Complex float, float ), 1697 ?+?( float, _Complex float ), ?-?( float, _Complex float ), 1698 ?+?( _Complex float, _Complex float ), ?-?( _Complex float, _Complex float ); 1699 _Complex double?+?( _Complex double, double ), ?-?( _Complex double, double ), 1700 ?+?( double, _Complex double ), ?-?( double, _Complex double ), 1701 ?+?( _Complex double, _Complex double ), ?-?( _Complex double, _Complex double ); 1702 _Complex long double?+?( _Complex long double, long double ), ?-?( _Complex long double, long double ), 1703 ?+?( long double, _Complex long double ), ?-?( long double, _Complex long double ), 1704 ?+?( _Complex long double, _Complex long double ), ?-?( _Complex long double, _Complex long double ); 1705 1706 forall( type T ) T * ?+?( T *, ptrdiff_t ), * ?+?( ptrdiff_t, T * ), * ?-?( T *, ptrdiff_t ); 1707 forall( type T ) _Atomic T * ?+?( _Atomic T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic T * ), 2057 float?+?( float, float ), 2058 ?-?( float, float ); 2059 double?+?( double, double ), 2060 ?-?( double, double ); 2061 long double?+?( long double, long double ), 2062 ?-?( long double, long double ); 2063 _Complex float?+?( _Complex float, float ), 2064 ?-?( _Complex float, float ), 2065 ?+?( float, _Complex float ), 2066 ?-?( float, _Complex float ), 2067 ?+?( _Complex float, _Complex float ), 2068 ?-?( _Complex float, _Complex float ); 2069 _Complex double?+?( _Complex double, double ), 2070 ?-?( _Complex double, double ), 2071 ?+?( double, _Complex double ), 2072 ?-?( double, _Complex double ), 2073 ?+?( _Complex double, _Complex double ), 2074 ?-?( _Complex double, _Complex double ); 2075 _Complex long double?+?( _Complex long double, long double ), 2076 ?-?( _Complex long double, long double ), 2077 ?+?( long double, _Complex long double ), 2078 ?-?( long double, _Complex long double ), 2079 ?+?( _Complex long double, _Complex long double ), 2080 ?-?( _Complex long double, _Complex long double ); 2081 2082 forall( type T ) T 2083 * ?+?( T *, ptrdiff_t ), 2084 * ?+?( ptrdiff_t, T * ), 2085 * ?-?( T *, ptrdiff_t ); 2086 2087 forall( type T ) _Atomic T 2088 * ?+?( _Atomic T *, ptrdiff_t ), 2089 * ?+?( ptrdiff_t, _Atomic T * ), 1708 2090 * ?-?( _Atomic T *, ptrdiff_t ); 1709 forall( type T ) const T * ?+?( const T *, ptrdiff_t ), * ?+?( ptrdiff_t, const T * ), 2091 2092 forall( type T ) const T 2093 * ?+?( const T *, ptrdiff_t ), 2094 * ?+?( ptrdiff_t, const T * ), 1710 2095 * ?-?( const T *, ptrdiff_t ); 1711 forall( type T ) restrict T * ?+?( restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict T * ), 2096 2097 forall( type T ) restrict T 2098 * ?+?( restrict T *, ptrdiff_t ), 2099 * ?+?( ptrdiff_t, restrict T * ), 1712 2100 * ?-?( restrict T *, ptrdiff_t ); 1713 forall( type T ) volatile T * ?+?( volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, volatile T * ), 2101 2102 forall( type T ) volatile T 2103 * ?+?( volatile T *, ptrdiff_t ), 2104 * ?+?( ptrdiff_t, volatile T * ), 1714 2105 * ?-?( volatile T *, ptrdiff_t ); 1715 forall( type T ) _Atomic const T * ?+?( _Atomic const T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic const T * ), 2106 2107 forall( type T ) _Atomic const T 2108 * ?+?( _Atomic const T *, ptrdiff_t ), 2109 * ?+?( ptrdiff_t, _Atomic const T * ), 1716 2110 * ?-?( _Atomic const T *, ptrdiff_t ); 1717 forall( type T ) _Atomic restrict T * ?+?( _Atomic restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic restrict T * ), 2111 2112 forall( type T ) _Atomic restrict T 2113 * ?+?( _Atomic restrict T *, ptrdiff_t ), 2114 * ?+?( ptrdiff_t, _Atomic restrict T * ), 1718 2115 * ?-?( _Atomic restrict T *, ptrdiff_t ); 1719 forall( type T ) _Atomic volatile T * ?+?( _Atomic volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic volatile T * ), 2116 2117 forall( type T ) _Atomic volatile T 2118 * ?+?( _Atomic volatile T *, ptrdiff_t ), 2119 * ?+?( ptrdiff_t, _Atomic volatile T * ), 1720 2120 * ?-?( _Atomic volatile T *, ptrdiff_t ); 1721 forall( type T ) const restrict T * ?+?( const restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, const restrict T * ), 2121 2122 forall( type T ) const restrict T 2123 * ?+?( const restrict T *, ptrdiff_t ), 2124 * ?+?( ptrdiff_t, const restrict T * ), 1722 2125 * ?-?( const restrict T *, ptrdiff_t ); 1723 forall( type T ) const volatile T * ?+?( const volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, const volatile T * ), 2126 2127 forall( type T ) const volatile T 2128 * ?+?( const volatile T *, ptrdiff_t ), 2129 * ?+?( ptrdiff_t, const volatile T * ), 1724 2130 * ?-?( const volatile T *, ptrdiff_t ); 1725 forall( type T ) restrict volatile T * ?+?( restrict volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict volatile T * ), 2131 2132 forall( type T ) restrict volatile T 2133 * ?+?( restrict volatile T *, ptrdiff_t ), 2134 * ?+?( ptrdiff_t, restrict volatile T * ), 1726 2135 * ?-?( restrict volatile T *, ptrdiff_t ); 1727 forall( type T ) _Atomic const restrict T * ?+?( _Atomic const restrict T *, ptrdiff_t ), 2136 2137 forall( type T ) _Atomic const restrict T 2138 * ?+?( _Atomic const restrict T *, ptrdiff_t ), 1728 2139 * ?+?( ptrdiff_t, _Atomic const restrict T * ), 1729 2140 * ?-?( _Atomic const restrict T *, ptrdiff_t ); 2141 1730 2142 forall( type T ) ptrdiff_t 1731 2143 * ?-?( const restrict volatile T *, const restrict volatile T * ), 1732 2144 * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * ); 1733 2145 \end{lstlisting} 1734 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2146 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2147 rank of \lstinline$int$ there exist 1735 2148 % Don't use predefined: keep this out of prelude.cf. 1736 2149 \begin{lstlisting} … … 1739 2152 1740 2153 \semantics 1741 The interpretations of additive expressions are the interpretations of the corresponding function calls. 1742 1743 \begin{rationale} 1744 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that is synonymous with a signed integral type that is large enough to hold the difference between two pointers. 1745 It seems reasonable to use it for pointer addition as well. (This is technically a difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral} argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition. 1746 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an unsigned type. 2154 The interpretations of additive expressions are the interpretations of the corresponding function 2155 calls. 2156 2157 \begin{rationale} 2158 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that 2159 is synonymous with a signed integral type that is large enough to hold the difference between two 2160 pointers. It seems reasonable to use it for pointer addition as well. (This is technically a 2161 difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral} 2162 argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition. 2163 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an 2164 argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an 2165 unsigned type. 1747 2166 \end{rationale} 1748 2167 … … 1765 2184 \predefined 1766 2185 \begin{lstlisting} 1767 int ?<<?( int, int ), ?>>?( int, int ); 1768 unsigned int ?<<?( unsigned int, int ), ?>>?( unsigned int, int ); 1769 long int ?<<?( long int, int ), ?>>?( long int, int ); 1770 long unsigned int ?<<?( long unsigned int, int ), ?>>?( long unsigned int, int ); 1771 long long int ?<<?( long long int, int ), ?>>?( long long int, int ); 1772 long long unsigned int ?<<?( long long unsigned int, int ), ?>>?( long long unsigned int, int); 1773 \end{lstlisting} 1774 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2186 int ?<<?( int, int ), 2187 ?>>?( int, int ); 2188 unsigned int ?<<?( unsigned int, int ), 2189 ?>>?( unsigned int, int ); 2190 long int ?<<?( long int, int ), 2191 ?>>?( long int, int ); 2192 long unsigned int ?<<?( long unsigned int, int ), 2193 ?>>?( long unsigned int, int ); 2194 long long int ?<<?( long long int, int ), 2195 ?>>?( long long int, int ); 2196 long long unsigned int ?<<?( long long unsigned int, int ), 2197 ?>>?( long long unsigned int, int); 2198 \end{lstlisting} 2199 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2200 rank of \lstinline$int$ there exist 1775 2201 % Don't use predefined: keep this out of prelude.cf. 1776 2202 \begin{lstlisting} … … 1779 2205 1780 2206 \begin{rationale} 1781 The bitwise shift operators break the usual pattern: they do not convert both operands to a common type.1782 The right operand only undergoes \Index{integer promotion}.2207 The bitwise shift operators break the usual pattern: they do not convert both operands to a common 2208 type. The right operand only undergoes \Index{integer promotion}. 1783 2209 \end{rationale} 1784 2210 1785 2211 \semantics 1786 The interpretations of a bitwise shift expression are the interpretations of the corresponding function calls. 2212 The interpretations of a bitwise shift expression are the interpretations of the corresponding 2213 function calls. 1787 2214 1788 2215 … … 1808 2235 \predefined 1809 2236 \begin{lstlisting} 1810 int ?<?( int, int ), ?<=?( int, int ), 1811 ?>?( int, int ), ?>=?( int, int ); 1812 int ?<?( unsigned int, unsigned int ), ?<=?( unsigned int, unsigned int ), 1813 ?>?( unsigned int, unsigned int ), ?>=?( unsigned int, unsigned int ); 1814 int ?<?( long int, long int ), ?<=?( long int, long int ), 1815 ?>?( long int, long int ), ?>=?( long int, long int ); 1816 int ?<?( long unsigned int, long unsigned ), ?<=?( long unsigned int, long unsigned ), 1817 ?>?( long unsigned int, long unsigned ), ?>=?( long unsigned int, long unsigned ); 1818 int ?<?( long long int, long long int ), ?<=?( long long int, long long int ), 1819 ?>?( long long int, long long int ), ?>=?( long long int, long long int ); 1820 int ?<?( long long unsigned int, long long unsigned ), ?<=?( long long unsigned int, long long unsigned ), 1821 ?>?( long long unsigned int, long long unsigned ), ?>=?( long long unsigned int, long long unsigned ); 1822 int ?<?( float, float ), ?<=?( float, float ), 1823 ?>?( float, float ), ?>=?( float, float ); 1824 int ?<?( double, double ), ?<=?( double, double ), 1825 ?>?( double, double ), ?>=?( double, double ); 1826 int ?<?( long double, long double ), ?<=?( long double, long double ), 1827 ?>?( long double, long double ), ?>=?( long double, long double ); 1828 forall( dtype DT ) int ?<?( const restrict volatile DT *, const restrict volatile DT * ), 2237 int ?<?( int, int ), 2238 ?<=?( int, int ), 2239 ?>?( int, int ), 2240 ?>=?( int, int ); 2241 int ?<?( unsigned int, unsigned int ), 2242 ?<=?( unsigned int, unsigned int ), 2243 ?>?( unsigned int, unsigned int ), 2244 ?>=?( unsigned int, unsigned int ); 2245 int ?<?( long int, long int ), 2246 ?<=?( long int, long int ), 2247 ?>?( long int, long int ), 2248 ?>=?( long int, long int ); 2249 int ?<?( long unsigned int, long unsigned ), 2250 ?<=?( long unsigned int, long unsigned ), 2251 ?>?( long unsigned int, long unsigned ), 2252 ?>=?( long unsigned int, long unsigned ); 2253 int ?<?( long long int, long long int ), 2254 ?<=?( long long int, long long int ), 2255 ?>?( long long int, long long int ), 2256 ?>=?( long long int, long long int ); 2257 int ?<?( long long unsigned int, long long unsigned ), 2258 ?<=?( long long unsigned int, long long unsigned ), 2259 ?>?( long long unsigned int, long long unsigned ), 2260 ?>=?( long long unsigned int, long long unsigned ); 2261 int ?<?( float, float ), 2262 ?<=?( float, float ), 2263 ?>?( float, float ), 2264 ?>=?( float, float ); 2265 int ?<?( double, double ), 2266 ?<=?( double, double ), 2267 ?>?( double, double ), 2268 ?>=?( double, double ); 2269 int ?<?( long double, long double ), 2270 ?<=?( long double, long double ), 2271 ?>?( long double, long double ), 2272 ?>=?( long double, long double ); 2273 2274 forall( dtype DT ) int 2275 ?<?( const restrict volatile DT *, const restrict volatile DT * ), 1829 2276 ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 1830 2277 ?<=?( const restrict volatile DT *, const restrict volatile DT * ), … … 1835 2282 ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ); 1836 2283 \end{lstlisting} 1837 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2284 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2285 rank of \lstinline$int$ there exist 1838 2286 % Don't use predefined: keep this out of prelude.cf. 1839 2287 \begin{lstlisting} … … 1845 2293 1846 2294 \semantics 1847 The interpretations of a relational expression are the interpretations of the corresponding function call. 2295 The interpretations of a relational expression are the interpretations of the corresponding function 2296 call. 1848 2297 1849 2298 … … 1865 2314 \predefined 1866 2315 \begin{lstlisting} 1867 int ?==?( int, int ), ?!=?( int, int ), 1868 ?==?( unsigned int, unsigned int ), ?!=?( unsigned int, unsigned int ), 1869 ?==?( long int, long int ), ?!=?( long int, long int ), 1870 ?==?( long unsigned int, long unsigned int ), ?!=?( long unsigned int, long unsigned int ), 1871 ?==?( long long int, long long int ), ?!=?( long long int, long long int ), 1872 ?==?( long long unsigned int, long long unsigned int ), ?!=?( long long unsigned int, long long unsigned int ), 1873 ?==?( float, float ), ?!=?( float, float ), 1874 ?==?( _Complex float, float ), ?!=?( _Complex float, float ), 1875 ?==?( float, _Complex float ), ?!=?( float, _Complex float ), 1876 ?==?( _Complex float, _Complex float ), ?!=?( _Complex float, _Complex float ), 1877 ?==?( double, double ), ?!=?( double, double ), 1878 ?==?( _Complex double, double ), ?!=?( _Complex double, double ), 1879 ?==?( double, _Complex double ), ?!=?( double, _Complex double ), 1880 ?==?( _Complex double, _Complex double ), ?!=?( _Complex double, _Complex double ), 1881 ?==?( long double, long double ), ?!=?( long double, long double ), 1882 ?==?( _Complex long double, long double ), ?!=?( _Complex long double, long double ), 1883 ?==?( long double, _Complex long double ), ?!=?( long double, _Complex long double ), 1884 ?==?( _Complex long double, _Complex long double ), ?!=?( _Complex long double, _Complex long double ); 2316 int ?==?( int, int ), 2317 ?!=?( int, int ), 2318 ?==?( unsigned int, unsigned int ), 2319 ?!=?( unsigned int, unsigned int ), 2320 ?==?( long int, long int ), 2321 ?!=?( long int, long int ), 2322 ?==?( long unsigned int, long unsigned int ), 2323 ?!=?( long unsigned int, long unsigned int ), 2324 ?==?( long long int, long long int ), 2325 ?!=?( long long int, long long int ), 2326 ?==?( long long unsigned int, long long unsigned int ), 2327 ?!=?( long long unsigned int, long long unsigned int ), 2328 ?==?( float, float ), 2329 ?!=?( float, float ), 2330 ?==?( _Complex float, float ), 2331 ?!=?( _Complex float, float ), 2332 ?==?( float, _Complex float ), 2333 ?!=?( float, _Complex float ), 2334 ?==?( _Complex float, _Complex float ), 2335 ?!=?( _Complex float, _Complex float ), 2336 ?==?( double, double ), 2337 ?!=?( double, double ), 2338 ?==?( _Complex double, double ), 2339 ?!=?( _Complex double, double ), 2340 ?==?( double, _Complex double ), 2341 ?!=?( double, _Complex double ), 2342 ?==?( _Complex double, _Complex double ), 2343 ?!=?( _Complex double, _Complex double ), 2344 ?==?( long double, long double ), 2345 ?!=?( long double, long double ), 2346 ?==?( _Complex long double, long double ), 2347 ?!=?( _Complex long double, long double ), 2348 ?==?( long double, _Complex long double ), 2349 ?!=?( long double, _Complex long double ), 2350 ?==?( _Complex long double, _Complex long double ), 2351 ?!=?( _Complex long double, _Complex long double ); 2352 1885 2353 forall( dtype DT ) int 1886 2354 ?==?( const restrict volatile DT *, const restrict volatile DT * ), … … 1907 2375 ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ), 1908 2376 ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ); 2377 1909 2378 forall( ftype FT ) int 1910 ?==?( FT *, FT * ), ?!=?( FT *, FT * ), 1911 ?==?( FT *, forall( ftype FT2) FT2 * ), ?!=?( FT *, forall( ftype FT2) FT2 * ), 1912 ?==?( forall( ftype FT2) FT2*, FT * ), ?!=?( forall( ftype FT2) FT2*, FT * ), 1913 ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ); 1914 \end{lstlisting} 1915 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2379 ?==?( FT *, FT * ), 2380 ?!=?( FT *, FT * ), 2381 ?==?( FT *, forall( ftype FT2) FT2 * ), 2382 ?!=?( FT *, forall( ftype FT2) FT2 * ), 2383 ?==?( forall( ftype FT2) FT2*, FT * ), 2384 ?!=?( forall( ftype FT2) FT2*, FT * ), 2385 ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), 2386 ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ); 2387 \end{lstlisting} 2388 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2389 rank of \lstinline$int$ there exist 1916 2390 % Don't use predefined: keep this out of prelude.cf. 1917 2391 \begin{lstlisting} … … 1921 2395 1922 2396 \begin{rationale} 1923 The polymorphic equality operations come in three styles: comparisons between pointers of compatible types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and between the \Index{null pointer} constant and pointers to any type. 1924 In the last case, a special constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA type system. 2397 The polymorphic equality operations come in three styles: comparisons between pointers of compatible 2398 types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and 2399 between the \Index{null pointer} constant and pointers to any type. In the last case, a special 2400 constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA 2401 type system. 1925 2402 \end{rationale} 1926 2403 1927 2404 \semantics 1928 The interpretations of an equality expression are the interpretations of the corresponding function call. 2405 The interpretations of an equality expression are the interpretations of the corresponding function 2406 call. 1929 2407 1930 2408 \begin{sloppypar} 1931 The result of an equality comparison between two pointers to predefined functions or predefined values is implementation-defined. 2409 The result of an equality comparison between two pointers to predefined functions or predefined 2410 values is implementation-defined. 1932 2411 \end{sloppypar} 1933 2412 \begin{rationale} 1934 The implementation-defined status of equality comparisons allows implementations to use one library routine to implement many predefined functions. 1935 These optimization are particularly important when the predefined functions are polymorphic, as is the case for most pointer operations 2413 The implementation-defined status of equality comparisons allows implementations to use one library 2414 routine to implement many predefined functions. These optimization are particularly important when 2415 the predefined functions are polymorphic, as is the case for most pointer operations 1936 2416 \end{rationale} 1937 2417 … … 1959 2439 long long unsigned int ?&?( long long unsigned int, long long unsigned int ); 1960 2440 \end{lstlisting} 1961 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2441 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2442 rank of \lstinline$int$ there exist 1962 2443 % Don't use predefined: keep this out of prelude.cf. 1963 2444 \begin{lstlisting} … … 1966 2447 1967 2448 \semantics 1968 The interpretations of a bitwise AND expression are the interpretations of the corresponding function call. 2449 The interpretations of a bitwise AND expression are the interpretations of the corresponding 2450 function call. 1969 2451 1970 2452 … … 1991 2473 long long unsigned int ?^?( long long unsigned int, long long unsigned int ); 1992 2474 \end{lstlisting} 1993 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2475 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2476 rank of \lstinline$int$ there exist 1994 2477 % Don't use predefined: keep this out of prelude.cf. 1995 2478 \begin{lstlisting} … … 1998 2481 1999 2482 \semantics 2000 The interpretations of a bitwise exclusive OR expression are the interpretations of the corresponding function call. 2483 The interpretations of a bitwise exclusive OR expression are the interpretations of the 2484 corresponding function call. 2001 2485 2002 2486 … … 2023 2507 long long unsigned int ?|?( long long unsigned int, long long unsigned int ); 2024 2508 \end{lstlisting} 2025 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist 2509 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2510 rank of \lstinline$int$ there exist 2026 2511 % Don't use predefined: keep this out of prelude.cf. 2027 2512 \begin{lstlisting} … … 2030 2515 2031 2516 \semantics 2032 The interpretations of a bitwise inclusive OR expression are the interpretations of the corresponding function call. 2517 The interpretations of a bitwise inclusive OR expression are the interpretations of the 2518 corresponding function call. 2033 2519 2034 2520 … … 2042 2528 2043 2529 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as 2044 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be unambiguous. 2045 The expression has only one interpretation, which is of type \lstinline$int$. 2046 \begin{rationale} 2047 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has not been redefined for those types, the compiler can optimize away the function calls. 2530 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be 2531 unambiguous. The expression has only one interpretation, which is of type \lstinline$int$. 2532 \begin{rationale} 2533 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has 2534 not been redefined for those types, the compiler can optimize away the function calls. 2048 2535 2049 2536 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and 2050 \lstinline$if$ statements. 2051 For instance, the loop below iterates as long as \lstinline$rp$ pointsat a \lstinline$Rational$ value that is non-zero.2537 \lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points 2538 at a \lstinline$Rational$ value that is non-zero. 2052 2539 2053 2540 \begin{lstlisting} … … 2056 2543 extern int ?!=?( Rational, Rational ); 2057 2544 Rational *rp; 2545 2058 2546 while ( rp && *rp ) { ... } 2059 2547 \end{lstlisting} 2060 The logical expression calls the \lstinline$Rational$ inequality operator, passing it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. 2061 In contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$ conversion to \lstinline$*rp$ in the equivalent situation. 2062 The conversion to \lstinline$int$ would produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was not written with this situation in mind. 2548 The logical expression calls the \lstinline$Rational$ inequality operator, passing 2549 it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In 2550 contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$ 2551 conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would 2552 produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was 2553 not written with this situation in mind. 2063 2554 \end{rationale} 2064 2555 … … 2074 2565 \semantics 2075 2566 2076 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. 2077 The expression has only one interpretation, which is of type \lstinline$int$. 2567 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$'' 2568 and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one 2569 interpretation, which is of type \lstinline$int$. 2078 2570 2079 2571 … … 2088 2580 2089 2581 \semantics 2090 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and third operands both have an interpretation with \lstinline$void$ type, then the expression has an interpretation with type \lstinline$void$, equivalent to 2582 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and 2583 third operands both have an interpretation with \lstinline$void$ type, then the expression has an 2584 interpretation with type \lstinline$void$, equivalent to 2091 2585 \begin{lstlisting} 2092 2586 ( int)(( a)!=0) ? ( void)( b) : ( void)( c) 2093 2587 \end{lstlisting} 2094 2588 2095 If the second and third operands both have interpretations with non-\lstinline$void$ types, the expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'', with \lstinline$cond$ declared as 2589 If the second and third operands both have interpretations with non-\lstinline$void$ types, the 2590 expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'', 2591 with \lstinline$cond$ declared as 2096 2592 \begin{lstlisting} 2097 2593 forall( type T ) T cond( int, T, T ); 2098 forall( dtype D ) void * cond( int, D *, void * ), * cond( int, void *, D * ); 2099 forall( dtype D ) _atomic void * cond( 2100 int, _Atomic D *, _Atomic void * ), * cond( int, _Atomic void *, _Atomic D * ); 2101 forall( dtype D ) const void * cond( 2102 int, const D *, const void * ), * cond( int, const void *, const D * ); 2103 forall( dtype D ) restrict void * cond( 2104 int, restrict D *, restrict void * ), * cond( int, restrict void *, restrict D * ); 2105 forall( dtype D ) volatile void * cond( 2106 int, volatile D *, volatile void * ), * cond( int, volatile void *, volatile D * ); 2107 forall( dtype D ) _Atomic const void * cond( 2108 int, _Atomic const D *, _Atomic const void * ), * cond( int, _Atomic const void *, _Atomic const D * ); 2109 forall( dtype D ) _Atomic restrict void * cond( 2110 int, _Atomic restrict D *, _Atomic restrict void * ), * cond( int, _Atomic restrict void *, _Atomic restrict D * ); 2111 forall( dtype D ) _Atomic volatile void * cond( 2112 int, _Atomic volatile D *, _Atomic volatile void * ), * cond( int, _Atomic volatile void *, _Atomic volatile D * ); 2113 forall( dtype D ) const restrict void * cond( 2114 int, const restrict D *, const restrict void * ), * cond( int, const restrict void *, const restrict D * ); 2115 forall( dtype D ) const volatile void * cond( 2116 int, const volatile D *, const volatile void * ), * cond( int, const volatile void *, const volatile D * ); 2117 forall( dtype D ) restrict volatile void * cond( 2118 int, restrict volatile D *, restrict volatile void * ), * cond( int, restrict volatile void *, restrict volatile D * ); 2119 forall( dtype D ) _Atomic const restrict void * cond( 2120 int, _Atomic const restrict D *, _Atomic const restrict void * ), 2594 2595 forall( dtype D ) void 2596 * cond( int, D *, void * ), 2597 * cond( int, void *, D * ); 2598 2599 forall( dtype D ) _atomic void 2600 * cond( int, _Atomic D *, _Atomic void * ), 2601 * cond( int, _Atomic void *, _Atomic D * ); 2602 2603 forall( dtype D ) const void 2604 * cond( int, const D *, const void * ), 2605 * cond( int, const void *, const D * ); 2606 2607 forall( dtype D ) restrict void 2608 * cond( int, restrict D *, restrict void * ), 2609 * cond( int, restrict void *, restrict D * ); 2610 2611 forall( dtype D ) volatile void 2612 * cond( int, volatile D *, volatile void * ), 2613 * cond( int, volatile void *, volatile D * ); 2614 2615 forall( dtype D ) _Atomic const void 2616 * cond( int, _Atomic const D *, _Atomic const void * ), 2617 * cond( int, _Atomic const void *, _Atomic const D * ); 2618 2619 forall( dtype D ) _Atomic restrict void 2620 * cond( int, _Atomic restrict D *, _Atomic restrict void * ), 2621 * cond( int, _Atomic restrict void *, _Atomic restrict D * ); 2622 2623 forall( dtype D ) _Atomic volatile void 2624 * cond( int, _Atomic volatile D *, _Atomic volatile void * ), 2625 * cond( int, _Atomic volatile void *, _Atomic volatile D * ); 2626 2627 forall( dtype D ) const restrict void 2628 * cond( int, const restrict D *, const restrict void * ), 2629 * cond( int, const restrict void *, const restrict D * ); 2630 2631 forall( dtype D ) const volatile void 2632 * cond( int, const volatile D *, const volatile void * ), 2633 * cond( int, const volatile void *, const volatile D * ); 2634 2635 forall( dtype D ) restrict volatile void 2636 * cond( int, restrict volatile D *, restrict volatile void * ), 2637 * cond( int, restrict volatile void *, restrict volatile D * ); 2638 2639 forall( dtype D ) _Atomic const restrict void 2640 * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ), 2121 2641 * cond( int, _Atomic const restrict void *, _Atomic const restrict D * ); 2122 forall( dtype D ) _Atomic const volatile void * cond( 2123 int, _Atomic const volatile D *, _Atomic const volatile void * ), 2642 2643 forall( dtype D ) _Atomic const volatile void 2644 * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ), 2124 2645 * cond( int, _Atomic const volatile void *, _Atomic const volatile D * ); 2125 forall( dtype D ) _Atomic restrict volatile void * cond( 2126 int, _Atomic restrict volatile D *, _Atomic restrict volatile void * ), 2127 * cond( int, _Atomic restrict volatile void *, _Atomic restrict volatile D * ); 2128 forall( dtype D ) const restrict volatile void * cond( 2129 int, const restrict volatile D *, const restrict volatile void * ), 2130 * cond( int, const restrict volatile void *, const restrict volatile D * ); 2131 forall( dtype D ) _Atomic const restrict volatile void * cond( 2132 int, _Atomic const restrict volatile D *, _Atomic const restrict volatile void * ), 2133 * cond( int, _Atomic const restrict volatile void *, _Atomic const restrict volatile D * ); 2134 \end{lstlisting} 2135 2136 \begin{rationale} 2137 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and third operands have arithmetic type, and to combine the qualifiers of the second and third operands if they are pointers. 2646 2647 forall( dtype D ) _Atomic restrict volatile void 2648 * cond( int, _Atomic restrict volatile D *, 2649 _Atomic restrict volatile void * ), 2650 * cond( int, _Atomic restrict volatile void *, 2651 _Atomic restrict volatile D * ); 2652 2653 forall( dtype D ) const restrict volatile void 2654 * cond( int, const restrict volatile D *, 2655 const restrict volatile void * ), 2656 * cond( int, const restrict volatile void *, 2657 const restrict volatile D * ); 2658 2659 forall( dtype D ) _Atomic const restrict volatile void 2660 * cond( int, _Atomic const restrict volatile D *, 2661 _Atomic const restrict volatile void * ), 2662 * cond( int, _Atomic const restrict volatile void *, 2663 _Atomic const restrict volatile D * ); 2664 \end{lstlisting} 2665 2666 \begin{rationale} 2667 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and 2668 third operands have arithmetic type, and to combine the qualifiers of the second and third operands 2669 if they are pointers. 2138 2670 \end{rationale} 2139 2671 … … 2153 2685 rand() ? cip : vip; 2154 2686 \end{lstlisting} 2155 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively. 2687 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second 2688 and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively. 2156 2689 2157 2690 \begin{lstlisting} … … 2175 2708 2176 2709 \rewriterules 2177 Let ``\(\leftarrow\)'' be any of the assignment operators. 2178 Then 2710 Let ``\(\leftarrow\)'' be any of the assignment operators. Then 2179 2711 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?} 2180 2712 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?} … … 2184 2716 2185 2717 \semantics 2186 Each interpretation of the left operand of an assignment expression is considered separately. 2187 For each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class specifier, the expression has one valid interpretation, with the type of the left operand. 2188 The right operand is cast to that type, and the assignment expression is ambiguous if either operand is. 2189 For the remaining interpretations, the expression is rewritten, and the interpretations of the assignment expression are the interpretations of the corresponding function call. 2190 Finally, all interpretations of the expression produced for the different interpretations of the left operand are combined to produce the interpretations of the expression as a whole; 2191 where interpretations have compatible result types, the best interpretations are selected in the manner described for function call expressions. 2718 Each interpretation of the left operand of an assignment expression is considered separately. For 2719 each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class 2720 specifier, the expression has one valid interpretation, with the type of the left operand. The 2721 right operand is cast to that type, and the assignment expression is ambiguous if either operand is. 2722 For the remaining interpretations, the expression is rewritten, and the interpretations of the 2723 assignment expression are the interpretations of the corresponding function call. Finally, all 2724 interpretations of the expression produced for the different interpretations of the left operand are 2725 combined to produce the interpretations of the expression as a whole; where interpretations have 2726 compatible result types, the best interpretations are selected in the manner described for function 2727 call expressions. 2192 2728 2193 2729 … … 2254 2790 ?=?( volatile _Complex long double *, _Complex long double ), 2255 2791 ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double ); 2792 2256 2793 forall( ftype FT ) FT 2257 2794 * ?=?( FT * volatile *, FT * ), 2258 2795 * ?=?( FT * volatile *, forall( ftype F ) F * ); 2796 2259 2797 forall( ftype FT ) FT const 2260 2798 * ?=?( FT const * volatile *, FT const * ), 2261 2799 * ?=?( FT const * volatile *, forall( ftype F ) F * ); 2800 2262 2801 forall( ftype FT ) FT volatile 2263 2802 * ?=?( FT volatile * volatile *, FT * ), 2264 2803 * ?=?( FT volatile * volatile *, forall( ftype F ) F * ); 2804 2265 2805 forall( ftype FT ) FT const 2266 2806 * ?=?( FT const volatile * volatile *, FT const * ), 2267 2807 * ?=?( FT const volatile * volatile *, forall( ftype F ) F * ); 2808 2268 2809 forall( dtype DT ) DT 2269 2810 * ?=?( DT * restrict volatile *, DT * ), … … 2273 2814 * ?=?( DT * _Atomic restrict volatile *, void * ), 2274 2815 * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2816 2275 2817 forall( dtype DT ) DT _Atomic 2276 2818 * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ), … … 2280 2822 * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ), 2281 2823 * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2824 2282 2825 forall( dtype DT ) DT const 2283 2826 * ?=?( DT const * restrict volatile *, DT const * ), … … 2287 2830 * ?=?( DT const * _Atomic restrict volatile *, void const * ), 2288 2831 * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * ); 2832 2289 2833 forall( dtype DT ) DT restrict 2290 2834 * ?=?( restrict DT * restrict volatile *, DT restrict * ), … … 2294 2838 * ?=?( restrict DT * _Atomic restrict volatile *, void * ), 2295 2839 * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2840 2296 2841 forall( dtype DT ) DT volatile 2297 2842 * ?=?( DT volatile * restrict volatile *, DT volatile * ), … … 2301 2846 * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ), 2302 2847 * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2848 2303 2849 forall( dtype DT ) DT _Atomic const 2304 2850 * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ), … … 2308 2854 * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ), 2309 2855 * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * ); 2856 2310 2857 forall( dtype DT ) DT _Atomic restrict 2311 2858 * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ), … … 2315 2862 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ), 2316 2863 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2864 2317 2865 forall( dtype DT ) DT _Atomic volatile 2318 2866 * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ), … … 2322 2870 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ), 2323 2871 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2872 2324 2873 forall( dtype DT ) DT const restrict 2325 2874 * ?=?( DT const restrict * restrict volatile *, DT const restrict * ), … … 2329 2878 * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ), 2330 2879 * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * ); 2880 2331 2881 forall( dtype DT ) DT const volatile 2332 2882 * ?=?( DT const volatile * restrict volatile *, DT const volatile * ), … … 2336 2886 * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ), 2337 2887 * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2888 2338 2889 forall( dtype DT ) DT restrict volatile 2339 2890 * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ), … … 2343 2894 * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ), 2344 2895 * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2896 2345 2897 forall( dtype DT ) DT _Atomic const restrict 2346 2898 * ?=?( DT _Atomic const restrict * restrict volatile *, … … 2356 2908 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2357 2909 forall( dtype D ) D * ); 2910 2358 2911 forall( dtype DT ) DT _Atomic const volatile 2359 2912 * ?=?( DT _Atomic const volatile * restrict volatile *, … … 2369 2922 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2370 2923 forall( dtype D ) D * ); 2924 2371 2925 forall( dtype DT ) DT _Atomic restrict volatile 2372 2926 * ?=?( DT _Atomic restrict volatile * restrict volatile *, … … 2382 2936 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2383 2937 forall( dtype D ) D * ); 2938 2384 2939 forall( dtype DT ) DT const restrict volatile 2385 2940 * ?=?( DT const restrict volatile * restrict volatile *, … … 2395 2950 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2396 2951 forall( dtype D ) D * ); 2952 2397 2953 forall( dtype DT ) DT _Atomic const restrict volatile 2398 2954 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, … … 2408 2964 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2409 2965 forall( dtype D ) D * ); 2966 2410 2967 forall( dtype DT ) void 2411 2968 * ?=?( void * restrict volatile *, DT * ); 2969 2412 2970 forall( dtype DT ) void const 2413 2971 * ?=?( void const * restrict volatile *, DT const * ); 2972 2414 2973 forall( dtype DT ) void volatile 2415 2974 * ?=?( void volatile * restrict volatile *, DT volatile * ); 2975 2416 2976 forall( dtype DT ) void const volatile 2417 2977 * ?=?( void const volatile * restrict volatile *, DT const volatile * ); 2418 2978 \end{lstlisting} 2419 2979 \begin{rationale} 2420 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter, instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete type. 2980 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, 2981 except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter, 2982 instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete 2983 type. 2421 2984 \end{rationale} 2422 2985 … … 2443 3006 2444 3007 \semantics 2445 The structure assignment functions provide member-wise assignment; 2446 each non-array member and each element of each array member of the right argument is assigned to the corresponding member or element of the left argument using the assignment function defined for its type. 2447 All other assignment functions have the same effect as the corresponding C assignment expression. 2448 \begin{rationale} 2449 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that is, bitwise copy---even if some of the union members have programmer-defined assignment functions. 3008 The structure assignment functions provide member-wise assignment; each non-array member and each 3009 element of each array member of the right argument is assigned to the corresponding member or 3010 element of the left argument using the assignment function defined for its type. All other 3011 assignment functions have the same effect as the corresponding C assignment expression. 3012 \begin{rationale} 3013 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that 3014 is, bitwise copy---even if some of the union members have programmer-defined assignment functions. 2450 3015 \end{rationale} 2451 3016 … … 2460 3025 * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ), 2461 3026 * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t ); 3027 2462 3028 forall( type T ) T _Atomic 2463 3029 * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ), … … 2465 3031 * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ), 2466 3032 * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ); 3033 2467 3034 forall( type T ) T const 2468 3035 * ?+=?( T const * restrict volatile *, ptrdiff_t ), … … 2470 3037 * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ), 2471 3038 * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t ); 3039 2472 3040 forall( type T ) T restrict 2473 3041 * ?+=?( T restrict * restrict volatile *, ptrdiff_t ), … … 2475 3043 * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ), 2476 3044 * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ); 3045 2477 3046 forall( type T ) T volatile 2478 3047 * ?+=?( T volatile * restrict volatile *, ptrdiff_t ), … … 2480 3049 * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ), 2481 3050 * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ); 3051 2482 3052 forall( type T ) T _Atomic const 2483 3053 * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ), … … 2485 3055 * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ), 2486 3056 * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ); 3057 2487 3058 forall( type T ) T _Atomic restrict 2488 3059 * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), … … 2490 3061 * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ), 2491 3062 * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ); 3063 2492 3064 forall( type T ) T _Atomic volatile 2493 3065 * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), … … 2495 3067 * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ), 2496 3068 * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ); 3069 2497 3070 forall( type T ) T const restrict 2498 3071 * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ), … … 2500 3073 * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ), 2501 3074 * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ); 3075 2502 3076 forall( type T ) T const volatile 2503 3077 * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ), … … 2505 3079 * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ), 2506 3080 * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ); 3081 2507 3082 forall( type T ) T restrict volatile 2508 3083 * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ), … … 2510 3085 * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 2511 3086 * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3087 2512 3088 forall( type T ) T _Atomic const restrict 2513 3089 * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), … … 2515 3091 * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ), 2516 3092 * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ); 3093 2517 3094 forall( type T ) T _Atomic const volatile 2518 3095 * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), … … 2520 3097 * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ), 2521 3098 * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ); 3099 2522 3100 forall( type T ) T _Atomic restrict volatile 2523 3101 * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), … … 2525 3103 * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 2526 3104 * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3105 2527 3106 forall( type T ) T const restrict volatile 2528 3107 * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), … … 2530 3109 * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 2531 3110 * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3111 2532 3112 forall( type T ) T _Atomic const restrict volatile 2533 3113 * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), … … 2741 3321 \semantics 2742 3322 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as 2743 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. 2744 Theinterpretations of the expression are the interpretations of the second operand.3323 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The 3324 interpretations of the expression are the interpretations of the second operand. 2745 3325 2746 3326 … … 2757 3337 2758 3338 \constraints 2759 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the same name space, except that: 3339 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the 3340 identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the 3341 same name space, except that: 2760 3342 \begin{itemize} 2761 \item a typedef name may be redefined to denote the same type as it currently does, provided that type is not a variably modified type; 2762 \item tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard. 3343 \item 3344 a typedef name may be redefined to denote the same type as it currently does, provided that type is 3345 not a variably modified type; 3346 \item 3347 tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard. 2763 3348 \end{itemize} 2764 3349 \begin{rationale} 2765 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow overloading. 2766 \end{rationale} 2767 2768 An identifier declared by a type declaration shall not be redeclared as a parameter in a function definition whose declarator includes an identifier list. 2769 \begin{rationale} 2770 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. 2771 This avoids an ambiguity between old-style function declarations and new-style function prototypes: 3350 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow 3351 overloading. 3352 \end{rationale} 3353 3354 An identifier declared by a type declaration shall not be redeclared as a parameter in a function 3355 definition whose declarator includes an identifier list. 3356 \begin{rationale} 3357 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This 3358 avoids an ambiguity between old-style function declarations and new-style function prototypes: 2772 3359 \begin{lstlisting} 2773 3360 void f( Complex, // ... 3000 characters ... 2774 3361 void g( Complex, // ... 3000 characters ... 2775 int Complex; 2776 { ...}2777 \end{lstlisting} 2778 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in thesecond.3362 int Complex; { ... } 3363 \end{lstlisting} 3364 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the 3365 second. 2779 3366 \end{rationale} 2780 3367 … … 2795 3382 2796 3383 \semantics 2797 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union specifiers with tags. 3384 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure 3385 specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union 3386 specifiers with tags. 2798 3387 \begin{rationale} 2799 3388 This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}. … … 2812 3401 cp.x = 0; 2813 3402 cp.color = RED; 3403 2814 3404 struct literal {@\impl{literal}@ 2815 3405 enum { NUMBER, STRING } tag; 2816 3406 union { 2817 double n;2818 char *s;3407 double n; 3408 char *s; 2819 3409 }; 2820 3410 }; … … 2838 3428 \begin{comment} 2839 3429 \constraints 2840 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier} declares a structure or union tag, the types of the members of the structure or union shall not use any of the type identifiers declared by the \nonterm{type-parameter-list}. 2841 \begin{rationale} 2842 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the declaration, but the scope of the structure tag does not. 2843 \begin{lstlisting} 2844 forall( type T ) struct Pair { T a, b; 2845 } mkPair( T, T ); // illegal 2846 \end{lstlisting} 2847 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the members' type be? 3430 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier} 3431 declares a structure or union tag, the types of the members of the structure or union shall not use 3432 any of the type identifiers declared by the \nonterm{type-parameter-list}. 3433 \begin{rationale} 3434 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the 3435 declaration, but the scope of the structure tag does not. 3436 \begin{lstlisting} 3437 forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal 3438 \end{lstlisting} 3439 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the 3440 members' type be? 2848 3441 \end{rationale} 2849 3442 \end{comment} 2850 3443 2851 3444 \semantics 2852 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type identifiers, function and object identifiers with \Index{no linkage}. 3445 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type 3446 identifiers, function and object identifiers with \Index{no linkage}. 2853 3447 2854 3448 If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and … … 2856 3450 \begin{lstlisting} 2857 3451 D( @\normalsize\nonterm{parameter-type-list}@ ) 2858 \end{lstlisting} then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred parameter} of the function declarator if and only if it is not an inferred parameter of a function declarator in \lstinline$D$, and it is used in the type of a parameter in the following 3452 \end{lstlisting} 3453 then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred 3454 parameter} of the function declarator if and only if it is not an inferred parameter of a function 3455 declarator in \lstinline$D$, and it is used in the type of a parameter in the following 2859 3456 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a 2860 \Index{specification} in one of the \nonterm{forall-specifier}s. 2861 The identifiers declared by assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s of that function declarator. 3457 \Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by 3458 assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s 3459 of that function declarator. 2862 3460 2863 3461 \begin{comment} 2864 3462 \begin{rationale} 2865 Since every inferred parameter is used by some parameter, inference can be understood as a single bottom-up pass over the expression tree, that only needs to apply local reasoning at each node. 3463 Since every inferred parameter is used by some parameter, inference can be understood as a single 3464 bottom-up pass over the expression tree, that only needs to apply local reasoning at each node. 2866 3465 2867 3466 If this restriction were lifted, it would be possible to write 2868 3467 \begin{lstlisting} 2869 forall( type T ) T * alloc( void );@\use{alloc}@ int *p = alloc(); 3468 forall( type T ) T * alloc( void );@\use{alloc}@ 3469 int *p = alloc(); 2870 3470 \end{lstlisting} 2871 3471 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an 2872 \lstinline$int *$. 2873 In general, if a call to \lstinline$alloc()$ is a subexpression of an expression involving polymorphic functions and overloaded identifiers, there could be considerable distance between the call and the subexpression that causes \lstinline$T$ to be bound. 3472 \lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression 3473 involving polymorphic functions and overloaded identifiers, there could be considerable distance 3474 between the call and the subexpression that causes \lstinline$T$ to be bound. 2874 3475 2875 3476 With the current restriction, \lstinline$alloc()$ must be given an argument that determines … … 2881 3482 \end{comment} 2882 3483 2883 If a function declarator is part of a function definition, its inferred parameters and assertion parameters have \Index{block scope};2884 otherwise, identifiers declared by assertions have a3484 If a function declarator is part of a function definition, its inferred parameters and assertion 3485 parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a 2885 3486 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}. 2886 3487 2887 3488 A function type that has at least one inferred parameter is a \define{polymorphic function} type. 2888 Function types with no inferred parameters are \define{monomorphic function} types. 2889 One function type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the same number of inferred parameters and fewer of its explicit parameters have types that depend on an inferred parameter. 2890 2891 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant to polymorphic function type compatibility. 2892 Let $f$ and $g$ be two polymorphic function types with the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$ and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. 2893 Let $f'$ be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. 2894 Then $f$ and $g$ are 2895 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same identifier and compatible type, and vice versa. 3489 Function types with no inferred parameters are \define{monomorphic function} types. One function 3490 type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the 3491 same number of inferred parameters and fewer of its explicit parameters have types that depend on an 3492 inferred parameter. 3493 3494 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant 3495 to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with 3496 the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$ 3497 and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$ 3498 be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are 3499 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if 3500 for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same 3501 identifier and compatible type, and vice versa. 2896 3502 2897 3503 \examples … … 2907 3513 forall( type T ) T (*pfT )( T ) = fT; 2908 3514 \end{lstlisting} 2909 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not polymorphic, but the function it points at is. 3515 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not 3516 polymorphic, but the function it points at is. 2910 3517 \begin{lstlisting} 2911 3518 int (*fvpfi( void ))( int ) { … … 2916 3523 } 2917 3524 \end{lstlisting} 2918 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points at is polymorphic. 3525 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers 3526 to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points 3527 at is polymorphic. 2919 3528 \begin{lstlisting} 2920 3529 forall( type T ) int ( *fTpfi( T ) )( int ); … … 2922 3531 forall( type T, type U ) U ( *fTpfU( T ) )( U ); 2923 3532 \end{lstlisting} 2924 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer. 2925 It could return \lstinline$pfi$. \lstinline$fTpfT()$ is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning 2926 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. 2927 For instance, in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and 3533 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function 3534 taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$ 3535 is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning 3536 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance, 3537 in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and 3538 the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and 2928 3539 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal. 2929 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type 3540 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that 3541 is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type 2930 3542 \lstinline$char *$. 2931 3543 \begin{lstlisting} … … 2933 3545 forall( type U, type V, type W ) U * g( V *, U, W * const ); 2934 3546 \end{lstlisting} 2935 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. 2936 Let \(f\) and \(g\) be their types; 2937 then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\) 2938 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. 2939 Replacing every \(f_i\) by \(g_i\) in \(f\) gives 3547 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be 3548 their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\) 3549 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\) 3550 by \(g_i\) in \(f\) gives 2940 3551 \begin{lstlisting} 2941 3552 forall( type V, type U, type W ) U * f( V *, U, W * const ); 2942 \end{lstlisting} which has a return type and parameter list that is compatible with \(g\). 2943 \begin{rationale} 2944 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave room for inferred parameters of ordinary types in case parameterized types get added one day. 3553 \end{lstlisting} 3554 which has a return type and parameter list that is compatible with \(g\). 3555 \begin{rationale} 3556 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave 3557 room for inferred parameters of ordinary types in case parameterized types get added one day. 2945 3558 2946 3559 Even without parameterized types, I might try to allow 2947 3560 \begin{lstlisting} 2948 3561 forall( int n ) int sum( int vector[n] ); 2949 \end{lstlisting} but C currently rewrites array parameters as pointer parameters, so the effects of such a change require more thought. 2950 \end{rationale} 2951 2952 \begin{rationale} 2953 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply assertions to those types. 2954 Adding this to existing C declaration syntax and semantics was delicate, and not entirely successful. 2955 2956 C depends on declaration-before-use, so a forall specifier must introduce type names before they can be used in the declaration specifiers. 2957 This could be done by making the forall specifier part of the declaration specifiers, or by making it a new introductory clause of declarations. 2958 2959 Assertions are also part of polymorphic function types, because it must be clear which functions have access to the assertion parameters declared by the assertions. 2960 All attempts to put assertions inside an introductory clause produced complex semantics and confusing code. 2961 Building them into the declaration specifiers could be done by placing them in the function's parameter list, or in a forall specifier that is a declaration specifier. 2962 Assertions are also used with type parameters of specifications, and by type declarations. 2963 For consistency's sake it seems best to attach assertions to the type declarations in forall specifiers, which means that forall specifiers must be declaration specifiers. 3562 \end{lstlisting} 3563 but C currently rewrites array parameters as pointer parameters, so the effects of such a change 3564 require more thought. 3565 \end{rationale} 3566 3567 \begin{rationale} 3568 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply 3569 assertions to those types. Adding this to existing C declaration syntax and semantics was delicate, 3570 and not entirely successful. 3571 3572 C depends on declaration-before-use, so a forall specifier must introduce type names before they can 3573 be used in the declaration specifiers. This could be done by making the forall specifier part of 3574 the declaration specifiers, or by making it a new introductory clause of declarations. 3575 3576 Assertions are also part of polymorphic function types, because it must be clear which functions 3577 have access to the assertion parameters declared by the assertions. All attempts to put assertions 3578 inside an introductory clause produced complex semantics and confusing code. Building them into the 3579 declaration specifiers could be done by placing them in the function's parameter list, or in a 3580 forall specifier that is a declaration specifier. Assertions are also used with type parameters of 3581 specifications, and by type declarations. For consistency's sake it seems best to attach assertions 3582 to the type declarations in forall specifiers, which means that forall specifiers must be 3583 declaration specifiers. 2964 3584 \end{rationale} 2965 3585 %HERE … … 2975 3595 2976 3596 \constraints 2977 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and pointer types whose referenced type is an object type shall not be restrict-qualified. 3597 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and 3598 pointer types whose referenced type is an object type shall not be restrict-qualified. 2978 3599 2979 3600 \semantics 2980 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not establish any special semantics in that case. 2981 2982 \begin{rationale} 2983 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be passed to polymorphic functions. 2984 \end{rationale} 2985 2986 \lstinline$lvalue$ may be used to qualify the return type of a function type. 2987 Let \lstinline$T$ be an unqualified version of a type; 2988 then the result of calling a function with return type 3601 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not 3602 establish any special semantics in that case. 3603 3604 \begin{rationale} 3605 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be 3606 passed to polymorphic functions. 3607 \end{rationale} 3608 3609 \lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be 3610 an unqualified version of a type; then the result of calling a function with return type 2989 3611 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$. 2990 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to indicate that the function result is a constant or volatile lvalue. 2991 \begin{rationale} 2992 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the return type of a function if the \lstinline$lvalue$ qualifier is also used. 2993 \end{rationale} 2994 2995 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; 2996 the result of the expression is an lvalue. 2997 2998 \begin{rationale} 2999 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to object of type \lstinline$T$) type. 3000 Reference types have four uses in {\CC}. 3612 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to 3613 indicate that the function result is a constant or volatile lvalue. 3614 \begin{rationale} 3615 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the 3616 return type of a function if the \lstinline$lvalue$ qualifier is also used. 3617 \end{rationale} 3618 3619 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the 3620 result of the expression is an lvalue. 3621 3622 \begin{rationale} 3623 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to 3624 object of type \lstinline$T$) type. Reference types have four uses in {\CC}. 3001 3625 \begin{itemize} 3002 3626 \item … … 3005 3629 3006 3630 \item 3007 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting some of the functionality of the Pascal \lstinline$with$ statement. 3008 The following {\CC} code gives an example. 3631 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting 3632 some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives 3633 an example. 3009 3634 \begin{lstlisting} 3010 3635 { … … 3016 3641 3017 3642 \item 3018 A reference parameter can be used to allow a function to modify an argument without forcing the caller to pass the address of the argument. 3019 This is most useful for user-defined assignment operators. 3020 In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and the two expressions 3643 A reference parameter can be used to allow a function to modify an argument without forcing the 3644 caller to pass the address of the argument. This is most useful for user-defined assignment 3645 operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and 3646 the two expressions 3021 3647 \begin{lstlisting} 3022 3648 a = b; 3023 3649 operator=( a, b ); 3024 \end{lstlisting} are equivalent.3025 If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. 3026 It cannot have type3650 \end{lstlisting} 3651 are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first 3652 parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type 3027 3653 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type 3028 3654 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''. 3029 3655 3030 In the case of user-defined operators, this could just as well be handled by using pointer types and by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to 3031 ``\lstinline$operator=(&( a), b )$''. 3032 Reference parameters of ``normal'' functions are Bad Things, because they remove a useful property of C function calls: an argument can only be modified by a function if it is preceded by ``\lstinline$&$''. 3656 In the case of user-defined operators, this could just as well be handled by using pointer types and 3657 by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to 3658 ``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things, 3659 because they remove a useful property of C function calls: an argument can only be modified by a 3660 function if it is preceded by ``\lstinline$&$''. 3033 3661 3034 3662 \item … … 3040 3668 void fiddle( const Thing & ); 3041 3669 \end{lstlisting} 3042 If the second form is used, then constructors and destructors are not invoked to create a temporary variable at the call site ( and it is bad style for the caller to make any assumptions about such things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by aliases. 3043 The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too large or their constructors or destructors are too expensive. 3044 An implementation may switch between them without causing trouble for well-behaved clients. 3045 This leaves the implementor to define ``too large'' and ``too expensive''. 3670 If the second form is used, then constructors and destructors are not invoked to create a temporary 3671 variable at the call site ( and it is bad style for the caller to make any assumptions about such 3672 things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by 3673 aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too 3674 large or their constructors or destructors are too expensive. An implementation may switch between 3675 them without causing trouble for well-behaved clients. This leaves the implementor to define ``too 3676 large'' and ``too expensive''. 3046 3677 3047 3678 I propose to push this job onto the compiler by allowing it to implement 3048 3679 \begin{lstlisting} 3049 3680 void fiddle( const volatile Thing ); 3050 \end{lstlisting} with call-by-reference. 3051 Since it knows all about the size of \lstinline$Thing$s and the parameter passing mechanism, it should be able to come up with a better definition of ``too large'', and may be able to make a good guess at ``too expensive''. 3681 \end{lstlisting} 3682 with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter 3683 passing mechanism, it should be able to come up with a better definition of ``too large'', and may 3684 be able to make a good guess at ``too expensive''. 3052 3685 \end{itemize} 3053 3686 3054 In summary, since references are only really necessary for returning lvalues, I'll only provide lvalue functions. 3687 In summary, since references are only really necessary for returning lvalues, I'll only provide 3688 lvalue functions. 3055 3689 \end{rationale} 3056 3690 … … 3059 3693 \subsection{Initialization} 3060 3694 3061 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the object being initialized. 3062 An expression used in an \nonterm{initializer-list} is treated as being cast to the type of the aggregate member that it initializes. 3063 In either case the cast must have a single unambiguous \Index{interpretation}. 3695 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the 3696 object being initialized. An expression used in an \nonterm{initializer-list} is treated as being 3697 cast to the type of the aggregate member that it initializes. In either case the cast must have a 3698 single unambiguous \Index{interpretation}. 3064 3699 3065 3700 … … 3082 3717 \end{syntax} 3083 3718 \begin{rationale} 3084 The declarations allowed in a specification are much the same as those allowed in a structure, except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed. 3719 The declarations allowed in a specification are much the same as those allowed in a structure, 3720 except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed. 3085 3721 \end{rationale} 3086 3722 3087 3723 \semantics 3088 A \define{specification definition} defines a name for a \define{specification}: a parameterized collection of object and function declarations. 3724 A \define{specification definition} defines a name for a \define{specification}: a parameterized 3725 collection of object and function declarations. 3089 3726 3090 3727 The declarations in a specification consist of the declarations in the 3091 3728 \nonterm{spec-declaration-list} and declarations produced by any assertions in the 3092 \nonterm{spec-parameter-list}. 3093 If the collection contains two declarations that declare the same identifier and have compatible types, they are combined into one declaration with the composite type constructed from the two types. 3729 \nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same 3730 identifier and have compatible types, they are combined into one declaration with the composite type 3731 constructed from the two types. 3094 3732 3095 3733 … … 3109 3747 3110 3748 \constraints 3111 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name of a specification. 3112 The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. 3113 If the 3114 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type name of an \Index{object type}; 3115 if it uses \lstinline$dtype$, the argument shall be the type name of an object type or an \Index{incomplete type}; 3116 and if it uses \lstinline$ftype$, the argument shall be the type name of a \Index{function type}. 3749 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name 3750 of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for 3751 each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the 3752 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type 3753 name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of 3754 an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall 3755 be the type name of a \Index{function type}. 3117 3756 3118 3757 \semantics … … 3120 3759 \define{assertion parameters}. 3121 3760 3122 The assertion parameters produced by an assertion that applies the name of a specification to type arguments are found by taking the declarations specified in the specification and treating each of the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument. 3123 3124 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by combining the declarations produced by each assertion. 3125 If the collection contains two declarations that declare the same identifier and have compatible types, they are combined into one declaration with the \Index{composite type} constructed from the two types. 3761 The assertion parameters produced by an assertion that applies the name of a specification to type 3762 arguments are found by taking the declarations specified in the specification and treating each of 3763 the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument. 3764 3765 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by 3766 combining the declarations produced by each assertion. If the collection contains two declarations 3767 that declare the same identifier and have compatible types, they are combined into one declaration 3768 with the \Index{composite type} constructed from the two types. 3126 3769 3127 3770 \examples … … 3131 3774 return val + val; 3132 3775 } 3776 3133 3777 context summable( type T ) {@\impl{summable}@ 3134 3778 T ?+=?( T *, T );@\use{?+=?}@ … … 3144 3788 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {}; 3145 3789 \end{lstlisting} 3146 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added up. 3147 The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion parameters 3790 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added 3791 up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion 3792 parameters 3148 3793 \begin{lstlisting} 3149 3794 int ?+=?( int *, int ); … … 3180 3825 3181 3826 \constraints 3182 If a type declaration has block scope, and the declared identifier has external or internal linkage, the declaration shall have no initializer for the identifier. 3827 If a type declaration has block scope, and the declared identifier has external or internal linkage, 3828 the declaration shall have no initializer for the identifier. 3183 3829 3184 3830 \semantics 3185 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type name} for a type incompatible with all other types. 3186 3187 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. 3188 Identifiers declared with type-class \lstinline$type$\use{type} are \Index{object type}s; 3189 those declared with type-class 3190 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; 3191 and those declared with type-class 3192 \lstinline$ftype$\use{ftype} are \Index{function type}s. 3193 The identifier has \Index{block scope} that terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains the \nonterm{type-parameter}. 3194 3195 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}. The declared identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after the end of the initializer. 3196 The type in the initializer is called the \define{implementation 3197 type}. 3198 Within the scope of the declaration, \Index{implicit conversion}s can be performed between the defined type and the implementation type, and between pointers to the defined type and pointers to the implementation type. 3199 3200 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. 3201 If a 3202 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, it must contain exactly one definition of the identifier ( but not in an enclosed block, which would define a new type known only within that block). 3831 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type 3832 name} for a type incompatible with all other types. 3833 3834 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared 3835 with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class 3836 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class 3837 \lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that 3838 terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains 3839 the \nonterm{type-parameter}. 3840 3841 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}. The declared 3842 identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after 3843 the end of the initializer. The type in the initializer is called the \define{implementation 3844 type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between 3845 the defined type and the implementation type, and between pointers to the defined type and pointers 3846 to the implementation type. 3847 3848 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or 3849 with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a 3850 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, 3851 it must contain exactly one definition of the identifier ( but not in an enclosed block, which would 3852 define a new type known only within that block). 3203 3853 \begin{rationale} 3204 3854 Incomplete type declarations allow compact mutually-recursive types. 3205 3855 \begin{lstlisting} 3206 type t1; // incomplete type declaration3856 type t1; // Incomplete type declaration. 3207 3857 type t2 = struct { t1 * p; ... }; 3208 3858 type t1 = struct { t2 * p; ... }; 3209 3859 \end{lstlisting} 3210 Without them, mutual recursion could be handled by declaring mutually recursive structures, then initializing the types to those structures. 3860 Without them, mutual recursion could be handled by declaring mutually recursive structures, then 3861 initializing the types to those structures. 3211 3862 \begin{lstlisting} 3212 3863 struct s1; … … 3214 3865 type t1 = struct s1 { struct s2 * p; ... }; 3215 3866 \end{lstlisting} 3216 This introduces extra names, and may force the programmer to cast between the types and their implementations. 3867 This introduces extra names, and may force the programmer to cast between the types and their 3868 implementations. 3217 3869 \end{rationale} 3218 3870 3219 3871 A type declaration without an initializer and with \Index{storage-class specifier} 3220 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. 3221 Opaque types are3222 \Index{object type}s. 3223 An opaque type is not a \nonterm{constant-expression}; 3224 neither is a structure or union that has a member whose type is not a \nonterm{constant-expression}. Every other 3225 \ Index{object type} is a \nonterm{constant-expression}.3226 Objects with static storage duration shall be declared with a type that is a \nonterm{constant-expression}. 3227 \begin{rationale} 3228 Type declarations can declare identifiers with external linkage, whereas typedef declarations declare identifiers that only exist within a translation unit.3229 These opaque types can be used in declarations, but the implementation of the type is not visible. 3230 3231 Static objects can not have opaque types because space for them would have to be allocated at program start-up. 3232 This is a deficiency\index{deficiencies!static opaque objects}, but I don't wantto deal with ``module initialization'' code just now.3233 \end{rationale} 3234 3235 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} \lstinline$dtype$.3236 An object type\index{object types} which is not a qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. 3237 A3872 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are 3873 \Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure 3874 or union that has a member whose type is not a \nonterm{constant-expression}. Every other 3875 \Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall 3876 be declared with a type that is a \nonterm{constant-expression}. 3877 \begin{rationale} 3878 Type declarations can declare identifiers with external linkage, whereas typedef declarations 3879 declare identifiers that only exist within a translation unit. These opaque types can be used in 3880 declarations, but the implementation of the type is not visible. 3881 3882 Static objects can not have opaque types because space for them would have to be allocated at 3883 program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want 3884 to deal with ``module initialization'' code just now. 3885 \end{rationale} 3886 3887 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a 3888 value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a 3889 qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A 3238 3890 \Index{function type} is a value of type-class \lstinline$ftype$. 3239 3891 \begin{rationale} 3240 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which omits the identifier being declared. 3241 3242 Object types are precisely the types that can be instantiated. 3243 Type qualifiers are not included in type values because the compiler needs the information they provide at compile time to detect illegal statements or to produce efficient machine instructions. 3244 For instance, the code that a compiler must generate to manipulate an object that has volatile-qualified type may be different from the code to manipulate an ordinary object. 3245 3246 Type qualifiers are a weak point of C's type system. 3247 Consider the standard library function 3248 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first occurrence of the character in the string. 3892 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which 3893 omits the identifier being declared. 3894 3895 Object types are precisely the types that can be instantiated. Type qualifiers are not included in 3896 type values because the compiler needs the information they provide at compile time to detect 3897 illegal statements or to produce efficient machine instructions. For instance, the code that a 3898 compiler must generate to manipulate an object that has volatile-qualified type may be different 3899 from the code to manipulate an ordinary object. 3900 3901 Type qualifiers are a weak point of C's type system. Consider the standard library function 3902 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first 3903 occurrence of the character in the string. 3249 3904 \begin{lstlisting} 3250 3905 char *strchr( const char *s, int c ) {@\impl{strchr}@ 3251 3906 char real_c = c; // done because c was declared as int. 3252 3907 for ( ; *s != real_c; s++ ) 3253 if ( *s == '\0' ) return NULL;3908 if ( *s == '\0' ) return NULL; 3254 3909 return ( char * )s; 3255 3910 } 3256 3911 \end{lstlisting} 3257 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be used to search a constant string, but the return type must be \lstinline$char *$, because the result might be used to modify a non-constant string. 3258 Hence the body must perform a cast, and ( even worse) 3259 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. 3260 What is needed is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has exactly the same qualifiers. 3261 Polymorphic functions do not provide a fix for this deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of type values. 3262 Instead, overloading can be used to define \lstinline$strchr()$ for each combination of qualifiers. 3263 \end{rationale} 3264 3265 \begin{rationale} 3266 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a type declaration, or as the type of a structure or union member. 3267 This prevents the declaration of types that contain each other. 3912 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be 3913 used to search a constant string, but the return type must be \lstinline$char *$, because the result 3914 might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse) 3915 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed 3916 is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has 3917 exactly the same qualifiers. Polymorphic functions do not provide a fix for this 3918 deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of 3919 type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination 3920 of qualifiers. 3921 \end{rationale} 3922 3923 \begin{rationale} 3924 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a 3925 type declaration, or as the type of a structure or union member. This prevents the declaration of 3926 types that contain each other. 3268 3927 \begin{lstlisting} 3269 3928 type t1; 3270 type t2 = t1; // illegal: incomplete type t1 3929 type t2 = t1; // illegal: incomplete type t1. 3271 3930 type t1 = t2; 3272 3931 \end{lstlisting} 3273 3932 3274 The initializer in a file-scope declaration must be a constant expression. 3275 This means typedeclarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque3933 The initializer in a file-scope declaration must be a constant expression. This means type 3934 declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque 3276 3935 types}. 3277 3936 \begin{lstlisting} 3278 extern type Huge; // extended-precision integer type 3937 extern type Huge; // extended-precision integer type. 3279 3938 type Rational = struct { 3280 3939 Huge numerator, denominator; // illegal … … 3285 3944 \end{lstlisting} 3286 3945 Without this restriction, \CFA might require ``module initialization'' code ( since 3287 \lstinline$Rational$ has external linkage, it must be created before any other translation unit instantiates it), and would force an ordering on the initialization of the translation unit that defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$. 3288 3289 A benefit of the restriction is that it prevents the declaration in separate translation units of types that contain each other, which would be hard to prevent otherwise. 3946 \lstinline$Rational$ has external linkage, it must be created before any other translation unit 3947 instantiates it), and would force an ordering on the initialization of the translation unit that 3948 defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$. 3949 3950 A benefit of the restriction is that it prevents the declaration in separate translation units of 3951 types that contain each other, which would be hard to prevent otherwise. 3290 3952 \begin{lstlisting} 3291 3953 // File a.c: … … 3300 3962 \begin{rationale} 3301 3963 Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a 3302 \nonterm{struct-declaration}, type declarations can not be structure members. 3303 The form of 3964 \nonterm{struct-declaration}, type declarations can not be structure members. The form of 3304 3965 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$. 3305 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued expressions. 3306 It also side-steps the problem of type-valued expressions producing different values in different declarations. 3307 3308 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit type parameters. 3309 This may be too restrictive, but it attempts to make compilation simpler. 3310 Recall that when traditional C scanners read in an identifier, they look it up in the symbol table to determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token depending on what they find. 3311 A type parameter would add a type name to the current scope. 3312 The scope manipulations involved in parsing the declaration of a function that takes function pointer parameters and returns a function pointer may just be too complicated. 3313 3314 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include the return type of the function. 3315 Consider the following attempt to define a type-safe memory allocation function. 3966 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued 3967 expressions. It also side-steps the problem of type-valued expressions producing different values 3968 in different declarations. 3969 3970 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit 3971 type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall 3972 that when traditional C scanners read in an identifier, they look it up in the symbol table to 3973 determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token 3974 depending on what they find. A type parameter would add a type name to the current scope. The 3975 scope manipulations involved in parsing the declaration of a function that takes function pointer 3976 parameters and returns a function pointer may just be too complicated. 3977 3978 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include 3979 the return type of the function. Consider the following attempt to define a type-safe memory 3980 allocation function. 3316 3981 \begin{lstlisting} 3317 3982 #include <stdlib.h> 3318 3983 T * new( type T ) { return ( T * )malloc( sizeof( T) ); }; 3319 @\ldots@ int * ip = new( int ); 3320 \end{lstlisting} 3321 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the meaning of \lstinline$T$ in the scope that contains \lstinline$new$; 3322 it could be undefined, or a type name, or a function or variable name. 3323 Nothing good can result from such a situation. 3984 @\ldots@ 3985 int * ip = new( int ); 3986 \end{lstlisting} 3987 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the 3988 function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the 3989 meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a 3990 type name, or a function or variable name. Nothing good can result from such a situation. 3324 3991 \end{rationale} 3325 3992 … … 3336 4003 f2( v2 ); 3337 4004 \end{lstlisting} 3338 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not modify v1. \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies \lstinline$v2[0]$. 4005 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not 4006 modify v1. \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies 4007 \lstinline$v2[0]$. 3339 4008 3340 4009 A translation unit containing the declarations 3341 4010 \begin{lstlisting} 3342 extern type Complex;@\use{Complex}@ // opaque type declaration 4011 extern type Complex;@\use{Complex}@ // opaque type declaration. 3343 4012 extern float abs( Complex );@\use{abs}@ 3344 \end{lstlisting} can contain declarations of complex numbers, which can be passed to \lstinline$abs$. 3345 Some other translation unit must implement \lstinline$Complex$ and \lstinline$abs$. 3346 That unit might contain the declarations 4013 \end{lstlisting} 4014 can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other 4015 translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain 4016 the declarations 3347 4017 \begin{lstlisting} 3348 4018 type Complex = struct { float re, im; };@\impl{Complex}@ … … 3352 4022 } 3353 4023 \end{lstlisting} 3354 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can be retrieved. 4024 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can 4025 be retrieved. 3355 4026 3356 4027 \begin{lstlisting} … … 3363 4034 3364 4035 \begin{rationale} 3365 Within the scope of a type definition, an instance of the type can be viewed as having that type or as having the implementation type. 3366 In the \lstinline$Time_of_day$ example, the difference is important. 3367 Different languages have treated the distinction between the abstraction and the implementation in different ways. 4036 Within the scope of a type definition, an instance of the type can be viewed as having that type or 4037 as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is 4038 important. Different languages have treated the distinction between the abstraction and the 4039 implementation in different ways. 3368 4040 \begin{itemize} 3369 4041 \item 3370 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. 3371 Two primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views. 3372 \item 3373 The Simula class \cite{Simula87} is essentially a record type. 3374 Since the only operations on a record are member selection and assignment, which can not be overloaded, there is never any ambiguity as to whether the abstraction or the implementation view is being used. 3375 In {\CC} 3376 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be overloaded. 3377 A ``scope resolution'' operator can be used inside the class to specify whether the abstract or implementation version of the operation should be used. 3378 \item 3379 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly declares derived subprograms that correspond to the existing subprograms that use the old type as a parameter type or result type. 3380 The derived subprograms are clones of the existing subprograms with the old type replaced by the derived type. 3381 Literals and aggregates of the old type are also cloned. 4042 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two 4043 primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views. 4044 \item 4045 The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a 4046 record are member selection and assignment, which can not be overloaded, there is never any 4047 ambiguity as to whether the abstraction or the implementation view is being used. In {\CC} 4048 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be 4049 overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the 4050 abstract or implementation version of the operation should be used. 4051 \item 4052 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly 4053 declares derived subprograms that correspond to the existing subprograms that use the old type as a 4054 parameter type or result type. The derived subprograms are clones of the existing subprograms with 4055 the old type replaced by the derived type. Literals and aggregates of the old type are also cloned. 3382 4056 In other words, the abstract view provides exactly the same operations as the implementation view. 3383 4057 This allows the abstract view to be used in all cases. 3384 4058 3385 The derived subprograms can be replaced by programmer-specified subprograms. 3386 This is an exception to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. 3387 In thiscase, explicit conversions between the derived type and the old type can be used.4059 The derived subprograms can be replaced by programmer-specified subprograms. This is an exception 4060 to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this 4061 case, explicit conversions between the derived type and the old type can be used. 3388 4062 \end{itemize} 3389 \CFA's rules are like Clu's, except that implicit conversions and conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$. 4063 \CFA's rules are like Clu's, except that implicit conversions and 4064 conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$. 3390 4065 \end{rationale} 3391 4066 … … 3395 4070 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class 3396 4071 \lstinline$type$ implicitly declares a \define{default assignment} function 3397 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. 3398 \begin{rationale} 3399 Assignment is central to C's imperative programming style, and every existing C object type has assignment defined for it ( except for array types, which are treated as pointer types for purposes of assignment). 3400 Without this rule, nearly every inferred type parameter would need an accompanying assignment assertion parameter. 3401 If a type parameter should not have an assignment operation, 3402 \lstinline$dtype$ should be used. 3403 If a type should not have assignment defined, the user can define an assignment function that causes a run-time error, or provide an external declaration but no definition and thus cause a link-time error. 3404 \end{rationale} 3405 3406 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment function. 3407 A definition\index{type definition} of a type identifier \lstinline$T$ with implementation type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and 3408 \define{default object}s as declared by the assertion declarations. 3409 The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. 3410 Their values are determined as follows: 4072 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the 4073 identifier \lstinline$T$. 4074 \begin{rationale} 4075 Assignment is central to C's imperative programming style, and every existing C object type has 4076 assignment defined for it ( except for array types, which are treated as pointer types for purposes 4077 of assignment). Without this rule, nearly every inferred type parameter would need an accompanying 4078 assignment assertion parameter. If a type parameter should not have an assignment operation, 4079 \lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define 4080 an assignment function that causes a run-time error, or provide an external declaration but no 4081 definition and thus cause a link-time error. 4082 \end{rationale} 4083 4084 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation 4085 type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment 4086 function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation 4087 type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and 4088 \define{default object}s as declared by the assertion declarations. The default objects and 4089 functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their 4090 values are determined as follows: 3411 4091 \begin{itemize} 3412 4092 \item 3413 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced by \lstinline$T$ is compatible with the type of the default object, then the default object is initialized with that object. 3414 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default object. 4093 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name 4094 as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced 4095 by \lstinline$T$ is compatible with the type of the default object, then the default object is 4096 initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain 4097 a definition of the default object. 3415 4098 3416 4099 \item 3417 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same name as the default function, and if the type of that function with all occurrence of \lstinline$I$ replaced by \lstinline$T$ is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the converted result. 3418 3419 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that at the definition of \lstinline$T$ there is visible a declaration of a function with the same name as the default function, and the type of that function with all occurrences of the anonymous member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the result. 3420 3421 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default function. 4100 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same 4101 name as the default function, and if the type of that function with all occurrence of \lstinline$I$ 4102 replaced by \lstinline$T$ is compatible with the type of the default function, then the default 4103 function calls that function after converting its arguments and returns the converted result. 4104 4105 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that 4106 at the definition of \lstinline$T$ there is visible a declaration of a function with the same name 4107 as the default function, and the type of that function with all occurrences of the anonymous 4108 member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the 4109 default function, then the default function calls that function after converting its arguments and 4110 returns the result. 4111 4112 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default 4113 function. 3422 4114 \end{itemize} 3423 4115 \begin{rationale} 3424 Note that a pointer to a default function will not compare as equal to a pointer to the inherited function. 3425 \end{rationale} 3426 3427 A function or object with the same type and name as a default function or object that is declared within the scope of the definition of \lstinline$T$ replaces the default function or object. 4116 Note that a pointer to a default function will not compare as equal to a pointer to the inherited 4117 function. 4118 \end{rationale} 4119 4120 A function or object with the same type and name as a default function or object that is declared 4121 within the scope of the definition of \lstinline$T$ replaces the default function or object. 3428 4122 3429 4123 \examples … … 3431 4125 context s( type T ) { 3432 4126 T a, b; 3433 } struct impl { int left, right; } a = { 0, 0 }; 4127 } 4128 struct impl { int left, right; } a = { 0, 0 }; 3434 4129 type Pair | s( Pair ) = struct impl; 3435 4130 Pair b = { 1, 1 }; 3436 4131 \end{lstlisting} 3437 4132 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$. 3438 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. 3439 The definition of 3440 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a valuefrom.4133 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of 4134 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value 4135 from. 3441 4136 \begin{lstlisting} 3442 4137 context ss( type T ) { … … 3457 4152 void munge( Doodad * ); 3458 4153 \end{lstlisting} 3459 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout. 4154 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types 4155 match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout. 3460 4156 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when 3461 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$ does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with 3462 \lstinline$Doodad$'s \lstinline$clone()$'s type. 3463 Hence the definition of 4157 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$ 4158 does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter 4159 list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with 4160 \lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of 3464 4161 ``\lstinline$Doodad clone( Doodad )$'' is necessary. 3465 4162 … … 3476 4173 3477 4174 \begin{rationale} 3478 The \emph{class} construct of object-oriented programming languages performs three independent functions.3479 It \emph{encapsulates} a data structure; 3480 i t defines a \emph{subtype} relationship, whereby instances of one class may be used in contexts that require instances of another;3481 and it allows oneclass to \emph{inherit} the implementation of another.3482 3483 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided by specifications and assertions.3484 Inheritance is provided by default functions and objects.4175 The \emph{class} construct of object-oriented programming languages performs three independent 4176 functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby 4177 instances of one class may be used in contexts that require instances of another; and it allows one 4178 class to \emph{inherit} the implementation of another. 4179 4180 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided 4181 by specifications and assertions. Inheritance is provided by default functions and objects. 3485 4182 \end{rationale} 3486 4183 … … 3493 4190 \end{syntax} 3494 4191 3495 Many statements contain expressions, which may have more than one interpretation. 3496 The following sections describe how the \CFA translator selects an interpretation. 3497 In all cases the result of theselection shall be a single unambiguous \Index{interpretation}.4192 Many statements contain expressions, which may have more than one interpretation. The following 4193 sections describe how the \CFA translator selects an interpretation. In all cases the result of the 4194 selection shall be a single unambiguous \Index{interpretation}. 3498 4195 3499 4196 … … 3542 4239 switch ( E ) ... 3543 4240 choose ( E ) ... 3544 \end{lstlisting} may have more than one interpretation, but it shall have only one interpretation with an integral type. 4241 \end{lstlisting} 4242 may have more than one interpretation, but it shall have only one interpretation with an integral type. 3545 4243 An \Index{integer promotion} is performed on the expression if necessary. 3546 4244 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type. … … 3586 4284 while ( E ) ... 3587 4285 do ... while ( E ); 3588 \end{lstlisting} is treated as ``\lstinline$( int )((E)!=0)$''. 4286 \end{lstlisting} 4287 is treated as ``\lstinline$( int )((E)!=0)$''. 3589 4288 3590 4289 The statement 3591 4290 \begin{lstlisting} 3592 4291 for ( a; b; c ) @\ldots@ 3593 \end{lstlisting} is treated as 4292 \end{lstlisting} 4293 is treated as 3594 4294 \begin{lstlisting} 3595 4295 for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ... … … 3713 4413 3714 4414 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$, 3715 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. 3716 It shall not define the macro name \lstinline$__STDC__$. 3717 3718 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the decimal constant 1. 4415 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the 4416 macro name \lstinline$__STDC__$. 4417 4418 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the 4419 decimal constant 1. 3719 4420 3720 4421 … … 3726 4427 3727 4428 \section{C types} 3728 This section gives example specifications for some groups of types that are important in the C language, in terms of the predefined operations that can be applied to those types. 4429 This section gives example specifications for some groups of types that are important in the C 4430 language, in terms of the predefined operations that can be applied to those types. 3729 4431 3730 4432 3731 4433 \subsection{Scalar, arithmetic, and integral types} 3732 4434 3733 The pointer, integral, and floating-point types are all \define{scalar types}. 3734 All of these types can be logically negated and compared. 3735 The assertion ``\lstinline$scalar( Complex )$'' should be readas ``type \lstinline$Complex$ is scalar''.4435 The pointer, integral, and floating-point types are all \define{scalar types}. All of these types 4436 can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read 4437 as ``type \lstinline$Complex$ is scalar''. 3736 4438 \begin{lstlisting} 3737 4439 context scalar( type T ) {@\impl{scalar}@ … … 3741 4443 \end{lstlisting} 3742 4444 3743 The integral and floating-point types are \define{arithmetic types}, which support the basic arithmetic operators. 3744 The use of an assertion in the \nonterm{spec-parameter-list} declares that, in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are available ). 3745 This is equivalent to inheritance of specifications. 4445 The integral and floating-point types are \define{arithmetic types}, which support the basic 4446 arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that, 4447 in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are 4448 available ). This is equivalent to inheritance of specifications. 3746 4449 \begin{lstlisting} 3747 4450 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@ … … 3774 4477 3775 4478 Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the 3776 \nonterm{spec-parameter-list} reflect those relationships. 3777 This is equivalent to multiple inheritance of specifications. 3778 Scalars can also be incremented and decremented. 4479 \nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple 4480 inheritance of specifications. Scalars can also be incremented and decremented. 3779 4481 \begin{lstlisting} 3780 4482 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@ … … 3784 4486 \end{lstlisting} 3785 4487 3786 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. 3787 Note that thisresults in the ``inheritance'' of \lstinline$scalar$ along both paths.4488 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this 4489 results in the ``inheritance'' of \lstinline$scalar$ along both paths. 3788 4490 \begin{lstlisting} 3789 4491 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@ … … 3791 4493 T ?+=?( T *, T ), ?-=?( T *, T ); 3792 4494 }; 4495 3793 4496 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@ 3794 4497 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@ … … 3800 4503 \subsection{Pointer and array types} 3801 4504 3802 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a constant pointer to the first element of the array, and the subscript expression 4505 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a 4506 constant pointer to the first element of the array, and the subscript expression 3803 4507 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''. 3804 4508 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and 3805 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not enforce those restrictions.3806 Consequently, there is no need for a separate ``array type'' specification. 3807 3808 Pointer types are scalar types. 3809 Like other scalar types, they have ``\lstinline$+$'' and4509 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not 4510 enforce those restrictions. Consequently, there is no need for a separate ``array type'' 4511 specification. 4512 4513 Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and 3810 4514 ``\lstinline$-$'' operators, but the types do not match the types of the operations in 3811 4515 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$. … … 3815 4519 ptrdiff_t ?-?( P, P ); 3816 4520 }; 4521 3817 4522 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@ 3818 4523 P ?+=?( P *, long int ), ?-=?( P *, long int ); … … 3822 4527 \end{lstlisting} 3823 4528 3824 Specifications that define the dereference operator ( or subscript operator ) require two parameters, one for the pointer type and one for the pointed-at ( or element ) type. 3825 Different specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not included in types. 3826 The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as 4529 Specifications that define the dereference operator ( or subscript operator ) require two 4530 parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different 4531 specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not 4532 included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as 3827 4533 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''. 3828 4534 \begin{lstlisting} 3829 4535 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@ 3830 lvalue T *?( P ); 3831 lvalue T ?[?]( P, long int ); 4536 lvalue T *?( P ); lvalue T ?[?]( P, long int ); 3832 4537 }; 4538 3833 4539 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@ 3834 const lvalue T *?( P ); 3835 const lvalue T ?[?]( P, long int );@\use{pointer}@ 4540 const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@ 3836 4541 }; 4542 3837 4543 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@ 3838 volatile lvalue T *?( P ); 3839 volatile lvalue T ?[?]( P, long int );@\use{pointer}@ 4544 volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@ 3840 4545 }; 4546 \end{lstlisting} 4547 \begin{lstlisting} 3841 4548 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@ 3842 4549 const volatile lvalue T *?( P );@\use{pointer}@ … … 3845 4552 \end{lstlisting} 3846 4553 3847 Assignment to pointers is more complicated than is the case with other types, because the target's type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''. 4554 Assignment to pointers is more complicated than is the case with other types, because the target's 4555 type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to 4556 a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''. 3848 4557 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the 3849 4558 ``\lstinline$ptr_to$'' specifications. … … 3853 4562 T * ?=?( T **, P ); 3854 4563 }; 4564 3855 4565 context m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ type T | ptr_to_const( P, T )@\use{ptr_to_const}@) { 3856 4566 P ?=?( P *, const T * ); 3857 4567 const T * ?=?( const T **, P ); 3858 4568 }; 4569 3859 4570 context m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ type T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@ 3860 4571 P ?=?( P *, volatile T * ); 3861 4572 volatile T * ?=?( volatile T **, P ); 3862 4573 }; 4574 3863 4575 context m_l_ptr_to_const_volatile( type P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@ 3864 4576 type T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {@\use{m_l_ptr_to_const}@@\use{m_l_ptr_to_volatile}@ … … 3868 4580 \end{lstlisting} 3869 4581 3870 Note the regular manner in which type qualifiers appear in those specifications. 3871 An alternative specification can make use of the fact that qualification of the pointed-at type is part of a pointer type to capture that regularity. 4582 Note the regular manner in which type qualifiers appear in those specifications. An alternative 4583 specification can make use of the fact that qualification of the pointed-at type is part of a 4584 pointer type to capture that regularity. 3872 4585 \begin{lstlisting} 3873 4586 context m_l_ptr_like( type MyP | m_l_pointer( MyP ),@\use{m_l_pointer}@@\impl{m_l_ptr_like}@ type CP | m_l_pointer( CP ) ) { … … 3877 4590 \end{lstlisting} 3878 4591 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as 3879 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. 3880 This specification has twodefects, compared to the original four: there is no automatic assertion that dereferencing a4592 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two 4593 defects, compared to the original four: there is no automatic assertion that dereferencing a 3881 4594 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the 3882 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed to \lstinline$CP$ really is a pointer type. 4595 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed 4596 to \lstinline$CP$ really is a pointer type. 3883 4597 3884 4598 3885 4599 \section{Relationships between operations} 3886 4600 3887 Different operators often have related meanings; 3888 for instance, in C, ``\lstinline$+$'', 4601 Different operators often have related meanings; for instance, in C, ``\lstinline$+$'', 3889 4602 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition. 3890 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not require that these relationships be preserved, or even that all of the operators be implemented. 3891 Completeness and consistency is left to the good taste and discretion of the programmer. 3892 It is possible to encourage these attributes by providing generic operator functions, or member functions of abstract classes, that are defined in terms of other, related operators. 3893 3894 In \CFA, polymorphic functions provide the equivalent of these generic operators, and specifications explicitly define the minimal implementation that a programmer should provide. 3895 This section shows a few examples. 4603 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not 4604 require that these relationships be preserved, or even that all of the operators be implemented. 4605 Completeness and consistency is left to the good taste and discretion of the programmer. It is 4606 possible to encourage these attributes by providing generic operator functions, or member functions 4607 of abstract classes, that are defined in terms of other, related operators. 4608 4609 In \CFA, polymorphic functions provide the equivalent of these generic operators, and 4610 specifications explicitly define the minimal implementation that a programmer should provide. This 4611 section shows a few examples. 3896 4612 3897 4613 3898 4614 \subsection{Relational and equality operators} 3899 4615 3900 The different comparison operators have obvious relationships, but there is no obvious subset of the operations to use in the implementation of the others. 3901 However, it is usually convenient to implement a single comparison function that returns a negative integer, 0, or a positive integer if its first argument is respectively less than, equal to, or greater than its second argument; 3902 the library function \lstinline$strcmp$ is an example. 3903 3904 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation, returns 1 if its operand compares equal to 0, and 0 otherwise. 4616 The different comparison operators have obvious relationships, but there is no obvious subset of the 4617 operations to use in the implementation of the others. However, it is usually convenient to 4618 implement a single comparison function that returns a negative integer, 0, or a positive integer if 4619 its first argument is respectively less than, equal to, or greater than its second argument; the 4620 library function \lstinline$strcmp$ is an example. 4621 4622 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation, 4623 returns 1 if its operand compares equal to 0, and 0 otherwise. 3905 4624 \begin{lstlisting} 3906 4625 context comparable( type T ) { … … 3908 4627 int compare( T, T ); 3909 4628 } 4629 3910 4630 forall( type T | comparable( T ) ) int ?<?( T l, T r ) { 3911 4631 return compare( l, r ) < 0; 3912 4632 } 3913 4633 // ... similarly for <=, ==, >=, >, and !=. 4634 3914 4635 forall( type T | comparable( T ) ) int !?( T operand ) { 3915 4636 return !compare( operand, 0 ); … … 3920 4641 \subsection{Arithmetic and integer operations} 3921 4642 3922 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment operators. 3923 Of these, the assignment operators are more likely to be implemented directly, because it is usually more efficient to alter the contents of an existing object than to create and return a new one. 3924 Similarly, a complete integral type would provide integral operations based on integral assignment operations. 4643 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment 4644 operators. Of these, the assignment operators are more likely to be implemented directly, because 4645 it is usually more efficient to alter the contents of an existing object than to create and return a 4646 new one. Similarly, a complete integral type would provide integral operations based on integral 4647 assignment operations. 3925 4648 \begin{lstlisting} 3926 4649 context arith_base( type T ) { … … 3928 4651 T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T ); 3929 4652 } 4653 3930 4654 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) { 3931 4655 return l += r; 3932 4656 } 4657 3933 4658 forall( type T | arith_base( T ) ) T ?++( T * operand ) { 3934 4659 T temporary = *operand; … … 3936 4661 return temporary; 3937 4662 } 4663 3938 4664 forall( type T | arith_base( T ) ) T ++?( T * operand ) { 3939 4665 return *operand += 1; 3940 4666 } 3941 4667 // ... similarly for -, --, *, and /. 4668 3942 4669 context int_base( type T ) { 3943 4670 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T ); 3944 4671 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T ); 3945 4672 } 4673 3946 4674 forall( type T | int_base( T ) ) T ?&?( T l, T r ) { 3947 4675 return l &= r; … … 3950 4678 \end{lstlisting} 3951 4679 3952 Note that, although an arithmetic type would certainly provide comparison functions, and an integral type would provide arithmetic operations, there does not have to be any relationship among 3953 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. 3954 Note also that these declarations provide guidance and assistance, but they do not define an absolutely minimal set of requirements. 3955 A truly minimal implementation of an arithmetic type might only provide 4680 Note that, although an arithmetic type would certainly provide comparison functions, and an integral 4681 type would provide arithmetic operations, there does not have to be any relationship among 4682 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these 4683 declarations provide guidance and assistance, but they do not define an absolutely minimal set of 4684 requirements. A truly minimal implementation of an arithmetic type might only provide 3956 4685 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic 3957 4686 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions. … … 3963 4692 Review index entries. 3964 4693 3965 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. 3966 This gets into \lstinline$noalias$ territory. 3967 Qualifying anything (``\lstinline$short restrict rs$'') means pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers. 3968 3969 Enumerated types. 3970 Constants are not ints. 3971 Overloading. 3972 Definition should be ``representable as an integer type'', not ``as an int''. 3973 C11 usual conversions freely convert to and from ordinary integer types via assignment, which works between any integer types. 3974 Does enum Color ?*?( enum 4694 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets 4695 into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means 4696 pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers. 4697 4698 Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an 4699 integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary 4700 integer types via assignment, which works between any integer types. Does enum Color ?*?( enum 3975 4701 Color, enum Color ) really make sense? ?++ does, but it adds (int)1. 3976 4702 3977 Operators on {,signed,unsigned} char and other small types. ?<? harmless; 3978 ?*? questionable for chars. 3979 Generic selections make these choices visible. 3980 Safe conversion operators? Predefined 4703 Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for 4704 chars. Generic selections make these choices visible. Safe conversion operators? Predefined 3981 4705 ``promotion'' function? 3982 4706 3983 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and forth, but copying must not be done by assignment. 4707 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and 4708 forth, but copying must not be done by assignment. 3984 4709 3985 4710 Don't use ptrdiff\_t by name in the predefineds. 3986 4711 3987 Polymorphic objects. 3988 Polymorphic typedefs and type declarations. 4712 Polymorphic objects. Polymorphic typedefs and type declarations. 3989 4713 3990 4714 … … 3995 4719 \addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents 3996 4720 \begin{theindex} 3997 Italic page numbers give the location of the main entry for the referenced term. 3998 Plain page numbers denote uses of the indexed term. 3999 Entries for grammar non-terminals are italicized. 4000 A typewriter font is used for grammar terminals and program identifiers. 4721 Italic page numbers give the location of the main entry for the referenced term. Plain page numbers 4722 denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter 4723 font is used for grammar terminals and program identifiers. 4001 4724 \indexspace 4002 4725 \input{refrat.ind} -
src/Makefile.am
rbdad1679 r540ddb7d 11 11 ## Created On : Sun May 31 08:51:46 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Fri Feb 26 17:19:16 201614 ## Update Count : 5 713 ## Last Modified On : Thu Jan 28 16:50:26 2016 14 ## Update Count : 55 15 15 ############################################################################### 16 16 … … 46 46 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL 47 47 48 CXXFLAGS = -g -std=c++11# remove default -O2 to allow better debugging48 CXXFLAGS = -g # remove default -O2 to allow better debugging 49 49 50 50 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} -
src/Makefile.in
rbdad1679 r540ddb7d 247 247 CXX = @CXX@ 248 248 CXXDEPMODE = @CXXDEPMODE@ 249 CXXFLAGS = -g -std=c++11# remove default -O2 to allow better debugging249 CXXFLAGS = -g # remove default -O2 to allow better debugging 250 250 CYGPATH_W = @CYGPATH_W@ 251 251 DEFS = @DEFS@ … … 411 411 esac; \ 412 412 done; \ 413 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/Makefile'; \413 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ 414 414 $(am__cd) $(top_srcdir) && \ 415 $(AUTOMAKE) -- foreignsrc/Makefile415 $(AUTOMAKE) --gnu src/Makefile 416 416 .PRECIOUS: Makefile 417 417 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -
src/Parser/DeclarationNode.cc
rbdad1679 r540ddb7d 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 13:57:42 201613 // Update Count : 1 3312 // Last Modified On : Tue Jul 14 14:46:32 2015 13 // Update Count : 126 14 14 // 15 15 … … 34 34 const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "" }; 35 35 const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" }; 36 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" ,};36 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" }; 37 37 const char *DeclarationNode::modifierName[] = { "signed", "unsigned", "short", "long" }; 38 38 const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" }; 39 39 const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" }; 40 const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };41 40 42 41 UniqueName DeclarationNode::anonymous( "__anonymous" ); … … 148 147 newnode->type = new TypeData( TypeData::Basic ); 149 148 newnode->type->basic->typeSpec.push_back( bt ); 150 return newnode;151 }152 153 DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) {154 DeclarationNode *newnode = new DeclarationNode;155 newnode->type = new TypeData( TypeData::Builtin );156 newnode->type->builtin->type = bt;157 149 return newnode; 158 150 } … … 223 215 DeclarationNode *newnode = new DeclarationNode; 224 216 newnode->name = assign_strptr( name ); 225 newnode->enumeratorValue = constant;217 // do something with the constant 226 218 return newnode; 227 219 } … … 802 794 errors.append( e ); 803 795 } // try 804 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );796 cur = dynamic_cast< DeclarationNode *>( cur->get_link() ); 805 797 } // while 806 798 if ( ! errors.isEmpty() ) { -
src/Parser/ParseNode.h
rbdad1679 r540ddb7d 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 14:00:06201613 // Update Count : 18 912 // Last Modified On : Mon Feb 1 13:32:32 2016 13 // Update Count : 184 14 14 // 15 15 … … 331 331 enum Aggregate { Struct, Union, Context }; 332 332 enum TypeClass { Type, Dtype, Ftype }; 333 enum BuiltinType { Valist };334 333 335 334 static const char *storageName[]; … … 339 338 static const char *aggregateName[]; 340 339 static const char *typeClassName[]; 341 static const char *builtinTypeName[];342 340 343 341 static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false ); … … 365 363 static DeclarationNode *newAttr( std::string *, ExpressionNode *expr ); 366 364 static DeclarationNode *newAttr( std::string *, DeclarationNode *type ); 367 static DeclarationNode *newBuiltinType( BuiltinType );368 365 369 366 DeclarationNode *addQualifiers( DeclarationNode *); … … 404 401 LinkageSpec::Type get_linkage() const { return linkage; } 405 402 DeclarationNode *extractAggregate() const; 406 ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }407 403 408 404 DeclarationNode(); … … 417 413 std::list< std::string > attributes; 418 414 ExpressionNode *bitfieldWidth; 419 ExpressionNode *enumeratorValue;420 415 InitializerNode *initializer; 421 416 bool hasEllipsis; -
src/Parser/TypeData.cc
rbdad1679 r540ddb7d 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 16:34:22 201613 // Update Count : 4712 // Last Modified On : Tue Jul 14 14:57:23 2015 13 // Update Count : 32 14 14 // 15 15 … … 23 23 #include "SynTree/Expression.h" 24 24 #include "SynTree/Statement.h" 25 #include "SynTree/Initializer.h"26 25 27 26 TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) { … … 85 84 typeexpr->expr = 0; 86 85 break; 87 case Builtin:88 builtin = new Builtin_t;89 break;90 86 case Attr: 91 87 attr = new Attr_t; … … 153 149 delete typeexpr->expr; 154 150 delete typeexpr; 155 break;156 case Builtin:157 delete builtin;158 151 break; 159 152 case Attr: … … 228 221 newtype->typeexpr->expr = maybeClone( typeexpr->expr ); 229 222 break; 230 case Builtin:231 newtype->builtin->type = builtin->type;232 break;233 223 case Attr: 234 224 newtype->attr->expr = maybeClone( attr->expr ); … … 406 396 attr->type->print( os, indent + 2 ); 407 397 } // if 408 break;409 case Builtin:410 os << "gcc builtin type";411 398 break; 412 399 default: … … 519 506 case Typeof: 520 507 return buildTypeof(); 521 case Builtin:522 return new VarArgsType();523 508 case Attr: 524 509 return buildAttr(); … … 898 883 EnumDecl *ret = new EnumDecl( enumeration->name ); 899 884 buildList( enumeration->constants, ret->get_members() ); 900 std::list< Declaration * >::iterator members = ret->get_members().begin();901 for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) {902 if ( cur->get_enumeratorValue() != NULL ) {903 ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);904 member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ) ) );905 } // if906 } // for907 885 return ret; 908 886 } -
src/Parser/TypeData.h
rbdad1679 r540ddb7d 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Feb 26 14:21:38201613 // Update Count : 1 912 // Last Modified On : Thu Jan 14 23:31:15 2016 13 // Update Count : 17 14 14 // 15 15 … … 24 24 struct TypeData { 25 25 enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst, 26 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin,Attr } kind;26 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Attr } kind; 27 27 28 28 TypeData( Kind k = Unknown ); … … 98 98 }; 99 99 100 struct Builtin_t {101 DeclarationNode::BuiltinType type;102 };103 104 100 struct Attr_t { 105 101 std::string name; … … 120 116 Typeof_t * typeexpr; 121 117 Attr_t * attr; 122 Builtin_t * builtin;123 118 }; 124 119 -
src/Parser/lex.cc
rbdad1679 r540ddb7d 382 382 (yy_c_buf_p) = yy_cp; 383 383 384 #define YY_NUM_RULES 1 80385 #define YY_END_OF_BUFFER 18 1384 #define YY_NUM_RULES 179 385 #define YY_END_OF_BUFFER 180 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 83] =393 static yyconst flex_int16_t yy_accept[876] = 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, 127, 147, 128, 145, 7, 179, 4, 4, 180,402 10 5, 180, 106, 115, 116, 122, 118, 119, 7, 9,403 0, 8, 15 5, 174, 102, 0, 167, 137, 160, 168,404 16 5, 152, 163, 153, 164, 162, 0, 112, 3, 0,405 406 16 6, 112, 110, 0, 0, 110, 110, 0, 0, 110,407 10 9, 109, 109, 0, 109, 135, 136, 134, 156, 158,408 15 4, 159, 157, 0, 0, 0, 0, 0, 0, 0,409 0, 0, 0, 0, 0, 0, 0, 0, 10 3, 173,410 0, 11 7, 114, 102, 0, 0, 170, 0, 102, 102,411 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,412 10 2, 102, 102, 102, 102, 39, 102, 102, 102, 102,413 10 2, 102, 102, 102, 102, 102, 57, 102, 102, 102,414 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,415 10 2, 102, 169, 161, 7, 0, 0, 0, 2, 0,416 417 5, 10 5, 0, 0, 0, 115, 0, 121, 120, 120,418 0, 0, 0, 11 8, 0, 0, 0, 0, 0, 0,419 0, 0, 0, 0, 0, 0, 0, 0, 0, 13 3,420 11 2, 112, 0, 112, 112, 112, 0, 6, 112, 110,421 0, 0, 0, 11 2, 0, 110, 110, 110, 110, 0,422 11 1, 0, 0, 109, 109, 109, 109, 0, 171, 172,423 0, 17 7, 175, 0, 0, 0, 103, 0, 0, 0,424 0, 0, 0, 0, 0, 10 2, 17, 102, 102, 102,425 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,426 10 2, 102, 102, 102, 102, 14, 102, 102, 102, 102,427 428 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,429 10 2, 102, 102, 102, 51, 102, 102, 102, 64, 102,430 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,431 10 2, 88, 102, 102, 102, 102, 102, 102, 102, 0,432 0, 0, 0, 0, 0, 0, 0, 1 20, 0, 0,433 0, 0, 0, 1 20, 0, 0, 178, 0, 0, 0,434 0, 0, 0, 0, 11 2, 0, 112, 0, 112, 0,435 0, 11 2, 112, 110, 110, 0, 0, 111, 111, 0,436 11 1, 0, 111, 109, 109, 0, 0, 0, 0, 0,437 0, 0, 0, 0, 0, 17 6, 102, 102, 102, 102,438 439 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,440 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 21,441 10 2, 24, 102, 27, 102, 102, 102, 102, 102, 102,442 10 2, 42, 102, 44, 102, 102, 102, 102, 102, 102,443 10 2, 56, 102, 67, 102, 102, 102, 102, 102, 102,444 10 2, 102, 102, 102, 102, 89, 102, 102, 97, 102,445 10 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,446 0, 0, 0, 0, 0, 1 20, 0, 0, 0, 0,447 0, 11 2, 112, 0, 0, 0, 0, 0, 111, 111,448 0, 11 3, 0, 111, 111, 0, 0, 0, 0, 0,449 450 0, 0, 0, 0, 0, 0, 0, 0, 10 2, 102,451 22, 10 2, 102, 102, 102, 102, 102, 102, 15, 102,452 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,453 10 2, 102, 102, 23, 25, 102, 32, 102, 102, 102,454 10 2, 102, 41, 102, 102, 102, 102, 49, 102, 102,455 54, 10 2, 102, 102, 102, 102, 76, 102, 102, 102,456 10 2, 102, 86, 102, 102, 94, 102, 102, 101, 0,395 0, 0, 0, 0, 0, 0, 114, 114, 117, 117, 396 180, 178, 7, 9, 8, 137, 116, 101, 142, 145, 397 113, 124, 125, 140, 138, 128, 139, 131, 141, 106, 398 107, 108, 129, 130, 147, 149, 148, 150, 178, 101, 399 122, 178, 123, 143, 101, 103, 101, 101, 101, 101, 400 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 401 101, 126, 146, 127, 144, 7, 178, 4, 4, 179, 402 104, 179, 105, 114, 115, 121, 117, 118, 7, 9, 403 0, 8, 154, 173, 101, 0, 166, 136, 159, 167, 404 164, 151, 162, 152, 163, 161, 0, 111, 3, 0, 405 406 165, 111, 109, 0, 0, 109, 109, 0, 0, 109, 407 108, 108, 108, 0, 108, 134, 135, 133, 155, 157, 408 153, 158, 156, 0, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 102, 172, 410 0, 116, 113, 101, 0, 0, 169, 0, 101, 101, 411 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 412 101, 101, 101, 101, 101, 39, 101, 101, 101, 101, 413 101, 101, 101, 101, 101, 101, 57, 101, 101, 101, 414 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 415 101, 101, 168, 160, 7, 0, 0, 0, 2, 0, 416 417 5, 104, 0, 0, 0, 114, 0, 120, 119, 119, 418 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 420 111, 111, 0, 111, 111, 111, 0, 6, 111, 109, 421 0, 0, 0, 111, 0, 109, 109, 109, 109, 0, 422 110, 0, 0, 108, 108, 108, 108, 0, 170, 171, 423 0, 176, 174, 0, 0, 0, 102, 0, 0, 0, 424 0, 0, 0, 0, 0, 101, 17, 101, 101, 101, 425 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 426 101, 101, 101, 101, 101, 14, 101, 101, 101, 101, 427 428 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 429 101, 101, 101, 101, 51, 101, 101, 101, 64, 101, 430 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 431 101, 88, 101, 101, 101, 101, 101, 101, 101, 0, 432 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 433 0, 0, 0, 119, 0, 0, 177, 0, 0, 0, 434 0, 0, 0, 0, 111, 0, 111, 0, 111, 0, 435 0, 111, 111, 109, 109, 0, 0, 110, 110, 0, 436 110, 0, 110, 108, 108, 0, 0, 0, 0, 0, 437 0, 0, 0, 0, 0, 175, 101, 101, 101, 101, 438 439 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 440 101, 101, 101, 101, 101, 101, 101, 101, 101, 21, 441 101, 24, 101, 27, 101, 101, 101, 101, 101, 101, 442 101, 42, 101, 44, 101, 101, 101, 101, 101, 101, 443 101, 56, 101, 67, 101, 101, 101, 101, 101, 101, 444 101, 101, 101, 101, 101, 89, 101, 101, 96, 101, 445 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 447 0, 111, 111, 0, 0, 0, 0, 0, 110, 110, 448 0, 112, 0, 110, 110, 0, 0, 0, 0, 0, 449 450 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, 451 22, 101, 101, 101, 101, 101, 101, 101, 15, 101, 452 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 453 101, 101, 101, 23, 25, 101, 32, 101, 101, 101, 454 101, 101, 41, 101, 101, 101, 101, 49, 101, 101, 455 54, 101, 101, 101, 101, 101, 76, 101, 101, 101, 456 101, 101, 86, 101, 101, 94, 101, 101, 100, 0, 457 457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458 0, 0, 0, 0, 0, 0, 0, 0, 11 3, 0,459 0, 11 1, 113, 113, 113, 113, 113, 111, 0, 0,460 461 0, 0, 0, 0, 0, 0, 0, 0, 10 2, 0,462 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 102,463 10 2, 102, 102, 102, 102, 102, 59, 102, 102, 102,464 10 2, 102, 102, 102, 102, 28, 102, 102, 102, 102,465 40, 43, 46, 10 2, 102, 52, 102, 61, 68, 102,466 10 2, 75, 77, 80, 81, 83, 84, 102, 102, 91,467 10 2, 102, 0, 1, 0, 0, 0, 0, 0, 0,468 10 5, 0, 0, 0, 120, 0, 0, 0, 0, 113,469 11 3, 113, 113, 0, 0, 0, 0, 0, 0, 0,470 0, 0, 10 2, 102, 18, 102, 102, 102, 102, 102,471 472 10 2, 102, 16, 102, 102, 102, 33, 102, 102, 102,473 10 2, 102, 102, 102, 102, 102, 102, 102, 35, 102,474 37, 38, 10 2, 48, 53, 102, 102, 102, 90, 102,475 10 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,476 0, 0, 0, 0, 10, 11, 29, 55, 10 2, 102,477 10 2, 102, 102, 102, 102, 102, 102, 102, 102, 60,478 62, 65, 10 2, 102, 78, 92, 102, 102, 36, 47,479 71, 72, 10 2, 95, 98, 0, 0, 0, 0, 0,480 0, 0, 0, 0, 0, 0, 0, 10 2, 69, 102,481 10 2, 12, 102, 102, 30, 34, 102, 102, 102, 66,482 483 10 2, 102, 102, 102, 102, 102, 0, 0, 0, 0,458 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 459 0, 110, 112, 112, 112, 112, 112, 110, 0, 0, 460 461 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 462 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 463 101, 101, 101, 101, 101, 101, 59, 101, 101, 101, 464 101, 101, 101, 101, 101, 28, 101, 101, 101, 101, 465 40, 43, 46, 101, 101, 52, 101, 61, 68, 101, 466 101, 75, 77, 80, 81, 83, 84, 101, 101, 91, 467 101, 101, 0, 1, 0, 0, 0, 0, 0, 0, 468 104, 0, 0, 0, 119, 0, 0, 0, 0, 112, 469 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 470 0, 0, 101, 101, 18, 101, 101, 101, 101, 101, 471 472 101, 101, 16, 101, 101, 101, 33, 101, 101, 101, 473 101, 101, 101, 101, 101, 101, 101, 101, 35, 101, 474 37, 38, 101, 48, 53, 101, 101, 101, 90, 101, 475 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 476 0, 0, 0, 0, 10, 11, 29, 55, 101, 101, 477 101, 101, 101, 101, 101, 101, 101, 101, 101, 60, 478 62, 65, 101, 101, 78, 92, 101, 101, 36, 47, 479 71, 72, 101, 95, 97, 0, 0, 0, 0, 0, 480 0, 0, 0, 0, 0, 0, 0, 101, 69, 101, 481 101, 12, 101, 101, 30, 34, 101, 101, 101, 66, 482 483 101, 101, 101, 101, 101, 101, 0, 0, 0, 0, 484 484 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 485 102, 102, 102, 102, 102, 102, 102, 50, 63, 73, 486 79, 93, 99, 102, 102, 0, 0, 0, 0, 0, 487 0, 0, 0, 102, 102, 13, 19, 102, 102, 31, 488 102, 102, 102, 26, 87, 0, 0, 102, 102, 102, 489 102, 102, 102, 74, 100, 102, 85, 20, 102, 102, 490 45, 82, 102, 102, 102, 102, 102, 102, 102, 96, 491 70, 0 485 101, 101, 101, 101, 101, 101, 101, 50, 63, 73, 486 79, 93, 98, 101, 101, 0, 0, 0, 0, 0, 487 0, 0, 0, 101, 101, 13, 19, 101, 31, 101, 488 101, 101, 26, 87, 0, 0, 101, 101, 101, 101, 489 101, 74, 99, 101, 85, 20, 101, 45, 82, 101, 490 101, 101, 101, 70, 0 492 491 } ; 493 492 … … 537 536 } ; 538 537 539 static yyconst flex_int16_t yy_base[105 7] =538 static yyconst flex_int16_t yy_base[1050] = 540 539 { 0, 541 0, 83, 22 55, 2253, 93, 0, 175, 176, 177, 178,542 22 67, 2793, 189, 2793, 195, 54, 2793, 2214, 59, 171,543 27 93, 2793, 2793, 55, 186, 2793, 189, 187, 202, 214,544 272, 0, 22 32, 2793, 214, 2231, 150, 340, 153, 222,545 27 93, 157, 2793, 215, 224, 2793, 207, 181, 221, 249,540 0, 83, 2238, 2237, 93, 0, 175, 176, 177, 178, 541 2252, 2782, 189, 2782, 195, 54, 2782, 2197, 59, 171, 542 2782, 2782, 2782, 55, 186, 2782, 189, 187, 202, 214, 543 272, 0, 2213, 2782, 214, 2213, 150, 340, 153, 222, 544 2782, 157, 2782, 215, 224, 2782, 207, 181, 221, 249, 546 545 235, 289, 155, 255, 218, 206, 266, 256, 323, 259, 547 192, 27 93, 223, 2793, 2226, 377, 342, 2793, 2235, 2793,548 2 204, 234, 2793, 0, 2793, 421, 0, 2793, 393, 2793,549 399, 405, 27 93, 492, 2203, 241, 2793, 2793, 2793, 2793,550 27 93, 2219, 2793, 2216, 2793, 2793, 2226, 552, 2793, 2243,551 552 27 93, 413, 393, 437, 493, 377, 318, 195, 430, 382,553 0, 384, 321, 196, 427, 27 93, 2793, 2793, 2213, 2793,554 27 93, 2793, 2211, 2208, 252, 302, 2221, 342, 435, 422,555 381, 455, 400, 494, 2 202, 440, 2152, 469, 2181, 2793,556 276, 27 93, 2793, 520, 2175, 2172, 2793, 2145, 414, 463,546 192, 2782, 223, 2782, 2210, 377, 342, 2782, 2220, 2782, 547 2187, 234, 2782, 0, 2782, 421, 0, 2782, 393, 2782, 548 399, 405, 2782, 492, 2184, 241, 2782, 2782, 2782, 2782, 549 2782, 2201, 2782, 2200, 2782, 2782, 2211, 552, 2782, 2226, 550 551 2782, 413, 393, 437, 493, 377, 318, 195, 430, 382, 552 0, 384, 321, 196, 427, 2782, 2782, 2782, 2194, 2782, 553 2782, 2782, 2193, 2192, 252, 302, 2206, 342, 435, 422, 554 381, 455, 400, 494, 2185, 440, 2133, 469, 2163, 2782, 555 276, 2782, 2782, 520, 2159, 2157, 2782, 2128, 414, 463, 557 556 470, 325, 254, 479, 432, 274, 480, 423, 483, 498, 558 557 492, 503, 499, 509, 341, 455, 484, 377, 510, 512, 559 517, 518, 529, 530, 531, 537, 21 73, 541, 536, 544,558 517, 518, 529, 530, 531, 537, 2154, 541, 536, 544, 560 559 557, 546, 566, 569, 538, 552, 548, 554, 588, 571, 561 570, 580, 27 93, 2793, 645, 651, 2220, 657, 2793, 663,562 563 27 93, 2168, 593, 2162, 2161, 0, 631, 2793, 2793, 669,564 21 60, 2158, 2155, 0, 2175, 629, 635, 639, 678, 677,565 666, 670, 671, 674, 21 72, 681, 682, 2150, 2148, 2793,566 0, 597, 702, 678, 676, 21 28, 2178, 2793, 693, 0,567 710, 723, 743, 762, 788, 707, 27 93, 2137, 2110, 0,568 776, 21 53, 768, 723, 2793, 2130, 2105, 809, 2793, 2793,569 21 36, 2793, 2793, 705, 710, 2114, 2112, 724, 2108, 2107,570 2 105, 0, 2102, 0, 2071, 709, 682, 707, 712, 710,560 570, 580, 2782, 2782, 645, 651, 2202, 657, 2782, 663, 561 562 2782, 2152, 593, 2147, 2144, 0, 631, 2782, 2782, 669, 563 2141, 2140, 2139, 0, 2160, 629, 635, 639, 678, 677, 564 666, 670, 671, 674, 2138, 681, 682, 2115, 2114, 2782, 565 0, 597, 702, 678, 676, 2111, 2160, 2782, 693, 0, 566 710, 723, 743, 762, 788, 707, 2782, 2119, 2094, 0, 567 776, 2138, 768, 723, 2782, 2113, 2086, 809, 2782, 2782, 568 2118, 2782, 2782, 705, 710, 2098, 2097, 724, 2091, 2088, 569 2087, 0, 2086, 0, 2056, 709, 682, 707, 712, 710, 571 570 724, 647, 750, 671, 786, 751, 748, 731, 778, 787, 572 789, 788, 792, 790, 758, 2 101, 796, 806, 800, 813,571 789, 788, 792, 790, 758, 2084, 796, 806, 800, 813, 573 572 574 573 798, 810, 802, 816, 822, 819, 815, 826, 830, 829, 575 831, 832, 833, 837, 839, 841, 846, 843, 2 100, 848,574 831, 832, 833, 837, 839, 841, 846, 843, 2081, 848, 576 575 850, 849, 851, 852, 854, 853, 857, 855, 858, 863, 577 868, 20 98, 867, 912, 871, 878, 872, 879, 882, 937,578 939, 20 92, 2089, 2088, 0, 2087, 0, 927, 931, 2085,579 0, 20 82, 0, 2081, 0, 2101, 2793, 913, 926, 2080,580 20 75, 0, 2074, 0, 2793, 942, 960, 953, 2793, 966,581 981, 1005, 20 73, 2793, 2793, 955, 968, 995, 968, 1028,582 892, 1014, 970, 27 93, 2793, 2071, 2068, 2064, 0, 2060,583 0, 20 58, 0, 2056, 0, 2793, 909, 944, 982, 943,576 868, 2080, 867, 912, 871, 878, 872, 879, 882, 937, 577 939, 2076, 2074, 2071, 0, 2070, 0, 927, 931, 2069, 578 0, 2067, 0, 2064, 0, 2084, 2782, 913, 926, 2064, 579 2060, 0, 2057, 0, 2782, 942, 960, 953, 2782, 966, 580 981, 1005, 2053, 2782, 2782, 955, 968, 995, 968, 1028, 581 892, 1014, 970, 2782, 2782, 2049, 2047, 2045, 0, 2042, 582 0, 2040, 0, 2038, 0, 2782, 909, 944, 982, 943, 584 583 585 584 1006, 911, 1012, 923, 1013, 1019, 1009, 1016, 1023, 1024, 586 1020, 972, 1030, 1028, 989, 1026, 1034, 1027, 1039, 20 56,587 1044, 20 54, 1048, 2052, 1049, 1051, 1052, 1053, 1056, 1057,588 1055, 20 49, 1059, 2046, 946, 1063, 1066, 1067, 1068, 1071,589 1069, 20 45, 1075, 2044, 1077, 1080, 1079, 1082, 1084, 1086,590 1087, 1090, 1097, 1107, 1088, 1108, 1093, 1098, 20 42, 1096,591 1111, 1164, 20 36, 0, 2033, 0, 2032, 0, 2031, 0,592 1151, 20 29, 0, 2026, 0, 2023, 2022, 2021, 0, 2019,593 0, 1156, 20 16, 1162, 1148, 1182, 1149, 1126, 1147, 2793,594 1201, 1215, 1241, 20 25, 2000, 2011, 2009, 0, 2006, 0,595 596 2003, 0, 2002, 0, 2001, 0, 1999, 0, 1161, 1149,597 19 99, 1179, 1140, 1180, 1117, 1182, 1192, 1199, 1181, 1163,585 1020, 972, 1030, 1028, 989, 1026, 1034, 1027, 1039, 2038, 586 1044, 2035, 1048, 2034, 1049, 1051, 1052, 1053, 1056, 1057, 587 1055, 2033, 1059, 2031, 946, 1063, 1066, 1067, 1068, 1071, 588 1069, 2028, 1075, 2025, 1077, 1080, 1079, 1082, 1084, 1086, 589 1087, 1090, 1097, 1107, 1088, 1108, 1093, 1098, 2024, 1096, 590 1111, 1164, 2020, 0, 2018, 0, 2015, 0, 2012, 0, 591 1151, 2011, 0, 2010, 0, 2008, 2005, 2002, 0, 2001, 592 0, 1156, 2000, 1162, 1148, 1182, 1149, 1126, 1147, 2782, 593 1201, 1215, 1241, 2010, 1983, 1992, 1991, 0, 1990, 0, 594 595 1988, 0, 1985, 0, 1982, 0, 1981, 0, 1161, 1149, 596 1983, 1179, 1140, 1180, 1117, 1182, 1192, 1199, 1181, 1163, 598 597 1196, 1200, 1201, 1220, 1198, 1221, 1224, 604, 1226, 1227, 599 1231, 1233, 1234, 19 96, 1244, 1236, 1995, 1240, 1241, 1246,600 1247, 1243, 19 94, 1250, 1251, 1253, 1254, 1992, 1255, 1267,601 19 89, 1264, 1271, 1256, 1263, 1257, 1986, 1275, 1277, 1279,602 1260, 1281, 1290, 1285, 1288, 19 85, 1289, 1291, 1984, 2031,603 19 76, 0, 1975, 0, 1974, 0, 1972, 0, 1969, 0,604 19 68, 0, 1967, 0, 1965, 0, 1336, 1342, 1369, 1353,605 19 32, 2793, 1359, 1307, 1359, 1309, 1930, 2793, 1929, 0,606 607 19 26, 0, 1923, 0, 1922, 0, 0, 0, 1924, 0,598 1231, 1233, 1234, 1981, 1244, 1236, 1978, 1240, 1241, 1246, 599 1247, 1243, 1975, 1250, 1251, 1253, 1254, 1974, 1255, 1267, 600 1973, 1264, 1271, 1256, 1263, 1257, 1971, 1275, 1277, 1279, 601 1260, 1281, 1290, 1285, 1288, 1968, 1289, 1291, 1967, 2015, 602 1961, 0, 1958, 0, 1957, 0, 1956, 0, 1954, 0, 603 1921, 0, 1919, 0, 1918, 0, 1336, 1342, 1369, 1353, 604 1915, 2782, 1359, 1307, 1359, 1309, 1912, 2782, 1911, 0, 605 606 1910, 0, 1908, 0, 1905, 0, 0, 0, 1905, 0, 608 607 1347, 1295, 1292, 1323, 1337, 1338, 1296, 1349, 1351, 1355, 609 608 1353, 1348, 1363, 1364, 1371, 1373, 1380, 1375, 1403, 1381, 610 1385, 1389, 1094, 1387, 1390, 1922, 1391, 1393, 1397, 1401, 611 1919, 1916, 1915, 1394, 1400, 1914, 1404, 1912, 1909, 1402, 612 1408, 1908, 1907, 1905, 1902, 1901, 1900, 1417, 1412, 1898, 613 1420, 1418, 1944, 2793, 1888, 0, 1884, 0, 0, 0, 614 1883, 0, 0, 0, 2793, 0, 0, 0, 0, 1463, 615 1864, 2793, 2793, 1469, 1863, 0, 1862, 0, 0, 0, 616 0, 1860, 1407, 1446, 1860, 1406, 1423, 1300, 1431, 1449, 617 618 1455, 1447, 1859, 1457, 1448, 1459, 1464, 1460, 1490, 1474, 619 1470, 1494, 1480, 1475, 1484, 1485, 1486, 1482, 1858, 1487, 620 1856, 1853, 1489, 1852, 1851, 1491, 1493, 1497, 1849, 1498, 621 1500, 0, 0, 0, 1843, 1842, 1841, 1548, 0, 1839, 622 1836, 1835, 1834, 1832, 1832, 1831, 1830, 1828, 1505, 1510, 623 1502, 1501, 1504, 1508, 1513, 1517, 1526, 1528, 1559, 1825, 624 1533, 1824, 1534, 1535, 1544, 1545, 1538, 1539, 1823, 1821, 625 1818, 1817, 1540, 1816, 1814, 1808, 1807, 1806, 1804, 1797, 626 1795, 1794, 1791, 1790, 1789, 1787, 1770, 1546, 1764, 1549, 627 1550, 1552, 1554, 1557, 1558, 1763, 1556, 1589, 1566, 1760, 628 629 1565, 1572, 1577, 1579, 1567, 1578, 1750, 1747, 1740, 1738, 630 1737, 1716, 1715, 1714, 1707, 1705, 1704, 1662, 1659, 1661, 631 1571, 1584, 1582, 1581, 1586, 1593, 1595, 1659, 1657, 1597, 632 1654, 1652, 1598, 1599, 1602, 1648, 1647, 1644, 1642, 1422, 633 1421, 1205, 1201, 1605, 1613, 949, 1603, 1607, 1615, 910, 634 1616, 1621, 1622, 768, 723, 602, 503, 1609, 1623, 1627, 635 1626, 1628, 1632, 373, 338, 1633, 337, 290, 1637, 1634, 636 251, 200, 1639, 1640, 1641, 1643, 1642, 1644, 1646, 196, 637 136, 2793, 1718, 1731, 1744, 1754, 1764, 1777, 1787, 1800, 638 1813, 1826, 1834, 1844, 1851, 1858, 1865, 1872, 1879, 1886, 639 640 1893, 1900, 1907, 1920, 1927, 1931, 1939, 1942, 1949, 1956, 641 1963, 1966, 1973, 1979, 1992, 2005, 2012, 2019, 2026, 2033, 642 2036, 2043, 2046, 2053, 2056, 2063, 2066, 2073, 2076, 2083, 643 2086, 2093, 2096, 2103, 2111, 2118, 2125, 2132, 2139, 2142, 644 2149, 2152, 2159, 2162, 2169, 2175, 2188, 2195, 2202, 2205, 645 2212, 2215, 2222, 2225, 2232, 2235, 2242, 2245, 2252, 2255, 646 2262, 2269, 2272, 2279, 2282, 2289, 2296, 2303, 2306, 2313, 647 2316, 2323, 2326, 2333, 2336, 2343, 2346, 2353, 2359, 2372, 648 2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426, 649 2429, 2436, 2439, 2446, 2449, 2456, 2459, 2466, 2473, 2476, 650 651 2483, 2486, 2493, 2496, 2503, 2506, 2509, 2515, 2522, 2531, 652 2538, 2545, 2548, 2555, 2558, 2561, 2567, 2574, 2577, 2580, 653 2583, 2586, 2589, 2592, 2595, 2602, 2605, 2612, 2615, 2618, 654 2621, 2624, 2634, 2641, 2644, 2647, 2650, 2657, 2664, 2671, 655 2674, 2681, 2688, 2695, 2702, 2709, 2716, 2723, 2730, 2737, 656 2744, 2751, 2758, 2765, 2772, 2779 609 1385, 1389, 1094, 1387, 1390, 1904, 1391, 1393, 1397, 1401, 610 1903, 1901, 1898, 1394, 1400, 1897, 1404, 1896, 1894, 1402, 611 1408, 1891, 1890, 1889, 1887, 1884, 1880, 1417, 1412, 1876, 612 1420, 1418, 1921, 2782, 1853, 0, 1852, 0, 0, 0, 613 1854, 0, 0, 0, 2782, 0, 0, 0, 0, 1463, 614 1849, 2782, 2782, 1469, 1846, 0, 1845, 0, 0, 0, 615 0, 1844, 1407, 1446, 1845, 1406, 1423, 1300, 1431, 1449, 616 617 1455, 1447, 1842, 1457, 1448, 1459, 1464, 1460, 1490, 1474, 618 1470, 1494, 1480, 1475, 1484, 1485, 1486, 1482, 1841, 1487, 619 1840, 1838, 1489, 1835, 1834, 1491, 1493, 1497, 1833, 1498, 620 1500, 0, 0, 0, 1828, 1825, 1824, 1548, 0, 1823, 621 1821, 1818, 1817, 1816, 1817, 1814, 1813, 1812, 1505, 1510, 622 1502, 1501, 1504, 1508, 1513, 1517, 1526, 1528, 1559, 1810, 623 1533, 1807, 1534, 1535, 1544, 1545, 1538, 1539, 1806, 1805, 624 1803, 1800, 1540, 1799, 1798, 1793, 1786, 1784, 1783, 1780, 625 1779, 1778, 1776, 1759, 1750, 1749, 1746, 1546, 1742, 1549, 626 1550, 1552, 1554, 1557, 1558, 1739, 1556, 1589, 1566, 1732, 627 628 1565, 1572, 1577, 1579, 1567, 1578, 1727, 1726, 1705, 1704, 629 1703, 1696, 1694, 1693, 1650, 1649, 1647, 1645, 1644, 1646, 630 1571, 1584, 1582, 1581, 1586, 1593, 1595, 1645, 1644, 1597, 631 1642, 1641, 1598, 1599, 1602, 1636, 1635, 1633, 1422, 1421, 632 1205, 1201, 946, 1605, 1610, 910, 1603, 1607, 768, 1613, 633 1618, 1619, 723, 605, 503, 370, 1609, 1620, 1623, 1624, 634 1625, 338, 337, 1627, 290, 251, 1630, 200, 196, 1631, 635 1632, 1637, 1633, 136, 2782, 1707, 1720, 1733, 1743, 1753, 636 1766, 1776, 1789, 1802, 1815, 1823, 1833, 1840, 1847, 1854, 637 1861, 1868, 1875, 1882, 1889, 1896, 1909, 1916, 1920, 1928, 638 639 1931, 1938, 1945, 1952, 1955, 1962, 1968, 1981, 1994, 2001, 640 2008, 2015, 2022, 2025, 2032, 2035, 2042, 2045, 2052, 2055, 641 2062, 2065, 2072, 2075, 2082, 2085, 2092, 2100, 2107, 2114, 642 2121, 2128, 2131, 2138, 2141, 2148, 2151, 2158, 2164, 2177, 643 2184, 2191, 2194, 2201, 2204, 2211, 2214, 2221, 2224, 2231, 644 2234, 2241, 2244, 2251, 2258, 2261, 2268, 2271, 2278, 2285, 645 2292, 2295, 2302, 2305, 2312, 2315, 2322, 2325, 2332, 2335, 646 2342, 2348, 2361, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 647 2405, 2408, 2415, 2418, 2425, 2428, 2435, 2438, 2445, 2448, 648 2455, 2462, 2465, 2472, 2475, 2482, 2485, 2492, 2495, 2498, 649 650 2504, 2511, 2520, 2527, 2534, 2537, 2544, 2547, 2550, 2556, 651 2563, 2566, 2569, 2572, 2575, 2578, 2581, 2584, 2591, 2594, 652 2601, 2604, 2607, 2610, 2613, 2623, 2630, 2633, 2636, 2639, 653 2646, 2653, 2660, 2663, 2670, 2677, 2684, 2691, 2698, 2705, 654 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2761, 2768 657 655 } ; 658 656 659 static yyconst flex_int16_t yy_def[105 7] =657 static yyconst flex_int16_t yy_def[1050] = 660 658 { 0, 661 882, 1, 883, 883, 882, 5, 884, 884, 885, 885, 662 882, 882, 882, 882, 882, 882, 882, 886, 882, 882, 663 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 664 882, 31, 882, 882, 882, 882, 882, 882, 887, 886, 665 882, 882, 882, 882, 886, 882, 886, 886, 886, 886, 666 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 667 886, 882, 882, 882, 882, 882, 888, 882, 882, 882, 668 889, 882, 882, 890, 882, 882, 891, 882, 882, 882, 669 882, 882, 882, 882, 886, 882, 882, 882, 882, 882, 670 882, 882, 882, 882, 882, 882, 882, 882, 882, 892, 671 672 882, 98, 30, 882, 882, 882, 882, 893, 30, 882, 673 31, 882, 882, 31, 882, 882, 882, 882, 882, 882, 674 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 675 882, 882, 882, 882, 882, 882, 882, 882, 894, 882, 676 882, 882, 882, 886, 895, 896, 882, 882, 886, 886, 677 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 678 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 679 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 680 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 681 886, 886, 882, 882, 882, 888, 888, 888, 882, 888, 682 683 882, 889, 882, 897, 898, 890, 882, 882, 882, 882, 684 899, 900, 901, 891, 882, 882, 882, 882, 882, 882, 685 882, 882, 882, 882, 882, 882, 882, 902, 903, 882, 686 98, 882, 882, 882, 882, 98, 904, 882, 882, 103, 687 103, 882, 882, 882, 882, 882, 882, 882, 882, 905, 688 906, 907, 882, 882, 882, 882, 882, 882, 882, 882, 689 882, 882, 882, 882, 882, 882, 894, 882, 908, 909, 690 910, 911, 912, 913, 882, 914, 914, 914, 914, 914, 691 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 692 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 693 694 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 695 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 696 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 697 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 698 916, 917, 918, 919, 920, 921, 922, 882, 882, 923, 699 924, 925, 926, 927, 928, 882, 882, 882, 882, 882, 700 929, 930, 931, 932, 882, 882, 882, 882, 882, 882, 701 882, 367, 372, 882, 882, 933, 934, 935, 882, 882, 702 882, 935, 882, 882, 882, 936, 937, 938, 939, 940, 703 941, 942, 943, 944, 945, 882, 946, 946, 946, 946, 704 705 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 706 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 707 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 708 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 709 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 710 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 711 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 712 882, 956, 957, 958, 959, 960, 960, 961, 962, 963, 713 964, 882, 482, 882, 965, 882, 965, 882, 882, 882, 714 882, 882, 882, 882, 882, 966, 967, 968, 969, 970, 715 716 971, 972, 973, 974, 975, 976, 977, 978, 979, 979, 717 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 718 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 719 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 720 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 721 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 722 979, 979, 979, 979, 979, 979, 979, 979, 979, 980, 723 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 724 991, 992, 993, 994, 995, 996, 882, 882, 882, 882, 725 997, 882, 589, 882, 882, 882, 593, 882, 998, 999, 726 727 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 728 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 729 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 730 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 731 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 732 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 733 1008, 1008, 1010, 882, 1011, 1012, 1013, 1014, 1015, 1016, 734 1017, 1018, 1019, 1020, 882, 1021, 1022, 1023, 1024, 882, 735 680, 882, 882, 882, 1025, 1026, 1027, 1028, 1029, 1030, 736 1031, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 737 738 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 739 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 740 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 741 1033, 1034, 1035, 1036, 1037, 1038, 1039, 882, 1040, 1025, 742 1027, 1041, 1042, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 743 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 744 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 745 1033, 1033, 1033, 1033, 1033, 1043, 1044, 1037, 1045, 1038, 746 1046, 1039, 1047, 1048, 1041, 1049, 1042, 1033, 1033, 1033, 747 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 748 749 1033, 1033, 1033, 1033, 1033, 1033, 1050, 1043, 1051, 1044, 750 1052, 1045, 1053, 1046, 1054, 1047, 1055, 1048, 1049, 1033, 751 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 752 1033, 1033, 1033, 1033, 1033, 1056, 1050, 1051, 1052, 1053, 753 1027, 1054, 1055, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 754 1033, 1033, 1033, 1033, 1033, 1056, 1027, 1033, 1033, 1033, 755 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 756 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 757 1033, 0, 882, 882, 882, 882, 882, 882, 882, 882, 758 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 759 760 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 761 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 762 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 763 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 764 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 765 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 766 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 767 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 768 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 769 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 770 771 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 772 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 773 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 774 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 775 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 776 882, 882, 882, 882, 882, 882 659 875, 1, 876, 876, 875, 5, 877, 877, 878, 878, 660 875, 875, 875, 875, 875, 875, 875, 879, 875, 875, 661 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 662 875, 31, 875, 875, 875, 875, 875, 875, 880, 879, 663 875, 875, 875, 875, 879, 875, 879, 879, 879, 879, 664 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 665 879, 875, 875, 875, 875, 875, 881, 875, 875, 875, 666 882, 875, 875, 883, 875, 875, 884, 875, 875, 875, 667 875, 875, 875, 875, 879, 875, 875, 875, 875, 875, 668 875, 875, 875, 875, 875, 875, 875, 875, 875, 885, 669 670 875, 98, 30, 875, 875, 875, 875, 886, 30, 875, 671 31, 875, 875, 31, 875, 875, 875, 875, 875, 875, 672 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 673 875, 875, 875, 875, 875, 875, 875, 875, 887, 875, 674 875, 875, 875, 879, 888, 889, 875, 875, 879, 879, 675 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 676 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 677 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 678 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 679 879, 879, 875, 875, 875, 881, 881, 881, 875, 881, 680 681 875, 882, 875, 890, 891, 883, 875, 875, 875, 875, 682 892, 893, 894, 884, 875, 875, 875, 875, 875, 875, 683 875, 875, 875, 875, 875, 875, 875, 895, 896, 875, 684 98, 875, 875, 875, 875, 98, 897, 875, 875, 103, 685 103, 875, 875, 875, 875, 875, 875, 875, 875, 898, 686 899, 900, 875, 875, 875, 875, 875, 875, 875, 875, 687 875, 875, 875, 875, 875, 875, 887, 875, 901, 902, 688 903, 904, 905, 906, 875, 907, 907, 907, 907, 907, 689 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 690 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 691 692 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 693 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 694 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 695 907, 907, 907, 907, 907, 907, 907, 907, 907, 908, 696 909, 910, 911, 912, 913, 914, 915, 875, 875, 916, 697 917, 918, 919, 920, 921, 875, 875, 875, 875, 875, 698 922, 923, 924, 925, 875, 875, 875, 875, 875, 875, 699 875, 367, 372, 875, 875, 926, 927, 928, 875, 875, 700 875, 928, 875, 875, 875, 929, 930, 931, 932, 933, 701 934, 935, 936, 937, 938, 875, 939, 939, 939, 939, 702 703 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 704 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 705 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 706 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 707 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 708 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 709 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 710 875, 949, 950, 951, 952, 953, 953, 954, 955, 956, 711 957, 875, 482, 875, 958, 875, 958, 875, 875, 875, 712 875, 875, 875, 875, 875, 959, 960, 961, 962, 963, 713 714 964, 965, 966, 967, 968, 969, 970, 971, 972, 972, 715 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 716 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 717 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 718 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 719 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 720 972, 972, 972, 972, 972, 972, 972, 972, 972, 973, 721 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 722 984, 985, 986, 987, 988, 989, 875, 875, 875, 875, 723 990, 875, 589, 875, 875, 875, 593, 875, 991, 992, 724 725 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 726 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 727 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 728 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 729 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 730 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 731 1001, 1001, 1003, 875, 1004, 1005, 1006, 1007, 1008, 1009, 732 1010, 1011, 1012, 1013, 875, 1014, 1015, 1016, 1017, 875, 733 680, 875, 875, 875, 1018, 1019, 1020, 1021, 1022, 1023, 734 1024, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 735 736 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 737 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 738 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 739 1026, 1027, 1028, 1029, 1030, 1031, 1032, 875, 1033, 1018, 740 1020, 1034, 1035, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 741 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 742 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 743 1026, 1026, 1026, 1026, 1026, 1036, 1037, 1030, 1038, 1031, 744 1039, 1032, 1040, 1041, 1034, 1042, 1035, 1026, 1026, 1026, 745 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 746 747 1026, 1026, 1026, 1026, 1026, 1026, 1043, 1036, 1044, 1037, 748 1045, 1038, 1046, 1039, 1047, 1040, 1048, 1041, 1042, 1026, 749 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 750 1026, 1026, 1026, 1026, 1026, 1049, 1043, 1044, 1045, 1046, 751 1020, 1047, 1048, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 752 1026, 1026, 1026, 1026, 1049, 1020, 1026, 1026, 1026, 1026, 753 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 754 1026, 1026, 1026, 1026, 0, 875, 875, 875, 875, 875, 755 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 756 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 757 758 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 759 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 760 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 761 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 762 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 763 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 764 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 765 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 766 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 767 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 768 769 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 770 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 771 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 772 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 773 875, 875, 875, 875, 875, 875, 875, 875, 875 777 774 } ; 778 775 779 static yyconst flex_int16_t yy_nxt[28 78] =776 static yyconst flex_int16_t yy_nxt[2867] = 780 777 { 0, 781 778 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 802 799 803 800 82, 81, 90, 92, 141, 145, 86, 97, 94, 98, 804 98, 98, 98, 98, 98, 250, 8 82, 93, 99, 84,801 98, 98, 98, 98, 98, 250, 875, 93, 99, 84, 805 802 95, 96, 84, 100, 176, 117, 76, 76, 76, 76, 806 803 142, 146, 86, 101, 102, 143, 103, 103, 103, 103, … … 825 822 81, 80, 81, 81, 81, 81, 81, 80, 82, 82, 826 823 82, 81, 261, 305, 262, 240, 240, 240, 240, 246, 827 137, 138, 207, 208, 86, 247, 254, 207, 86, 209,824 137, 138, 207, 208, 875, 247, 254, 207, 86, 209, 828 825 247, 261, 255, 262, 209, 98, 98, 98, 98, 98, 829 98, 263, 8 82, 210, 210, 210, 210, 241, 246, 308,830 8 82, 247, 263, 261, 209, 262, 247, 102, 255, 104,826 98, 263, 875, 210, 210, 210, 210, 241, 246, 308, 827 875, 247, 263, 261, 209, 262, 247, 102, 255, 104, 831 828 104, 104, 104, 104, 104, 86, 261, 239, 262, 211, 832 8 82, 261, 209, 262, 86, 255, 105, 209, 209, 882,829 875, 261, 209, 262, 86, 255, 105, 209, 209, 875, 833 830 276, 209, 209, 86, 253, 264, 261, 277, 262, 209, 834 831 296, 242, 209, 254, 209, 212, 209, 105, 213, 215, 835 832 836 261, 255, 262, 216, 217, 283, 86, 8 82, 218, 219,833 261, 255, 262, 216, 217, 283, 86, 875, 218, 219, 837 834 243, 220, 243, 221, 86, 244, 244, 244, 244, 244, 838 835 244, 86, 222, 223, 224, 261, 265, 262, 142, 306, 839 836 86, 86, 278, 143, 86, 86, 285, 286, 287, 279, 840 837 288, 289, 225, 86, 290, 226, 291, 245, 282, 86, 841 86, 292, 293, 294, 86, 295, 297, 8 82, 298, 301,838 86, 292, 293, 294, 86, 295, 297, 875, 298, 301, 842 839 86, 86, 307, 86, 299, 300, 309, 303, 86, 86, 843 840 304, 86, 302, 227, 231, 231, 231, 231, 231, 231, … … 850 847 324, 86, 207, 208, 337, 335, 338, 207, 365, 86, 851 848 329, 342, 334, 336, 339, 327, 195, 80, 81, 81, 852 81, 195, 198, 199, 196, 86, 882, 198, 198, 199,849 81, 195, 198, 199, 196, 86, 86, 198, 198, 199, 853 850 356, 365, 357, 198, 340, 199, 356, 343, 357, 340, 854 851 356, 341, 357, 200, 200, 200, 200, 200, 200, 200, … … 859 856 357, 357, 356, 356, 357, 357, 369, 365, 403, 366, 860 857 369, 366, 86, 349, 367, 367, 367, 367, 367, 367, 861 8 82, 232, 233, 86, 234, 235, 261, 369, 262, 369,858 875, 232, 233, 86, 234, 235, 261, 369, 262, 369, 862 859 365, 261, 405, 262, 369, 104, 104, 104, 104, 104, 863 860 104, 398, 232, 233, 232, 374, 368, 234, 86, 235, … … 889 886 231, 231, 231, 231, 86, 86, 516, 86, 232, 486, 890 887 891 86, 234, 235, 240, 240, 240, 240, 104, 104, 487,888 875, 234, 235, 240, 240, 240, 240, 104, 104, 487, 892 889 489, 510, 486, 512, 483, 377, 490, 545, 490, 232, 893 890 370, 232, 488, 86, 234, 486, 235, 372, 372, 372, 894 372, 372, 372, 86, 8 82, 371, 489, 379, 486, 380,891 372, 372, 372, 86, 875, 371, 489, 379, 486, 380, 895 892 86, 525, 490, 381, 490, 491, 529, 491, 511, 382, 896 893 492, 492, 492, 492, 492, 492, 379, 86, 380, 373, … … 916 913 86, 86, 86, 86, 621, 620, 590, 593, 593, 593, 917 914 593, 593, 593, 86, 615, 613, 617, 86, 618, 86, 918 86, 86, 86, 594, 626, 8 82, 595, 596, 491, 882,915 86, 86, 86, 594, 626, 875, 595, 596, 491, 856, 919 916 491, 619, 622, 492, 492, 492, 492, 492, 492, 597, 920 917 623, 86, 86, 624, 594, 86, 594, 86, 86, 595, … … 940 937 718, 86, 86, 86, 86, 86, 714, 86, 86, 86, 941 938 717, 722, 726, 86, 719, 723, 727, 720, 86, 86, 942 721, 86, 725, 729, 86, 8 57, 882, 728, 724, 745,939 721, 86, 725, 729, 86, 875, 875, 728, 724, 745, 943 940 730, 748, 86, 747, 731, 680, 680, 680, 680, 680, 944 941 680, 593, 593, 593, 593, 593, 593, 86, 86, 86, … … 959 956 829, 821, 86, 86, 820, 827, 831, 824, 86, 86, 960 957 86, 832, 86, 86, 834, 86, 846, 86, 830, 833, 961 86, 847, 845, 844, 86, 835, 86, 850, 86, 86, 962 86, 852, 853, 86, 86, 848, 86, 860, 86, 854, 963 86, 849, 855, 851, 86, 858, 86, 86, 861, 859, 964 863, 862, 86, 86, 86, 864, 865, 86, 86, 86, 965 866, 868, 870, 86, 86, 86, 871, 869, 86, 867, 966 86, 86, 86, 86, 86, 86, 882, 86, 882, 875, 967 968 874, 882, 856, 86, 876, 86, 872, 881, 86, 873, 969 86, 879, 86, 882, 877, 878, 882, 880, 68, 68, 958 86, 847, 845, 844, 86, 835, 86, 849, 86, 86, 959 86, 851, 852, 86, 86, 848, 86, 859, 86, 853, 960 86, 86, 854, 850, 86, 857, 858, 861, 860, 86, 961 86, 86, 862, 863, 86, 86, 86, 866, 86, 868, 962 864, 86, 86, 86, 86, 867, 865, 875, 86, 875, 963 855, 871, 86, 86, 874, 86, 86, 86, 875, 875, 964 965 869, 843, 870, 875, 842, 872, 873, 68, 68, 68, 970 966 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 971 68, 74, 74, 74, 74, 74, 74, 74, 74, 74,972 74, 74, 74, 7 4, 77, 77, 77, 77, 77, 77,973 77, 77, 77, 77, 77, 77, 77, 85, 843, 882,974 85, 842, 85, 85, 85, 85, 85, 139, 882, 840,975 882, 139, 139, 139, 139, 139, 139, 197, 197, 197,976 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,977 202, 839, 882, 202, 838, 202, 202, 202, 202, 202,978 979 206, 882, 206, 206, 837, 206, 206, 206, 206, 206, 980 206, 86, 206, 214, 86, 86, 214, 214, 214, 214,981 214, 214, 214, 214, 882, 214, 237, 237, 237, 237,982 237, 237, 237, 237, 237, 237, 237, 237, 2 37, 251,983 251, 819, 251, 882, 818, 816, 251, 267, 882, 814,984 267, 882, 267, 267, 267, 267, 267, 271, 812, 271,985 882, 810, 808, 271, 273, 86, 273, 86, 86, 86,986 273, 344, 86, 344, 86, 86, 86, 344, 346, 86,987 346, 86, 86, 86, 346, 350, 882, 350, 787, 785,988 882, 350, 352, 882, 352, 782, 780, 778, 352, 354,989 990 86, 354, 86, 86, 86, 354, 361, 86, 361, 86, 991 86, 86, 361, 363, 744, 363, 741, 740, 738, 363,967 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 968 74, 74, 74, 77, 77, 77, 77, 77, 77, 77, 969 77, 77, 77, 77, 77, 77, 85, 875, 840, 85, 970 875, 85, 85, 85, 85, 85, 139, 839, 875, 838, 971 139, 139, 139, 139, 139, 139, 197, 197, 197, 197, 972 197, 197, 197, 197, 197, 197, 197, 197, 197, 202, 973 875, 837, 202, 86, 202, 202, 202, 202, 202, 206, 974 86, 206, 206, 86, 206, 206, 206, 206, 206, 206, 975 976 875, 206, 214, 819, 875, 214, 214, 214, 214, 214, 977 214, 214, 214, 818, 214, 237, 237, 237, 237, 237, 978 237, 237, 237, 237, 237, 237, 237, 237, 251, 251, 979 816, 251, 875, 814, 875, 251, 267, 812, 875, 267, 980 810, 267, 267, 267, 267, 267, 271, 808, 271, 86, 981 86, 86, 271, 273, 86, 273, 86, 86, 86, 273, 982 344, 86, 344, 86, 86, 86, 344, 346, 86, 346, 983 875, 787, 785, 346, 350, 875, 350, 875, 782, 780, 984 350, 352, 778, 352, 86, 86, 86, 352, 354, 86, 985 354, 86, 86, 86, 354, 361, 86, 361, 744, 741, 986 987 740, 361, 363, 738, 363, 203, 734, 733, 363, 237, 992 988 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 993 237, 237, 237, 376, 203, 376, 378, 378, 734, 378,994 378, 378, 733, 378, 251, 251, 664, 251, 388, 86,995 388, 86, 86, 86, 388, 390, 86, 390, 86, 86,996 86, 390, 392, 86, 392, 86, 86, 86, 392, 271,997 86, 271, 394, 86, 394, 86, 691, 690, 394, 273,998 688, 273, 85, 686, 684, 85, 591, 85, 85, 85,999 85, 85, 197, 197, 197, 197, 197, 197, 197, 197,1000 1001 197, 197, 197, 197, 197, 462, 462, 462, 462, 462, 1002 462, 462, 462, 462, 462, 462, 462, 46 2, 463, 679,1003 463, 678, 676, 674, 463, 465, 672, 465, 670, 668,1004 666, 465, 467, 664, 467, 86, 86, 86, 467, 344,1005 86, 344, 469, 86, 469, 86, 86, 86, 469, 346,1006 86, 346, 472, 610, 472, 608, 606, 604, 472, 350,1007 602, 350, 474, 600, 474, 496, 598, 598, 474, 352,1008 587, 352, 476, 586, 476, 584, 477, 477, 476, 354,1009 582, 354, 478, 580, 478, 578, 576, 574, 478, 361,1010 572, 361, 480, 86, 480, 86, 86, 86, 480, 363,1011 1012 86, 363, 485, 86, 485, 86, 485, 86, 485, 376, 1013 508, 376, 506, 376, 504, 376, 378, 378, 502, 378,1014 378, 378, 500, 378, 497, 498, 497, 484, 481, 479,1015 49 7, 499, 357, 499, 357, 477, 475, 499, 501, 473,1016 501, 470, 468, 466, 501, 388, 464, 388, 503, 86,1017 503, 86, 86, 396, 503, 390, 395, 390, 505, 393,1018 505, 391, 389, 268, 505, 392, 263, 392, 507, 262,1019 507, 385, 385, 250, 507, 394, 375, 394, 85, 375,1020 238, 85, 370, 85, 85, 85, 85, 85, 462, 462,989 237, 237, 376, 664, 376, 378, 378, 86, 378, 378, 990 378, 86, 378, 251, 251, 86, 251, 388, 86, 388, 991 86, 86, 86, 388, 390, 86, 390, 86, 86, 86, 992 390, 392, 86, 392, 86, 86, 86, 392, 271, 691, 993 271, 394, 690, 394, 688, 686, 684, 394, 273, 591, 994 273, 85, 679, 678, 85, 676, 85, 85, 85, 85, 995 85, 197, 197, 197, 197, 197, 197, 197, 197, 197, 996 197, 197, 197, 197, 462, 462, 462, 462, 462, 462, 997 998 462, 462, 462, 462, 462, 462, 462, 463, 674, 463, 999 672, 670, 668, 463, 465, 666, 465, 664, 86, 86, 1000 465, 467, 86, 467, 86, 86, 86, 467, 344, 86, 1001 344, 469, 86, 469, 86, 610, 608, 469, 346, 606, 1002 346, 472, 604, 472, 602, 600, 496, 472, 350, 598, 1003 350, 474, 598, 474, 587, 586, 584, 474, 352, 477, 1004 352, 476, 477, 476, 582, 580, 578, 476, 354, 576, 1005 354, 478, 574, 478, 572, 86, 86, 478, 361, 86, 1006 361, 480, 86, 480, 86, 86, 86, 480, 363, 86, 1007 363, 485, 508, 485, 506, 485, 504, 485, 376, 502, 1008 1009 376, 500, 376, 498, 376, 378, 378, 484, 378, 378, 1010 378, 481, 378, 497, 479, 497, 357, 357, 477, 497, 1011 499, 475, 499, 473, 470, 468, 499, 501, 466, 501, 1012 464, 86, 86, 501, 388, 86, 388, 503, 396, 503, 1013 395, 393, 391, 503, 390, 389, 390, 505, 268, 505, 1014 263, 262, 385, 505, 392, 385, 392, 507, 250, 507, 1015 375, 375, 238, 507, 394, 370, 394, 85, 364, 362, 1016 85, 360, 85, 85, 85, 85, 85, 462, 462, 462, 1021 1017 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 1022 1023 462, 571, 364, 571, 362, 360, 356, 571, 463, 355, 1024 463, 573, 353, 573, 351, 347, 345, 573, 465, 203,1025 465, 575, 199, 575, 86, 275, 274, 575, 467, 272,1026 467, 577, 268, 577, 263, 266, 263, 577, 469, 261,1027 469, 579, 260, 579, 259, 238, 230, 579, 472, 84,1028 472, 581, 84, 581, 86, 203, 201, 581, 474, 84,1029 47 4, 476, 121, 476, 116, 86, 882, 476, 583, 69,1030 583, 69, 882, 882, 583, 478, 882, 478, 585, 882,1031 585, 882, 882, 882, 585, 480, 882, 480, 485, 882,1032 485, 882, 485, 882, 485, 378, 882, 378, 882, 882,1033 1034 882, 378, 599, 882, 599, 882, 882, 882, 599, 497, 1035 882, 497, 601, 882, 601, 882, 882, 882, 601, 499,1036 882, 499, 603, 882, 603, 882, 882, 882, 603, 501,1037 882, 501, 605, 882, 605, 882, 882, 882, 605, 503,1038 882, 503, 607, 882, 607, 882, 882, 882, 607, 505,1039 882, 505, 609, 882, 609, 882, 882, 882, 609, 507,1040 882, 507, 85, 882, 882, 85, 882, 85, 85, 85,1041 85, 85, 663, 663, 663, 663, 663, 663, 663, 663,1042 663, 663, 663, 663, 66 3, 665, 882, 665, 882, 882,1043 882, 665, 571, 882, 571, 667, 882, 667, 882, 882,1044 1045 882, 667, 573, 882, 573, 669, 882, 669, 882, 882, 1046 882, 669, 575, 882, 575, 671, 882, 671, 882, 882,1047 882, 671, 577, 882, 577, 673, 882, 673, 882, 882,1048 882, 673, 579, 882, 579, 675, 882, 675, 882, 882,1049 882, 675, 581, 882, 581, 677, 882, 677, 882, 882,1050 882, 677, 583, 882, 583, 85, 882, 85, 882, 882,1051 882, 85, 585, 882, 585, 485, 882, 485, 882, 882,1052 882, 485, 685, 882, 685, 882, 882, 882, 685, 599,1053 882, 599, 687, 882, 687, 882, 882, 882, 687, 601,1054 882, 601, 689, 882, 689, 882, 882, 882, 689, 603,1055 1056 882, 603, 139, 882, 139, 882, 882, 882, 139, 605, 1057 882, 605, 692, 882, 692, 607, 882, 607, 85, 882,1058 882, 85, 882, 85, 85, 85, 85, 85, 609, 882,1059 6 09, 663, 663, 663, 663, 663, 663, 663, 663, 663,1060 663, 663, 663, 663, 732, 882, 732, 882, 882, 882,1061 732, 665, 882, 665, 202, 882, 202, 882, 882, 882,1062 202, 667, 882, 667, 735, 882, 735, 669, 882, 669,1063 202, 882, 882, 202, 882, 202, 202, 202, 202, 202,1064 671, 882, 671, 736, 882, 736, 673, 882, 673, 675,1065 882, 675, 737, 882, 737, 677, 882, 677, 85, 882,1066 1067 85, 739, 882, 739, 882, 882, 882, 739, 685, 882, 1068 685, 267, 882, 267, 882, 882, 882, 267, 687, 882,1069 687, 742, 882, 742, 689, 882, 689, 139, 882, 139,1070 743, 882, 743, 882, 882, 882, 743, 85, 882, 882,1071 85, 882, 85, 85, 85, 85, 85, 776, 882, 776,1072 732, 882, 732, 202, 882, 202, 777, 882, 777, 882,1073 8 82, 882, 777, 779, 882, 779, 882, 882, 882, 779,1074 781, 882, 781, 882, 882, 882, 781, 783, 882, 783,1075 784, 882, 784, 882, 882, 882, 784, 786, 882, 786,1076 8 82, 882, 882, 786, 807, 882, 807, 882, 882, 882,1077 1078 807, 809, 882, 809, 882, 882, 882, 809, 811, 882, 1079 8 11, 882, 882, 882, 811, 813, 882, 813, 882, 882,1080 8 82, 813, 815, 882, 815, 882, 882, 882, 815, 817,1081 8 82, 817, 882, 882, 882, 817, 609, 882, 609, 882,1082 8 82, 882, 609, 836, 882, 836, 882, 882, 882, 836,1083 671, 882, 671, 882, 882, 882, 671, 675, 882, 675,1084 8 82, 882, 882, 675, 85, 882, 85, 882, 882, 882,1085 85, 841, 882, 841, 882, 882, 882, 841, 139, 882,1086 139, 882, 882, 882, 139, 202, 882, 202, 882, 882,1087 882, 202, 11, 882, 882, 882, 882, 882, 882, 882,1088 1089 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1090 8 82, 882, 882, 882, 882, 882, 882, 882, 882, 882,1091 8 82, 882, 882, 882, 882, 882, 882, 882, 882, 882,1092 8 82, 882, 882, 882, 882, 882, 882, 882, 882, 882,1093 8 82, 882, 882, 882, 882, 882, 882, 882, 882, 882,1094 8 82, 882, 882, 882, 882, 882, 882, 882, 882, 882,1095 8 82, 882, 882, 882, 882, 882, 882, 882, 882, 882,1096 8 82, 882, 882, 882, 882, 882, 8821018 571, 356, 571, 355, 353, 351, 571, 463, 347, 463, 1019 1020 573, 345, 573, 203, 199, 86, 573, 465, 275, 465, 1021 575, 274, 575, 272, 268, 263, 575, 467, 266, 467, 1022 577, 263, 577, 261, 260, 259, 577, 469, 238, 469, 1023 579, 230, 579, 84, 84, 86, 579, 472, 203, 472, 1024 581, 201, 581, 84, 121, 116, 581, 474, 86, 474, 1025 476, 875, 476, 69, 69, 875, 476, 583, 875, 583, 1026 875, 875, 875, 583, 478, 875, 478, 585, 875, 585, 1027 875, 875, 875, 585, 480, 875, 480, 485, 875, 485, 1028 875, 485, 875, 485, 378, 875, 378, 875, 875, 875, 1029 378, 599, 875, 599, 875, 875, 875, 599, 497, 875, 1030 1031 497, 601, 875, 601, 875, 875, 875, 601, 499, 875, 1032 499, 603, 875, 603, 875, 875, 875, 603, 501, 875, 1033 501, 605, 875, 605, 875, 875, 875, 605, 503, 875, 1034 503, 607, 875, 607, 875, 875, 875, 607, 505, 875, 1035 505, 609, 875, 609, 875, 875, 875, 609, 507, 875, 1036 507, 85, 875, 875, 85, 875, 85, 85, 85, 85, 1037 85, 663, 663, 663, 663, 663, 663, 663, 663, 663, 1038 663, 663, 663, 663, 665, 875, 665, 875, 875, 875, 1039 665, 571, 875, 571, 667, 875, 667, 875, 875, 875, 1040 667, 573, 875, 573, 669, 875, 669, 875, 875, 875, 1041 1042 669, 575, 875, 575, 671, 875, 671, 875, 875, 875, 1043 671, 577, 875, 577, 673, 875, 673, 875, 875, 875, 1044 673, 579, 875, 579, 675, 875, 675, 875, 875, 875, 1045 675, 581, 875, 581, 677, 875, 677, 875, 875, 875, 1046 677, 583, 875, 583, 85, 875, 85, 875, 875, 875, 1047 85, 585, 875, 585, 485, 875, 485, 875, 875, 875, 1048 485, 685, 875, 685, 875, 875, 875, 685, 599, 875, 1049 599, 687, 875, 687, 875, 875, 875, 687, 601, 875, 1050 601, 689, 875, 689, 875, 875, 875, 689, 603, 875, 1051 603, 139, 875, 139, 875, 875, 875, 139, 605, 875, 1052 1053 605, 692, 875, 692, 607, 875, 607, 85, 875, 875, 1054 85, 875, 85, 85, 85, 85, 85, 609, 875, 609, 1055 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 1056 663, 663, 663, 732, 875, 732, 875, 875, 875, 732, 1057 665, 875, 665, 202, 875, 202, 875, 875, 875, 202, 1058 667, 875, 667, 735, 875, 735, 669, 875, 669, 202, 1059 875, 875, 202, 875, 202, 202, 202, 202, 202, 671, 1060 875, 671, 736, 875, 736, 673, 875, 673, 675, 875, 1061 675, 737, 875, 737, 677, 875, 677, 85, 875, 85, 1062 739, 875, 739, 875, 875, 875, 739, 685, 875, 685, 1063 1064 267, 875, 267, 875, 875, 875, 267, 687, 875, 687, 1065 742, 875, 742, 689, 875, 689, 139, 875, 139, 743, 1066 875, 743, 875, 875, 875, 743, 85, 875, 875, 85, 1067 875, 85, 85, 85, 85, 85, 776, 875, 776, 732, 1068 875, 732, 202, 875, 202, 777, 875, 777, 875, 875, 1069 875, 777, 779, 875, 779, 875, 875, 875, 779, 781, 1070 875, 781, 875, 875, 875, 781, 783, 875, 783, 784, 1071 875, 784, 875, 875, 875, 784, 786, 875, 786, 875, 1072 875, 875, 786, 807, 875, 807, 875, 875, 875, 807, 1073 809, 875, 809, 875, 875, 875, 809, 811, 875, 811, 1074 1075 875, 875, 875, 811, 813, 875, 813, 875, 875, 875, 1076 813, 815, 875, 815, 875, 875, 875, 815, 817, 875, 1077 817, 875, 875, 875, 817, 609, 875, 609, 875, 875, 1078 875, 609, 836, 875, 836, 875, 875, 875, 836, 671, 1079 875, 671, 875, 875, 875, 671, 675, 875, 675, 875, 1080 875, 875, 675, 85, 875, 85, 875, 875, 875, 85, 1081 841, 875, 841, 875, 875, 875, 841, 139, 875, 139, 1082 875, 875, 875, 139, 202, 875, 202, 875, 875, 875, 1083 202, 11, 875, 875, 875, 875, 875, 875, 875, 875, 1084 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1085 1086 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1087 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1088 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1089 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1090 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1091 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1092 875, 875, 875, 875, 875, 875 1097 1093 } ; 1098 1094 1099 static yyconst flex_int16_t yy_chk[28 78] =1095 static yyconst flex_int16_t yy_chk[2867] = 1100 1096 { 0, 1101 1097 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1118 1114 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1119 1115 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 1120 10, 37, 37, 20, 39, 9, 10, 8 81, 7, 8,1116 10, 37, 37, 20, 39, 9, 10, 874, 7, 8, 1121 1117 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 1122 1118 … … 1125 1121 27, 27, 27, 29, 53, 35, 7, 8, 9, 10, 1126 1122 40, 42, 48, 29, 30, 40, 30, 30, 30, 30, 1127 30, 30, 35, 61, 35, 35, 44, 8 80, 44, 108,1128 114, 8 72, 48, 30, 63, 61, 30, 56, 47, 45,1123 30, 30, 35, 61, 35, 35, 44, 869, 44, 108, 1124 114, 868, 48, 30, 63, 61, 30, 56, 47, 45, 1129 1125 45, 45, 30, 30, 45, 45, 56, 45, 30, 55, 1130 1126 45, 45, 49, 40, 30, 45, 40, 49, 45, 47, … … 1132 1128 49, 30, 31, 55, 31, 31, 31, 31, 31, 31, 1133 1129 1134 50, 51, 8 71, 51, 63, 153, 54, 58, 72, 50,1130 50, 51, 866, 51, 63, 153, 54, 58, 72, 50, 1135 1131 60, 31, 51, 50, 31, 86, 54, 57, 50, 58, 1136 1132 31, 153, 50, 54, 141, 156, 31, 58, 60, 57, 1137 1133 57, 59, 31, 126, 58, 126, 59, 156, 31, 57, 1138 52, 86 8, 57, 67, 67, 52, 31, 38, 67, 59,1134 52, 865, 57, 67, 67, 52, 31, 38, 67, 59, 1139 1135 141, 38, 38, 52, 38, 52, 38, 38, 52, 38, 1140 1136 107, 38, 52, 113, 67, 67, 67, 67, 67, 67, 1141 1137 38, 38, 38, 128, 59, 128, 152, 59, 66, 66, 1142 66, 66, 66, 66, 107, 152, 66, 113, 86 7, 865,1138 66, 66, 66, 66, 107, 152, 66, 113, 863, 862, 1143 1139 38, 59, 165, 38, 79, 79, 79, 79, 79, 79, 1144 1140 1145 1141 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 1146 1142 82, 82, 131, 165, 131, 103, 103, 103, 103, 106, 1147 38, 38, 76, 76, 8 64, 106, 112, 76, 168, 76,1143 38, 38, 76, 76, 856, 106, 112, 76, 168, 76, 1148 1144 110, 133, 112, 133, 76, 102, 102, 102, 102, 102, 1149 1145 102, 130, 103, 76, 76, 76, 76, 103, 110, 168, … … 1159 1155 154, 157, 150, 144, 159, 167, 157, 157, 157, 151, 1160 1156 157, 157, 84, 161, 157, 84, 157, 105, 154, 160, 1161 163, 157, 157, 157, 162, 157, 159, 85 7, 160, 162,1157 163, 157, 157, 157, 162, 157, 159, 855, 160, 162, 1162 1158 164, 169, 167, 170, 161, 161, 169, 163, 171, 172, 1163 1159 164, 144, 162, 84, 98, 98, 98, 98, 98, 98, … … 1170 1166 181, 192, 207, 207, 191, 190, 191, 207, 232, 189, 1171 1167 184, 203, 189, 190, 192, 183, 195, 195, 195, 195, 1172 195, 195, 196, 196, 195, 528, 85 6, 196, 198, 198,1168 195, 195, 196, 196, 195, 528, 854, 196, 198, 198, 1173 1169 216, 232, 216, 198, 200, 200, 217, 203, 217, 200, 1174 1170 218, 200, 218, 196, 196, 196, 196, 196, 196, 198, … … 1183 1179 242, 277, 239, 239, 239, 246, 233, 239, 278, 239, 1184 1180 276, 280, 242, 279, 241, 243, 243, 243, 243, 243, 1185 243, 254, 268, 276, 85 5, 281, 278, 242, 280, 279,1181 243, 254, 268, 276, 853, 281, 278, 242, 280, 279, 1186 1182 281, 246, 288, 242, 244, 244, 244, 244, 244, 244, 1187 1183 253, 253, 253, 253, 253, 253, 251, 254, 268, 287, 1188 1184 1189 1185 244, 283, 286, 244, 244, 245, 283, 245, 288, 295, 1190 245, 245, 245, 245, 245, 245, 244, 287, 251, 8 54,1186 245, 245, 245, 245, 245, 245, 244, 287, 251, 849, 1191 1187 251, 244, 253, 244, 251, 286, 244, 295, 244, 289, 1192 1188 251, 258, 258, 258, 258, 258, 258, 285, 290, 292, … … 1204 1200 335, 341, 336, 340, 358, 340, 358, 341, 339, 348, 1205 1201 348, 348, 348, 349, 349, 349, 349, 359, 381, 359, 1206 397, 8 50, 402, 334, 366, 366, 366, 366, 366, 366,1202 397, 846, 402, 334, 366, 366, 366, 366, 366, 366, 1207 1203 368, 397, 368, 402, 404, 368, 368, 368, 368, 368, 1208 1204 368, 348, 367, 367, 367, 367, 367, 367, 370, 370, 1209 1205 370, 370, 370, 370, 400, 398, 404, 435, 367, 376, 1210 1206 1211 84 6, 367, 367, 371, 371, 371, 371, 371, 371, 376,1207 843, 367, 367, 371, 371, 371, 371, 371, 371, 376, 1212 1208 379, 398, 377, 400, 367, 378, 379, 435, 383, 367, 1213 1209 370, 367, 377, 412, 367, 376, 367, 372, 372, 372, … … 1236 1232 512, 514, 519, 516, 520, 519, 486, 492, 492, 492, 1237 1233 492, 492, 492, 517, 514, 512, 516, 521, 517, 525, 1238 518, 522, 523, 492, 525, 84 3, 492, 492, 493, 842,1234 518, 522, 523, 492, 525, 842, 492, 492, 493, 841, 1239 1235 493, 518, 521, 493, 493, 493, 493, 493, 493, 492, 1240 1236 522, 524, 526, 523, 492, 527, 492, 529, 530, 492, … … 1260 1256 635, 645, 640, 650, 629, 647, 631, 696, 693, 651, 1261 1257 634, 640, 650, 659, 637, 644, 651, 638, 658, 662, 1262 639, 661, 647, 659, 697, 84 1, 840, 658, 645, 693,1258 639, 661, 647, 659, 697, 840, 839, 658, 645, 693, 1263 1259 661, 697, 699, 696, 662, 680, 680, 680, 680, 680, 1264 1260 680, 684, 684, 684, 684, 684, 684, 694, 702, 705, … … 1281 1277 798, 824, 822, 821, 826, 806, 827, 826, 830, 833, 1282 1278 834, 830, 833, 835, 847, 825, 844, 847, 848, 834, 1283 858, 825, 835, 827, 845, 844, 849, 851, 848, 845, 1284 851, 849, 852, 853, 859, 852, 853, 861, 860, 862, 1285 858, 860, 862, 863, 866, 870, 863, 861, 869, 859, 1286 873, 874, 875, 877, 876, 878, 839, 879, 838, 873, 1287 1288 870, 837, 836, 832, 874, 831, 866, 879, 829, 869, 1289 828, 877, 820, 819, 875, 876, 818, 878, 883, 883, 1290 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 1291 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 1292 884, 884, 884, 884, 885, 885, 885, 885, 885, 885, 1293 885, 885, 885, 885, 885, 885, 885, 886, 817, 816, 1294 886, 815, 886, 886, 886, 886, 886, 887, 814, 813, 1295 812, 887, 887, 887, 887, 887, 887, 888, 888, 888, 1296 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 1297 889, 811, 810, 889, 809, 889, 889, 889, 889, 889, 1298 1299 890, 808, 890, 890, 807, 890, 890, 890, 890, 890, 1300 890, 800, 890, 891, 796, 789, 891, 891, 891, 891, 1301 891, 891, 891, 891, 787, 891, 892, 892, 892, 892, 1302 892, 892, 892, 892, 892, 892, 892, 892, 892, 893, 1303 893, 786, 893, 785, 784, 783, 893, 894, 782, 781, 1304 894, 780, 894, 894, 894, 894, 894, 895, 779, 895, 1305 778, 777, 776, 895, 896, 775, 896, 774, 772, 771, 1306 896, 897, 770, 897, 769, 762, 760, 897, 898, 748, 1307 898, 747, 746, 745, 898, 899, 744, 899, 743, 742, 1308 741, 899, 900, 740, 900, 737, 736, 735, 900, 901, 1309 1310 729, 901, 725, 724, 722, 901, 902, 721, 902, 719, 1311 703, 695, 902, 903, 692, 903, 687, 685, 681, 903, 1312 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1313 904, 904, 904, 905, 671, 905, 906, 906, 667, 906, 1314 906, 906, 665, 906, 907, 907, 663, 907, 908, 660, 1315 908, 657, 656, 655, 908, 909, 654, 909, 653, 652, 1316 649, 909, 910, 648, 910, 646, 643, 642, 910, 911, 1317 641, 911, 912, 636, 912, 609, 605, 603, 912, 913, 1318 601, 913, 914, 599, 597, 914, 591, 914, 914, 914, 1319 914, 914, 915, 915, 915, 915, 915, 915, 915, 915, 1320 1321 915, 915, 915, 915, 915, 916, 916, 916, 916, 916, 1322 916, 916, 916, 916, 916, 916, 916, 916, 917, 585, 1323 917, 583, 581, 579, 917, 918, 577, 918, 575, 573, 1324 571, 918, 919, 570, 919, 569, 566, 557, 919, 920, 1325 551, 920, 921, 548, 921, 543, 537, 534, 921, 922, 1326 511, 922, 923, 507, 923, 505, 503, 501, 923, 924, 1327 499, 924, 925, 497, 925, 496, 495, 494, 925, 926, 1328 483, 926, 927, 480, 927, 478, 477, 476, 927, 928, 1329 474, 928, 929, 472, 929, 469, 467, 465, 929, 930, 1330 463, 930, 931, 459, 931, 444, 442, 434, 931, 932, 1331 1332 432, 932, 933, 424, 933, 422, 933, 420, 933, 934, 1333 394, 934, 392, 934, 390, 934, 935, 935, 388, 935, 1334 935, 935, 387, 935, 936, 386, 936, 373, 363, 361, 1335 936, 937, 360, 937, 356, 354, 352, 937, 938, 350, 1336 938, 346, 344, 343, 938, 939, 342, 939, 940, 332, 1337 940, 319, 296, 275, 940, 941, 273, 941, 942, 271, 1338 942, 270, 269, 267, 942, 943, 266, 943, 944, 261, 1339 944, 257, 256, 252, 944, 945, 249, 945, 946, 248, 1340 237, 946, 236, 946, 946, 946, 946, 946, 947, 947, 1341 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 1342 1343 947, 948, 229, 948, 228, 225, 215, 948, 949, 213, 1344 949, 950, 212, 950, 211, 205, 204, 950, 951, 202, 1345 951, 952, 197, 952, 177, 148, 146, 952, 953, 145, 1346 953, 954, 139, 954, 137, 135, 127, 954, 955, 124, 1347 955, 956, 123, 956, 119, 100, 97, 956, 957, 94, 1348 957, 958, 92, 958, 85, 71, 69, 958, 959, 65, 1349 959, 960, 36, 960, 33, 18, 11, 960, 961, 4, 1350 961, 3, 0, 0, 961, 962, 0, 962, 963, 0, 1351 963, 0, 0, 0, 963, 964, 0, 964, 965, 0, 1352 965, 0, 965, 0, 965, 966, 0, 966, 0, 0, 1353 1354 0, 966, 967, 0, 967, 0, 0, 0, 967, 968, 1355 0, 968, 969, 0, 969, 0, 0, 0, 969, 970, 1356 0, 970, 971, 0, 971, 0, 0, 0, 971, 972, 1357 0, 972, 973, 0, 973, 0, 0, 0, 973, 974, 1358 0, 974, 975, 0, 975, 0, 0, 0, 975, 976, 1359 0, 976, 977, 0, 977, 0, 0, 0, 977, 978, 1360 0, 978, 979, 0, 0, 979, 0, 979, 979, 979, 1361 979, 979, 980, 980, 980, 980, 980, 980, 980, 980, 1362 980, 980, 980, 980, 980, 981, 0, 981, 0, 0, 1363 0, 981, 982, 0, 982, 983, 0, 983, 0, 0, 1364 1365 0, 983, 984, 0, 984, 985, 0, 985, 0, 0, 1366 0, 985, 986, 0, 986, 987, 0, 987, 0, 0, 1367 0, 987, 988, 0, 988, 989, 0, 989, 0, 0, 1368 0, 989, 990, 0, 990, 991, 0, 991, 0, 0, 1369 0, 991, 992, 0, 992, 993, 0, 993, 0, 0, 1370 0, 993, 994, 0, 994, 995, 0, 995, 0, 0, 1371 0, 995, 996, 0, 996, 997, 0, 997, 0, 0, 1372 0, 997, 998, 0, 998, 0, 0, 0, 998, 999, 1373 0, 999, 1000, 0, 1000, 0, 0, 0, 1000, 1001, 1374 0, 1001, 1002, 0, 1002, 0, 0, 0, 1002, 1003, 1375 1376 0, 1003, 1004, 0, 1004, 0, 0, 0, 1004, 1005, 1377 0, 1005, 1006, 0, 1006, 1007, 0, 1007, 1008, 0, 1378 0, 1008, 0, 1008, 1008, 1008, 1008, 1008, 1009, 0, 1379 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1380 1010, 1010, 1010, 1010, 1011, 0, 1011, 0, 0, 0, 1381 1011, 1012, 0, 1012, 1013, 0, 1013, 0, 0, 0, 1382 1013, 1014, 0, 1014, 1015, 0, 1015, 1016, 0, 1016, 1383 1017, 0, 0, 1017, 0, 1017, 1017, 1017, 1017, 1017, 1384 1018, 0, 1018, 1019, 0, 1019, 1020, 0, 1020, 1021, 1385 0, 1021, 1022, 0, 1022, 1023, 0, 1023, 1024, 0, 1386 1387 1024, 1025, 0, 1025, 0, 0, 0, 1025, 1026, 0, 1388 1026, 1027, 0, 1027, 0, 0, 0, 1027, 1028, 0, 1389 1028, 1029, 0, 1029, 1030, 0, 1030, 1031, 0, 1031, 1390 1032, 0, 1032, 0, 0, 0, 1032, 1033, 0, 0, 1391 1033, 0, 1033, 1033, 1033, 1033, 1033, 1034, 0, 1034, 1392 1035, 0, 1035, 1036, 0, 1036, 1037, 0, 1037, 0, 1393 0, 0, 1037, 1038, 0, 1038, 0, 0, 0, 1038, 1394 1039, 0, 1039, 0, 0, 0, 1039, 1040, 0, 1040, 1395 1041, 0, 1041, 0, 0, 0, 1041, 1042, 0, 1042, 1396 0, 0, 0, 1042, 1043, 0, 1043, 0, 0, 0, 1397 1398 1043, 1044, 0, 1044, 0, 0, 0, 1044, 1045, 0, 1399 1045, 0, 0, 0, 1045, 1046, 0, 1046, 0, 0, 1400 0, 1046, 1047, 0, 1047, 0, 0, 0, 1047, 1048, 1401 0, 1048, 0, 0, 0, 1048, 1049, 0, 1049, 0, 1402 0, 0, 1049, 1050, 0, 1050, 0, 0, 0, 1050, 1403 1051, 0, 1051, 0, 0, 0, 1051, 1052, 0, 1052, 1404 0, 0, 0, 1052, 1053, 0, 1053, 0, 0, 0, 1405 1053, 1054, 0, 1054, 0, 0, 0, 1054, 1055, 0, 1406 1055, 0, 0, 0, 1055, 1056, 0, 1056, 0, 0, 1407 0, 1056, 882, 882, 882, 882, 882, 882, 882, 882, 1408 1409 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1410 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1411 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1412 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1413 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1414 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1415 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1416 882, 882, 882, 882, 882, 882, 882 1279 857, 845, 835, 827, 850, 844, 845, 850, 848, 851, 1280 852, 858, 851, 852, 859, 860, 861, 859, 864, 861, 1281 857, 867, 870, 871, 873, 860, 858, 838, 872, 837, 1282 836, 870, 832, 831, 873, 829, 828, 820, 819, 818, 1283 1284 864, 817, 867, 816, 815, 871, 872, 876, 876, 876, 1285 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1286 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 1287 877, 877, 877, 878, 878, 878, 878, 878, 878, 878, 1288 878, 878, 878, 878, 878, 878, 879, 814, 813, 879, 1289 812, 879, 879, 879, 879, 879, 880, 811, 810, 809, 1290 880, 880, 880, 880, 880, 880, 881, 881, 881, 881, 1291 881, 881, 881, 881, 881, 881, 881, 881, 881, 882, 1292 808, 807, 882, 800, 882, 882, 882, 882, 882, 883, 1293 796, 883, 883, 789, 883, 883, 883, 883, 883, 883, 1294 1295 787, 883, 884, 786, 785, 884, 884, 884, 884, 884, 1296 884, 884, 884, 784, 884, 885, 885, 885, 885, 885, 1297 885, 885, 885, 885, 885, 885, 885, 885, 886, 886, 1298 783, 886, 782, 781, 780, 886, 887, 779, 778, 887, 1299 777, 887, 887, 887, 887, 887, 888, 776, 888, 775, 1300 774, 772, 888, 889, 771, 889, 770, 769, 762, 889, 1301 890, 760, 890, 748, 747, 746, 890, 891, 745, 891, 1302 744, 743, 742, 891, 892, 741, 892, 740, 737, 736, 1303 892, 893, 735, 893, 729, 725, 724, 893, 894, 722, 1304 894, 721, 719, 703, 894, 895, 695, 895, 692, 687, 1305 1306 685, 895, 896, 681, 896, 671, 667, 665, 896, 897, 1307 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1308 897, 897, 898, 663, 898, 899, 899, 660, 899, 899, 1309 899, 657, 899, 900, 900, 656, 900, 901, 655, 901, 1310 654, 653, 652, 901, 902, 649, 902, 648, 646, 643, 1311 902, 903, 642, 903, 641, 636, 609, 903, 904, 605, 1312 904, 905, 603, 905, 601, 599, 597, 905, 906, 591, 1313 906, 907, 585, 583, 907, 581, 907, 907, 907, 907, 1314 907, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1315 908, 908, 908, 908, 909, 909, 909, 909, 909, 909, 1316 1317 909, 909, 909, 909, 909, 909, 909, 910, 579, 910, 1318 577, 575, 573, 910, 911, 571, 911, 570, 569, 566, 1319 911, 912, 557, 912, 551, 548, 543, 912, 913, 537, 1320 913, 914, 534, 914, 511, 507, 505, 914, 915, 503, 1321 915, 916, 501, 916, 499, 497, 496, 916, 917, 495, 1322 917, 918, 494, 918, 483, 480, 478, 918, 919, 477, 1323 919, 920, 476, 920, 474, 472, 469, 920, 921, 467, 1324 921, 922, 465, 922, 463, 459, 444, 922, 923, 442, 1325 923, 924, 434, 924, 432, 424, 422, 924, 925, 420, 1326 925, 926, 394, 926, 392, 926, 390, 926, 927, 388, 1327 1328 927, 387, 927, 386, 927, 928, 928, 373, 928, 928, 1329 928, 363, 928, 929, 361, 929, 360, 356, 354, 929, 1330 930, 352, 930, 350, 346, 344, 930, 931, 343, 931, 1331 342, 332, 319, 931, 932, 296, 932, 933, 275, 933, 1332 273, 271, 270, 933, 934, 269, 934, 935, 267, 935, 1333 266, 261, 257, 935, 936, 256, 936, 937, 252, 937, 1334 249, 248, 237, 937, 938, 236, 938, 939, 229, 228, 1335 939, 225, 939, 939, 939, 939, 939, 940, 940, 940, 1336 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 1337 941, 215, 941, 213, 212, 211, 941, 942, 205, 942, 1338 1339 943, 204, 943, 202, 197, 177, 943, 944, 148, 944, 1340 945, 146, 945, 145, 139, 137, 945, 946, 135, 946, 1341 947, 127, 947, 124, 123, 119, 947, 948, 100, 948, 1342 949, 97, 949, 94, 92, 85, 949, 950, 71, 950, 1343 951, 69, 951, 65, 36, 33, 951, 952, 18, 952, 1344 953, 11, 953, 4, 3, 0, 953, 954, 0, 954, 1345 0, 0, 0, 954, 955, 0, 955, 956, 0, 956, 1346 0, 0, 0, 956, 957, 0, 957, 958, 0, 958, 1347 0, 958, 0, 958, 959, 0, 959, 0, 0, 0, 1348 959, 960, 0, 960, 0, 0, 0, 960, 961, 0, 1349 1350 961, 962, 0, 962, 0, 0, 0, 962, 963, 0, 1351 963, 964, 0, 964, 0, 0, 0, 964, 965, 0, 1352 965, 966, 0, 966, 0, 0, 0, 966, 967, 0, 1353 967, 968, 0, 968, 0, 0, 0, 968, 969, 0, 1354 969, 970, 0, 970, 0, 0, 0, 970, 971, 0, 1355 971, 972, 0, 0, 972, 0, 972, 972, 972, 972, 1356 972, 973, 973, 973, 973, 973, 973, 973, 973, 973, 1357 973, 973, 973, 973, 974, 0, 974, 0, 0, 0, 1358 974, 975, 0, 975, 976, 0, 976, 0, 0, 0, 1359 976, 977, 0, 977, 978, 0, 978, 0, 0, 0, 1360 1361 978, 979, 0, 979, 980, 0, 980, 0, 0, 0, 1362 980, 981, 0, 981, 982, 0, 982, 0, 0, 0, 1363 982, 983, 0, 983, 984, 0, 984, 0, 0, 0, 1364 984, 985, 0, 985, 986, 0, 986, 0, 0, 0, 1365 986, 987, 0, 987, 988, 0, 988, 0, 0, 0, 1366 988, 989, 0, 989, 990, 0, 990, 0, 0, 0, 1367 990, 991, 0, 991, 0, 0, 0, 991, 992, 0, 1368 992, 993, 0, 993, 0, 0, 0, 993, 994, 0, 1369 994, 995, 0, 995, 0, 0, 0, 995, 996, 0, 1370 996, 997, 0, 997, 0, 0, 0, 997, 998, 0, 1371 1372 998, 999, 0, 999, 1000, 0, 1000, 1001, 0, 0, 1373 1001, 0, 1001, 1001, 1001, 1001, 1001, 1002, 0, 1002, 1374 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1375 1003, 1003, 1003, 1004, 0, 1004, 0, 0, 0, 1004, 1376 1005, 0, 1005, 1006, 0, 1006, 0, 0, 0, 1006, 1377 1007, 0, 1007, 1008, 0, 1008, 1009, 0, 1009, 1010, 1378 0, 0, 1010, 0, 1010, 1010, 1010, 1010, 1010, 1011, 1379 0, 1011, 1012, 0, 1012, 1013, 0, 1013, 1014, 0, 1380 1014, 1015, 0, 1015, 1016, 0, 1016, 1017, 0, 1017, 1381 1018, 0, 1018, 0, 0, 0, 1018, 1019, 0, 1019, 1382 1383 1020, 0, 1020, 0, 0, 0, 1020, 1021, 0, 1021, 1384 1022, 0, 1022, 1023, 0, 1023, 1024, 0, 1024, 1025, 1385 0, 1025, 0, 0, 0, 1025, 1026, 0, 0, 1026, 1386 0, 1026, 1026, 1026, 1026, 1026, 1027, 0, 1027, 1028, 1387 0, 1028, 1029, 0, 1029, 1030, 0, 1030, 0, 0, 1388 0, 1030, 1031, 0, 1031, 0, 0, 0, 1031, 1032, 1389 0, 1032, 0, 0, 0, 1032, 1033, 0, 1033, 1034, 1390 0, 1034, 0, 0, 0, 1034, 1035, 0, 1035, 0, 1391 0, 0, 1035, 1036, 0, 1036, 0, 0, 0, 1036, 1392 1037, 0, 1037, 0, 0, 0, 1037, 1038, 0, 1038, 1393 1394 0, 0, 0, 1038, 1039, 0, 1039, 0, 0, 0, 1395 1039, 1040, 0, 1040, 0, 0, 0, 1040, 1041, 0, 1396 1041, 0, 0, 0, 1041, 1042, 0, 1042, 0, 0, 1397 0, 1042, 1043, 0, 1043, 0, 0, 0, 1043, 1044, 1398 0, 1044, 0, 0, 0, 1044, 1045, 0, 1045, 0, 1399 0, 0, 1045, 1046, 0, 1046, 0, 0, 0, 1046, 1400 1047, 0, 1047, 0, 0, 0, 1047, 1048, 0, 1048, 1401 0, 0, 0, 1048, 1049, 0, 1049, 0, 0, 0, 1402 1049, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1403 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1404 1405 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1406 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1407 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1408 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1409 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1410 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1411 875, 875, 875, 875, 875, 875 1417 1412 } ; 1418 1413 1419 1414 /* Table of booleans, true if rule could match eol. */ 1420 static yyconst flex_int32_t yy_rule_can_match_eol[18 1] =1415 static yyconst flex_int32_t yy_rule_can_match_eol[180] = 1421 1416 { 0, 1422 1417 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1425 1420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1426 1421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,1428 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1423 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1429 1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1430 1425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1431 0,};1426 }; 1432 1427 1433 1428 static yy_state_type yy_last_accepting_state; … … 1457 1452 * Created On : Sat Sep 22 08:58:10 2001 1458 1453 * Last Modified By : Peter A. Buhr 1459 * Last Modified On : T hu Feb 25 16:18:14 20161460 * Update Count : 42 71454 * Last Modified On : Tue Feb 2 15:06:54 2016 1455 * Update Count : 426 1461 1456 */ 1462 1457 #line 20 "lex.ll" … … 1516 1511 1517 1512 1518 #line 151 9"Parser/lex.cc"1513 #line 1514 "Parser/lex.cc" 1519 1514 1520 1515 #define INITIAL 0 … … 1711 1706 1712 1707 /* line directives */ 1713 #line 17 14"Parser/lex.cc"1708 #line 1709 "Parser/lex.cc" 1714 1709 1715 1710 if ( !(yy_init) ) … … 1765 1760 { 1766 1761 yy_current_state = (int) yy_def[yy_current_state]; 1767 if ( yy_current_state >= 8 83)1762 if ( yy_current_state >= 876 ) 1768 1763 yy_c = yy_meta[(unsigned int) yy_c]; 1769 1764 } … … 1771 1766 ++yy_cp; 1772 1767 } 1773 while ( yy_base[yy_current_state] != 27 93);1768 while ( yy_base[yy_current_state] != 2782 ); 1774 1769 1775 1770 yy_find_action: … … 2313 2308 YY_RULE_SETUP 2314 2309 #line 264 "lex.ll" 2315 { KEYWORD_RETURN(V ALIST); } // GCC2310 { KEYWORD_RETURN(VOID); } 2316 2311 YY_BREAK 2317 2312 case 97: 2318 2313 YY_RULE_SETUP 2319 2314 #line 265 "lex.ll" 2320 { KEYWORD_RETURN(VO ID); }2315 { KEYWORD_RETURN(VOLATILE); } 2321 2316 YY_BREAK 2322 2317 case 98: 2323 2318 YY_RULE_SETUP 2324 2319 #line 266 "lex.ll" 2325 { KEYWORD_RETURN(VOLATILE); } 2320 { KEYWORD_RETURN(VOLATILE); } // GCC 2326 2321 YY_BREAK 2327 2322 case 99: … … 2333 2328 YY_RULE_SETUP 2334 2329 #line 268 "lex.ll" 2335 { KEYWORD_RETURN(VOLATILE); } // GCC 2336 YY_BREAK 2330 { KEYWORD_RETURN(WHILE); } 2331 YY_BREAK 2332 /* identifier */ 2337 2333 case 101: 2338 2334 YY_RULE_SETUP 2339 #line 269 "lex.ll" 2340 { KEYWORD_RETURN(WHILE); } 2341 YY_BREAK 2342 /* identifier */ 2335 #line 271 "lex.ll" 2336 { IDENTIFIER_RETURN(); } 2337 YY_BREAK 2343 2338 case 102: 2344 2339 YY_RULE_SETUP 2345 2340 #line 272 "lex.ll" 2341 { ATTRIBUTE_RETURN(); } 2342 YY_BREAK 2343 case 103: 2344 YY_RULE_SETUP 2345 #line 273 "lex.ll" 2346 { BEGIN BKQUOTE; } 2347 YY_BREAK 2348 case 104: 2349 YY_RULE_SETUP 2350 #line 274 "lex.ll" 2346 2351 { IDENTIFIER_RETURN(); } 2347 2352 YY_BREAK 2348 case 103:2349 YY_RULE_SETUP2350 #line 273 "lex.ll"2351 { ATTRIBUTE_RETURN(); }2352 YY_BREAK2353 case 104:2354 YY_RULE_SETUP2355 #line 274 "lex.ll"2356 { BEGIN BKQUOTE; }2357 YY_BREAK2358 2353 case 105: 2359 2354 YY_RULE_SETUP 2360 2355 #line 275 "lex.ll" 2361 { IDENTIFIER_RETURN(); } 2362 YY_BREAK 2356 { BEGIN 0; } 2357 YY_BREAK 2358 /* numeric constants */ 2363 2359 case 106: 2364 2360 YY_RULE_SETUP 2365 #line 276 "lex.ll" 2366 { BEGIN 0; } 2367 YY_BREAK 2368 /* numeric constants */ 2361 #line 278 "lex.ll" 2362 { NUMERIC_RETURN(ZERO); } // CFA 2363 YY_BREAK 2369 2364 case 107: 2370 2365 YY_RULE_SETUP 2371 2366 #line 279 "lex.ll" 2372 { NUMERIC_RETURN( ZERO); } // CFA2367 { NUMERIC_RETURN(ONE); } // CFA 2373 2368 YY_BREAK 2374 2369 case 108: 2375 2370 YY_RULE_SETUP 2376 2371 #line 280 "lex.ll" 2377 { NUMERIC_RETURN( ONE); } // CFA2372 { NUMERIC_RETURN(INTEGERconstant); } 2378 2373 YY_BREAK 2379 2374 case 109: … … 2390 2385 YY_RULE_SETUP 2391 2386 #line 283 "lex.ll" 2392 { NUMERIC_RETURN( INTEGERconstant); }2387 { NUMERIC_RETURN(FLOATINGconstant); } 2393 2388 YY_BREAK 2394 2389 case 112: … … 2397 2392 { NUMERIC_RETURN(FLOATINGconstant); } 2398 2393 YY_BREAK 2394 /* character constant, allows empty value */ 2399 2395 case 113: 2400 2396 YY_RULE_SETUP 2401 #line 285 "lex.ll" 2402 { NUMERIC_RETURN(FLOATINGconstant); } 2403 YY_BREAK 2404 /* character constant, allows empty value */ 2397 #line 287 "lex.ll" 2398 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2399 YY_BREAK 2405 2400 case 114: 2406 2401 YY_RULE_SETUP 2407 2402 #line 288 "lex.ll" 2408 { BEGIN QUOTE; rm_underscore(); strtext = new std::string;*strtext += std::string( yytext ); }2403 { *strtext += std::string( yytext ); } 2409 2404 YY_BREAK 2410 2405 case 115: 2406 /* rule 115 can match eol */ 2411 2407 YY_RULE_SETUP 2412 2408 #line 289 "lex.ll" 2413 { *strtext += std::string( yytext ); }2414 YY_BREAK2415 case 116:2416 /* rule 116 can match eol */2417 YY_RULE_SETUP2418 #line 290 "lex.ll"2419 2409 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2420 2410 YY_BREAK 2421 2411 /* ' stop highlighting */ 2422 2412 /* string constant */ 2413 case 116: 2414 YY_RULE_SETUP 2415 #line 293 "lex.ll" 2416 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2417 YY_BREAK 2423 2418 case 117: 2424 2419 YY_RULE_SETUP 2425 2420 #line 294 "lex.ll" 2426 { BEGIN STRING; rm_underscore(); strtext = new std::string;*strtext += std::string( yytext ); }2421 { *strtext += std::string( yytext ); } 2427 2422 YY_BREAK 2428 2423 case 118: 2424 /* rule 118 can match eol */ 2429 2425 YY_RULE_SETUP 2430 2426 #line 295 "lex.ll" 2431 { *strtext += std::string( yytext ); }2432 YY_BREAK2433 case 119:2434 /* rule 119 can match eol */2435 YY_RULE_SETUP2436 #line 296 "lex.ll"2437 2427 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2438 2428 YY_BREAK 2439 2429 /* " stop highlighting */ 2440 2430 /* common character/string constant */ 2431 case 119: 2432 YY_RULE_SETUP 2433 #line 299 "lex.ll" 2434 { rm_underscore(); *strtext += std::string( yytext ); } 2435 YY_BREAK 2441 2436 case 120: 2437 /* rule 120 can match eol */ 2442 2438 YY_RULE_SETUP 2443 2439 #line 300 "lex.ll" 2444 { rm_underscore(); *strtext += std::string( yytext ); }2440 {} // continuation (ALSO HANDLED BY CPP) 2445 2441 YY_BREAK 2446 2442 case 121: 2447 /* rule 121 can match eol */2448 2443 YY_RULE_SETUP 2449 2444 #line 301 "lex.ll" 2450 {} // continuation (ALSO HANDLED BY CPP) 2451 YY_BREAK 2445 { *strtext += std::string( yytext ); } // unknown escape character 2446 YY_BREAK 2447 /* punctuation */ 2452 2448 case 122: 2453 2449 YY_RULE_SETUP 2454 #line 302 "lex.ll" 2455 { *strtext += std::string( yytext ); } // unknown escape character 2456 YY_BREAK 2457 /* punctuation */ 2450 #line 304 "lex.ll" 2451 { ASCIIOP_RETURN(); } 2452 YY_BREAK 2458 2453 case 123: 2459 2454 YY_RULE_SETUP … … 2484 2479 YY_RULE_SETUP 2485 2480 #line 310 "lex.ll" 2481 { ASCIIOP_RETURN(); } // also operator 2482 YY_BREAK 2483 case 129: 2484 YY_RULE_SETUP 2485 #line 311 "lex.ll" 2486 2486 { ASCIIOP_RETURN(); } 2487 YY_BREAK2488 case 129:2489 YY_RULE_SETUP2490 #line 311 "lex.ll"2491 { ASCIIOP_RETURN(); } // also operator2492 2487 YY_BREAK 2493 2488 case 130: … … 2499 2494 YY_RULE_SETUP 2500 2495 #line 313 "lex.ll" 2496 { ASCIIOP_RETURN(); } // also operator 2497 YY_BREAK 2498 case 132: 2499 YY_RULE_SETUP 2500 #line 314 "lex.ll" 2501 { NAMEDOP_RETURN(ELLIPSIS); } 2502 YY_BREAK 2503 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2504 case 133: 2505 YY_RULE_SETUP 2506 #line 317 "lex.ll" 2507 { RETURN_VAL('['); } 2508 YY_BREAK 2509 case 134: 2510 YY_RULE_SETUP 2511 #line 318 "lex.ll" 2512 { RETURN_VAL(']'); } 2513 YY_BREAK 2514 case 135: 2515 YY_RULE_SETUP 2516 #line 319 "lex.ll" 2517 { RETURN_VAL('{'); } 2518 YY_BREAK 2519 case 136: 2520 YY_RULE_SETUP 2521 #line 320 "lex.ll" 2522 { RETURN_VAL('}'); } 2523 YY_BREAK 2524 /* operators */ 2525 case 137: 2526 YY_RULE_SETUP 2527 #line 323 "lex.ll" 2501 2528 { ASCIIOP_RETURN(); } 2502 2529 YY_BREAK 2503 case 132:2504 YY_RULE_SETUP2505 #line 314 "lex.ll"2506 { ASCIIOP_RETURN(); } // also operator2507 YY_BREAK2508 case 133:2509 YY_RULE_SETUP2510 #line 315 "lex.ll"2511 { NAMEDOP_RETURN(ELLIPSIS); }2512 YY_BREAK2513 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */2514 case 134:2515 YY_RULE_SETUP2516 #line 318 "lex.ll"2517 { RETURN_VAL('['); }2518 YY_BREAK2519 case 135:2520 YY_RULE_SETUP2521 #line 319 "lex.ll"2522 { RETURN_VAL(']'); }2523 YY_BREAK2524 case 136:2525 YY_RULE_SETUP2526 #line 320 "lex.ll"2527 { RETURN_VAL('{'); }2528 YY_BREAK2529 case 137:2530 YY_RULE_SETUP2531 #line 321 "lex.ll"2532 { RETURN_VAL('}'); }2533 YY_BREAK2534 /* operators */2535 2530 case 138: 2536 2531 YY_RULE_SETUP … … 2600 2595 case 151: 2601 2596 YY_RULE_SETUP 2602 #line 33 7"lex.ll"2603 { ASCIIOP_RETURN(); }2597 #line 338 "lex.ll" 2598 { NAMEDOP_RETURN(ICR); } 2604 2599 YY_BREAK 2605 2600 case 152: 2606 2601 YY_RULE_SETUP 2607 2602 #line 339 "lex.ll" 2608 { NAMEDOP_RETURN( ICR); }2603 { NAMEDOP_RETURN(DECR); } 2609 2604 YY_BREAK 2610 2605 case 153: 2611 2606 YY_RULE_SETUP 2612 2607 #line 340 "lex.ll" 2613 { NAMEDOP_RETURN( DECR); }2608 { NAMEDOP_RETURN(EQ); } 2614 2609 YY_BREAK 2615 2610 case 154: 2616 2611 YY_RULE_SETUP 2617 2612 #line 341 "lex.ll" 2618 { NAMEDOP_RETURN( EQ); }2613 { NAMEDOP_RETURN(NE); } 2619 2614 YY_BREAK 2620 2615 case 155: 2621 2616 YY_RULE_SETUP 2622 2617 #line 342 "lex.ll" 2623 { NAMEDOP_RETURN( NE); }2618 { NAMEDOP_RETURN(LS); } 2624 2619 YY_BREAK 2625 2620 case 156: 2626 2621 YY_RULE_SETUP 2627 2622 #line 343 "lex.ll" 2628 { NAMEDOP_RETURN( LS); }2623 { NAMEDOP_RETURN(RS); } 2629 2624 YY_BREAK 2630 2625 case 157: 2631 2626 YY_RULE_SETUP 2632 2627 #line 344 "lex.ll" 2633 { NAMEDOP_RETURN( RS); }2628 { NAMEDOP_RETURN(LE); } 2634 2629 YY_BREAK 2635 2630 case 158: 2636 2631 YY_RULE_SETUP 2637 2632 #line 345 "lex.ll" 2638 { NAMEDOP_RETURN( LE); }2633 { NAMEDOP_RETURN(GE); } 2639 2634 YY_BREAK 2640 2635 case 159: 2641 2636 YY_RULE_SETUP 2642 2637 #line 346 "lex.ll" 2643 { NAMEDOP_RETURN( GE); }2638 { NAMEDOP_RETURN(ANDAND); } 2644 2639 YY_BREAK 2645 2640 case 160: 2646 2641 YY_RULE_SETUP 2647 2642 #line 347 "lex.ll" 2648 { NAMEDOP_RETURN( ANDAND); }2643 { NAMEDOP_RETURN(OROR); } 2649 2644 YY_BREAK 2650 2645 case 161: 2651 2646 YY_RULE_SETUP 2652 2647 #line 348 "lex.ll" 2653 { NAMEDOP_RETURN( OROR); }2648 { NAMEDOP_RETURN(ARROW); } 2654 2649 YY_BREAK 2655 2650 case 162: 2656 2651 YY_RULE_SETUP 2657 2652 #line 349 "lex.ll" 2658 { NAMEDOP_RETURN( ARROW); }2653 { NAMEDOP_RETURN(PLUSassign); } 2659 2654 YY_BREAK 2660 2655 case 163: 2661 2656 YY_RULE_SETUP 2662 2657 #line 350 "lex.ll" 2663 { NAMEDOP_RETURN( PLUSassign); }2658 { NAMEDOP_RETURN(MINUSassign); } 2664 2659 YY_BREAK 2665 2660 case 164: 2666 2661 YY_RULE_SETUP 2667 2662 #line 351 "lex.ll" 2668 { NAMEDOP_RETURN(M INUSassign); }2663 { NAMEDOP_RETURN(MULTassign); } 2669 2664 YY_BREAK 2670 2665 case 165: 2671 2666 YY_RULE_SETUP 2672 2667 #line 352 "lex.ll" 2673 { NAMEDOP_RETURN( MULTassign); }2668 { NAMEDOP_RETURN(DIVassign); } 2674 2669 YY_BREAK 2675 2670 case 166: 2676 2671 YY_RULE_SETUP 2677 2672 #line 353 "lex.ll" 2678 { NAMEDOP_RETURN( DIVassign); }2673 { NAMEDOP_RETURN(MODassign); } 2679 2674 YY_BREAK 2680 2675 case 167: 2681 2676 YY_RULE_SETUP 2682 2677 #line 354 "lex.ll" 2683 { NAMEDOP_RETURN( MODassign); }2678 { NAMEDOP_RETURN(ANDassign); } 2684 2679 YY_BREAK 2685 2680 case 168: 2686 2681 YY_RULE_SETUP 2687 2682 #line 355 "lex.ll" 2688 { NAMEDOP_RETURN( ANDassign); }2683 { NAMEDOP_RETURN(ORassign); } 2689 2684 YY_BREAK 2690 2685 case 169: 2691 2686 YY_RULE_SETUP 2692 2687 #line 356 "lex.ll" 2693 { NAMEDOP_RETURN( ORassign); }2688 { NAMEDOP_RETURN(ERassign); } 2694 2689 YY_BREAK 2695 2690 case 170: 2696 2691 YY_RULE_SETUP 2697 2692 #line 357 "lex.ll" 2698 { NAMEDOP_RETURN( ERassign); }2693 { NAMEDOP_RETURN(LSassign); } 2699 2694 YY_BREAK 2700 2695 case 171: 2701 2696 YY_RULE_SETUP 2702 2697 #line 358 "lex.ll" 2703 { NAMEDOP_RETURN( LSassign); }2698 { NAMEDOP_RETURN(RSassign); } 2704 2699 YY_BREAK 2705 2700 case 172: 2706 2701 YY_RULE_SETUP 2707 #line 359 "lex.ll" 2708 { NAMEDOP_RETURN(RSassign); } 2709 YY_BREAK 2702 #line 360 "lex.ll" 2703 { NAMEDOP_RETURN(ATassign); } 2704 YY_BREAK 2705 /* CFA, operator identifier */ 2710 2706 case 173: 2711 2707 YY_RULE_SETUP 2712 #line 361 "lex.ll" 2713 { NAMEDOP_RETURN(ATassign); } 2714 YY_BREAK 2715 /* CFA, operator identifier */ 2708 #line 363 "lex.ll" 2709 { IDENTIFIER_RETURN(); } // unary 2710 YY_BREAK 2716 2711 case 174: 2717 2712 YY_RULE_SETUP 2718 2713 #line 364 "lex.ll" 2719 { IDENTIFIER_RETURN(); } // unary2714 { IDENTIFIER_RETURN(); } 2720 2715 YY_BREAK 2721 2716 case 175: … … 2727 2722 YY_RULE_SETUP 2728 2723 #line 366 "lex.ll" 2729 { IDENTIFIER_RETURN(); }2730 YY_BREAK2731 case 177:2732 YY_RULE_SETUP2733 #line 367 "lex.ll"2734 2724 { IDENTIFIER_RETURN(); } // binary 2735 2725 YY_BREAK … … 2760 2750 an argument list. 2761 2751 */ 2762 case 17 8:2763 YY_RULE_SETUP 2764 #line 39 4"lex.ll"2752 case 177: 2753 YY_RULE_SETUP 2754 #line 393 "lex.ll" 2765 2755 { 2766 2756 // 1 or 2 character unary operator ? … … 2775 2765 YY_BREAK 2776 2766 /* unknown characters */ 2767 case 178: 2768 YY_RULE_SETUP 2769 #line 405 "lex.ll" 2770 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2771 YY_BREAK 2777 2772 case 179: 2778 2773 YY_RULE_SETUP 2779 #line 406 "lex.ll" 2780 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2781 YY_BREAK 2782 case 180: 2783 YY_RULE_SETUP 2784 #line 408 "lex.ll" 2774 #line 407 "lex.ll" 2785 2775 ECHO; 2786 2776 YY_BREAK 2787 #line 27 88 "Parser/lex.cc"2777 #line 2778 "Parser/lex.cc" 2788 2778 case YY_STATE_EOF(INITIAL): 2789 2779 case YY_STATE_EOF(COMMENT): … … 3082 3072 { 3083 3073 yy_current_state = (int) yy_def[yy_current_state]; 3084 if ( yy_current_state >= 8 83)3074 if ( yy_current_state >= 876 ) 3085 3075 yy_c = yy_meta[(unsigned int) yy_c]; 3086 3076 } … … 3110 3100 { 3111 3101 yy_current_state = (int) yy_def[yy_current_state]; 3112 if ( yy_current_state >= 8 83)3102 if ( yy_current_state >= 876 ) 3113 3103 yy_c = yy_meta[(unsigned int) yy_c]; 3114 3104 } 3115 3105 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3116 yy_is_jam = (yy_current_state == 8 82);3106 yy_is_jam = (yy_current_state == 875); 3117 3107 3118 3108 return yy_is_jam ? 0 : yy_current_state; … … 3760 3750 #define YYTABLES_NAME "yytables" 3761 3751 3762 #line 40 8"lex.ll"3752 #line 407 "lex.ll" 3763 3753 3764 3754 -
src/Parser/lex.ll
rbdad1679 r540ddb7d 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : T hu Feb 25 16:18:14 201613 * Update Count : 42 712 * Last Modified On : Tue Feb 2 15:06:54 2016 13 * Update Count : 426 14 14 */ 15 15 … … 262 262 union { KEYWORD_RETURN(UNION); } 263 263 unsigned { KEYWORD_RETURN(UNSIGNED); } 264 __builtin_va_list { KEYWORD_RETURN(VALIST); } // GCC265 264 void { KEYWORD_RETURN(VOID); } 266 265 volatile { KEYWORD_RETURN(VOLATILE); } -
src/Parser/parser.cc
rbdad1679 r540ddb7d 138 138 SIGNED = 277, 139 139 UNSIGNED = 278, 140 VALIST = 279, 141 BOOL = 280, 142 COMPLEX = 281, 143 IMAGINARY = 282, 144 TYPEOF = 283, 145 LABEL = 284, 146 ENUM = 285, 147 STRUCT = 286, 148 UNION = 287, 149 TYPE = 288, 150 FTYPE = 289, 151 DTYPE = 290, 152 CONTEXT = 291, 153 SIZEOF = 292, 154 OFFSETOF = 293, 155 ATTRIBUTE = 294, 156 EXTENSION = 295, 157 IF = 296, 158 ELSE = 297, 159 SWITCH = 298, 160 CASE = 299, 161 DEFAULT = 300, 162 DO = 301, 163 WHILE = 302, 164 FOR = 303, 165 BREAK = 304, 166 CONTINUE = 305, 167 GOTO = 306, 168 RETURN = 307, 169 CHOOSE = 308, 170 DISABLE = 309, 171 ENABLE = 310, 172 FALLTHRU = 311, 173 TRY = 312, 174 CATCH = 313, 175 CATCHRESUME = 314, 176 FINALLY = 315, 177 THROW = 316, 178 THROWRESUME = 317, 179 AT = 318, 180 ASM = 319, 181 ALIGNAS = 320, 182 ALIGNOF = 321, 183 ATOMIC = 322, 184 GENERIC = 323, 185 NORETURN = 324, 186 STATICASSERT = 325, 187 THREADLOCAL = 326, 188 IDENTIFIER = 327, 189 QUOTED_IDENTIFIER = 328, 190 TYPEDEFname = 329, 191 TYPEGENname = 330, 192 ATTR_IDENTIFIER = 331, 193 ATTR_TYPEDEFname = 332, 194 ATTR_TYPEGENname = 333, 195 INTEGERconstant = 334, 196 FLOATINGconstant = 335, 197 CHARACTERconstant = 336, 198 STRINGliteral = 337, 199 ZERO = 338, 200 ONE = 339, 201 ARROW = 340, 202 ICR = 341, 203 DECR = 342, 204 LS = 343, 205 RS = 344, 206 LE = 345, 207 GE = 346, 208 EQ = 347, 209 NE = 348, 210 ANDAND = 349, 211 OROR = 350, 212 ELLIPSIS = 351, 213 MULTassign = 352, 214 DIVassign = 353, 215 MODassign = 354, 216 PLUSassign = 355, 217 MINUSassign = 356, 218 LSassign = 357, 219 RSassign = 358, 220 ANDassign = 359, 221 ERassign = 360, 222 ORassign = 361, 223 ATassign = 362, 224 THEN = 363 140 BOOL = 279, 141 COMPLEX = 280, 142 IMAGINARY = 281, 143 TYPEOF = 282, 144 LABEL = 283, 145 ENUM = 284, 146 STRUCT = 285, 147 UNION = 286, 148 TYPE = 287, 149 FTYPE = 288, 150 DTYPE = 289, 151 CONTEXT = 290, 152 SIZEOF = 291, 153 OFFSETOF = 292, 154 ATTRIBUTE = 293, 155 EXTENSION = 294, 156 IF = 295, 157 ELSE = 296, 158 SWITCH = 297, 159 CASE = 298, 160 DEFAULT = 299, 161 DO = 300, 162 WHILE = 301, 163 FOR = 302, 164 BREAK = 303, 165 CONTINUE = 304, 166 GOTO = 305, 167 RETURN = 306, 168 CHOOSE = 307, 169 DISABLE = 308, 170 ENABLE = 309, 171 FALLTHRU = 310, 172 TRY = 311, 173 CATCH = 312, 174 CATCHRESUME = 313, 175 FINALLY = 314, 176 THROW = 315, 177 THROWRESUME = 316, 178 AT = 317, 179 ASM = 318, 180 ALIGNAS = 319, 181 ALIGNOF = 320, 182 ATOMIC = 321, 183 GENERIC = 322, 184 NORETURN = 323, 185 STATICASSERT = 324, 186 THREADLOCAL = 325, 187 IDENTIFIER = 326, 188 QUOTED_IDENTIFIER = 327, 189 TYPEDEFname = 328, 190 TYPEGENname = 329, 191 ATTR_IDENTIFIER = 330, 192 ATTR_TYPEDEFname = 331, 193 ATTR_TYPEGENname = 332, 194 INTEGERconstant = 333, 195 FLOATINGconstant = 334, 196 CHARACTERconstant = 335, 197 STRINGliteral = 336, 198 ZERO = 337, 199 ONE = 338, 200 ARROW = 339, 201 ICR = 340, 202 DECR = 341, 203 LS = 342, 204 RS = 343, 205 LE = 344, 206 GE = 345, 207 EQ = 346, 208 NE = 347, 209 ANDAND = 348, 210 OROR = 349, 211 ELLIPSIS = 350, 212 MULTassign = 351, 213 DIVassign = 352, 214 MODassign = 353, 215 PLUSassign = 354, 216 MINUSassign = 355, 217 LSassign = 356, 218 RSassign = 357, 219 ANDassign = 358, 220 ERassign = 359, 221 ORassign = 360, 222 ATassign = 361, 223 THEN = 362 225 224 }; 226 225 #endif … … 247 246 #define SIGNED 277 248 247 #define UNSIGNED 278 249 #define VALIST 279 250 #define BOOL 280 251 #define COMPLEX 281 252 #define IMAGINARY 282 253 #define TYPEOF 283 254 #define LABEL 284 255 #define ENUM 285 256 #define STRUCT 286 257 #define UNION 287 258 #define TYPE 288 259 #define FTYPE 289 260 #define DTYPE 290 261 #define CONTEXT 291 262 #define SIZEOF 292 263 #define OFFSETOF 293 264 #define ATTRIBUTE 294 265 #define EXTENSION 295 266 #define IF 296 267 #define ELSE 297 268 #define SWITCH 298 269 #define CASE 299 270 #define DEFAULT 300 271 #define DO 301 272 #define WHILE 302 273 #define FOR 303 274 #define BREAK 304 275 #define CONTINUE 305 276 #define GOTO 306 277 #define RETURN 307 278 #define CHOOSE 308 279 #define DISABLE 309 280 #define ENABLE 310 281 #define FALLTHRU 311 282 #define TRY 312 283 #define CATCH 313 284 #define CATCHRESUME 314 285 #define FINALLY 315 286 #define THROW 316 287 #define THROWRESUME 317 288 #define AT 318 289 #define ASM 319 290 #define ALIGNAS 320 291 #define ALIGNOF 321 292 #define ATOMIC 322 293 #define GENERIC 323 294 #define NORETURN 324 295 #define STATICASSERT 325 296 #define THREADLOCAL 326 297 #define IDENTIFIER 327 298 #define QUOTED_IDENTIFIER 328 299 #define TYPEDEFname 329 300 #define TYPEGENname 330 301 #define ATTR_IDENTIFIER 331 302 #define ATTR_TYPEDEFname 332 303 #define ATTR_TYPEGENname 333 304 #define INTEGERconstant 334 305 #define FLOATINGconstant 335 306 #define CHARACTERconstant 336 307 #define STRINGliteral 337 308 #define ZERO 338 309 #define ONE 339 310 #define ARROW 340 311 #define ICR 341 312 #define DECR 342 313 #define LS 343 314 #define RS 344 315 #define LE 345 316 #define GE 346 317 #define EQ 347 318 #define NE 348 319 #define ANDAND 349 320 #define OROR 350 321 #define ELLIPSIS 351 322 #define MULTassign 352 323 #define DIVassign 353 324 #define MODassign 354 325 #define PLUSassign 355 326 #define MINUSassign 356 327 #define LSassign 357 328 #define RSassign 358 329 #define ANDassign 359 330 #define ERassign 360 331 #define ORassign 361 332 #define ATassign 362 333 #define THEN 363 248 #define BOOL 279 249 #define COMPLEX 280 250 #define IMAGINARY 281 251 #define TYPEOF 282 252 #define LABEL 283 253 #define ENUM 284 254 #define STRUCT 285 255 #define UNION 286 256 #define TYPE 287 257 #define FTYPE 288 258 #define DTYPE 289 259 #define CONTEXT 290 260 #define SIZEOF 291 261 #define OFFSETOF 292 262 #define ATTRIBUTE 293 263 #define EXTENSION 294 264 #define IF 295 265 #define ELSE 296 266 #define SWITCH 297 267 #define CASE 298 268 #define DEFAULT 299 269 #define DO 300 270 #define WHILE 301 271 #define FOR 302 272 #define BREAK 303 273 #define CONTINUE 304 274 #define GOTO 305 275 #define RETURN 306 276 #define CHOOSE 307 277 #define DISABLE 308 278 #define ENABLE 309 279 #define FALLTHRU 310 280 #define TRY 311 281 #define CATCH 312 282 #define CATCHRESUME 313 283 #define FINALLY 314 284 #define THROW 315 285 #define THROWRESUME 316 286 #define AT 317 287 #define ASM 318 288 #define ALIGNAS 319 289 #define ALIGNOF 320 290 #define ATOMIC 321 291 #define GENERIC 322 292 #define NORETURN 323 293 #define STATICASSERT 324 294 #define THREADLOCAL 325 295 #define IDENTIFIER 326 296 #define QUOTED_IDENTIFIER 327 297 #define TYPEDEFname 328 298 #define TYPEGENname 329 299 #define ATTR_IDENTIFIER 330 300 #define ATTR_TYPEDEFname 331 301 #define ATTR_TYPEGENname 332 302 #define INTEGERconstant 333 303 #define FLOATINGconstant 334 304 #define CHARACTERconstant 335 305 #define STRINGliteral 336 306 #define ZERO 337 307 #define ONE 338 308 #define ARROW 339 309 #define ICR 340 310 #define DECR 341 311 #define LS 342 312 #define RS 343 313 #define LE 344 314 #define GE 345 315 #define EQ 346 316 #define NE 347 317 #define ANDAND 348 318 #define OROR 349 319 #define ELLIPSIS 350 320 #define MULTassign 351 321 #define DIVassign 352 322 #define MODassign 353 323 #define PLUSassign 354 324 #define MINUSassign 355 325 #define LSassign 356 326 #define RSassign 357 327 #define ANDassign 358 328 #define ERassign 359 329 #define ORassign 360 330 #define ATassign 361 331 #define THEN 362 334 332 335 333 … … 341 339 342 340 /* Line 293 of yacc.c */ 343 #line 11 1"parser.yy"341 #line 110 "parser.yy" 344 342 345 343 Token tok; … … 358 356 359 357 /* Line 293 of yacc.c */ 360 #line 3 61"Parser/parser.cc"358 #line 359 "Parser/parser.cc" 361 359 } YYSTYPE; 362 360 # define YYSTYPE_IS_TRIVIAL 1 … … 370 368 371 369 /* Line 343 of yacc.c */ 372 #line 37 3"Parser/parser.cc"370 #line 371 "Parser/parser.cc" 373 371 374 372 #ifdef short … … 587 585 588 586 /* YYFINAL -- State number of the termination state. */ 589 #define YYFINAL 24 9587 #define YYFINAL 248 590 588 /* YYLAST -- Last index in YYTABLE. */ 591 #define YYLAST 11 290589 #define YYLAST 11042 592 590 593 591 /* YYNTOKENS -- Number of terminals. */ 594 #define YYNTOKENS 13 3592 #define YYNTOKENS 132 595 593 /* YYNNTS -- Number of nonterminals. */ 596 594 #define YYNNTS 238 597 595 /* YYNRULES -- Number of rules. */ 598 #define YYNRULES 75 2596 #define YYNRULES 751 599 597 /* YYNRULES -- Number of states. */ 600 #define YYNSTATES 157 9598 #define YYNSTATES 1578 601 599 602 600 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 603 601 #define YYUNDEFTOK 2 604 #define YYMAXUTOK 36 3602 #define YYMAXUTOK 362 605 603 606 604 #define YYTRANSLATE(YYX) \ … … 613 611 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 614 612 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 615 2, 2, 2, 11 8, 2, 2, 2, 125, 120, 2,616 10 9, 110, 119, 121, 116, 122, 113, 124, 2, 2,617 2, 2, 2, 2, 2, 2, 2, 2, 11 7, 132,618 12 6, 131, 127, 130, 2, 2, 2, 2, 2, 2,613 2, 2, 2, 117, 2, 2, 2, 124, 119, 2, 614 108, 109, 118, 120, 115, 121, 112, 123, 2, 2, 615 2, 2, 2, 2, 2, 2, 2, 2, 116, 131, 616 125, 130, 126, 129, 2, 2, 2, 2, 2, 2, 619 617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 620 618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 621 2, 11 1, 2, 112, 128, 2, 2, 2, 2, 2,619 2, 110, 2, 111, 127, 2, 2, 2, 2, 2, 622 620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 623 621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 624 2, 2, 2, 11 4, 129, 115, 123, 2, 2, 2,622 2, 2, 2, 113, 128, 114, 122, 2, 2, 2, 625 623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 626 624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 646 644 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 647 645 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 648 105, 106, 107 , 108646 105, 106, 107 649 647 }; 650 648 … … 687 685 1156, 1158, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 688 686 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, 689 1197, 1199, 1201, 1203, 1205, 120 7, 1210, 1213, 1217, 1221,690 122 3, 1227, 1229, 1232, 1235, 1238, 1243, 1248, 1253, 1258,691 126 0, 1263, 1266, 1270, 1272, 1275, 1278, 1280, 1283, 1286,692 1290, 129 2, 1295, 1298, 1300, 1302, 1307, 1310, 1316, 1324,693 132 7, 1330, 1333, 1335, 1338, 1341, 1345, 1348, 1352, 1354,694 135 7, 1361, 1364, 1367, 1372, 1373, 1375, 1378, 1381, 1383,695 1384, 138 6, 1389, 1392, 1398, 1405, 1408, 1411, 1416, 1417,696 14 20, 1421, 1423, 1425, 1427, 1433, 1439, 1445, 1447, 1453,697 14 59, 1469, 1471, 1477, 1478, 1480, 1482, 1488, 1490, 1492,698 1 498, 1504, 1506, 1510, 1514, 1519, 1521, 1523, 1525, 1527,699 1530, 153 2, 1536, 1540, 1542, 1545, 1547, 1551, 1553, 1555,700 1557, 1559, 1561, 1563, 1565, 1567, 1569, 1571, 157 3, 1576,701 1578, 1580, 158 2, 1585, 1586, 1589, 1592, 1594, 1599, 1600,702 160 2, 1605, 1609, 1614, 1617, 1620, 1622, 1625, 1627, 1630,703 16 36, 1642, 1650, 1657, 1659, 1662, 1665, 1669, 1671, 1674,704 16 77, 1682, 1685, 1690, 1691, 1696, 1699, 1701, 1703, 1705,705 170 6, 1709, 1715, 1721, 1735, 1737, 1739, 1743, 1747, 1750,706 175 4, 1758, 1761, 1766, 1768, 1775, 1785, 1786, 1798, 1800,707 180 4, 1808, 1812, 1814, 1816, 1822, 1825, 1831, 1832, 1834,708 183 6, 1840, 1841, 1843, 1845, 1847, 1849, 1850, 1857, 1860,709 186 2, 1865, 1870, 1873, 1877, 1881, 1885, 1890, 1896, 1902,710 19 08, 1915, 1917, 1919, 1921, 1925, 1926, 1932, 1933, 1935,711 193 7, 1940, 1947, 1949, 1953, 1954, 1956, 1961, 1963, 1965,712 1967, 19 69, 1972, 1974, 1977, 1980, 1982, 1986, 1989, 1993,713 199 7, 2000, 2005, 2010, 2014, 2023, 2027, 2030, 2032, 2035,714 204 2, 2051, 2055, 2058, 2062, 2066, 2071, 2076, 2080, 2082,715 2084, 208 6, 2091, 2098, 2102, 2105, 2109, 2113, 2118, 2123,716 212 7, 2130, 2132, 2135, 2138, 2140, 2144, 2147, 2151, 2155,717 21 58, 2163, 2168, 2172, 2179, 2188, 2192, 2195, 2197, 2200,718 220 3, 2206, 2210, 2214, 2217, 2222, 2227, 2231, 2238, 2247,719 225 1, 2254, 2256, 2259, 2262, 2264, 2266, 2269, 2273, 2277,720 228 0, 2285, 2292, 2301, 2303, 2306, 2309, 2311, 2314, 2317,721 232 1, 2325, 2327, 2332, 2337, 2341, 2347, 2356, 2360, 2363,722 2367, 23 69, 2375, 2381, 2388, 2395, 2397, 2400, 2403, 2405,723 240 8, 2411, 2415, 2419, 2421, 2426, 2431, 2435, 2441, 2450,724 2454, 245 6, 2459, 2461, 2464, 2471, 2477, 2484, 2492, 2500,725 250 2, 2505, 2508, 2510, 2513, 2516, 2520, 2524, 2526, 2531,726 253 6, 2540, 2549, 2553, 2555, 2557, 2560, 2562, 2564, 2567,727 257 1, 2574, 2578, 2581, 2585, 2589, 2592, 2597, 2601, 2604,728 260 8, 2611, 2616, 2620, 2623, 2630, 2637, 2644, 2652, 2654,729 2657, 2659, 2661, 266 3, 2666, 2670, 2673, 2677, 2680, 2684,730 26 88, 2693, 2696, 2700, 2705, 2708, 2714, 2720, 2727, 2734,731 2735, 273 7, 2738687 1197, 1199, 1201, 1203, 1205, 1208, 1211, 1215, 1219, 1221, 688 1225, 1227, 1230, 1233, 1236, 1241, 1246, 1251, 1256, 1258, 689 1261, 1264, 1268, 1270, 1273, 1276, 1278, 1281, 1284, 1288, 690 1290, 1293, 1296, 1298, 1300, 1305, 1308, 1314, 1322, 1325, 691 1328, 1331, 1333, 1336, 1339, 1343, 1346, 1350, 1352, 1355, 692 1359, 1362, 1365, 1370, 1371, 1373, 1376, 1379, 1381, 1382, 693 1384, 1387, 1390, 1396, 1403, 1406, 1409, 1414, 1415, 1418, 694 1419, 1421, 1423, 1425, 1431, 1437, 1443, 1445, 1451, 1457, 695 1467, 1469, 1475, 1476, 1478, 1480, 1486, 1488, 1490, 1496, 696 1502, 1504, 1508, 1512, 1517, 1519, 1521, 1523, 1525, 1528, 697 1530, 1534, 1538, 1540, 1543, 1545, 1549, 1551, 1553, 1555, 698 1557, 1559, 1561, 1563, 1565, 1567, 1569, 1571, 1574, 1576, 699 1578, 1580, 1583, 1584, 1587, 1590, 1592, 1597, 1598, 1600, 700 1603, 1607, 1612, 1615, 1618, 1620, 1623, 1625, 1628, 1634, 701 1640, 1648, 1655, 1657, 1660, 1663, 1667, 1669, 1672, 1675, 702 1680, 1683, 1688, 1689, 1694, 1697, 1699, 1701, 1703, 1704, 703 1707, 1713, 1719, 1733, 1735, 1737, 1741, 1745, 1748, 1752, 704 1756, 1759, 1764, 1766, 1773, 1783, 1784, 1796, 1798, 1802, 705 1806, 1810, 1812, 1814, 1820, 1823, 1829, 1830, 1832, 1834, 706 1838, 1839, 1841, 1843, 1845, 1847, 1848, 1855, 1858, 1860, 707 1863, 1868, 1871, 1875, 1879, 1883, 1888, 1894, 1900, 1906, 708 1913, 1915, 1917, 1919, 1923, 1924, 1930, 1931, 1933, 1935, 709 1938, 1945, 1947, 1951, 1952, 1954, 1959, 1961, 1963, 1965, 710 1967, 1970, 1972, 1975, 1978, 1980, 1984, 1987, 1991, 1995, 711 1998, 2003, 2008, 2012, 2021, 2025, 2028, 2030, 2033, 2040, 712 2049, 2053, 2056, 2060, 2064, 2069, 2074, 2078, 2080, 2082, 713 2084, 2089, 2096, 2100, 2103, 2107, 2111, 2116, 2121, 2125, 714 2128, 2130, 2133, 2136, 2138, 2142, 2145, 2149, 2153, 2156, 715 2161, 2166, 2170, 2177, 2186, 2190, 2193, 2195, 2198, 2201, 716 2204, 2208, 2212, 2215, 2220, 2225, 2229, 2236, 2245, 2249, 717 2252, 2254, 2257, 2260, 2262, 2264, 2267, 2271, 2275, 2278, 718 2283, 2290, 2299, 2301, 2304, 2307, 2309, 2312, 2315, 2319, 719 2323, 2325, 2330, 2335, 2339, 2345, 2354, 2358, 2361, 2365, 720 2367, 2373, 2379, 2386, 2393, 2395, 2398, 2401, 2403, 2406, 721 2409, 2413, 2417, 2419, 2424, 2429, 2433, 2439, 2448, 2452, 722 2454, 2457, 2459, 2462, 2469, 2475, 2482, 2490, 2498, 2500, 723 2503, 2506, 2508, 2511, 2514, 2518, 2522, 2524, 2529, 2534, 724 2538, 2547, 2551, 2553, 2555, 2558, 2560, 2562, 2565, 2569, 725 2572, 2576, 2579, 2583, 2587, 2590, 2595, 2599, 2602, 2606, 726 2609, 2614, 2618, 2621, 2628, 2635, 2642, 2650, 2652, 2655, 727 2657, 2659, 2661, 2664, 2668, 2671, 2675, 2678, 2682, 2686, 728 2691, 2694, 2698, 2703, 2706, 2712, 2718, 2725, 2732, 2733, 729 2735, 2736 732 730 }; 733 731 … … 735 733 static const yytype_int16 yyrhs[] = 736 734 { 737 29 9, 0, -1, -1, -1, 79, -1, 80, -1, 81,738 -1, 7 2, -1, 76, -1, 140, -1, 72, -1, 76,739 -1, 7 2, -1, 140, -1, 83, -1, 84, -1, 82,740 -1, 14 1, 82, -1, 72, -1, 140, -1, 109, 168,741 1 10, -1, 109, 172, 110, -1, 142, -1, 143, 111,742 13 4, 163, 135, 112, -1, 143, 109, 144, 110, -1,743 14 3, 113, 139, -1, 143, 113, 111, 134, 146, 135,744 11 2, -1, 143, 85, 139, -1, 143, 85, 111, 134,745 14 6, 135, 112, -1, 143, 86, -1, 143, 87, -1,746 10 9, 272, 110, 114, 276, 369, 115, -1, 143, 114,747 14 4, 115, -1, 145, -1, 144, 116, 145, -1, -1,748 16 3, -1, 139, 117, 163, -1, 111, 134, 163, 135,749 11 2, 117, 163, -1, 111, 134, 163, 116, 166, 135,750 11 2, 117, 163, -1, 147, -1, 146, 116, 147, -1,751 13 9, -1, 139, 113, 147, -1, 139, 113, 111, 134,752 14 6, 135, 112, -1, 139, 85, 147, -1, 139, 85,753 11 1, 134, 146, 135, 112, -1, 143, -1, 136, -1,754 14 1, -1, 86, 148, -1, 87, 148, -1, 40, 150,755 -1, 14 9, 150, -1, 118, 150, -1, 119, 150, -1,756 3 7, 148, -1, 37, 109, 272, 110, -1, 38, 109,757 27 2, 116, 139, 110, -1, 76, -1, 76, 109, 273,758 1 10, -1, 76, 109, 145, 110, -1, 66, 148, -1,759 6 6, 109, 272, 110, -1, 94, 139, -1, 120, -1,760 12 1, -1, 122, -1, 123, -1, 148, -1, 109, 272,761 1 10, 150, -1, 109, 272, 110, 165, -1, 150, -1,762 15 1, 119, 150, -1, 151, 124, 150, -1, 151, 125,763 1 50, -1, 151, -1, 152, 121, 151, -1, 152, 122,764 15 1, -1, 152, -1, 153, 88, 152, -1, 153, 89,765 15 2, -1, 153, -1, 154, 126, 153, -1, 154, 127,766 15 3, -1, 154, 90, 153, -1, 154, 91, 153, -1,767 15 4, -1, 155, 92, 154, -1, 155, 93, 154, -1,768 15 5, -1, 156, 120, 155, -1, 156, -1, 157, 128,769 15 6, -1, 157, -1, 158, 129, 157, -1, 158, -1,770 15 9, 94, 158, -1, 159, -1, 160, 95, 159, -1,771 1 60, -1, 160, 130, 168, 117, 161, -1, 160, 130,772 11 7, 161, -1, 160, 130, 168, 117, 165, -1, 161,773 -1, 16 1, -1, 148, 131, 163, -1, 148, 167, 163,774 -1, 16 5, 370, -1, -1, 163, -1, 111, 112, -1,775 11 1, 134, 163, 135, 112, -1, 111, 134, 116, 166,776 13 5, 112, -1, 111, 134, 163, 116, 166, 135, 112,777 -1, 16 4, -1, 166, 116, 164, -1, 97, -1, 98,778 -1, 9 9, -1, 100, -1, 101, -1, 102, -1, 103,779 -1, 10 4, -1, 105, -1, 106, -1, 163, -1, 168,780 11 6, 163, -1, -1, 168, -1, 171, -1, 172, -1,781 17 6, -1, 177, -1, 189, -1, 191, -1, 192, -1,782 19 7, -1, 128, 143, 114, 144, 115, 132, -1, 139,783 11 7, 309, 170, -1, 114, 115, -1, 114, 134, 134,784 20 8, 173, 135, 115, -1, 174, -1, 173, 134, 174,785 -1, 21 1, -1, 40, 211, -1, 305, -1, 170, 135,786 -1, 1 70, -1, 175, 170, -1, 169, 132, -1, 41,787 10 9, 168, 110, 170, -1, 41, 109, 168, 110, 170,788 4 2, 170, -1, 43, 109, 168, 110, 182, -1, 43,789 10 9, 168, 110, 114, 134, 204, 183, 115, -1, 53,790 10 9, 168, 110, 182, -1, 53, 109, 168, 110, 114,791 13 4, 204, 185, 115, -1, 162, -1, 162, 96, 162,792 -1, 30 7, -1, 178, -1, 179, 116, 178, -1, 44,793 17 9, 117, -1, 45, 117, -1, 180, -1, 181, 180,794 -1, 18 1, 170, -1, -1, 184, -1, 181, 175, -1,795 18 4, 181, 175, -1, -1, 186, -1, 181, 188, -1,796 18 1, 175, 187, -1, 186, 181, 188, -1, 186, 181,797 17 5, 187, -1, -1, 188, -1, 56, -1, 56, 132,798 -1, 4 7, 109, 168, 110, 170, -1, 46, 170, 47,799 10 9, 168, 110, 132, -1, 48, 109, 134, 190, 110,800 1 70, -1, 169, 135, 132, 169, 132, 169, -1, 211,801 16 9, 132, 169, -1, 51, 139, 132, -1, 51, 119,802 16 8, 132, -1, 50, 132, -1, 50, 139, 132, -1,803 4 9, 132, -1, 49, 139, 132, -1, 52, 169, 132,804 -1, 6 1, 164, 132, -1, 62, 164, 132, -1, 62,805 16 4, 63, 163, 132, -1, 57, 172, 193, -1, 57,806 17 2, 195, -1, 57, 172, 193, 195, -1, 194, -1,807 5 8, 109, 96, 110, 172, -1, 194, 58, 109, 96,808 1 10, 172, -1, 59, 109, 96, 110, 172, -1, 194,809 5 9, 109, 96, 110, 172, -1, 58, 109, 134, 134,810 19 6, 135, 110, 172, 135, -1, 194, 58, 109, 134,811 13 4, 196, 135, 110, 172, 135, -1, 59, 109, 134,812 13 4, 196, 135, 110, 172, 135, -1, 194, 59, 109,813 13 4, 134, 196, 135, 110, 172, 135, -1, 60, 172,814 -1, 22 4, -1, 224, 306, -1, 224, 354, -1, 363,815 13 9, -1, 363, -1, 64, 198, 109, 141, 110, 132,816 -1, 6 4, 198, 109, 141, 117, 199, 110, 132, -1,817 6 4, 198, 109, 141, 117, 199, 117, 199, 110, 132,818 -1, 6 4, 198, 109, 141, 117, 199, 117, 199, 117,819 20 2, 110, 132, -1, 64, 198, 51, 109, 141, 117,820 11 7, 199, 117, 202, 117, 203, 110, 132, -1, -1,821 11, -1, -1, 200, -1, 201, -1, 200, 116, 201,822 -1, 14 1, 109, 162, 110, -1, 111, 162, 112, 141,823 10 9, 162, 110, -1, -1, 141, -1, 202, 116, 141,824 -1, 13 9, -1, 203, 116, 139, -1, 135, -1, 205,825 -1, 21 1, -1, 205, 134, 211, -1, 135, -1, 207,826 -1, 22 1, -1, 207, 134, 221, -1, -1, 209, -1,827 2 9, 210, 132, -1, 209, 29, 210, 132, -1, 271,828 -1, 2 10, 116, 271, -1, 212, -1, 221, -1, 213,829 13 5, 132, -1, 218, 135, 132, -1, 215, 135, 132,830 -1, 2 90, 135, 132, -1, 293, 135, 132, -1, 214,831 27 4, -1, 230, 214, 274, -1, 213, 135, 116, 134,832 26 9, 274, -1, 364, 269, 308, -1, 367, 269, 308,833 -1, 22 6, 367, 269, 308, -1, 216, -1, 226, 216,834 -1, 2 30, 216, -1, 230, 226, 216, -1, 215, 135,835 11 6, 134, 269, -1, 111, 112, 269, 109, 134, 257,836 13 5, 110, -1, 367, 269, 109, 134, 257, 135, 110,837 -1, 21 7, 269, 109, 134, 257, 135, 110, -1, 111,838 13 4, 259, 135, 112, -1, 111, 134, 259, 135, 116,839 13 4, 260, 135, 112, -1, 3, 214, -1, 3, 216,840 -1, 21 8, 135, 116, 134, 139, -1, 3, 224, 306,841 -1, 21 9, 135, 116, 134, 306, -1, 226, 3, 224,842 30 6, -1, 224, 3, 306, -1, 224, 3, 226, 306,843 -1, 3, 13 9, 131, 163, -1, 220, 135, 116, 134,844 13 9, 131, 163, -1, 222, 135, 132, -1, 219, 135,845 13 2, -1, 220, 135, 132, -1, 239, 135, 132, -1,846 22 3, 306, 308, 274, -1, 222, 116, 309, 306, 308,847 27 4, -1, 235, -1, 239, -1, 241, -1, 280, -1,848 23 6, -1, 240, -1, 242, -1, 281, -1, -1, 226,849 -1, 22 7, -1, 226, 227, -1, 228, -1, 311, -1,850 10, -1, 12, -1, 11, -1, 14, -1, 6 7, -1,851 -1, 13, 10 9, 229, 283, 110, -1, 231, -1, 226,852 23 1, -1, 230, 226, 231, -1, 232, -1, 231, 232,853 -1, 23 3, -1, 5, -1, 7, -1, 4, -1, 6,854 -1, 8, -1, 9, -1, 6 9, -1, 71, -1, 16,735 298, 0, -1, -1, -1, 78, -1, 79, -1, 80, 736 -1, 71, -1, 75, -1, 139, -1, 71, -1, 75, 737 -1, 71, -1, 139, -1, 82, -1, 83, -1, 81, 738 -1, 140, 81, -1, 71, -1, 139, -1, 108, 167, 739 109, -1, 108, 171, 109, -1, 141, -1, 142, 110, 740 133, 162, 134, 111, -1, 142, 108, 143, 109, -1, 741 142, 112, 138, -1, 142, 112, 110, 133, 145, 134, 742 111, -1, 142, 84, 138, -1, 142, 84, 110, 133, 743 145, 134, 111, -1, 142, 85, -1, 142, 86, -1, 744 108, 271, 109, 113, 275, 368, 114, -1, 142, 113, 745 143, 114, -1, 144, -1, 143, 115, 144, -1, -1, 746 162, -1, 138, 116, 162, -1, 110, 133, 162, 134, 747 111, 116, 162, -1, 110, 133, 162, 115, 165, 134, 748 111, 116, 162, -1, 146, -1, 145, 115, 146, -1, 749 138, -1, 138, 112, 146, -1, 138, 112, 110, 133, 750 145, 134, 111, -1, 138, 84, 146, -1, 138, 84, 751 110, 133, 145, 134, 111, -1, 142, -1, 135, -1, 752 140, -1, 85, 147, -1, 86, 147, -1, 39, 149, 753 -1, 148, 149, -1, 117, 149, -1, 118, 149, -1, 754 36, 147, -1, 36, 108, 271, 109, -1, 37, 108, 755 271, 115, 138, 109, -1, 75, -1, 75, 108, 272, 756 109, -1, 75, 108, 144, 109, -1, 65, 147, -1, 757 65, 108, 271, 109, -1, 93, 138, -1, 119, -1, 758 120, -1, 121, -1, 122, -1, 147, -1, 108, 271, 759 109, 149, -1, 108, 271, 109, 164, -1, 149, -1, 760 150, 118, 149, -1, 150, 123, 149, -1, 150, 124, 761 149, -1, 150, -1, 151, 120, 150, -1, 151, 121, 762 150, -1, 151, -1, 152, 87, 151, -1, 152, 88, 763 151, -1, 152, -1, 153, 125, 152, -1, 153, 126, 764 152, -1, 153, 89, 152, -1, 153, 90, 152, -1, 765 153, -1, 154, 91, 153, -1, 154, 92, 153, -1, 766 154, -1, 155, 119, 154, -1, 155, -1, 156, 127, 767 155, -1, 156, -1, 157, 128, 156, -1, 157, -1, 768 158, 93, 157, -1, 158, -1, 159, 94, 158, -1, 769 159, -1, 159, 129, 167, 116, 160, -1, 159, 129, 770 116, 160, -1, 159, 129, 167, 116, 164, -1, 160, 771 -1, 160, -1, 147, 130, 162, -1, 147, 166, 162, 772 -1, 164, 369, -1, -1, 162, -1, 110, 111, -1, 773 110, 133, 162, 134, 111, -1, 110, 133, 115, 165, 774 134, 111, -1, 110, 133, 162, 115, 165, 134, 111, 775 -1, 163, -1, 165, 115, 163, -1, 96, -1, 97, 776 -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, 777 -1, 103, -1, 104, -1, 105, -1, 162, -1, 167, 778 115, 162, -1, -1, 167, -1, 170, -1, 171, -1, 779 175, -1, 176, -1, 188, -1, 190, -1, 191, -1, 780 196, -1, 127, 142, 113, 143, 114, 131, -1, 138, 781 116, 308, 169, -1, 113, 114, -1, 113, 133, 133, 782 207, 172, 134, 114, -1, 173, -1, 172, 133, 173, 783 -1, 210, -1, 39, 210, -1, 304, -1, 169, 134, 784 -1, 169, -1, 174, 169, -1, 168, 131, -1, 40, 785 108, 167, 109, 169, -1, 40, 108, 167, 109, 169, 786 41, 169, -1, 42, 108, 167, 109, 181, -1, 42, 787 108, 167, 109, 113, 133, 203, 182, 114, -1, 52, 788 108, 167, 109, 181, -1, 52, 108, 167, 109, 113, 789 133, 203, 184, 114, -1, 161, -1, 161, 95, 161, 790 -1, 306, -1, 177, -1, 178, 115, 177, -1, 43, 791 178, 116, -1, 44, 116, -1, 179, -1, 180, 179, 792 -1, 180, 169, -1, -1, 183, -1, 180, 174, -1, 793 183, 180, 174, -1, -1, 185, -1, 180, 187, -1, 794 180, 174, 186, -1, 185, 180, 187, -1, 185, 180, 795 174, 186, -1, -1, 187, -1, 55, -1, 55, 131, 796 -1, 46, 108, 167, 109, 169, -1, 45, 169, 46, 797 108, 167, 109, 131, -1, 47, 108, 133, 189, 109, 798 169, -1, 168, 134, 131, 168, 131, 168, -1, 210, 799 168, 131, 168, -1, 50, 138, 131, -1, 50, 118, 800 167, 131, -1, 49, 131, -1, 49, 138, 131, -1, 801 48, 131, -1, 48, 138, 131, -1, 51, 168, 131, 802 -1, 60, 163, 131, -1, 61, 163, 131, -1, 61, 803 163, 62, 162, 131, -1, 56, 171, 192, -1, 56, 804 171, 194, -1, 56, 171, 192, 194, -1, 193, -1, 805 57, 108, 95, 109, 171, -1, 193, 57, 108, 95, 806 109, 171, -1, 58, 108, 95, 109, 171, -1, 193, 807 58, 108, 95, 109, 171, -1, 57, 108, 133, 133, 808 195, 134, 109, 171, 134, -1, 193, 57, 108, 133, 809 133, 195, 134, 109, 171, 134, -1, 58, 108, 133, 810 133, 195, 134, 109, 171, 134, -1, 193, 58, 108, 811 133, 133, 195, 134, 109, 171, 134, -1, 59, 171, 812 -1, 223, -1, 223, 305, -1, 223, 353, -1, 362, 813 138, -1, 362, -1, 63, 197, 108, 140, 109, 131, 814 -1, 63, 197, 108, 140, 116, 198, 109, 131, -1, 815 63, 197, 108, 140, 116, 198, 116, 198, 109, 131, 816 -1, 63, 197, 108, 140, 116, 198, 116, 198, 116, 817 201, 109, 131, -1, 63, 197, 50, 108, 140, 116, 818 116, 198, 116, 201, 116, 202, 109, 131, -1, -1, 819 11, -1, -1, 199, -1, 200, -1, 199, 115, 200, 820 -1, 140, 108, 161, 109, -1, 110, 161, 111, 140, 821 108, 161, 109, -1, -1, 140, -1, 201, 115, 140, 822 -1, 138, -1, 202, 115, 138, -1, 134, -1, 204, 823 -1, 210, -1, 204, 133, 210, -1, 134, -1, 206, 824 -1, 220, -1, 206, 133, 220, -1, -1, 208, -1, 825 28, 209, 131, -1, 208, 28, 209, 131, -1, 270, 826 -1, 209, 115, 270, -1, 211, -1, 220, -1, 212, 827 134, 131, -1, 217, 134, 131, -1, 214, 134, 131, 828 -1, 289, 134, 131, -1, 292, 134, 131, -1, 213, 829 273, -1, 229, 213, 273, -1, 212, 134, 115, 133, 830 268, 273, -1, 363, 268, 307, -1, 366, 268, 307, 831 -1, 225, 366, 268, 307, -1, 215, -1, 225, 215, 832 -1, 229, 215, -1, 229, 225, 215, -1, 214, 134, 833 115, 133, 268, -1, 110, 111, 268, 108, 133, 256, 834 134, 109, -1, 366, 268, 108, 133, 256, 134, 109, 835 -1, 216, 268, 108, 133, 256, 134, 109, -1, 110, 836 133, 258, 134, 111, -1, 110, 133, 258, 134, 115, 837 133, 259, 134, 111, -1, 3, 213, -1, 3, 215, 838 -1, 217, 134, 115, 133, 138, -1, 3, 223, 305, 839 -1, 218, 134, 115, 133, 305, -1, 225, 3, 223, 840 305, -1, 223, 3, 305, -1, 223, 3, 225, 305, 841 -1, 3, 138, 130, 162, -1, 219, 134, 115, 133, 842 138, 130, 162, -1, 221, 134, 131, -1, 218, 134, 843 131, -1, 219, 134, 131, -1, 238, 134, 131, -1, 844 222, 305, 307, 273, -1, 221, 115, 308, 305, 307, 845 273, -1, 234, -1, 238, -1, 240, -1, 279, -1, 846 235, -1, 239, -1, 241, -1, 280, -1, -1, 225, 847 -1, 226, -1, 225, 226, -1, 227, -1, 310, -1, 848 10, -1, 12, -1, 11, -1, 14, -1, 66, -1, 849 -1, 13, 108, 228, 282, 109, -1, 230, -1, 225, 850 230, -1, 229, 225, 230, -1, 231, -1, 230, 231, 851 -1, 232, -1, 5, -1, 7, -1, 4, -1, 6, 852 -1, 8, -1, 9, -1, 68, -1, 70, -1, 16, 855 853 -1, 21, -1, 20, -1, 18, -1, 19, -1, 17, 856 -1, 22, -1, 23, -1, 15, -1, 25, -1, 26, 857 -1, 27, -1, 24, -1, 236, -1, 230, 236, -1, 858 235, 232, -1, 235, 232, 226, -1, 235, 232, 236, 859 -1, 237, -1, 225, 238, 225, -1, 234, -1, 226, 860 234, -1, 237, 227, -1, 237, 234, -1, 28, 109, 861 273, 110, -1, 28, 109, 168, 110, -1, 78, 109, 862 273, 110, -1, 78, 109, 168, 110, -1, 240, -1, 863 230, 240, -1, 239, 232, -1, 239, 232, 226, -1, 864 243, -1, 226, 243, -1, 240, 227, -1, 242, -1, 865 230, 242, -1, 241, 232, -1, 241, 232, 226, -1, 866 74, -1, 226, 74, -1, 242, 227, -1, 244, -1, 867 254, -1, 245, 114, 246, 115, -1, 245, 271, -1, 868 245, 271, 114, 246, 115, -1, 245, 109, 289, 110, 869 114, 246, 115, -1, 245, 282, -1, 31, 309, -1, 870 32, 309, -1, 247, -1, 246, 247, -1, 248, 132, 871 -1, 40, 248, 132, -1, 249, 132, -1, 40, 249, 872 132, -1, 363, -1, 363, 271, -1, 248, 116, 271, 873 -1, 248, 116, -1, 224, 250, -1, 249, 116, 309, 874 250, -1, -1, 252, -1, 315, 251, -1, 328, 251, 875 -1, 354, -1, -1, 252, -1, 117, 162, -1, 30, 876 309, -1, 253, 114, 255, 369, 115, -1, 253, 271, 877 114, 255, 369, 115, -1, 253, 271, -1, 271, 256, 878 -1, 255, 116, 271, 256, -1, -1, 131, 162, -1, 879 -1, 258, -1, 260, -1, 259, -1, 259, 135, 116, 880 134, 260, -1, 260, 135, 116, 134, 96, -1, 259, 881 135, 116, 134, 96, -1, 264, -1, 260, 135, 116, 882 134, 264, -1, 259, 135, 116, 134, 264, -1, 259, 883 135, 116, 134, 260, 135, 116, 134, 264, -1, 265, 884 -1, 260, 135, 116, 134, 265, -1, -1, 262, -1, 885 263, -1, 263, 135, 116, 134, 96, -1, 267, -1, 886 266, -1, 263, 135, 116, 134, 267, -1, 263, 135, 887 116, 134, 266, -1, 266, -1, 359, 269, 370, -1, 888 367, 269, 370, -1, 226, 367, 269, 370, -1, 216, 889 -1, 267, -1, 359, -1, 367, -1, 226, 367, -1, 890 368, -1, 223, 333, 370, -1, 223, 337, 370, -1, 891 223, -1, 223, 348, -1, 139, -1, 268, 116, 139, 892 -1, 137, -1, 74, -1, 75, -1, 138, -1, 74, 893 -1, 75, -1, 139, -1, 74, -1, 75, -1, 363, 894 -1, 224, -1, 224, 354, -1, 363, -1, 368, -1, 895 224, -1, 224, 342, -1, -1, 131, 275, -1, 107, 896 275, -1, 163, -1, 114, 276, 369, 115, -1, -1, 897 275, -1, 277, 275, -1, 276, 116, 275, -1, 276, 898 116, 277, 275, -1, 278, 117, -1, 271, 117, -1, 899 279, -1, 278, 279, -1, 80, -1, 113, 271, -1, 900 111, 134, 163, 135, 112, -1, 111, 134, 307, 135, 901 112, -1, 111, 134, 162, 96, 162, 135, 112, -1, 902 113, 111, 134, 146, 135, 112, -1, 281, -1, 230, 903 281, -1, 280, 232, -1, 280, 232, 226, -1, 282, 904 -1, 226, 282, -1, 281, 227, -1, 75, 109, 289, 905 110, -1, 284, 370, -1, 283, 116, 284, 370, -1, 906 -1, 286, 271, 285, 287, -1, 224, 333, -1, 33, 907 -1, 35, -1, 34, -1, -1, 287, 288, -1, 129, 908 271, 109, 289, 110, -1, 129, 114, 134, 295, 115, 909 -1, 129, 109, 134, 283, 135, 110, 114, 134, 295, 910 115, 109, 289, 110, -1, 273, -1, 163, -1, 289, 911 116, 273, -1, 289, 116, 163, -1, 33, 291, -1, 912 231, 33, 291, -1, 290, 116, 291, -1, 292, 287, 913 -1, 292, 287, 131, 273, -1, 271, -1, 270, 109, 914 134, 283, 135, 110, -1, 36, 271, 109, 134, 283, 915 135, 110, 114, 115, -1, -1, 36, 271, 109, 134, 916 283, 135, 110, 114, 294, 295, 115, -1, 296, -1, 917 295, 134, 296, -1, 297, 135, 132, -1, 298, 135, 918 132, -1, 214, -1, 216, -1, 297, 135, 116, 134, 919 269, -1, 224, 306, -1, 298, 135, 116, 134, 306, 920 -1, -1, 300, -1, 302, -1, 300, 134, 302, -1, 921 -1, 300, -1, 211, -1, 304, -1, 197, -1, -1, 922 5, 82, 303, 114, 301, 115, -1, 40, 302, -1, 923 305, -1, 320, 172, -1, 324, 134, 206, 172, -1, 924 215, 172, -1, 223, 320, 172, -1, 226, 320, 172, 925 -1, 230, 320, 172, -1, 230, 226, 320, 172, -1, 926 223, 324, 134, 206, 172, -1, 226, 324, 134, 206, 927 172, -1, 230, 324, 134, 206, 172, -1, 230, 226, 928 324, 134, 206, 172, -1, 315, -1, 320, -1, 328, 929 -1, 162, 123, 162, -1, -1, 64, 109, 141, 110, 930 309, -1, -1, 310, -1, 311, -1, 310, 311, -1, 931 39, 109, 109, 312, 110, 110, -1, 313, -1, 312, 932 116, 313, -1, -1, 314, -1, 314, 109, 169, 110, 933 -1, 269, -1, 233, -1, 234, -1, 227, -1, 316, 934 309, -1, 317, -1, 318, 309, -1, 319, 309, -1, 935 137, -1, 109, 316, 110, -1, 119, 315, -1, 119, 936 226, 315, -1, 109, 317, 110, -1, 316, 346, -1, 937 109, 317, 110, 346, -1, 109, 318, 110, 347, -1, 938 109, 318, 110, -1, 109, 317, 110, 109, 134, 261, 939 135, 110, -1, 109, 319, 110, -1, 321, 309, -1, 940 322, -1, 323, 309, -1, 316, 109, 134, 261, 135, 941 110, -1, 109, 322, 110, 109, 134, 261, 135, 110, 942 -1, 109, 321, 110, -1, 119, 320, -1, 119, 226, 943 320, -1, 109, 322, 110, -1, 109, 322, 110, 346, 944 -1, 109, 323, 110, 347, -1, 109, 323, 110, -1, 945 325, -1, 326, -1, 327, -1, 316, 109, 268, 110, 946 -1, 109, 326, 110, 109, 268, 110, -1, 109, 325, 947 110, -1, 119, 324, -1, 119, 226, 324, -1, 109, 948 326, 110, -1, 109, 326, 110, 346, -1, 109, 327, 949 110, 347, -1, 109, 327, 110, -1, 329, 309, -1, 950 330, -1, 331, 309, -1, 332, 309, -1, 338, -1, 951 109, 329, 110, -1, 119, 328, -1, 119, 226, 328, 952 -1, 109, 330, 110, -1, 329, 346, -1, 109, 330, 953 110, 346, -1, 109, 331, 110, 347, -1, 109, 331, 954 110, -1, 329, 109, 134, 261, 135, 110, -1, 109, 955 330, 110, 109, 134, 261, 135, 110, -1, 109, 332, 956 110, -1, 316, 309, -1, 334, -1, 335, 309, -1, 957 336, 309, -1, 119, 333, -1, 119, 226, 333, -1, 958 109, 334, 110, -1, 316, 352, -1, 109, 334, 110, 959 346, -1, 109, 335, 110, 347, -1, 109, 335, 110, 960 -1, 316, 109, 134, 261, 135, 110, -1, 109, 334, 961 110, 109, 134, 261, 135, 110, -1, 109, 336, 110, 962 -1, 338, 309, -1, 339, -1, 340, 309, -1, 341, 963 309, -1, 74, -1, 75, -1, 119, 337, -1, 119, 964 226, 337, -1, 109, 339, 110, -1, 338, 352, -1, 965 109, 339, 110, 352, -1, 338, 109, 134, 261, 135, 966 110, -1, 109, 339, 110, 109, 134, 261, 135, 110, 967 -1, 343, -1, 344, 309, -1, 345, 309, -1, 119, 968 -1, 119, 226, -1, 119, 342, -1, 119, 226, 342, 969 -1, 109, 343, 110, -1, 346, -1, 109, 343, 110, 970 346, -1, 109, 344, 110, 347, -1, 109, 344, 110, 971 -1, 109, 134, 261, 135, 110, -1, 109, 343, 110, 972 109, 134, 261, 135, 110, -1, 109, 345, 110, -1, 973 111, 112, -1, 111, 112, 347, -1, 347, -1, 111, 974 134, 163, 135, 112, -1, 111, 134, 119, 135, 112, 975 -1, 347, 111, 134, 163, 135, 112, -1, 347, 111, 976 134, 119, 135, 112, -1, 349, -1, 350, 309, -1, 977 351, 309, -1, 119, -1, 119, 226, -1, 119, 348, 978 -1, 119, 226, 348, -1, 109, 349, 110, -1, 352, 979 -1, 109, 349, 110, 352, -1, 109, 350, 110, 347, 980 -1, 109, 350, 110, -1, 109, 134, 261, 135, 110, 981 -1, 109, 349, 110, 109, 134, 261, 135, 110, -1, 982 109, 351, 110, -1, 353, -1, 353, 347, -1, 347, 983 -1, 111, 112, -1, 111, 134, 226, 119, 135, 112, 984 -1, 111, 134, 226, 135, 112, -1, 111, 134, 226, 985 163, 135, 112, -1, 111, 134, 7, 225, 163, 135, 986 112, -1, 111, 134, 226, 7, 163, 135, 112, -1, 987 355, -1, 356, 309, -1, 357, 309, -1, 119, -1, 988 119, 226, -1, 119, 354, -1, 119, 226, 354, -1, 989 109, 355, 110, -1, 346, -1, 109, 355, 110, 346, 990 -1, 109, 356, 110, 347, -1, 109, 356, 110, -1, 991 109, 355, 110, 109, 134, 261, 135, 110, -1, 109, 992 357, 110, -1, 359, -1, 367, -1, 226, 367, -1, 993 360, -1, 361, -1, 119, 224, -1, 226, 119, 224, 994 -1, 119, 368, -1, 226, 119, 368, -1, 119, 358, 995 -1, 226, 119, 358, -1, 111, 112, 224, -1, 362, 996 224, -1, 111, 112, 347, 224, -1, 362, 347, 224, 997 -1, 347, 224, -1, 111, 112, 360, -1, 362, 360, 998 -1, 111, 112, 347, 360, -1, 362, 347, 360, -1, 999 347, 360, -1, 111, 134, 226, 119, 135, 112, -1, 1000 111, 134, 226, 163, 135, 112, -1, 111, 134, 230, 1001 163, 135, 112, -1, 111, 134, 230, 226, 163, 135, 1002 112, -1, 367, -1, 226, 367, -1, 364, -1, 365, 1003 -1, 366, -1, 119, 224, -1, 226, 119, 224, -1, 1004 119, 368, -1, 226, 119, 368, -1, 119, 363, -1, 1005 226, 119, 363, -1, 111, 112, 224, -1, 111, 112, 1006 347, 224, -1, 347, 224, -1, 111, 112, 365, -1, 1007 111, 112, 347, 365, -1, 347, 365, -1, 111, 134, 1008 260, 135, 112, -1, 111, 112, 109, 257, 110, -1, 1009 367, 109, 134, 257, 135, 110, -1, 217, 109, 134, 1010 257, 135, 110, -1, -1, 116, -1, -1, 131, 163, 1011 -1 854 -1, 22, -1, 23, -1, 15, -1, 24, -1, 25, 855 -1, 26, -1, 235, -1, 229, 235, -1, 234, 231, 856 -1, 234, 231, 225, -1, 234, 231, 235, -1, 236, 857 -1, 224, 237, 224, -1, 233, -1, 225, 233, -1, 858 236, 226, -1, 236, 233, -1, 27, 108, 272, 109, 859 -1, 27, 108, 167, 109, -1, 77, 108, 272, 109, 860 -1, 77, 108, 167, 109, -1, 239, -1, 229, 239, 861 -1, 238, 231, -1, 238, 231, 225, -1, 242, -1, 862 225, 242, -1, 239, 226, -1, 241, -1, 229, 241, 863 -1, 240, 231, -1, 240, 231, 225, -1, 73, -1, 864 225, 73, -1, 241, 226, -1, 243, -1, 253, -1, 865 244, 113, 245, 114, -1, 244, 270, -1, 244, 270, 866 113, 245, 114, -1, 244, 108, 288, 109, 113, 245, 867 114, -1, 244, 281, -1, 30, 308, -1, 31, 308, 868 -1, 246, -1, 245, 246, -1, 247, 131, -1, 39, 869 247, 131, -1, 248, 131, -1, 39, 248, 131, -1, 870 362, -1, 362, 270, -1, 247, 115, 270, -1, 247, 871 115, -1, 223, 249, -1, 248, 115, 308, 249, -1, 872 -1, 251, -1, 314, 250, -1, 327, 250, -1, 353, 873 -1, -1, 251, -1, 116, 161, -1, 29, 308, -1, 874 252, 113, 254, 368, 114, -1, 252, 270, 113, 254, 875 368, 114, -1, 252, 270, -1, 270, 255, -1, 254, 876 115, 270, 255, -1, -1, 130, 161, -1, -1, 257, 877 -1, 259, -1, 258, -1, 258, 134, 115, 133, 259, 878 -1, 259, 134, 115, 133, 95, -1, 258, 134, 115, 879 133, 95, -1, 263, -1, 259, 134, 115, 133, 263, 880 -1, 258, 134, 115, 133, 263, -1, 258, 134, 115, 881 133, 259, 134, 115, 133, 263, -1, 264, -1, 259, 882 134, 115, 133, 264, -1, -1, 261, -1, 262, -1, 883 262, 134, 115, 133, 95, -1, 266, -1, 265, -1, 884 262, 134, 115, 133, 266, -1, 262, 134, 115, 133, 885 265, -1, 265, -1, 358, 268, 369, -1, 366, 268, 886 369, -1, 225, 366, 268, 369, -1, 215, -1, 266, 887 -1, 358, -1, 366, -1, 225, 366, -1, 367, -1, 888 222, 332, 369, -1, 222, 336, 369, -1, 222, -1, 889 222, 347, -1, 138, -1, 267, 115, 138, -1, 136, 890 -1, 73, -1, 74, -1, 137, -1, 73, -1, 74, 891 -1, 138, -1, 73, -1, 74, -1, 362, -1, 223, 892 -1, 223, 353, -1, 362, -1, 367, -1, 223, -1, 893 223, 341, -1, -1, 130, 274, -1, 106, 274, -1, 894 162, -1, 113, 275, 368, 114, -1, -1, 274, -1, 895 276, 274, -1, 275, 115, 274, -1, 275, 115, 276, 896 274, -1, 277, 116, -1, 270, 116, -1, 278, -1, 897 277, 278, -1, 79, -1, 112, 270, -1, 110, 133, 898 162, 134, 111, -1, 110, 133, 306, 134, 111, -1, 899 110, 133, 161, 95, 161, 134, 111, -1, 112, 110, 900 133, 145, 134, 111, -1, 280, -1, 229, 280, -1, 901 279, 231, -1, 279, 231, 225, -1, 281, -1, 225, 902 281, -1, 280, 226, -1, 74, 108, 288, 109, -1, 903 283, 369, -1, 282, 115, 283, 369, -1, -1, 285, 904 270, 284, 286, -1, 223, 332, -1, 32, -1, 34, 905 -1, 33, -1, -1, 286, 287, -1, 128, 270, 108, 906 288, 109, -1, 128, 113, 133, 294, 114, -1, 128, 907 108, 133, 282, 134, 109, 113, 133, 294, 114, 108, 908 288, 109, -1, 272, -1, 162, -1, 288, 115, 272, 909 -1, 288, 115, 162, -1, 32, 290, -1, 230, 32, 910 290, -1, 289, 115, 290, -1, 291, 286, -1, 291, 911 286, 130, 272, -1, 270, -1, 269, 108, 133, 282, 912 134, 109, -1, 35, 270, 108, 133, 282, 134, 109, 913 113, 114, -1, -1, 35, 270, 108, 133, 282, 134, 914 109, 113, 293, 294, 114, -1, 295, -1, 294, 133, 915 295, -1, 296, 134, 131, -1, 297, 134, 131, -1, 916 213, -1, 215, -1, 296, 134, 115, 133, 268, -1, 917 223, 305, -1, 297, 134, 115, 133, 305, -1, -1, 918 299, -1, 301, -1, 299, 133, 301, -1, -1, 299, 919 -1, 210, -1, 303, -1, 196, -1, -1, 5, 81, 920 302, 113, 300, 114, -1, 39, 301, -1, 304, -1, 921 319, 171, -1, 323, 133, 205, 171, -1, 214, 171, 922 -1, 222, 319, 171, -1, 225, 319, 171, -1, 229, 923 319, 171, -1, 229, 225, 319, 171, -1, 222, 323, 924 133, 205, 171, -1, 225, 323, 133, 205, 171, -1, 925 229, 323, 133, 205, 171, -1, 229, 225, 323, 133, 926 205, 171, -1, 314, -1, 319, -1, 327, -1, 161, 927 122, 161, -1, -1, 63, 108, 140, 109, 308, -1, 928 -1, 309, -1, 310, -1, 309, 310, -1, 38, 108, 929 108, 311, 109, 109, -1, 312, -1, 311, 115, 312, 930 -1, -1, 313, -1, 313, 108, 168, 109, -1, 268, 931 -1, 232, -1, 233, -1, 226, -1, 315, 308, -1, 932 316, -1, 317, 308, -1, 318, 308, -1, 136, -1, 933 108, 315, 109, -1, 118, 314, -1, 118, 225, 314, 934 -1, 108, 316, 109, -1, 315, 345, -1, 108, 316, 935 109, 345, -1, 108, 317, 109, 346, -1, 108, 317, 936 109, -1, 108, 316, 109, 108, 133, 260, 134, 109, 937 -1, 108, 318, 109, -1, 320, 308, -1, 321, -1, 938 322, 308, -1, 315, 108, 133, 260, 134, 109, -1, 939 108, 321, 109, 108, 133, 260, 134, 109, -1, 108, 940 320, 109, -1, 118, 319, -1, 118, 225, 319, -1, 941 108, 321, 109, -1, 108, 321, 109, 345, -1, 108, 942 322, 109, 346, -1, 108, 322, 109, -1, 324, -1, 943 325, -1, 326, -1, 315, 108, 267, 109, -1, 108, 944 325, 109, 108, 267, 109, -1, 108, 324, 109, -1, 945 118, 323, -1, 118, 225, 323, -1, 108, 325, 109, 946 -1, 108, 325, 109, 345, -1, 108, 326, 109, 346, 947 -1, 108, 326, 109, -1, 328, 308, -1, 329, -1, 948 330, 308, -1, 331, 308, -1, 337, -1, 108, 328, 949 109, -1, 118, 327, -1, 118, 225, 327, -1, 108, 950 329, 109, -1, 328, 345, -1, 108, 329, 109, 345, 951 -1, 108, 330, 109, 346, -1, 108, 330, 109, -1, 952 328, 108, 133, 260, 134, 109, -1, 108, 329, 109, 953 108, 133, 260, 134, 109, -1, 108, 331, 109, -1, 954 315, 308, -1, 333, -1, 334, 308, -1, 335, 308, 955 -1, 118, 332, -1, 118, 225, 332, -1, 108, 333, 956 109, -1, 315, 351, -1, 108, 333, 109, 345, -1, 957 108, 334, 109, 346, -1, 108, 334, 109, -1, 315, 958 108, 133, 260, 134, 109, -1, 108, 333, 109, 108, 959 133, 260, 134, 109, -1, 108, 335, 109, -1, 337, 960 308, -1, 338, -1, 339, 308, -1, 340, 308, -1, 961 73, -1, 74, -1, 118, 336, -1, 118, 225, 336, 962 -1, 108, 338, 109, -1, 337, 351, -1, 108, 338, 963 109, 351, -1, 337, 108, 133, 260, 134, 109, -1, 964 108, 338, 109, 108, 133, 260, 134, 109, -1, 342, 965 -1, 343, 308, -1, 344, 308, -1, 118, -1, 118, 966 225, -1, 118, 341, -1, 118, 225, 341, -1, 108, 967 342, 109, -1, 345, -1, 108, 342, 109, 345, -1, 968 108, 343, 109, 346, -1, 108, 343, 109, -1, 108, 969 133, 260, 134, 109, -1, 108, 342, 109, 108, 133, 970 260, 134, 109, -1, 108, 344, 109, -1, 110, 111, 971 -1, 110, 111, 346, -1, 346, -1, 110, 133, 162, 972 134, 111, -1, 110, 133, 118, 134, 111, -1, 346, 973 110, 133, 162, 134, 111, -1, 346, 110, 133, 118, 974 134, 111, -1, 348, -1, 349, 308, -1, 350, 308, 975 -1, 118, -1, 118, 225, -1, 118, 347, -1, 118, 976 225, 347, -1, 108, 348, 109, -1, 351, -1, 108, 977 348, 109, 351, -1, 108, 349, 109, 346, -1, 108, 978 349, 109, -1, 108, 133, 260, 134, 109, -1, 108, 979 348, 109, 108, 133, 260, 134, 109, -1, 108, 350, 980 109, -1, 352, -1, 352, 346, -1, 346, -1, 110, 981 111, -1, 110, 133, 225, 118, 134, 111, -1, 110, 982 133, 225, 134, 111, -1, 110, 133, 225, 162, 134, 983 111, -1, 110, 133, 7, 224, 162, 134, 111, -1, 984 110, 133, 225, 7, 162, 134, 111, -1, 354, -1, 985 355, 308, -1, 356, 308, -1, 118, -1, 118, 225, 986 -1, 118, 353, -1, 118, 225, 353, -1, 108, 354, 987 109, -1, 345, -1, 108, 354, 109, 345, -1, 108, 988 355, 109, 346, -1, 108, 355, 109, -1, 108, 354, 989 109, 108, 133, 260, 134, 109, -1, 108, 356, 109, 990 -1, 358, -1, 366, -1, 225, 366, -1, 359, -1, 991 360, -1, 118, 223, -1, 225, 118, 223, -1, 118, 992 367, -1, 225, 118, 367, -1, 118, 357, -1, 225, 993 118, 357, -1, 110, 111, 223, -1, 361, 223, -1, 994 110, 111, 346, 223, -1, 361, 346, 223, -1, 346, 995 223, -1, 110, 111, 359, -1, 361, 359, -1, 110, 996 111, 346, 359, -1, 361, 346, 359, -1, 346, 359, 997 -1, 110, 133, 225, 118, 134, 111, -1, 110, 133, 998 225, 162, 134, 111, -1, 110, 133, 229, 162, 134, 999 111, -1, 110, 133, 229, 225, 162, 134, 111, -1, 1000 366, -1, 225, 366, -1, 363, -1, 364, -1, 365, 1001 -1, 118, 223, -1, 225, 118, 223, -1, 118, 367, 1002 -1, 225, 118, 367, -1, 118, 362, -1, 225, 118, 1003 362, -1, 110, 111, 223, -1, 110, 111, 346, 223, 1004 -1, 346, 223, -1, 110, 111, 364, -1, 110, 111, 1005 346, 364, -1, 346, 364, -1, 110, 133, 259, 134, 1006 111, -1, 110, 111, 108, 256, 109, -1, 366, 108, 1007 133, 256, 134, 109, -1, 216, 108, 133, 256, 134, 1008 109, -1, -1, 115, -1, -1, 130, 162, -1 1012 1009 }; 1013 1010 … … 1015 1012 static const yytype_uint16 yyrline[] = 1016 1013 { 1017 0, 29 1, 291, 297, 306, 307, 308, 312, 313, 314,1018 31 8, 319, 323, 324, 328, 329, 333, 334, 340, 342,1019 34 4, 346, 351, 352, 358, 362, 364, 365, 367, 368,1020 3 70, 372, 374, 382, 383, 389, 390, 391, 396, 398,1021 40 3, 404, 408, 412, 414, 416, 418, 423, 426, 428,1022 4 30, 432, 434, 436, 438, 440, 446, 448, 450, 452,1023 45 4, 456, 458, 460, 462, 467, 468, 469, 470, 474,1024 47 5, 477, 482, 483, 485, 487, 492, 493, 495, 500,1025 50 1, 503, 508, 509, 511, 513, 515, 520, 521, 523,1026 52 8, 529, 534, 535, 540, 541, 546, 547, 552, 553,1027 55 8, 559, 561, 563, 568, 573, 574, 576, 578, 584,1028 58 5, 591, 593, 595, 597, 602, 603, 608, 609, 610,1029 61 1, 612, 613, 614, 615, 616, 617, 621, 622, 628,1030 62 9, 635, 636, 637, 638, 639, 640, 641, 642, 643,1031 65 2, 659, 661, 671, 672, 677, 679, 681, 683, 687,1032 68 8, 693, 698, 701, 703, 705, 710, 712, 720, 721,1033 72 3, 727, 728, 733, 734, 739, 740, 744, 749, 750,1034 75 4, 756, 762, 763, 767, 769, 771, 773, 779, 780,1035 78 4, 785, 789, 791, 793, 798, 800, 805, 807, 811,1036 81 4, 818, 821, 825, 827, 831, 833, 840, 842, 844,1037 85 3, 855, 857, 859, 861, 866, 868, 870, 872, 877,1038 8 90, 891, 896, 898, 903, 907, 909, 911, 913, 915,1039 92 1, 922, 928, 929, 933, 934, 939, 941, 947, 948,1040 9 50, 955, 957, 964, 966, 970, 971, 976, 978, 982,1041 98 3, 987, 989, 993, 994, 998, 999, 1003, 1004, 1019,1042 10 20, 1021, 1022, 1023, 1027, 1032, 1039, 1049, 1054, 1059,1043 106 7, 1072, 1077, 1082, 1087, 1095, 1117, 1122, 1129, 1131,1044 113 8, 1143, 1148, 1159, 1164, 1169, 1174, 1179, 1188, 1193,1045 120 1, 1202, 1203, 1204, 1210, 1215, 1223, 1224, 1225, 1226,1046 12 30, 1231, 1232, 1233, 1238, 1239, 1248, 1249, 1254, 1255,1047 12 60, 1262, 1264, 1266, 1268, 1271, 1270, 1282, 1283, 1285,1048 129 5, 1296, 1301, 1305, 1307, 1309, 1311, 1313, 1315, 1317,1049 131 9, 1324, 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340,1050 134 2, 1344, 1346, 1348, 1354, 1355, 1357, 1359, 1361, 1366,1051 13 67, 1373, 1374, 1376, 1378, 1383, 1385, 1387, 1389, 1394,1052 139 5, 1397, 1399, 1404, 1405, 1407, 1412, 1413, 1415, 1417,1053 142 2, 1424, 1426, 1431, 1432, 1436, 1438, 1440, 1442, 1444,1054 144 9, 1451, 1456, 1458, 1463, 1464, 1466, 1467, 1472, 1473,1055 147 5, 1477, 1482, 1484, 1490, 1491, 1493, 1496, 1499, 1504,1056 150 5, 1510, 1515, 1519, 1521, 1523, 1528, 1530, 1536, 1537,1057 154 5, 1546, 1550, 1551, 1552, 1554, 1556, 1563, 1564, 1566,1058 15 68, 1573, 1574, 1580, 1581, 1585, 1586, 1591, 1592, 1593,1059 1 595, 1603, 1604, 1606, 1609, 1611, 1615, 1616, 1617, 1619,1060 162 1, 1625, 1630, 1638, 1639, 1648, 1650, 1655, 1656, 1657,1061 16 61, 1662, 1663, 1667, 1668, 1669, 1673, 1674, 1675, 1680,1062 16 81, 1682, 1683, 1689, 1690, 1692, 1697, 1698, 1703, 1704,1063 170 5, 1706, 1707, 1722, 1723, 1728, 1729, 1737, 1739, 1741,1064 174 4, 1746, 1748, 1771, 1772, 1774, 1776, 1781, 1782, 1784,1065 17 89, 1794, 1795, 1801, 1800, 1804, 1808, 1810, 1812, 1818,1066 18 19, 1824, 1829, 1831, 1836, 1838, 1839, 1841, 1846, 1848,1067 185 0, 1855, 1857, 1862, 1867, 1875, 1881, 1880, 1894, 1895,1068 1 900, 1901, 1905, 1910, 1915, 1923, 1928, 1939, 1940, 1951,1069 195 2, 1958, 1959, 1963, 1964, 1965, 1968, 1967, 1978, 1983,1070 19 88, 1994, 2003, 2009, 2015, 2021, 2027, 2035, 2041, 2049,1071 20 55, 2064, 2065, 2066, 2070, 2074, 2076, 2081, 2082, 2086,1072 208 7, 2092, 2098, 2099, 2102, 2104, 2105, 2109, 2110, 2111,1073 21 12, 2146, 2148, 2149, 2151, 2156, 2161, 2166, 2168, 2170,1074 217 5, 2177, 2179, 2181, 2186, 2188, 2198, 2200, 2201, 2206,1075 220 8, 2210, 2215, 2217, 2219, 2224, 2226, 2228, 2237, 2238,1076 22 39, 2243, 2245, 2247, 2252, 2254, 2256, 2261, 2263, 2265,1077 22 80, 2282, 2283, 2285, 2290, 2291, 2296, 2298, 2300, 2305,1078 230 7, 2309, 2311, 2316, 2318, 2320, 2330, 2332, 2333, 2335,1079 23 40, 2342, 2344, 2349, 2351, 2353, 2355, 2360, 2362, 2364,1080 239 5, 2397, 2398, 2400, 2405, 2410, 2418, 2420, 2422, 2427,1081 24 29, 2434, 2436, 2450, 2451, 2453, 2458, 2460, 2462, 2464,1082 246 6, 2471, 2472, 2474, 2476, 2481, 2483, 2485, 2491, 2493,1083 249 5, 2499, 2501, 2503, 2505, 2519, 2520, 2522, 2527, 2529,1084 253 1, 2533, 2535, 2540, 2541, 2543, 2545, 2550, 2552, 2554,1085 25 60, 2561, 2563, 2572, 2575, 2577, 2580, 2582, 2584, 2597,1086 259 8, 2600, 2605, 2607, 2609, 2611, 2613, 2618, 2619, 2621,1087 262 3, 2628, 2630, 2638, 2639, 2640, 2645, 2646, 2650, 2652,1088 265 4, 2656, 2658, 2660, 2667, 2669, 2671, 2673, 2675, 2677,1089 267 9, 2681, 2683, 2685, 2690, 2692, 2694, 2699, 2725, 2726,1090 272 8, 2732, 2733, 2737, 2739, 2741, 2743, 2745, 2747, 2754,1091 275 6, 2758, 2760, 2762, 2764, 2769, 2774, 2776, 2778, 2796,1092 2 798, 2803, 28041014 0, 290, 290, 296, 305, 306, 307, 311, 312, 313, 1015 317, 318, 322, 323, 327, 328, 332, 333, 339, 341, 1016 343, 345, 350, 351, 357, 361, 363, 364, 366, 367, 1017 369, 371, 373, 381, 382, 388, 389, 390, 395, 397, 1018 402, 403, 407, 411, 413, 415, 417, 422, 425, 427, 1019 429, 431, 433, 435, 437, 439, 445, 447, 449, 451, 1020 453, 455, 457, 459, 461, 466, 467, 468, 469, 473, 1021 474, 476, 481, 482, 484, 486, 491, 492, 494, 499, 1022 500, 502, 507, 508, 510, 512, 514, 519, 520, 522, 1023 527, 528, 533, 534, 539, 540, 545, 546, 551, 552, 1024 557, 558, 560, 562, 567, 572, 573, 575, 577, 583, 1025 584, 590, 592, 594, 596, 601, 602, 607, 608, 609, 1026 610, 611, 612, 613, 614, 615, 616, 620, 621, 627, 1027 628, 634, 635, 636, 637, 638, 639, 640, 641, 642, 1028 651, 658, 660, 670, 671, 676, 678, 680, 682, 686, 1029 687, 692, 697, 700, 702, 704, 709, 711, 719, 720, 1030 722, 726, 727, 732, 733, 738, 739, 743, 748, 749, 1031 753, 755, 761, 762, 766, 768, 770, 772, 778, 779, 1032 783, 784, 788, 790, 792, 797, 799, 804, 806, 810, 1033 813, 817, 820, 824, 826, 830, 832, 839, 841, 843, 1034 852, 854, 856, 858, 860, 865, 867, 869, 871, 876, 1035 889, 890, 895, 897, 902, 906, 908, 910, 912, 914, 1036 920, 921, 927, 928, 932, 933, 938, 940, 946, 947, 1037 949, 954, 956, 963, 965, 969, 970, 975, 977, 981, 1038 982, 986, 988, 992, 993, 997, 998, 1002, 1003, 1018, 1039 1019, 1020, 1021, 1022, 1026, 1031, 1038, 1048, 1053, 1058, 1040 1066, 1071, 1076, 1081, 1086, 1094, 1116, 1121, 1128, 1130, 1041 1137, 1142, 1147, 1158, 1163, 1168, 1173, 1178, 1187, 1192, 1042 1200, 1201, 1202, 1203, 1209, 1214, 1222, 1223, 1224, 1225, 1043 1229, 1230, 1231, 1232, 1237, 1238, 1247, 1248, 1253, 1254, 1044 1259, 1261, 1263, 1265, 1267, 1270, 1269, 1281, 1282, 1284, 1045 1294, 1295, 1300, 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1046 1318, 1323, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1339, 1047 1341, 1343, 1345, 1351, 1352, 1354, 1356, 1358, 1363, 1364, 1048 1370, 1371, 1373, 1375, 1380, 1382, 1384, 1386, 1391, 1392, 1049 1394, 1396, 1401, 1402, 1404, 1409, 1410, 1412, 1414, 1419, 1050 1421, 1423, 1428, 1429, 1433, 1435, 1437, 1439, 1441, 1446, 1051 1448, 1453, 1455, 1460, 1461, 1463, 1464, 1469, 1470, 1472, 1052 1474, 1479, 1481, 1487, 1488, 1490, 1493, 1496, 1501, 1502, 1053 1507, 1512, 1516, 1518, 1520, 1525, 1527, 1533, 1534, 1542, 1054 1543, 1547, 1548, 1549, 1551, 1553, 1560, 1561, 1563, 1565, 1055 1570, 1571, 1577, 1578, 1582, 1583, 1588, 1589, 1590, 1592, 1056 1600, 1601, 1603, 1606, 1608, 1612, 1613, 1614, 1616, 1618, 1057 1622, 1627, 1635, 1636, 1645, 1647, 1652, 1653, 1654, 1658, 1058 1659, 1660, 1664, 1665, 1666, 1670, 1671, 1672, 1677, 1678, 1059 1679, 1680, 1686, 1687, 1689, 1694, 1695, 1700, 1701, 1702, 1060 1703, 1704, 1719, 1720, 1725, 1726, 1734, 1736, 1738, 1741, 1061 1743, 1745, 1768, 1769, 1771, 1773, 1778, 1779, 1781, 1786, 1062 1791, 1792, 1798, 1797, 1801, 1805, 1807, 1809, 1815, 1816, 1063 1821, 1826, 1828, 1833, 1835, 1836, 1838, 1843, 1845, 1847, 1064 1852, 1854, 1859, 1864, 1872, 1878, 1877, 1891, 1892, 1897, 1065 1898, 1902, 1907, 1912, 1920, 1925, 1936, 1937, 1948, 1949, 1066 1955, 1956, 1960, 1961, 1962, 1965, 1964, 1975, 1980, 1985, 1067 1991, 2000, 2006, 2012, 2018, 2024, 2032, 2038, 2046, 2052, 1068 2061, 2062, 2063, 2067, 2071, 2073, 2078, 2079, 2083, 2084, 1069 2089, 2095, 2096, 2099, 2101, 2102, 2106, 2107, 2108, 2109, 1070 2143, 2145, 2146, 2148, 2153, 2158, 2163, 2165, 2167, 2172, 1071 2174, 2176, 2178, 2183, 2185, 2195, 2197, 2198, 2203, 2205, 1072 2207, 2212, 2214, 2216, 2221, 2223, 2225, 2234, 2235, 2236, 1073 2240, 2242, 2244, 2249, 2251, 2253, 2258, 2260, 2262, 2277, 1074 2279, 2280, 2282, 2287, 2288, 2293, 2295, 2297, 2302, 2304, 1075 2306, 2308, 2313, 2315, 2317, 2327, 2329, 2330, 2332, 2337, 1076 2339, 2341, 2346, 2348, 2350, 2352, 2357, 2359, 2361, 2392, 1077 2394, 2395, 2397, 2402, 2407, 2415, 2417, 2419, 2424, 2426, 1078 2431, 2433, 2447, 2448, 2450, 2455, 2457, 2459, 2461, 2463, 1079 2468, 2469, 2471, 2473, 2478, 2480, 2482, 2488, 2490, 2492, 1080 2496, 2498, 2500, 2502, 2516, 2517, 2519, 2524, 2526, 2528, 1081 2530, 2532, 2537, 2538, 2540, 2542, 2547, 2549, 2551, 2557, 1082 2558, 2560, 2569, 2572, 2574, 2577, 2579, 2581, 2594, 2595, 1083 2597, 2602, 2604, 2606, 2608, 2610, 2615, 2616, 2618, 2620, 1084 2625, 2627, 2635, 2636, 2637, 2642, 2643, 2647, 2649, 2651, 1085 2653, 2655, 2657, 2664, 2666, 2668, 2670, 2672, 2674, 2676, 1086 2678, 2680, 2682, 2687, 2689, 2691, 2696, 2722, 2723, 2725, 1087 2729, 2730, 2734, 2736, 2738, 2740, 2742, 2744, 2751, 2753, 1088 2755, 2757, 2759, 2761, 2766, 2771, 2773, 2775, 2793, 2795, 1089 2800, 2801 1093 1090 }; 1094 1091 #endif … … 1102 1099 "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL", 1103 1100 "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE", 1104 "SIGNED", "UNSIGNED", " VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",1105 " LABEL", "ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT",1106 " SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",1107 " CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",1108 " RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",1109 " CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",1110 "A LIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",1111 " THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",1112 " TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",1101 "SIGNED", "UNSIGNED", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF", "LABEL", 1102 "ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT", "SIZEOF", 1103 "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", 1104 "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", 1105 "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", 1106 "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", 1107 "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL", 1108 "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", 1109 "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1113 1110 "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant", 1114 1111 "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", … … 1222 1219 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 1223 1220 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1224 355, 356, 357, 358, 359, 360, 361, 362, 363, 40,1225 41, 91, 93, 46, 123, 125, 44, 58, 33, 42,1226 38, 43, 45, 126, 47, 37, 60, 62, 94, 124,1227 6 3, 61, 591221 355, 356, 357, 358, 359, 360, 361, 362, 40, 41, 1222 91, 93, 46, 123, 125, 44, 58, 33, 42, 38, 1223 43, 45, 126, 47, 37, 60, 62, 94, 124, 63, 1224 61, 59 1228 1225 }; 1229 1226 # endif … … 1232 1229 static const yytype_uint16 yyr1[] = 1233 1230 { 1234 0, 13 3, 134, 135, 136, 136, 136, 137, 137, 137,1235 13 8, 138, 139, 139, 140, 140, 141, 141, 142, 142,1236 14 2, 142, 143, 143, 143, 143, 143, 143, 143, 143,1237 14 3, 143, 143, 144, 144, 145, 145, 145, 145, 145,1238 14 6, 146, 147, 147, 147, 147, 147, 148, 148, 148,1239 14 8, 148, 148, 148, 148, 148, 148, 148, 148, 148,1240 14 8, 148, 148, 148, 148, 149, 149, 149, 149, 150,1241 1 50, 150, 151, 151, 151, 151, 152, 152, 152, 153,1242 15 3, 153, 154, 154, 154, 154, 154, 155, 155, 155,1243 15 6, 156, 157, 157, 158, 158, 159, 159, 160, 160,1244 16 1, 161, 161, 161, 162, 163, 163, 163, 163, 164,1245 16 4, 165, 165, 165, 165, 166, 166, 167, 167, 167,1246 16 7, 167, 167, 167, 167, 167, 167, 168, 168, 169,1247 16 9, 170, 170, 170, 170, 170, 170, 170, 170, 170,1248 17 1, 172, 172, 173, 173, 174, 174, 174, 174, 175,1249 17 5, 176, 177, 177, 177, 177, 177, 177, 178, 178,1250 17 8, 179, 179, 180, 180, 181, 181, 182, 183, 183,1251 18 4, 184, 185, 185, 186, 186, 186, 186, 187, 187,1252 18 8, 188, 189, 189, 189, 190, 190, 191, 191, 191,1253 19 1, 191, 191, 191, 191, 191, 191, 192, 192, 192,1254 19 3, 193, 193, 193, 193, 194, 194, 194, 194, 195,1255 19 6, 196, 196, 196, 196, 197, 197, 197, 197, 197,1256 19 8, 198, 199, 199, 200, 200, 201, 201, 202, 202,1257 20 2, 203, 203, 204, 204, 205, 205, 206, 206, 207,1258 20 7, 208, 208, 209, 209, 210, 210, 211, 211, 212,1259 21 2, 212, 212, 212, 213, 213, 213, 214, 214, 214,1260 21 5, 215, 215, 215, 215, 216, 216, 216, 217, 217,1261 21 8, 218, 218, 219, 219, 219, 219, 219, 220, 220,1262 22 1, 221, 221, 221, 222, 222, 223, 223, 223, 223,1263 22 4, 224, 224, 224, 225, 225, 226, 226, 227, 227,1264 22 8, 228, 228, 228, 228, 229, 228, 230, 230, 230,1265 23 1, 231, 232, 233, 233, 233, 233, 233, 233, 233,1266 23 3, 234, 234, 234, 234, 234, 234, 234, 234, 234,1267 23 4, 234, 234, 234, 235, 235, 235, 235, 235, 236,1268 236, 23 7, 237, 237, 237, 238, 238, 238, 238, 239,1269 23 9, 239, 239, 240, 240, 240, 241, 241, 241, 241,1270 24 2, 242, 242, 243, 243, 244, 244, 244, 244, 244,1271 24 5, 245, 246, 246, 247, 247, 247, 247, 248, 248,1272 24 8, 248, 249, 249, 250, 250, 250, 250, 250, 251,1273 251, 252, 253, 25 4, 254, 254, 255, 255, 256, 256,1274 25 7, 257, 258, 258, 258, 258, 258, 259, 259, 259,1275 259, 2 60, 260, 261, 261, 262, 262, 263, 263, 263,1276 263, 26 4, 264, 264, 264, 264, 265, 265, 265, 265,1277 265, 26 6, 266, 267, 267, 268, 268, 269, 269, 269,1278 2 70, 270, 270, 271, 271, 271, 272, 272, 272, 273,1279 27 3, 273, 273, 274, 274, 274, 275, 275, 276, 276,1280 27 6, 276, 276, 277, 277, 278, 278, 279, 279, 279,1281 27 9, 279, 279, 280, 280, 280, 280, 281, 281, 281,1282 282, 28 3, 283, 285, 284, 284, 286, 286, 286, 287,1283 287, 28 8, 288, 288, 289, 289, 289, 289, 290, 290,1284 290, 29 1, 291, 292, 292, 293, 294, 293, 295, 295,1285 29 6, 296, 297, 297, 297, 298, 298, 299, 299, 300,1286 300, 30 1, 301, 302, 302, 302, 303, 302, 302, 304,1287 30 4, 304, 305, 305, 305, 305, 305, 305, 305, 305,1288 305, 30 6, 306, 306, 307, 308, 308, 309, 309, 310,1289 310, 311, 31 2, 312, 313, 313, 313, 314, 314, 314,1290 314, 31 5, 315, 315, 315, 316, 316, 317, 317, 317,1291 31 8, 318, 318, 318, 319, 319, 320, 320, 320, 321,1292 32 1, 321, 322, 322, 322, 323, 323, 323, 324, 324,1293 324, 32 5, 325, 325, 326, 326, 326, 327, 327, 327,1294 32 8, 328, 328, 328, 329, 329, 330, 330, 330, 331,1295 33 1, 331, 331, 332, 332, 332, 333, 333, 333, 333,1296 33 4, 334, 334, 335, 335, 335, 335, 336, 336, 336,1297 33 7, 337, 337, 337, 338, 338, 339, 339, 339, 340,1298 340, 34 1, 341, 342, 342, 342, 343, 343, 343, 343,1299 343, 34 4, 344, 344, 344, 345, 345, 345, 346, 346,1300 346, 34 7, 347, 347, 347, 348, 348, 348, 349, 349,1301 34 9, 349, 349, 350, 350, 350, 350, 351, 351, 351,1302 35 2, 352, 352, 353, 353, 353, 353, 353, 353, 354,1303 35 4, 354, 355, 355, 355, 355, 355, 356, 356, 356,1304 356, 35 7, 357, 358, 358, 358, 359, 359, 360, 360,1305 3 60, 360, 360, 360, 361, 361, 361, 361, 361, 361,1306 36 1, 361, 361, 361, 362, 362, 362, 362, 363, 363,1307 363, 36 4, 364, 365, 365, 365, 365, 365, 365, 366,1308 36 6, 366, 366, 366, 366, 367, 368, 368, 368, 369,1309 369, 3 70, 3701231 0, 132, 133, 134, 135, 135, 135, 136, 136, 136, 1232 137, 137, 138, 138, 139, 139, 140, 140, 141, 141, 1233 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 1234 142, 142, 142, 143, 143, 144, 144, 144, 144, 144, 1235 145, 145, 146, 146, 146, 146, 146, 147, 147, 147, 1236 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 1237 147, 147, 147, 147, 147, 148, 148, 148, 148, 149, 1238 149, 149, 150, 150, 150, 150, 151, 151, 151, 152, 1239 152, 152, 153, 153, 153, 153, 153, 154, 154, 154, 1240 155, 155, 156, 156, 157, 157, 158, 158, 159, 159, 1241 160, 160, 160, 160, 161, 162, 162, 162, 162, 163, 1242 163, 164, 164, 164, 164, 165, 165, 166, 166, 166, 1243 166, 166, 166, 166, 166, 166, 166, 167, 167, 168, 1244 168, 169, 169, 169, 169, 169, 169, 169, 169, 169, 1245 170, 171, 171, 172, 172, 173, 173, 173, 173, 174, 1246 174, 175, 176, 176, 176, 176, 176, 176, 177, 177, 1247 177, 178, 178, 179, 179, 180, 180, 181, 182, 182, 1248 183, 183, 184, 184, 185, 185, 185, 185, 186, 186, 1249 187, 187, 188, 188, 188, 189, 189, 190, 190, 190, 1250 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 1251 192, 192, 192, 192, 192, 193, 193, 193, 193, 194, 1252 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, 1253 197, 197, 198, 198, 199, 199, 200, 200, 201, 201, 1254 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 1255 206, 207, 207, 208, 208, 209, 209, 210, 210, 211, 1256 211, 211, 211, 211, 212, 212, 212, 213, 213, 213, 1257 214, 214, 214, 214, 214, 215, 215, 215, 216, 216, 1258 217, 217, 217, 218, 218, 218, 218, 218, 219, 219, 1259 220, 220, 220, 220, 221, 221, 222, 222, 222, 222, 1260 223, 223, 223, 223, 224, 224, 225, 225, 226, 226, 1261 227, 227, 227, 227, 227, 228, 227, 229, 229, 229, 1262 230, 230, 231, 232, 232, 232, 232, 232, 232, 232, 1263 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 1264 233, 233, 233, 234, 234, 234, 234, 234, 235, 235, 1265 236, 236, 236, 236, 237, 237, 237, 237, 238, 238, 1266 238, 238, 239, 239, 239, 240, 240, 240, 240, 241, 1267 241, 241, 242, 242, 243, 243, 243, 243, 243, 244, 1268 244, 245, 245, 246, 246, 246, 246, 247, 247, 247, 1269 247, 248, 248, 249, 249, 249, 249, 249, 250, 250, 1270 251, 252, 253, 253, 253, 254, 254, 255, 255, 256, 1271 256, 257, 257, 257, 257, 257, 258, 258, 258, 258, 1272 259, 259, 260, 260, 261, 261, 262, 262, 262, 262, 1273 263, 263, 263, 263, 263, 264, 264, 264, 264, 264, 1274 265, 265, 266, 266, 267, 267, 268, 268, 268, 269, 1275 269, 269, 270, 270, 270, 271, 271, 271, 272, 272, 1276 272, 272, 273, 273, 273, 274, 274, 275, 275, 275, 1277 275, 275, 276, 276, 277, 277, 278, 278, 278, 278, 1278 278, 278, 279, 279, 279, 279, 280, 280, 280, 281, 1279 282, 282, 284, 283, 283, 285, 285, 285, 286, 286, 1280 287, 287, 287, 288, 288, 288, 288, 289, 289, 289, 1281 290, 290, 291, 291, 292, 293, 292, 294, 294, 295, 1282 295, 296, 296, 296, 297, 297, 298, 298, 299, 299, 1283 300, 300, 301, 301, 301, 302, 301, 301, 303, 303, 1284 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1285 305, 305, 305, 306, 307, 307, 308, 308, 309, 309, 1286 310, 311, 311, 312, 312, 312, 313, 313, 313, 313, 1287 314, 314, 314, 314, 315, 315, 316, 316, 316, 317, 1288 317, 317, 317, 318, 318, 319, 319, 319, 320, 320, 1289 320, 321, 321, 321, 322, 322, 322, 323, 323, 323, 1290 324, 324, 324, 325, 325, 325, 326, 326, 326, 327, 1291 327, 327, 327, 328, 328, 329, 329, 329, 330, 330, 1292 330, 330, 331, 331, 331, 332, 332, 332, 332, 333, 1293 333, 333, 334, 334, 334, 334, 335, 335, 335, 336, 1294 336, 336, 336, 337, 337, 338, 338, 338, 339, 339, 1295 340, 340, 341, 341, 341, 342, 342, 342, 342, 342, 1296 343, 343, 343, 343, 344, 344, 344, 345, 345, 345, 1297 346, 346, 346, 346, 347, 347, 347, 348, 348, 348, 1298 348, 348, 349, 349, 349, 349, 350, 350, 350, 351, 1299 351, 351, 352, 352, 352, 352, 352, 352, 353, 353, 1300 353, 354, 354, 354, 354, 354, 355, 355, 355, 355, 1301 356, 356, 357, 357, 357, 358, 358, 359, 359, 359, 1302 359, 359, 359, 360, 360, 360, 360, 360, 360, 360, 1303 360, 360, 360, 361, 361, 361, 361, 362, 362, 362, 1304 363, 363, 364, 364, 364, 364, 364, 364, 365, 365, 1305 365, 365, 365, 365, 366, 367, 367, 367, 368, 368, 1306 369, 369 1310 1307 }; 1311 1308 … … 1346 1343 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1347 1344 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1348 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1349 3, 1, 2, 2, 2, 4, 4, 4, 4, 1, 1350 2, 2, 3, 1, 2, 2, 1, 2, 2, 3, 1351 1, 2, 2, 1, 1, 4, 2, 5, 7, 2, 1352 2, 2, 1, 2, 2, 3, 2, 3, 1, 2, 1353 3, 2, 2, 4, 0, 1, 2, 2, 1, 0, 1354 1, 2, 2, 5, 6, 2, 2, 4, 0, 2, 1355 0, 1, 1, 1, 5, 5, 5, 1, 5, 5, 1356 9, 1, 5, 0, 1, 1, 5, 1, 1, 5, 1357 5, 1, 3, 3, 4, 1, 1, 1, 1, 2, 1358 1, 3, 3, 1, 2, 1, 3, 1, 1, 1, 1359 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1360 1, 1, 2, 0, 2, 2, 1, 4, 0, 1, 1361 2, 3, 4, 2, 2, 1, 2, 1, 2, 5, 1362 5, 7, 6, 1, 2, 2, 3, 1, 2, 2, 1363 4, 2, 4, 0, 4, 2, 1, 1, 1, 0, 1364 2, 5, 5, 13, 1, 1, 3, 3, 2, 3, 1365 3, 2, 4, 1, 6, 9, 0, 11, 1, 3, 1366 3, 3, 1, 1, 5, 2, 5, 0, 1, 1, 1367 3, 0, 1, 1, 1, 1, 0, 6, 2, 1, 1368 2, 4, 2, 3, 3, 3, 4, 5, 5, 5, 1369 6, 1, 1, 1, 3, 0, 5, 0, 1, 1, 1370 2, 6, 1, 3, 0, 1, 4, 1, 1, 1, 1371 1, 2, 1, 2, 2, 1, 3, 2, 3, 3, 1372 2, 4, 4, 3, 8, 3, 2, 1, 2, 6, 1373 8, 3, 2, 3, 3, 4, 4, 3, 1, 1, 1374 1, 4, 6, 3, 2, 3, 3, 4, 4, 3, 1345 1, 1, 1, 1, 2, 2, 3, 3, 1, 3, 1346 1, 2, 2, 2, 4, 4, 4, 4, 1, 2, 1347 2, 3, 1, 2, 2, 1, 2, 2, 3, 1, 1348 2, 2, 1, 1, 4, 2, 5, 7, 2, 2, 1349 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 1350 2, 2, 4, 0, 1, 2, 2, 1, 0, 1, 1351 2, 2, 5, 6, 2, 2, 4, 0, 2, 0, 1352 1, 1, 1, 5, 5, 5, 1, 5, 5, 9, 1353 1, 5, 0, 1, 1, 5, 1, 1, 5, 5, 1354 1, 3, 3, 4, 1, 1, 1, 1, 2, 1, 1355 3, 3, 1, 2, 1, 3, 1, 1, 1, 1, 1356 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1357 1, 2, 0, 2, 2, 1, 4, 0, 1, 2, 1358 3, 4, 2, 2, 1, 2, 1, 2, 5, 5, 1359 7, 6, 1, 2, 2, 3, 1, 2, 2, 4, 1360 2, 4, 0, 4, 2, 1, 1, 1, 0, 2, 1361 5, 5, 13, 1, 1, 3, 3, 2, 3, 3, 1362 2, 4, 1, 6, 9, 0, 11, 1, 3, 3, 1363 3, 1, 1, 5, 2, 5, 0, 1, 1, 3, 1364 0, 1, 1, 1, 1, 0, 6, 2, 1, 2, 1365 4, 2, 3, 3, 3, 4, 5, 5, 5, 6, 1366 1, 1, 1, 3, 0, 5, 0, 1, 1, 2, 1367 6, 1, 3, 0, 1, 4, 1, 1, 1, 1, 1375 1368 2, 1, 2, 2, 1, 3, 2, 3, 3, 2, 1376 4, 4, 3, 6, 8, 3, 2, 1, 2, 2, 1377 2, 3, 3, 2, 4, 4, 3, 6, 8, 3, 1378 2, 1, 2, 2, 1, 1, 2, 3, 3, 2, 1379 4, 6, 8, 1, 2, 2, 1, 2, 2, 3, 1380 3, 1, 4, 4, 3, 5, 8, 3, 2, 3, 1381 1, 5, 5, 6, 6, 1, 2, 2, 1, 2, 1382 2, 3, 3, 1, 4, 4, 3, 5, 8, 3, 1383 1, 2, 1, 2, 6, 5, 6, 7, 7, 1, 1384 2, 2, 1, 2, 2, 3, 3, 1, 4, 4, 1385 3, 8, 3, 1, 1, 2, 1, 1, 2, 3, 1386 2, 3, 2, 3, 3, 2, 4, 3, 2, 3, 1387 2, 4, 3, 2, 6, 6, 6, 7, 1, 2, 1388 1, 1, 1, 2, 3, 2, 3, 2, 3, 3, 1389 4, 2, 3, 4, 2, 5, 5, 6, 6, 0, 1390 1, 0, 2 1369 4, 4, 3, 8, 3, 2, 1, 2, 6, 8, 1370 3, 2, 3, 3, 4, 4, 3, 1, 1, 1, 1371 4, 6, 3, 2, 3, 3, 4, 4, 3, 2, 1372 1, 2, 2, 1, 3, 2, 3, 3, 2, 4, 1373 4, 3, 6, 8, 3, 2, 1, 2, 2, 2, 1374 3, 3, 2, 4, 4, 3, 6, 8, 3, 2, 1375 1, 2, 2, 1, 1, 2, 3, 3, 2, 4, 1376 6, 8, 1, 2, 2, 1, 2, 2, 3, 3, 1377 1, 4, 4, 3, 5, 8, 3, 2, 3, 1, 1378 5, 5, 6, 6, 1, 2, 2, 1, 2, 2, 1379 3, 3, 1, 4, 4, 3, 5, 8, 3, 1, 1380 2, 1, 2, 6, 5, 6, 7, 7, 1, 2, 1381 2, 1, 2, 2, 3, 3, 1, 4, 4, 3, 1382 8, 3, 1, 1, 2, 1, 1, 2, 3, 2, 1383 3, 2, 3, 3, 2, 4, 3, 2, 3, 2, 1384 4, 3, 2, 6, 6, 6, 7, 1, 2, 1, 1385 1, 1, 2, 3, 2, 3, 2, 3, 3, 4, 1386 2, 3, 4, 2, 5, 5, 6, 6, 0, 1, 1387 0, 2 1391 1388 }; 1392 1389 … … 1398 1395 294, 294, 315, 313, 316, 314, 317, 318, 300, 302, 1399 1396 301, 0, 303, 329, 321, 326, 324, 325, 323, 322, 1400 327, 328, 33 3, 330, 331, 332, 547, 547, 547, 0,1401 0, 0, 294, 220, 304, 319, 320, 7, 360, 0,1402 8, 14, 15, 0, 2, 294, 565, 9, 525, 523,1403 247, 3, 453, 3, 260, 0, 3, 3, 3, 248,1404 3, 0, 0, 0, 295, 296, 298, 294, 307, 310,1405 3 12, 341, 286, 334, 339, 287, 349, 288, 356, 353,1406 363, 0, 0, 364, 289, 473, 477, 3, 3, 0,1407 2, 519, 524, 529, 299, 0, 0, 547, 577, 547,1408 2, 588, 589, 590, 294, 0, 731, 732, 0, 12,1409 294, 0, 13, 270, 271, 0, 295, 290, 291, 292,1410 293, 526, 305, 392, 548, 549, 370, 371, 12, 444,1411 445, 11, 440, 443, 0, 503, 498, 489, 444, 445,1412 0, 0, 528, 221, 0, 294, 0, 0, 0, 0,1413 0, 0, 0, 0, 294, 294, 2, 0, 733, 295,1414 5 82, 594, 737, 730, 728, 735, 0, 0, 0, 254,1415 2, 0, 532, 438, 439, 437, 0, 0, 0, 0,1416 547, 0, 634, 635, 0, 0, 545, 541, 547, 562,1417 54 7, 547, 542, 2, 543, 547, 601, 547, 547, 604,1418 0, 0, 0, 294, 294, 313, 361, 2, 294, 261,1419 297, 308, 342, 354, 478, 0, 2, 0, 453, 262,1420 295, 335, 350, 357, 474, 0, 2, 0, 311, 336,1421 343, 344, 0, 351, 355, 358, 362, 445, 294, 294,1422 36 6, 369, 0, 395, 475, 479, 0, 0, 0, 1,1423 294, 2, 530, 576, 578, 294, 2, 741, 295, 744,1424 54 5, 545, 295, 0, 0, 0, 273, 547, 542, 2,1425 294, 0, 0, 294, 550, 2, 501, 2, 554, 0,1426 0, 0, 0, 0, 0, 18, 59, 4, 5,6,1427 16, 0, 0, 0, 294, 2, 0, 294, 65, 66,1428 6 7, 68, 48, 19, 49, 22, 47, 69, 0, 72,1429 7 6, 79, 82, 87, 90, 92, 94, 96, 98, 100,1430 105, 495, 751, 451, 494, 0, 449, 450, 0, 566,1431 58 1, 584, 587, 593, 596, 599, 360, 0, 2, 739,1432 0, 294, 742, 2, 294, 3, 425, 0, 433, 295,1433 294, 307, 334, 287, 349, 356, 3, 3, 407, 411,1434 42 1, 426, 473, 294, 427, 706, 707, 294, 428, 430,1435 294, 2, 583, 595, 729, 2, 2, 249, 2, 458,1436 0, 456, 455, 454, 141, 2, 2, 251, 2, 2,1437 250, 2, 281, 2, 282, 0, 280, 0, 0, 0,1438 0, 0, 0, 0, 0, 0, 567, 606, 0, 453,1439 2, 561, 570, 660, 563, 564, 533, 294, 2, 600,1440 60 9, 602, 603, 0, 276, 294, 294, 340, 295, 0,1441 295, 0, 294, 734, 738, 736, 534, 294, 545, 255,1442 263, 309, 0, 2, 535, 294, 499, 337, 338, 283,1443 35 2, 359, 0, 294, 2, 384, 294, 372, 0, 0,1444 378, 728, 294, 749, 398, 0, 476, 500, 252, 253,1445 520, 294, 435, 0, 294, 237, 0, 2, 239, 0,1446 295, 0, 257, 2, 258, 278, 0, 0, 2, 294,1447 545, 294, 486, 488, 487, 0, 0, 751, 0, 294,1448 0, 294, 490, 294, 560, 558, 559, 557, 0, 552,1449 555, 0, 0, 294, 56, 294, 69, 52, 294, 62,1450 294, 294, 50, 51, 64, 2, 127, 0, 0, 447,1451 0, 446, 111, 294, 54, 55, 17, 0, 29, 30,1452 35, 2, 0, 35, 117, 118, 119, 120, 121, 122,1453 12 3, 124, 125, 126, 0, 0, 53, 0, 0, 0,1397 327, 328, 330, 331, 332, 546, 546, 546, 0, 0, 1398 0, 294, 220, 304, 319, 320, 7, 359, 0, 8, 1399 14, 15, 0, 2, 294, 564, 9, 524, 522, 247, 1400 3, 452, 3, 260, 0, 3, 3, 3, 248, 3, 1401 0, 0, 0, 295, 296, 298, 294, 307, 310, 312, 1402 340, 286, 333, 338, 287, 348, 288, 355, 352, 362, 1403 0, 0, 363, 289, 472, 476, 3, 3, 0, 2, 1404 518, 523, 528, 299, 0, 0, 546, 576, 546, 2, 1405 587, 588, 589, 294, 0, 730, 731, 0, 12, 294, 1406 0, 13, 270, 271, 0, 295, 290, 291, 292, 293, 1407 525, 305, 391, 547, 548, 369, 370, 12, 443, 444, 1408 11, 439, 442, 0, 502, 497, 488, 443, 444, 0, 1409 0, 527, 221, 0, 294, 0, 0, 0, 0, 0, 1410 0, 0, 0, 294, 294, 2, 0, 732, 295, 581, 1411 593, 736, 729, 727, 734, 0, 0, 0, 254, 2, 1412 0, 531, 437, 438, 436, 0, 0, 0, 0, 546, 1413 0, 633, 634, 0, 0, 544, 540, 546, 561, 546, 1414 546, 541, 2, 542, 546, 600, 546, 546, 603, 0, 1415 0, 0, 294, 294, 313, 360, 2, 294, 261, 297, 1416 308, 341, 353, 477, 0, 2, 0, 452, 262, 295, 1417 334, 349, 356, 473, 0, 2, 0, 311, 335, 342, 1418 343, 0, 350, 354, 357, 361, 444, 294, 294, 365, 1419 368, 0, 394, 474, 478, 0, 0, 0, 1, 294, 1420 2, 529, 575, 577, 294, 2, 740, 295, 743, 544, 1421 544, 295, 0, 0, 0, 273, 546, 541, 2, 294, 1422 0, 0, 294, 549, 2, 500, 2, 553, 0, 0, 1423 0, 0, 0, 0, 18, 59, 4, 5, 6, 16, 1424 0, 0, 0, 294, 2, 0, 294, 65, 66, 67, 1425 68, 48, 19, 49, 22, 47, 69, 0, 72, 76, 1426 79, 82, 87, 90, 92, 94, 96, 98, 100, 105, 1427 494, 750, 450, 493, 0, 448, 449, 0, 565, 580, 1428 583, 586, 592, 595, 598, 359, 0, 2, 738, 0, 1429 294, 741, 2, 294, 3, 424, 0, 432, 295, 294, 1430 307, 333, 287, 348, 355, 3, 3, 406, 410, 420, 1431 425, 472, 294, 426, 705, 706, 294, 427, 429, 294, 1432 2, 582, 594, 728, 2, 2, 249, 2, 457, 0, 1433 455, 454, 453, 141, 2, 2, 251, 2, 2, 250, 1434 2, 281, 2, 282, 0, 280, 0, 0, 0, 0, 1435 0, 0, 0, 0, 0, 566, 605, 0, 452, 2, 1436 560, 569, 659, 562, 563, 532, 294, 2, 599, 608, 1437 601, 602, 0, 276, 294, 294, 339, 295, 0, 295, 1438 0, 294, 733, 737, 735, 533, 294, 544, 255, 263, 1439 309, 0, 2, 534, 294, 498, 336, 337, 283, 351, 1440 358, 0, 294, 2, 383, 294, 371, 0, 0, 377, 1441 727, 294, 748, 397, 0, 475, 499, 252, 253, 519, 1442 294, 434, 0, 294, 237, 0, 2, 239, 0, 295, 1443 0, 257, 2, 258, 278, 0, 0, 2, 294, 544, 1444 294, 485, 487, 486, 0, 0, 750, 0, 294, 0, 1445 294, 489, 294, 559, 557, 558, 556, 0, 551, 554, 1446 0, 0, 294, 56, 294, 69, 52, 294, 62, 294, 1447 294, 50, 51, 64, 2, 127, 0, 0, 446, 0, 1448 445, 111, 294, 54, 55, 17, 0, 29, 30, 35, 1449 2, 0, 35, 117, 118, 119, 120, 121, 122, 123, 1450 124, 125, 126, 0, 0, 53, 0, 0, 0, 0, 1454 1451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1455 0, 0, 0, 0, 0, 0, 0, 108, 2, 646,1456 452, 643, 547, 547, 651, 480, 294, 2, 585, 586,1457 0, 597, 598, 0, 2, 740, 743, 111, 294, 2,1458 294, 0, 708, 295, 712, 703, 704, 710, 0, 2,1459 2, 668, 547, 751, 617, 547, 547, 751, 547, 631,1460 54 7, 547, 682, 434, 665, 547, 547, 673, 680, 294,1461 429, 295, 0, 0, 294, 718, 295, 723, 751, 715,1462 294, 720, 751, 294, 294, 294, 0, 111, 0, 18,1463 5, 2, 0, 19, 0, 459, 749, 0, 0, 465,1464 241, 0, 294, 0, 0, 0, 545, 569, 573, 575,1465 60 5, 608, 612, 615, 568, 607, 0, 284, 658, 0,1466 2 94, 277, 0, 0, 0, 0, 275, 2, 0, 259,1467 536, 294, 0, 0, 0, 0, 294, 294, 0, 0,1468 692, 382, 385, 389, 547, 389, 697, 388, 689, 547,1469 547, 365, 373, 381, 374, 547, 376, 379, 294, 750,1470 0, 0, 396, 749, 295, 3, 414, 3, 418, 417,1471 591, 0, 531, 294, 3, 3, 294, 433, 295, 3,1472 427, 428, 2, 0, 0, 0, 485, 306, 294, 481,1473 483, 3, 2, 2, 0, 502, 3, 0, 554, 129,1474 0, 0, 222, 0, 0, 0, 2, 0, 0, 36,1475 0, 0, 111, 294, 20, 0, 21, 0, 692, 448,1476 0, 109, 3, 2, 27, 2, 0, 33, 0, 2,1477 25, 0, 106, 107, 73, 74, 75, 77, 78, 80,1478 8 1, 85, 86, 83, 84, 88, 89, 91, 93, 95,1479 9 7, 99, 0, 0, 752, 294, 0, 0, 0, 647,1480 64 8, 644, 645, 497, 496, 294, 0, 3, 294, 714,1481 294, 719, 295, 294, 294, 294, 662, 705, 661, 2,1482 294, 0, 0, 0, 0, 0, 0, 0, 0, 683,1483 0, 669, 620, 636, 670, 2, 616, 623, 431, 618,1484 619, 432, 2, 630, 639, 632, 633, 666, 667, 681,1485 7 09, 713, 711, 751, 268, 2, 745, 2, 422, 717,1486 722, 423, 0, 401, 3, 3, 3, 3, 453, 3,1487 0, 2, 468, 464, 750, 0, 460, 467, 2, 463,1488 466, 0, 294, 242, 264, 3, 272, 274, 0, 453,1489 2, 571, 572, 2, 610, 611, 0, 659, 537, 3,1490 34 6, 345, 348, 347, 294, 538, 0, 539, 294, 375,1491 377, 2, 0, 0, 0, 0, 104, 391, 693, 694,1492 38 6, 390, 387, 690, 691, 380, 384, 367, 398, 393,1493 399, 0, 0, 0, 436, 240, 0, 0, 3, 2,1494 668, 429, 0, 527, 0, 751, 489, 0, 294, 294,1495 294, 0, 551, 553, 130, 0, 0, 215, 0, 0,1496 0, 223, 224, 57, 0, 63, 294, 0, 61, 60,1497 0, 128, 693, 458, 70, 71, 110, 115, 3, 109,1498 0, 0, 0, 24, 35, 3, 0, 32, 102, 0,1499 3, 650, 654, 657, 649, 3, 592, 3, 716, 721,1500 2, 294, 3, 3, 295, 0, 3, 622, 626, 629,1501 6 38, 672, 676, 679, 294, 3, 621, 637, 671, 294,1502 294, 424, 294, 294, 746, 0, 0, 0, 0, 256,1503 0, 104, 0, 3, 3, 0, 461, 0, 457, 0,1504 0, 245, 294, 0, 0, 129, 0, 0, 0, 0,1505 0, 129, 0, 0, 109, 109, 2, 0, 0, 0,1506 3, 131, 132, 2, 143, 133, 134, 135, 136, 137,1507 1 38, 145, 147, 0, 0, 0, 285, 294, 294, 547,1508 0, 540, 294, 111, 696, 700, 702, 695, 383, 397,1509 394, 579, 2, 664, 663, 0, 669, 2, 482, 484,1510 504, 3, 512, 513, 0, 2, 508, 3, 3, 0,1511 0, 556, 222, 0, 0, 0, 222, 0, 0, 3,1512 37, 749, 109, 0, 3, 661, 42, 3, 40, 3,1513 34, 0, 3, 101, 103, 0, 2, 652, 653, 0,1514 0, 294, 0, 0, 0, 3, 638, 0, 2, 624,1515 625, 2, 640, 2, 674, 675, 0, 0, 3, 0,1516 3, 3, 3, 3, 409, 408, 412, 2, 2, 748,1517 747, 112, 0, 0, 0, 0, 3, 462, 3, 0,1518 243, 146, 3, 295, 294, 0, 0, 0, 0, 2,1519 191, 0, 189, 0, 0, 0, 0, 0, 0, 0,1520 0, 111, 0, 547, 151, 148, 294, 0, 0, 267,1521 279, 3, 3, 546, 613, 368, 2, 698, 699, 294,1522 2 66, 294, 0, 515, 492, 294, 0, 0, 491, 506,1523 0, 0, 0, 216, 0, 225, 58, 109, 0, 0,1524 11 6, 113, 0, 0, 0, 0, 0, 0, 23, 0,1525 655, 294, 580, 265, 724, 725, 726, 0, 677, 294,1526 294, 294, 3, 3, 0, 685, 0, 0, 0, 0,1527 294, 294, 3, 544, 469, 470, 0, 0, 246, 295,1528 0, 0, 0, 0, 294, 192, 190, 0, 187, 193,1529 0, 0, 0, 0, 197, 200, 198, 194, 0, 195,1530 35, 129, 144, 142, 244, 0, 0, 294, 416, 420,1531 419, 0, 509, 2, 510, 2, 511, 505, 294, 228,1532 0, 226, 0, 228, 3, 661, 31, 114, 2, 45,1533 2, 43, 41, 28, 112, 26, 3, 727, 3, 3,1534 3, 0, 0, 684, 686, 627, 641, 269, 2, 406,1535 3, 405, 0, 472, 469, 129, 0, 0, 129, 3,1536 0, 129, 188, 0, 2, 2, 209, 199, 0, 0,1537 0, 0, 140, 574, 614, 3, 2, 0, 0, 2,1538 229, 0, 0, 217, 0, 0, 0, 0, 0, 0,1539 0, 0, 0, 687, 688, 294, 0, 471, 152, 0,1540 0, 2, 165, 129, 154, 0, 182, 0, 129, 0,1541 2, 156, 0, 2, 0, 2, 2, 2, 196, 32,1542 0, 294, 514, 516, 507, 0, 0, 0, 0, 114,1543 38, 3, 3, 656, 628, 642, 678, 410, 129, 158,1544 161, 0, 160, 164, 3, 167, 166, 0, 129, 184,1545 129, 3, 0, 294, 0, 294, 0, 2, 0, 2,1546 139, 701, 2, 230, 231, 0, 227, 218, 0, 0,1547 0, 153, 0, 0, 163, 233, 168, 2, 235, 183,1548 0, 186, 172, 201, 3, 210, 214, 203, 3, 0,1549 294, 0, 294, 0, 0, 0, 39, 46, 44, 159,1550 1 62, 129, 0, 169, 294, 129, 129, 0, 173, 0,1551 0, 692, 211, 212, 213, 0, 202, 3, 204, 3,1552 2 94, 219, 232, 149, 170, 155, 129, 236, 185, 180,1553 17 8, 174, 157, 129, 0, 693, 0, 0, 0,0,1554 1 50, 171, 181, 175, 179, 178, 176, 3, 3, 0,1555 0, 493, 177, 205, 207, 3, 3, 206, 2081452 0, 0, 0, 0, 0, 0, 108, 2, 645, 451, 1453 642, 546, 546, 650, 479, 294, 2, 584, 585, 0, 1454 596, 597, 0, 2, 739, 742, 111, 294, 2, 294, 1455 0, 707, 295, 711, 702, 703, 709, 0, 2, 2, 1456 667, 546, 750, 616, 546, 546, 750, 546, 630, 546, 1457 546, 681, 433, 664, 546, 546, 672, 679, 294, 428, 1458 295, 0, 0, 294, 717, 295, 722, 750, 714, 294, 1459 719, 750, 294, 294, 294, 0, 111, 0, 18, 5, 1460 2, 0, 19, 0, 458, 748, 0, 0, 464, 241, 1461 0, 294, 0, 0, 0, 544, 568, 572, 574, 604, 1462 607, 611, 614, 567, 606, 0, 284, 657, 0, 294, 1463 277, 0, 0, 0, 0, 275, 2, 0, 259, 535, 1464 294, 0, 0, 0, 0, 294, 294, 0, 0, 691, 1465 381, 384, 388, 546, 388, 696, 387, 688, 546, 546, 1466 364, 372, 380, 373, 546, 375, 378, 294, 749, 0, 1467 0, 395, 748, 295, 3, 413, 3, 417, 416, 590, 1468 0, 530, 294, 3, 3, 294, 432, 295, 3, 426, 1469 427, 2, 0, 0, 0, 484, 306, 294, 480, 482, 1470 3, 2, 2, 0, 501, 3, 0, 553, 129, 0, 1471 0, 222, 0, 0, 0, 2, 0, 0, 36, 0, 1472 0, 111, 294, 20, 0, 21, 0, 691, 447, 0, 1473 109, 3, 2, 27, 2, 0, 33, 0, 2, 25, 1474 0, 106, 107, 73, 74, 75, 77, 78, 80, 81, 1475 85, 86, 83, 84, 88, 89, 91, 93, 95, 97, 1476 99, 0, 0, 751, 294, 0, 0, 0, 646, 647, 1477 643, 644, 496, 495, 294, 0, 3, 294, 713, 294, 1478 718, 295, 294, 294, 294, 661, 704, 660, 2, 294, 1479 0, 0, 0, 0, 0, 0, 0, 0, 682, 0, 1480 668, 619, 635, 669, 2, 615, 622, 430, 617, 618, 1481 431, 2, 629, 638, 631, 632, 665, 666, 680, 708, 1482 712, 710, 750, 268, 2, 744, 2, 421, 716, 721, 1483 422, 0, 400, 3, 3, 3, 3, 452, 3, 0, 1484 2, 467, 463, 749, 0, 459, 466, 2, 462, 465, 1485 0, 294, 242, 264, 3, 272, 274, 0, 452, 2, 1486 570, 571, 2, 609, 610, 0, 658, 536, 3, 345, 1487 344, 347, 346, 294, 537, 0, 538, 294, 374, 376, 1488 2, 0, 0, 0, 0, 104, 390, 692, 693, 385, 1489 389, 386, 689, 690, 379, 383, 366, 397, 392, 398, 1490 0, 0, 0, 435, 240, 0, 0, 3, 2, 667, 1491 428, 0, 526, 0, 750, 488, 0, 294, 294, 294, 1492 0, 550, 552, 130, 0, 0, 215, 0, 0, 0, 1493 223, 224, 57, 0, 63, 294, 0, 61, 60, 0, 1494 128, 692, 457, 70, 71, 110, 115, 3, 109, 0, 1495 0, 0, 24, 35, 3, 0, 32, 102, 0, 3, 1496 649, 653, 656, 648, 3, 591, 3, 715, 720, 2, 1497 294, 3, 3, 295, 0, 3, 621, 625, 628, 637, 1498 671, 675, 678, 294, 3, 620, 636, 670, 294, 294, 1499 423, 294, 294, 745, 0, 0, 0, 0, 256, 0, 1500 104, 0, 3, 3, 0, 460, 0, 456, 0, 0, 1501 245, 294, 0, 0, 129, 0, 0, 0, 0, 0, 1502 129, 0, 0, 109, 109, 2, 0, 0, 0, 3, 1503 131, 132, 2, 143, 133, 134, 135, 136, 137, 138, 1504 145, 147, 0, 0, 0, 285, 294, 294, 546, 0, 1505 539, 294, 111, 695, 699, 701, 694, 382, 396, 393, 1506 578, 2, 663, 662, 0, 668, 2, 481, 483, 503, 1507 3, 511, 512, 0, 2, 507, 3, 3, 0, 0, 1508 555, 222, 0, 0, 0, 222, 0, 0, 3, 37, 1509 748, 109, 0, 3, 660, 42, 3, 40, 3, 34, 1510 0, 3, 101, 103, 0, 2, 651, 652, 0, 0, 1511 294, 0, 0, 0, 3, 637, 0, 2, 623, 624, 1512 2, 639, 2, 673, 674, 0, 0, 3, 0, 3, 1513 3, 3, 3, 408, 407, 411, 2, 2, 747, 746, 1514 112, 0, 0, 0, 0, 3, 461, 3, 0, 243, 1515 146, 3, 295, 294, 0, 0, 0, 0, 2, 191, 1516 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 1517 111, 0, 546, 151, 148, 294, 0, 0, 267, 279, 1518 3, 3, 545, 612, 367, 2, 697, 698, 294, 266, 1519 294, 0, 514, 491, 294, 0, 0, 490, 505, 0, 1520 0, 0, 216, 0, 225, 58, 109, 0, 0, 116, 1521 113, 0, 0, 0, 0, 0, 0, 23, 0, 654, 1522 294, 579, 265, 723, 724, 725, 0, 676, 294, 294, 1523 294, 3, 3, 0, 684, 0, 0, 0, 0, 294, 1524 294, 3, 543, 468, 469, 0, 0, 246, 295, 0, 1525 0, 0, 0, 294, 192, 190, 0, 187, 193, 0, 1526 0, 0, 0, 197, 200, 198, 194, 0, 195, 35, 1527 129, 144, 142, 244, 0, 0, 294, 415, 419, 418, 1528 0, 508, 2, 509, 2, 510, 504, 294, 228, 0, 1529 226, 0, 228, 3, 660, 31, 114, 2, 45, 2, 1530 43, 41, 28, 112, 26, 3, 726, 3, 3, 3, 1531 0, 0, 683, 685, 626, 640, 269, 2, 405, 3, 1532 404, 0, 471, 468, 129, 0, 0, 129, 3, 0, 1533 129, 188, 0, 2, 2, 209, 199, 0, 0, 0, 1534 0, 140, 573, 613, 3, 2, 0, 0, 2, 229, 1535 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 1536 0, 0, 686, 687, 294, 0, 470, 152, 0, 0, 1537 2, 165, 129, 154, 0, 182, 0, 129, 0, 2, 1538 156, 0, 2, 0, 2, 2, 2, 196, 32, 0, 1539 294, 513, 515, 506, 0, 0, 0, 0, 114, 38, 1540 3, 3, 655, 627, 641, 677, 409, 129, 158, 161, 1541 0, 160, 164, 3, 167, 166, 0, 129, 184, 129, 1542 3, 0, 294, 0, 294, 0, 2, 0, 2, 139, 1543 700, 2, 230, 231, 0, 227, 218, 0, 0, 0, 1544 153, 0, 0, 163, 233, 168, 2, 235, 183, 0, 1545 186, 172, 201, 3, 210, 214, 203, 3, 0, 294, 1546 0, 294, 0, 0, 0, 39, 46, 44, 159, 162, 1547 129, 0, 169, 294, 129, 129, 0, 173, 0, 0, 1548 691, 211, 212, 213, 0, 202, 3, 204, 3, 294, 1549 219, 232, 149, 170, 155, 129, 236, 185, 180, 178, 1550 174, 157, 129, 0, 692, 0, 0, 0, 0, 150, 1551 171, 181, 175, 179, 178, 176, 3, 3, 0, 0, 1552 492, 177, 205, 207, 3, 3, 206, 208 1556 1553 }; 1557 1554 … … 1559 1556 static const yytype_int16 yydefgoto[] = 1560 1557 { 1561 -1, 8 40, 475, 302, 46, 132, 133, 303, 304, 305,1562 30 6, 786, 787, 1147, 1148, 307, 308, 309, 310, 311,1563 31 2, 313, 314, 315, 316, 317, 318, 319, 320, 1052,1564 52 6, 997, 322, 998, 555, 974, 1079, 1543, 1081, 1082,1565 108 3, 1084, 1544, 1085, 1086, 1460, 1461, 1422, 1423, 1424,1566 152 2, 1523, 1527, 1528, 1563, 1564, 1087, 1380, 1088, 1089,1567 131 4, 1315, 1316, 1504, 1090, 144, 980, 981, 982, 1401,1568 148 5, 1496, 1497, 476, 477, 902, 903, 1060, 49, 50,1569 5 1, 52, 53, 346, 157, 56, 57, 58, 59, 60,1570 34 8, 62, 63, 262, 65, 66, 273, 350, 351, 69,1571 70, 71, 72, 117, 74, 203, 353, 118, 77, 119,1572 7 9, 80, 81, 456, 457, 458, 459, 701, 940, 702,1573 8 2, 83, 463, 722, 882, 883, 356, 357, 725, 726,1574 72 7, 358, 359, 360, 361, 473, 340, 134, 135, 530,1575 32 4, 169, 655, 656, 657, 658, 659, 84, 120, 86,1576 49 6, 497, 966, 498, 276, 502, 325, 87, 136, 137,1577 8 8, 1338, 1125, 1126, 1127, 1128, 89, 90, 743, 91,1578 27 2, 92, 93, 186, 1054, 689, 411, 124, 94, 508,1579 50 9, 510, 187, 267, 189, 190, 191, 268, 97, 98,1580 9 9, 100, 101, 102, 103, 194, 195, 196, 197, 198,1581 85 2, 614, 615, 616, 617, 199, 619, 620, 621, 580,1582 58 1, 582, 583, 706, 104, 623, 624, 625, 626, 627,1583 62 8, 939, 708, 709, 710, 604, 364, 365, 366, 367,1584 32 6, 163, 106, 107, 108, 369, 720, 5771558 -1, 839, 474, 301, 45, 131, 132, 302, 303, 304, 1559 305, 785, 786, 1146, 1147, 306, 307, 308, 309, 310, 1560 311, 312, 313, 314, 315, 316, 317, 318, 319, 1051, 1561 525, 996, 321, 997, 554, 973, 1078, 1542, 1080, 1081, 1562 1082, 1083, 1543, 1084, 1085, 1459, 1460, 1421, 1422, 1423, 1563 1521, 1522, 1526, 1527, 1562, 1563, 1086, 1379, 1087, 1088, 1564 1313, 1314, 1315, 1503, 1089, 143, 979, 980, 981, 1400, 1565 1484, 1495, 1496, 475, 476, 901, 902, 1059, 48, 49, 1566 50, 51, 52, 345, 156, 55, 56, 57, 58, 59, 1567 347, 61, 62, 261, 64, 65, 272, 349, 350, 68, 1568 69, 70, 71, 116, 73, 202, 352, 117, 76, 118, 1569 78, 79, 80, 455, 456, 457, 458, 700, 939, 701, 1570 81, 82, 462, 721, 881, 882, 355, 356, 724, 725, 1571 726, 357, 358, 359, 360, 472, 339, 133, 134, 529, 1572 323, 168, 654, 655, 656, 657, 658, 83, 119, 85, 1573 495, 496, 965, 497, 275, 501, 324, 86, 135, 136, 1574 87, 1337, 1124, 1125, 1126, 1127, 88, 89, 742, 90, 1575 271, 91, 92, 185, 1053, 688, 410, 123, 93, 507, 1576 508, 509, 186, 266, 188, 189, 190, 267, 96, 97, 1577 98, 99, 100, 101, 102, 193, 194, 195, 196, 197, 1578 851, 613, 614, 615, 616, 198, 618, 619, 620, 579, 1579 580, 581, 582, 705, 103, 622, 623, 624, 625, 626, 1580 627, 938, 707, 708, 709, 603, 363, 364, 365, 366, 1581 325, 162, 105, 106, 107, 368, 719, 576 1585 1582 }; 1586 1583 1587 1584 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1588 1585 STATE-NUM. */ 1589 #define YYPACT_NINF -1 3561586 #define YYPACT_NINF -1281 1590 1587 static const yytype_int16 yypact[] = 1591 1588 { 1592 5863, 4890, -1356, 65, -1356, -1356, -1356, -1356, -1356, -1356,1593 -1 356, 9, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,1594 -1 356, -1356, -1356, -1356, -1356, -1356, 139, 139, 139, 1216,1595 781, 63, 4761, 238, -1356, -1356, -1356, -1356, -1356, 165,1596 -1 356, -1356, -1356, 572, 207, 2350, -1356, -1356, -1356, -1356,1597 -1 356, -1356, 59, 217, -1356, 1506, -1356, -1356, -1356, -1356,1598 220, 1734, 341, 66, 7480, -1356, -1356, 9240, 1240, -1356,1599 -1 356, -1356, 1320, 351, 3183, 1125, 757, 1320, 1149, -1356,1600 -1356, 1042, 895, -1356, 1320, 1227, -1356, 243, -1356, 378,1601 403, -1356, -1356, -1356, -1356, 303, 217, 139, -1356, 139,1602 -1 356, -1356, -1356, -1356, 9019, 1506, -1356, -1356, 1506, -1356,1603 9774, 314, -1356, -1356, -1356, 1811, 9812, -1356, 726, 726,1604 726, -1356, -1356, -1356, 139, -1356, -1356, -1356, 353, 381,1605 400, -1356, -1356, -1356, 417, -1356, -1356, -1356, -1356, -1356,1606 4 24, 436, -1356, -1356, 28, 8867, 2398, 371, 447, 459,1607 467, 482, 495, 557, 8670, 6999, 468, 584, -1356, 9350,1608 -1 356, -1356, -1356, -1356, 594, -1356, 335, 4628, 4628, -1356,1609 575, 352, -1356, -1356, -1356, -1356, 602, 432, 434, 470,1610 139, 624, -1356, -1356, 1734, 1711, 656, -1356, 68, -1356,1611 1 39, 139, 217, -1356, -1356, 93, -1356, 139, 139, -1356,1612 2093, 670, 699, 726, 6910, -1356, -1356, 654, 2350, -1356,1613 -1356, 1320, -1356, -1356, -1356, 217, -1356, 1506, 59, -1356,1614 7819, -1356, 726, 726, 726, 217, -1356, 1216, -1356, 6673,1615 -1 356, -1356, 659, 726, -1356, 726, -1356, 165, 8867, 8784,1616 714, -1356, 781, 740, 726, -1356, 1216, 737, 749, -1356,1617 4761, 791, -1356, -1356, -1356, 4061, -1356, -1356, 7390, -1356,1618 656, 62, 9812, 10718, 1811, 2093, -1356, 152, -1356, -1356,1619 9774, 1506, 770, 7511, -1356, -1356, 269, -1356, 3425, 779,1620 827, 3643, 814, 10872, 10930, -1356, 817, -1356, -1356, -1356,1621 -1356, 10949, 10949, 791, 8525, 818, 10872, 8981, -1356, -1356,1622 -1 356, -1356, -1356, -1356, 855, -1356, 889, 2173, 10872, -1356,1623 498, 751, 809, 524, 880, 822, 831, 819, 869, 5,1624 -1 356, -1356, 883, 64, -1356, 116, -1356, -1356, 2398, -1356,1625 -1356, 516, 900, -1356, 644, 900, 913, 165, -1356, -1356,1626 915, 9019, -1356, 916, 8639, -1356, -1356, 1004, 1539, 8240,1627 6910, 1320, -1356, 1320, 726, 726, -1356, -1356, -1356, -1356,1628 -1 356, -1356, 726, 9885, 1506, -1356, -1356, 9923, 1500, -1356,1629 7969, -1356, -1356, -1356, -1356, -1356, -1356, -1356, 929, 5043,1630 10872, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,1631 -1 356, -1356, -1356, -1356, -1356, 1811, -1356, 876, 936, 938,1632 944, 885, 947, 954, 957, 1711, -1356, -1356, 930, 59,1633 960, -1356, -1356, 970, -1356, -1356, -1356, 4061, -1356, -1356,1634 -1 356, -1356, -1356, 2093, -1356, 8867, 8867, -1356, 726, 1811,1635 7030, 1506, 8313, -1356, -1356, -1356, -1356, 4061, 62, -1356,1636 -1356, 1320, 217, -1356, -1356, 4061, -1356, 6793, -1356, -1356,1637 726, 726, 472, 9953, 974, 1092, 5671, -1356, 521, 543,1638 781, -1356, 8784, 976, 959, 781, 726, -1356, -1356, -1356,1639 -1356, 10252, -1356, 560, 6550, -1356, 217, 981, -1356, 1811,1640 1 1070, 10776, -1356, -1356, -1356, -1356, 921, 2093, -1356, 8386,1641 656, 6061, -1356, -1356, -1356, 820, 612, 883, 781, 7511,1642 1338, 9774, -1356, 7511, -1356, -1356, -1356, -1356, 638, -1356,1643 994, 827, 255, 8525, -1356, 9953, -1356, -1356, 8525, -1356,1644 8 753, 8525, -1356, -1356, -1356, 993, -1356, 665, 998, 161,1645 1002, -1356, 9490, 6639, -1356, -1356, -1356, 290, -1356, -1356,1646 10795, -1356, 366, 10795, -1356, -1356, -1356, -1356, -1356, -1356,1647 -1 356, -1356, -1356, -1356, 10718, 10718, -1356, 10872, 10872, 10872,1648 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872,1649 10872, 10872, 10872, 10872, 10872, 5362, 10718, -1356, 64, 1168,1650 -1 356, -1356, 139, 139, -1356, -1356, 8867, -1356, -1356, 970,1651 791, -1356, 970, 10853, -1356, -1356, -1356, 3524, 6639, 1016,1652 9095, 1028, -1356, 10035, -1356, -1356, 594, -1356, 1029, 776,1653 1 036, 1922, 164, 883, -1356, 139, 139, 883, 174, -1356,1654 1 39, 139, 970, -1356, -1356, 139, 139, -1356, 900, 10065,1655 1506, 11215, 233, 347, 10065, -1356, 10214, -1356, 883, -1356,1656 9885, -1356, 125, 7935, 7935, 7935, 1506, -1356, 6115, 1033,1657 414, 929, 1150, 1037, 1038, -1356, 1054, 4628, 555, -1356,1658 1 124, 1506, 7935, 791, 1811, 791, 656, 704, 900, -1356,1659 -1356, 729, 900, -1356, -1356, -1356, 827, -1356, 900, 217,1660 10252, -1356, 666, 1061, 679, 1062, -1356, 1065, 217, -1356,1661 -1356, 4061, 217, 1059, 553, 573, 10103, 7119, 1590, 10872,1662 1954, -1356, -1356, 1066, 39, 1066, -1356, -1356, -1356, 139,1663 139, -1356, -1356, 781, -1356, 139, -1356, -1356, 9630, 781,1664 1069, 10872, -1356, 976, 11215, -1356, -1356, 1075, -1356, -1356,1665 -1356, 791, -1356, 11143, 10872, -1356, 7935, 588, 8240, -1356,1666 -1356, 594, 1072, 1077, 820, 2542, -1356, -1356, 7511, -1356,1667 -1356, 1074, -1356, -1356, 1088, -1356, 1074, 1090, 3425, 10718,1668 205, 1073, 47, 1094, 1082, 1100, 818, 1102, 1110, -1356,1669 11 13, 1117, 9661, 6759, -1356, 10718, -1356, 161, 1861, -1356,1670 6 396, 10718, 1120, -1356, -1356, 929, 689, -1356, 10718, -1356,1671 -1356, 865, -1356, -1356, -1356, -1356, -1356, 498, 498, 751,1672 751, 809, 809, 809, 809, 524, 524, 880, 822, 831,1673 819, 869, 10872, 875, -1356, 10252, 1119, 1140, 1142, 1168,1674 -1 356, -1356, -1356, -1356, -1356, 10252, 691, 10872, 7935, -1356,1675 9885, -1356, 7239, 9209, 8905, 6999, -1356, -1356, -1356, 776,1676 10252, 927, 1145, 1152, 1158, 1159, 1162, 1166, 1172, -1356,1677 4275, 1922, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,1678 -1 356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, 970,1679 -1 356, -1356, -1356, 883, -1356, -1356, -1356, -1356, -1356, -1356,1680 -1 356, -1356, 1176, -1356, 1183, 1185, -1356, -1356, 59, 1120,1681 6115, -1356, -1356, -1356, 5043, 1144, -1356, -1356, -1356, -1356,1682 -1356, 781, 6242, 1231, -1356, -1356, -1356, -1356, 1165, 59,1683 -1 356, -1356, 970, -1356, -1356, 970, 29, 970, -1356, -1356,1684 -1 356, -1356, -1356, -1356, 9380, -1356, 217, -1356, 8784, -1356,1685 -1356, 1190, 906, 1187, 1193, 1198, -1356, -1356, 1954, -1356,1686 -1 356, -1356, -1356, -1356, -1356, -1356, 1092, -1356, 959, -1356,1687 -1356, 1195, 1202, 1201, -1356, -1356, 1206, 1210, -1356, 588,1688 2182, -1356, 533, -1356, 2542, 883, -1356, 1213, 7511, 10176,1689 8867, 1220, -1356, -1356, 1218, 1222, 1224, -1356, 10872, 230,1690 -1, 1219, -1356, 1225, 791, 1225, 6639, 10718, -1356, -1356,1691 1225, -1356, 1861, 5043, -1356, -1356, -1356, -1356, 1236, 10718,1692 1233, 791, 6115, -1356, 10795, -1356, 791, -1356, -1356, 10718,1693 -1356, 782, 900, -1356, -1356, -1356, -1356, -1356, -1356, -1356,1694 929, 8639, -1356, -1356, 7359, 1237, -1356, 807, 900, -1356,1695 825, 836, 900, -1356, 726, 4460, -1356, -1356, -1356, 10252,1696 10252, -1356, 8313, 8313, -1356, 1241, 1248, 1246, 1259, -1356,1697 1262, 672, 244, 1120, -1356, 791, -1356, 4628, -1356, 10718,1698 578, -1356, 6519, 1267, 1271, 10660, 1272, 1277, 122, 304,1699 298, 10718, 1279, 217, 10718, 10718, 1280, 678, 1254, 1261,1700 -1 356, -1356, -1356, 1284, -1356, -1356, -1356, -1356, -1356, -1356,1701 -1 356, -1356, -1356, 781, 1290, 10718, -1356, 10252, 10252, 139,1702 1292, -1356, 9743, 9520, 847, 900, -1356, -1356, -1356, -1356,1703 -1 356, -1356, -1356, -1356, -1356, 1293, 2182, -1356, -1356, 1275,1704 -1356, 1074, -1356, -1356, 1811, 1296, -1356, -1356, -1356, 706,1705 1291, -1356, 47, 1305, 10872, 1288, 47, 47, 1314, 1310,1706 -1356, 1054, 10718, 1315, 1236, 711, 214, 1317, -1356, 1310,1707 -1356, 1323, 1317, -1356, -1356, 1328, -1356, -1356, 970, 1329,1708 1330, 6879, 1331, 1339, 1341, -1356, -1356, 1340, -1356, -1356,1709 970, -1356, -1356, -1356, -1356, 970, 10718, 10718, 10872, 1344,1710 -1 356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,1711 -1 356, -1356, 10872, 10872, 1347, 1349, 1317, -1356, -1356, 781,1712 -1 356, -1356, -1356, 7746, 10176, 10718, 10718, 1394, 10718, -1356,1713 -1356, 1333, -1356, 1334, 10718, 1335, 1343, 10718, 992, 1345,1714 36, 8158, 1229, 139, -1356, -1356, 6242, 1348, 585, -1356,1715 -1 356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, 970, 10478,1716 -1356, 8386, 1360, -1356, -1356, 10176, 592, 598, -1356, 1356,1717 1355, 827, 1366, -1356, 179, -1356, -1356, 10718, 1368, 1363,1718 -1 356, -1356, 1369, 484, 663, 791, 1376, 1378, -1356, 1380,1719 -1356, 10252, -1356, -1356, -1356, -1356, -1356, 1382, -1356, 10252,1720 10252, 10252, -1356, -1356, 1386, -1356, 1389, 1392, 1393, 682,1721 8 008, 8124, -1356, -1356, 370, -1356, 1396, 1397, -1356, 8459,1722 7 15, 725, 1395, 760, 6377, -1356, -1356, 641, -1356, -1356,1723 796, 1402, 1403, 217, 1453, 961, -1356, -1356, 10718, -1356,1724 10 795, 10660, -1356, -1356, -1356, 1406, 1407, 10252, -1356, -1356,1725 -1356, 1405, -1356, -1356, -1356, -1356, -1356, -1356, 10176, 827,1726 287, -1356, 1388, 827, 1236, 361, -1356, -1356, -1356, -1356,1727 -1 356, -1356, -1356, -1356, 1408, -1356, -1356, -1356, -1356, -1356,1728 -1356, 1411, 1412, -1356, -1356, -1356, -1356, -1356, -1356, -1356,1729 1418, -1356, 1417, -1356, -1356, 10660, 272, 10718, 10660, -1356,1730 1422, 10718, -1356, 306, 1438, 1441, -1356, -1356, 1430, 1431,1731 1413, 918, -1356, -1356, -1356, -1356, -1356, 1506, 1811, 1433,1732 855, 946, 10872, -1356, 801, 1439, 10718, 791, 791, 1442,1733 14 48, 1449, 1450, -1356, -1356, 8313, 1452, -1356, 1535, 10872,1734 1462, -1356, -1356, 10571, -1356, 803, -1356, 1460, 10660, 1463,1735 -1 356, -1356, 1489, -1356, 1493, -1356, 1511, 1512, -1356, 1480,1736 1508, 10176, -1356, -1356, -1356, 827, 791, 1514, 1484, 1509,1737 -1356, 1317, 1317, -1356, -1356, -1356, -1356, -1356, 10660, 301,1738 -1356, 958, -1356, -1356, 7597, -1356, -1356, 1502, 10718, -1356,1739 10718, 7597, 217, 9953, 217, 9953, 1515, -1356, 1522, -1356,1740 -1 356, -1356, 1520, 855, -1356, 811, -1356, -1356, 10718, 1526,1741 1527, -1356, 10872, 10872, -1356, -1356, 1055, 154, -1356, -1356,1742 1510, -1356, 1055, -1356, -1356, 1716, 791, -1356, -1356, 217,1743 9953, 217, 9953, 1532, 1517, 791, -1356, -1356, -1356, -1356,1744 -1356, 10571, 1528, 1055, 7673, 10718, 10482, 1531, 1055, 1537,1745 1716, 2045, -1356, -1356, -1356, 1545, -1356, -1356, -1356, -1356,1746 8867, -1356, -1356, -1356, 10349, -1356, 10571, -1356, -1356, 1529,1747 10256, -1356, -1356, 10482, 217, 2045, 217, 1558, 1559, 815,1748 -1356, 10349, -1356, -1356, -1356, 10256, -1356, -1356, -1356, 217,1749 217, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -13561589 3705, 8889, -1281, 104, -1281, -1281, -1281, -1281, -1281, -1281, 1590 -1281, 44, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1591 -1281, -1281, -1281, -1281, -1281, 155, 155, 155, 1205, 815, 1592 110, 6006, 222, -1281, -1281, -1281, -1281, -1281, 130, -1281, 1593 -1281, -1281, 1267, 189, 3199, -1281, -1281, -1281, -1281, -1281, 1594 -1281, 31, 144, -1281, 1338, -1281, -1281, -1281, -1281, 153, 1595 1410, 279, 82, 7674, -1281, -1281, 8086, 1234, -1281, -1281, 1596 -1281, 981, 359, 7231, 925, 669, 981, 1012, -1281, -1281, 1597 738, 575, -1281, 981, 1119, -1281, 242, -1281, 416, 419, 1598 -1281, -1281, -1281, -1281, 277, 144, 155, -1281, 155, -1281, 1599 -1281, -1281, -1281, 9536, 1338, -1281, -1281, 1338, -1281, 9574, 1600 321, -1281, -1281, -1281, 2195, 9607, -1281, 565, 565, 565, 1601 -1281, -1281, -1281, 155, -1281, -1281, -1281, 280, 366, 418, 1602 -1281, -1281, -1281, 425, -1281, -1281, -1281, -1281, -1281, 443, 1603 475, -1281, -1281, 120, 8972, 3739, 375, 387, 486, 496, 1604 514, 527, 541, 8273, 7081, 550, 568, -1281, 9460, -1281, 1605 -1281, -1281, -1281, 602, -1281, 121, 4456, 4456, -1281, 552, 1606 298, -1281, -1281, -1281, -1281, 634, 302, 306, 327, 155, 1607 590, -1281, -1281, 1410, 2454, 696, -1281, 90, -1281, 155, 1608 155, 144, -1281, -1281, 124, -1281, 155, 155, -1281, 2638, 1609 658, 667, 565, 6993, -1281, -1281, 678, 3199, -1281, -1281, 1610 981, -1281, -1281, -1281, 144, -1281, 1338, 31, -1281, 8010, 1611 -1281, 565, 565, 565, 144, -1281, 1205, -1281, 5198, -1281, 1612 -1281, 673, 565, -1281, 565, -1281, 130, 8972, 9002, 686, 1613 -1281, 815, 694, 565, -1281, 1205, 728, 736, -1281, 6006, 1614 544, -1281, -1281, -1281, 9431, -1281, -1281, 3957, -1281, 696, 1615 79, 9607, 6464, 2195, 2638, -1281, 157, -1281, -1281, 9574, 1616 1338, 717, 7703, -1281, -1281, 699, -1281, 10744, 783, 831, 1617 3925, 787, 6306, 10567, -1281, 827, -1281, -1281, -1281, -1281, 1618 10625, 10625, 544, 8633, 829, 6306, 9085, -1281, -1281, -1281, 1619 -1281, -1281, -1281, 862, -1281, 1121, 2197, 6306, -1281, 599, 1620 388, 472, 354, 593, 830, 867, 873, 970, 245, -1281, 1621 -1281, 874, 650, -1281, 325, -1281, -1281, 3739, -1281, -1281, 1622 585, 901, -1281, 747, 901, 958, 130, -1281, -1281, 962, 1623 9536, -1281, 977, 8746, -1281, -1281, 957, 935, 8355, 6993, 1624 981, -1281, 981, 565, 565, -1281, -1281, -1281, -1281, -1281, 1625 -1281, 565, 9645, 1338, -1281, -1281, 9683, 1067, -1281, 9123, 1626 -1281, -1281, -1281, -1281, -1281, -1281, -1281, 990, 5315, 6306, 1627 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1628 -1281, -1281, -1281, -1281, 2195, -1281, 846, 996, 998, 1002, 1629 864, 1005, 1008, 1026, 2454, -1281, -1281, 1031, 31, 1033, 1630 -1281, -1281, 1061, -1281, -1281, -1281, 9431, -1281, -1281, -1281, 1631 -1281, -1281, 2638, -1281, 8972, 8972, -1281, 565, 2195, 7112, 1632 1338, 8426, -1281, -1281, -1281, -1281, 9431, 79, -1281, -1281, 1633 981, 144, -1281, -1281, 9431, -1281, 6877, -1281, -1281, 565, 1634 565, 376, 9716, 1035, 1868, 2111, -1281, 334, 338, 815, 1635 -1281, 9002, 1059, 1047, 815, 565, -1281, -1281, -1281, -1281, 1636 9940, -1281, 583, 6755, -1281, 144, 1065, -1281, 2195, 10825, 1637 10471, -1281, -1281, -1281, -1281, 889, 2638, -1281, 8497, 696, 1638 7558, -1281, -1281, -1281, 1286, 636, 874, 815, 7703, 868, 1639 9574, -1281, 7703, -1281, -1281, -1281, -1281, 638, -1281, 1073, 1640 831, 207, 8633, -1281, 9716, -1281, -1281, 8633, -1281, 8859, 1641 8633, -1281, -1281, -1281, 1071, -1281, 681, 1077, 668, 1078, 1642 -1281, 4381, 6724, -1281, -1281, -1281, 328, -1281, -1281, 10490, 1643 -1281, 385, 10490, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1644 -1281, -1281, -1281, 6464, 6464, -1281, 6306, 6306, 6306, 6306, 1645 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 1646 6306, 6306, 6306, 6306, 4789, 6464, -1281, 650, 1062, -1281, 1647 -1281, 155, 155, -1281, -1281, 8972, -1281, -1281, 1061, 544, 1648 -1281, 1061, 10548, -1281, -1281, -1281, 5232, 6724, 1079, 9198, 1649 1080, -1281, 9754, -1281, -1281, 602, -1281, 1082, 1185, 1084, 1650 1899, 185, 874, -1281, 155, 155, 874, 233, -1281, 155, 1651 155, 1061, -1281, -1281, 155, 155, -1281, 901, 9792, 1338, 1652 10968, 234, 509, 9792, -1281, 5821, -1281, 874, -1281, 9645, 1653 -1281, 293, 5525, 5525, 5525, 1338, -1281, 5054, 1072, 558, 1654 990, 1016, 1083, 1086, -1281, 1074, 4456, 592, -1281, 1172, 1655 1338, 5525, 544, 2195, 544, 696, 809, 901, -1281, -1281, 1656 814, 901, -1281, -1281, -1281, 831, -1281, 901, 144, 9940, 1657 -1281, 682, 1095, 691, 1099, -1281, 1098, 144, -1281, -1281, 1658 9431, 144, 1103, 362, 407, 9825, 7200, 1999, 6306, 1917, 1659 -1281, -1281, 1101, 94, 1101, -1281, -1281, -1281, 155, 155, 1660 -1281, -1281, 815, -1281, 155, -1281, -1281, 3122, 815, 1107, 1661 6306, -1281, 1059, 10968, -1281, -1281, 1102, -1281, -1281, -1281, 1662 544, -1281, 10897, 6306, -1281, 5525, 675, 8355, -1281, -1281, 1663 602, 1108, 1109, 1286, 3745, -1281, -1281, 7703, -1281, -1281, 1664 1111, -1281, -1281, 1116, -1281, 1111, 1128, 10744, 6464, 146, 1665 1113, 53, 1136, 1115, 1137, 829, 1131, 1139, -1281, 1142, 1666 1143, 1696, 6843, -1281, 6464, -1281, 668, 1691, -1281, 6022, 1667 6464, 1138, -1281, -1281, 990, 708, -1281, 6464, -1281, -1281, 1668 727, -1281, -1281, -1281, -1281, -1281, 599, 599, 388, 388, 1669 472, 472, 472, 472, 354, 354, 593, 830, 867, 873, 1670 970, 6306, 755, -1281, 9940, 1148, 1149, 1152, 1062, -1281, 1671 -1281, -1281, -1281, -1281, 9940, 713, 6306, 5525, -1281, 9645, 1672 -1281, 7319, 9311, 9236, 7081, -1281, -1281, -1281, 1185, 9940, 1673 951, 1160, 1163, 1165, 1166, 1175, 1176, 1182, -1281, 3532, 1674 1899, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1675 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1061, -1281, 1676 -1281, -1281, 874, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1677 -1281, 1183, -1281, 1187, 1189, -1281, -1281, 31, 1138, 5054, 1678 -1281, -1281, -1281, 5315, 1180, -1281, -1281, -1281, -1281, -1281, 1679 815, 6243, 1272, -1281, -1281, -1281, -1281, 1188, 31, -1281, 1680 -1281, 1061, -1281, -1281, 1061, 70, 1061, -1281, -1281, -1281, 1681 -1281, -1281, -1281, 9498, -1281, 144, -1281, 9002, -1281, -1281, 1682 1201, 818, 1208, 1212, 1213, -1281, -1281, 1917, -1281, -1281, 1683 -1281, -1281, -1281, -1281, -1281, 1868, -1281, 1047, -1281, -1281, 1684 1210, 1216, 1211, -1281, -1281, 1218, 1223, -1281, 675, 1777, 1685 -1281, 562, -1281, 3745, 874, -1281, 1226, 7703, 9863, 8972, 1686 1230, -1281, -1281, 1225, 1235, 1238, -1281, 6306, 252, 40, 1687 1231, -1281, 1242, 544, 1242, 6724, 6464, -1281, -1281, 1242, 1688 -1281, 1691, 5315, -1281, -1281, -1281, -1281, 1236, 6464, 1245, 1689 544, 5054, -1281, 10490, -1281, 544, -1281, -1281, 6464, -1281, 1690 850, 901, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 990, 1691 8746, -1281, -1281, 7438, 1249, -1281, 856, 901, -1281, 872, 1692 904, 901, -1281, 565, 4646, -1281, -1281, -1281, 9940, 9940, 1693 -1281, 8426, 8426, -1281, 1252, 1255, 1264, 1271, -1281, 1253, 1694 594, 247, 1138, -1281, 544, -1281, 4456, -1281, 6464, 459, 1695 -1281, 6603, 1274, 1279, 10343, 1281, 1283, 301, 308, 344, 1696 6464, 1285, 144, 6464, 6464, 1284, 498, 1282, 1268, -1281, 1697 -1281, -1281, 1289, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1698 -1281, -1281, 815, 1296, 6464, -1281, 9940, 9940, 155, 1301, 1699 -1281, 9349, 4935, 934, 901, -1281, -1281, -1281, -1281, -1281, 1700 -1281, -1281, -1281, -1281, 1305, 1777, -1281, -1281, 1290, -1281, 1701 1111, -1281, -1281, 2195, 1309, -1281, -1281, -1281, 734, 1312, 1702 -1281, 53, 1317, 6306, 1303, 53, 53, 1327, 1323, -1281, 1703 1074, 6464, 1328, 1236, 1036, 113, 1326, -1281, 1323, -1281, 1704 1331, 1326, -1281, -1281, 1337, -1281, -1281, 1061, 1340, 1343, 1705 6962, 1342, 1344, 1350, -1281, -1281, 1353, -1281, -1281, 1061, 1706 -1281, -1281, -1281, -1281, 1061, 6464, 6464, 6306, 1355, -1281, 1707 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1708 -1281, 6306, 6306, 1356, 1357, 1326, -1281, -1281, 815, -1281, 1709 -1281, -1281, 7939, 9863, 6464, 6464, 1423, 6464, -1281, -1281, 1710 1341, -1281, 1345, 6464, 1347, 1358, 6464, 1097, 1360, 74, 1711 8776, 1197, 155, -1281, -1281, 6243, 1361, 467, -1281, -1281, 1712 -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1061, 10467, -1281, 1713 8497, 1362, -1281, -1281, 9863, 482, 494, -1281, 1372, 1383, 1714 831, 1394, -1281, 66, -1281, -1281, 6464, 1395, 1393, -1281, 1715 -1281, 1399, 430, 657, 544, 1400, 1401, -1281, 1406, -1281, 1716 9940, -1281, -1281, -1281, -1281, -1281, 1412, -1281, 9940, 9940, 1717 9940, -1281, -1281, 1413, -1281, 1415, 1425, 1427, 623, 8125, 1718 8240, -1281, -1281, 278, -1281, 1426, 1429, -1281, 8568, 745, 1719 759, 1430, 769, 6445, -1281, -1281, 502, -1281, -1281, 770, 1720 1434, 1436, 144, 1487, 911, -1281, -1281, 6464, -1281, 10490, 1721 10343, -1281, -1281, -1281, 1442, 1444, 9940, -1281, -1281, -1281, 1722 1437, -1281, -1281, -1281, -1281, -1281, -1281, 9863, 831, 269, 1723 -1281, 1424, 831, 1236, 373, -1281, -1281, -1281, -1281, -1281, 1724 -1281, -1281, -1281, 1443, -1281, -1281, -1281, -1281, -1281, -1281, 1725 1452, 1454, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1458, 1726 -1281, 1457, -1281, -1281, 10343, 148, 6464, 10343, -1281, 1462, 1727 6464, -1281, 171, 1484, 1486, -1281, -1281, 1465, 1476, 1455, 1728 905, -1281, -1281, -1281, -1281, -1281, 1338, 2195, 1471, 862, 1729 918, 6306, -1281, 772, 1477, 6464, 544, 544, 1480, 1482, 1730 1483, 1485, -1281, -1281, 8426, 1472, -1281, 1555, 6306, 1493, 1731 -1281, -1281, 10254, -1281, 790, -1281, 1467, 10343, 1468, -1281, 1732 -1281, 1511, -1281, 1513, -1281, 1507, 1529, -1281, 1496, 1519, 1733 9863, -1281, -1281, -1281, 831, 544, 1520, 1499, 1515, -1281, 1734 1326, 1326, -1281, -1281, -1281, -1281, -1281, 10343, 258, -1281, 1735 922, -1281, -1281, 7790, -1281, -1281, 1501, 6464, -1281, 6464, 1736 7790, 144, 9716, 144, 9716, 1528, -1281, 1530, -1281, -1281, 1737 -1281, 1524, 862, -1281, 794, -1281, -1281, 6464, 1540, 1542, 1738 -1281, 6306, 6306, -1281, -1281, 1051, 133, -1281, -1281, 1510, 1739 -1281, 1051, -1281, -1281, 2099, 544, -1281, -1281, 144, 9716, 1740 144, 9716, 1546, 1525, 544, -1281, -1281, -1281, -1281, -1281, 1741 10254, 1541, 1051, 7866, 6464, 10165, 1543, 1051, 1551, 2099, 1742 2338, -1281, -1281, -1281, 1552, -1281, -1281, -1281, -1281, 8972, 1743 -1281, -1281, -1281, 10072, -1281, 10254, -1281, -1281, 1531, 9979, 1744 -1281, -1281, 10165, 144, 2338, 144, 1557, 1559, 795, -1281, 1745 10072, -1281, -1281, -1281, 9979, -1281, -1281, -1281, 144, 144, 1746 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281 1750 1747 }; 1751 1748 … … 1753 1750 static const yytype_int16 yypgoto[] = 1754 1751 { 1755 -1 356, 4068, 1513, -1356, 1381, -1356, 41, 0, -254, -1356,1756 59 3, -523, -482, -960, -143, 5028, -1356, -101, 576, 581,1757 386, 577, 1101, 1105, 1106, 1099, 1107, -1356, -593, -585,1758 4966, -933, -708, -942, -1356, -273, -719, 379, -1356, 1404,1759 -1 356, 457, -1092, -1356, -1356, 195, -1356, -844, -1059, 308,1760 -1 356, -1356, -1356, -1356, 124, -1118, -1356, -1356, -1356, -1356,1761 -1 356, -1356, 382, -1355, 53, -1356, -496, -1356, 558, 349,1762 -1 356, 226, -1356, -307, -1356, -1356, -1356, 610, -832, -1356,1763 -1 356, 13, -961, 169, 2725, -1356, -1356, -1356, -79, -1356,1764 189, 845, -184, 1482, 3902, -1356, -1356, 192, 133, 657,1765 -2 51, 1620, -1356, 1796, -1356, -1356, 156, 2416, -1356, 2575,1766 798, -1356, -1356, -404, -428, 1252, 1253, 761, 1003, 302,1767 -1 356, -1356, 1245, 764, -253, -1356, -24, -132, -469, -1356,1768 -1 356, -983, -881, 4, 862, 1128, -43, -1356, 561, -100,1769 -2 62, -193, -152, 721, 826, -1356, 1071, -1356, 2692, 907,1770 -4 49, 971, -1356, -1356, 765, -1356, -227, -1356, -60, -1356,1771 -1 356, -1356, -1248, 485, -1356, -1356, -1356, 1242, -1356, 45,1772 -1 356, -1356, -846, -109, -1333, -138, 3289, -1356, 1880, -1356,1773 9 69, -1356, -161, 268, -181, -177, -175, 2, -39, -35,1774 - 33, 769, 30, 31, 69, -146, -162, -151, -147, -140,1775 -277, -5 21, -506, -484, -575, -313, -516, -1356, -1356, -528,1776 11 56, 1157, 1163, 2484, 4688, -570, -557, -534, -533, -478,1777 -1 356, -432, -693, -685, -681, -580, -201, -236, -1356, -1356,1778 265, 180, -86, -1356, 3600, 232, -625, -3761752 -1281, 4254, 1590, -1281, 1409, -1281, 52, 0, -229, -1281, 1753 596, -527, -497, -931, -99, 4508, -1281, 358, 609, 563, 1754 518, 591, 1104, 1105, 1110, 1117, 1112, -1281, 613, -339, 1755 5346, -893, -690, -919, -1281, 401, -634, 444, -1281, 753, 1756 -1281, 449, -1224, -1281, -1281, 191, -1281, -1265, -724, 305, 1757 -1281, -1281, -1281, -1281, 129, -1170, -1281, -1281, -1281, -1281, 1758 -1281, -1281, 382, -1175, 71, -1281, -381, -1281, 560, 356, 1759 -1281, 229, -1281, -338, -1281, -1281, -1281, 632, -691, -1281, 1760 -1281, 11, -1000, 10, 2865, -1281, -1281, -1281, -125, -1281, 1761 275, 363, -194, 1416, 4157, -1281, -1281, 24, 25, 374, 1762 -202, 1621, -1281, 2138, -1281, -1281, 112, 2165, -1281, 2832, 1763 139, -1281, -1281, -416, -434, 1276, 1278, 786, 1028, 400, 1764 -1281, -1281, 1269, 793, -513, -1281, -522, -57, -636, -1281, 1765 -1281, -959, -994, 122, 819, 1153, 135, -1281, 1441, 296, 1766 -299, -212, -109, 749, 844, -1281, 1087, -1281, 2859, 1478, 1767 -462, 1000, -1281, -1281, 778, -1281, -233, -1281, -72, -1281, 1768 -1281, -1281, -1232, 504, -1281, -1281, -1281, 1259, -1281, 68, 1769 -1281, -1281, -850, -96, -1280, -93, 1665, -1281, 2401, -1281, 1770 993, -1281, -164, 689, -177, -176, -170, 2, -39, -33, 1771 -28, 1052, 48, 75, 93, -100, -167, -166, -153, -148, 1772 -277, -569, -500, -490, -543, -300, -514, -1281, -1281, -506, 1773 1174, 1177, 1181, 2149, 5126, -572, -549, -544, -523, -484, 1774 -1281, -427, -665, -663, -660, -602, -320, -271, -1281, -1281, 1775 102, 140, -84, -1281, 3728, 128, -603, -447 1779 1776 }; 1780 1777 … … 1782 1779 positive, shift that token. If negative, reduce the rule which 1783 1780 number is the opposite. If YYTABLE_NINF, syntax error. */ 1784 #define YYTABLE_NINF -52 31781 #define YYTABLE_NINF -522 1785 1782 static const yytype_int16 yytable[] = 1786 1783 { 1787 47, 112, 96, 398, 148, 933, 266, 399, 149, 400, 1788 150, 452, 176, 934, 113, 382, 383, 935, 259, 427, 1789 791, 527, 401, 707, 406, 439, 512, 505, 712, 112, 1790 112, 895, 47, 402, 96, 618, 853, 403, 768, 407, 1791 975, 854, 111, 47, 404, 47, 1152, 160, 409, 871, 1792 751, 820, 846, 48, 756, 47, 1092, 1144, 718, 1184, 1793 1185, 47, 260, 192, 47, 261, 215, 47, 342, 225, 1794 1091, 613, 995, 151, 152, 847, 848, 142, 31, 279, 1795 218, 112, 112, 398, 933, 48, 1462, 399, 842, 400, 1796 1399, 424, 934, 845, 201, 1196, 935, 779, 951, 1318, 1797 574, 1202, 401, 843, 406, 47, 936, 31, 47, 1135, 1798 679, 536, 153, 402, 937, 47, 1136, 403, 122, 407, 1799 1508, 749, 482, 484, 404, 844, 408, 637, 936, 290, 1800 688, 641, 31, 68, 857, 575, 950, 280, 692, 1099, 1801 864, 1219, 1220, 605, 202, 148, 47, 121, 160, 149, 1802 410, 150, 682, 684, 47, 1537, 75, 1539, 978, 47, 1803 1462, 372, 1186, 683, 685, 68, 167, 446, 1319, 54, 1804 114, 483, 141, 578, 438, 410, 478, 251, 31, 410, 1805 105, 105, 517, 579, 47, 47, 467, 160, 75, 61, 1806 168, 31, 67, 1482, 109, 534, 535, 211, -234, -234, 1807 47, 54, 418, 31, 410, 41, 42, 556, 47, 1260, 1808 160, 919, 105, 31, 151, 152, 677, 47, 746, 1008, 1809 47, 61, 442, 842, 67, 148, 585, 112, 490, 149, 1810 1201, 150, 586, 209, 483, 507, 219, 858, 843, 755, 1811 527, 861, 112, 535, 674, 527, 112, 105, 527, 143, 1812 47, 112, 96, 153, 1210, 596, 576, 760, 770, 675, 1813 844, 488, 878, 410, 47, 47, 881, 160, 95, -234, 1814 777, 47, 410, 855, 145, 610, 1037, 165, 47, 535, 1815 778, 1038, 846, 862, 342, 610, 666, 536, 740, 1342, 1816 712, 1014, 472, 112, 703, 470, 1343, 1051, 618, 1263, 1817 95, 1154, 813, 48, 176, 847, 848, 1184, 1185, 705, 1818 162, 147, 536, 95, 681, 1344, 1419, 1420, 842, 154, 1819 686, 638, 976, 1025, 824, 642, 674, 1264, 47, 188, 1820 372, 170, 95, 843, 524, 95, 180, 536, 478, 1134, 1821 1192, 675, 165, 1202, 200, 874, 1010, 47, 47, 875, 1822 1419, 1420, 1216, 441, -290, 844, 1015, 739, 478, 246, 1823 1186, 831, 109, 857, 47, 761, 478, 1193, 47, 536, 1824 109, 1026, 762, 41, 42, 162, 109, 327, 249, 653, 1825 1092, 41, 42, 68, 926, 936, 1421, 41, 42, 440, 1826 854, 886, 887, 1133, 1091, 47, 1402, 1492, 500, 605, 1827 501, 783, 846, -518, 880, 47, 75, 372, 1551, 905, 1828 1186, 75, 251, 763, 95, 764, 1153, 1214, 765, 54, 1829 1430, 771, 916, 47, 1193, 847, 848, 95, 605, 47, 1830 105, 47, 1457, 605, 1550, 1566, 1212, 1521, 109, 61, 1831 435, 871, 67, 1526, 479, 263, 342, 1451, 1452, 41, 1832 42, 376, 397, 188, 1561, 47, 794, 795, 796, 876, 1833 112, 1565, -10, 877, 1546, 112, 1051, 377, 386, 1553, 1834 327, -112, 1381, 434, 112, 728, 95, 789, 1406, 47, 1835 251, 329, 211, 958, 387, -112, -112, 47, 95, 372, 1836 -441, 47, -112, 96, -467, 47, 740, 1041, 112, 535, 1837 112, -112, 435, 1202, 460, 896, 1107, 505, 979, -442, 1838 1202, 885, 885, 885, 707, 111, 1259, 398, 95, 1121, 1839 653, 399, 1150, 400, 1102, -467, 275, -467, 909, 165, 1840 885, -467, 486, 277, 1186, 434, 401, 112, 618, 406, 1841 653, 936, 112, 653, 48, 278, 1038, 402, 389, 1252, 1842 391, 403, 1172, 1174, 407, 907, 109, 330, 404, 531, 1843 1107, 767, 162, 1202, 390, 739, 392, 41, 42, 331, 1844 1181, 1182, 740, 75, 1036, 1017, 607, 332, 784, 1466, 1845 370, 767, 693, 790, 767, 1379, 393, 873, 586, 1118, 1846 112, 140, 333, 75, 1019, 1348, 95, 47, 831, 936, 1847 936, 75, 394, 888, 885, 334, 479, 1292, 1293, 47, 1848 342, 47, 478, 211, 564, 565, 612, 557, 904, 884, 1849 884, 884, 558, 559, 68, 587, 479, 410, 1231, 1232, 1850 47, 472, 1498, 535, 479, 897, 1250, 713, 884, 1498, 1851 1254, 739, 240, 243, 37, 876, 47, 75, 40, 1117, 1852 566, 567, 112, 714, 955, 41, 42, 327, 327, 715, 1853 54, 47, 1429, 112, 47, 112, 898, 335, 652, 713, 1854 730, 105, 899, 188, 712, 716, 731, 1466, 737, 994, 1855 61, 43, 1466, 67, 728, 929, 342, 1036, 831, 715, 1856 384, 146, 1547, 371, 1199, 1049, 885, 959, 47, 610, 1857 47, 1199, 1466, 375, 906, 930, 908, 960, 1333, 1466, 1858 1200, 388, 884, 112, 1335, 507, 1096, 1324, 460, 112, 1859 408, 460, 747, 704, 1334, 228, 535, 460, 748, 229, 1860 1336, 112, 233, 327, 235, 109, 8, 9, 10, 11, 1861 12, 244, 1056, 1129, 47, 47, 41, 42, 757, 1500, 1862 285, 1501, 327, 590, 758, 410, 396, 775, 47, 95, 1863 -291, 41, 42, 612, 441, 31, 431, 8, 9, 10, 1864 11, 12, 954, 1382, 1350, 774, 920, 674, 531, 425, 1865 531, 775, 775, 531, -105, 703, 531, 521, -105, 922, 1866 833, 449, 675, 34, 1367, 775, 31, 1391, 1368, 1003, 1867 705, 1016, 1356, 464, 884, 1004, 1548, 731, 426, 936, 1868 1358, 1359, 1360, 910, 161, 410, 1248, 1447, 327, 728, 1869 605, -112, 586, -112, 34, 1375, 936, -112, 462, 728, 1870 193, 775, 607, 216, 1459, 1376, 226, 933, 913, 47, 1871 410, 775, -112, -112, 728, 934, 115, 75, 37, 935, 1872 1176, 47, 40, 109, 465, 138, 139, 211, 1395, 41, 1873 42, 872, 213, 109, 41, 42, 607, 831, 228, 468, 1874 1378, 211, 560, 561, 41, 42, 775, 841, 979, 612, 1875 479, 469, 979, 979, 491, 839, 737, 610, 511, 75, 1876 158, 1156, 37, 410, 653, 611, 40, 562, 563, 936, 1877 936, 112, 653, 41, 42, 1197, 1383, 1519, 1459, 290, 1878 1183, 1448, 775, 1467, 213, 161, 1168, 1445, 410, 775, 1879 535, 1514, 479, 515, 47, 1571, 520, 1515, 373, 744, 1880 532, 586, 1300, 1301, 1171, 1303, 610, 536, 47, 745, 1881 654, 1307, 570, 1078, 1310, 1173, 47, 610, 572, 257, 1882 801, 802, 803, 804, 161, 158, 1236, 213, 410, 571, 1883 740, 517, 737, 573, 47, 211, 932, 109, 704, 138, 1884 139, 214, 568, 569, 537, 538, 539, 161, 41, 42, 1885 1007, 1004, 1122, 460, 112, 251, 329, 410, 241, 443, 1886 323, 775, 1009, 653, 418, 670, 410, 1340, 540, 339, 1887 541, 112, 542, 543, 653, 941, 112, 941, 228, 242, 1888 233, 338, 841, 612, 576, 1243, 329, 410, 213, 1388, 1889 1389, 717, -438, 214, 594, 1138, 464, 833, 597, 739, 1890 488, 329, 410, 1439, 1004, 68, 855, 329, 610, 676, 1891 740, 647, 1146, 728, 728, 767, 667, 1146, 668, 429, 1892 1311, 1312, 1313, 433, 669, 112, 213, 671, 75, 750, 1893 213, 754, 1445, 1446, 672, 653, 214, 673, 112, 112, 1894 112, 54, 678, 1533, 1493, 1494, 37, 535, 173, 174, 1895 40, 256, 105, 323, 455, 1400, 696, 41, 42, 1400, 1896 721, 61, 719, 112, 67, -238, 1146, 373, 228, 1419, 1897 1420, 728, 728, 759, 1425, 772, 1078, 841, 776, 1211, 1898 1213, 1215, 780, 371, 109, 433, 138, 237, 495, 612, 1899 1349, 1351, 1352, 1107, 47, 41, 42, 214, 834, 2, 1900 205, 4, 5, 6, 7, 342, 797, 798, 1123, 529, 1901 836, 838, 158, 799, 800, 805, 806, 213, 849, 105, 1902 -12, 238, -292, 901, -13, 893, 239, 441, 1370, 8, 1903 9, 10, 11, 12, 37, 214, 182, 183, 40, 214, 1904 894, 921, 923, 928, 373, 41, 42, 924, 8, 9, 1905 10, 11, 12, 699, 949, -415, 595, -522, 31, 602, 1906 748, 1483, 963, 460, 35, 68, 36, 970, 984, 112, 1907 972, 698, 327, 410, 983, 977, 704, 31, 635, 699, 1908 985, 700, 639, 892, 704, 339, 34, 218, 75, 987, 1909 988, 47, 109, 989, 138, 139, 653, 990, 213, 1011, 1910 -293, 54, 612, 41, 42, 34, 999, 8, 9, 10, 1911 11, 12, 105, 1329, 2, 205, 4, 5, 6, 7, 1912 1012, 479, 1013, 872, 1204, 1027, 214, -3, 1122, 1058, 1913 1093, 891, 1028, 112, 112, 112, 31, 1078, 1029, 1030, 1914 323, 323, 1031, 227, 945, 728, 1032, 578, 213, 410, 1915 948, 1080, 1033, 728, 728, 728, 1044, 579, 128, 1443, 1916 129, 130, 131, -403, 34, -402, 1095, 1104, 455, 41, 1917 42, 455, 1103, 1105, 1146, 1146, 1146, 455, 1106, 35, 1918 1110, 36, 1111, 1559, 537, 538, 539, 1112, 1113, 115, 1919 653, 653, 1114, 1120, 2, 205, 4, 5, 6, 7, 1920 1130, 728, 1131, 729, 775, 1137, 211, 214, 540, 993, 1921 541, 1132, 542, 1320, 495, 1145, 323, 1166, 495, 398, 1922 737, 1122, 1142, 399, 1442, 400, 1189, 1187, 529, 68, 1923 529, 767, 1078, 529, 1188, 323, 529, 460, 401, 1190, 1924 406, 1223, 209, 219, 1191, 653, 1205, 339, 653, 402, 1925 1206, 1208, 75, 403, 105, 407, 1209, 214, 1217, 35, 1926 404, 36, 1221, 1224, 674, 54, 1532, 47, 47, -3, 1927 1229, 213, 1234, 1240, 500, 1249, 105, 112, 112, 675, 1928 109, 1244, 138, 139, 1123, 61, 1078, 1251, 67, 1078, 1929 1253, 41, 42, 653, 1256, 105, 1257, 1261, 653, 213, 1930 737, 323, 441, 1265, 213, 1268, 175, 68, 1270, 1272, 1931 1273, 1302, 829, 1274, 1207, 602, 112, 752, 1146, 1146, 1932 1278, 1275, 753, 1276, 1122, 654, 1285, 172, 653, 1294, 1933 75, 1295, 1061, 1323, 1078, 1305, 1306, 1308, 440, 1078, 1934 1331, 1337, 1339, 54, 870, 1309, 1341, 1317, 1346, 602, 1935 1345, 1347, 64, 116, 105, 879, 175, 1484, 1353, 175, 1936 1354, 148, 1355, 479, 1357, 149, 1204, 150, 1363, 1078, 1937 252, 1364, 1365, 1366, 1377, 47, 112, 1123, 1373, 1374, 1938 214, 1384, 1385, 1313, 64, 112, 1393, 1394, 105, 1396, 1939 1403, 653, 213, 1413, 1414, 1406, 653, 159, -404, 1417, 1940 47, 47, 1428, 160, 1432, 175, 213, 1434, 214, 1436, 1941 1437, 339, 729, 214, 653, 1438, 653, 1534, 1444, 220, 1942 653, 1449, 1453, 653, 654, 47, 1542, 372, 1454, 1455, 1943 1456, 653, 1078, 455, 166, 653, 171, 1078, 1368, 177, 1944 178, 179, 37, 181, 173, 174, 40, 1458, 37, 1463, 1945 173, 174, 40, 41, 42, 1078, 258, 1078, 232, 41, 1946 42, 1078, 1468, 495, 1078, 1470, 416, 68, 175, 1472, 1947 247, 248, 1078, 1474, 68, 1080, 1078, 1476, 1478, 375, 1948 1123, 37, 1480, 182, 183, 40, 1487, 339, 1481, 436, 1949 75, 105, 41, 42, 1486, 1509, 1488, 75, 328, 444, 1950 213, 214, 1511, 54, 1499, 1513, 258, 349, 1517, 1518, 1951 54, 1540, 1525, 1545, 105, 214, 1552, 1554, 609, 1541, 1952 610, 105, 175, 479, 1061, 1556, 1204, 68, 611, 175, 1953 479, 1562, 37, 1204, 182, 183, 40, 405, 1569, 1570, 1954 1222, 807, 810, 41, 42, 1018, 808, 729, 809, 829, 1955 75, 811, 423, 1322, 212, 428, 430, 729, 1520, 1572, 1956 159, 1431, 1404, 54, 231, 1255, 1387, 1502, 528, 698, 1957 1392, 410, 729, 1228, 105, 694, 695, 1108, 942, 700, 1958 723, 447, 1109, 479, 1141, 450, 1204, 451, 826, 965, 1959 1057, 8, 9, 10, 11, 12, 466, 973, 175, 900, 1960 1332, 1119, 64, 742, 816, 817, 212, 480, 1506, 214, 1961 1506, 818, 0, 0, 0, 175, 0, 487, 0, 175, 1962 31, 0, 0, 0, 1418, 430, 0, 1426, 0, 0, 1963 1298, 0, 0, 0, 0, 0, 0, 0, 0, 829, 1964 0, 0, 327, 455, 0, 1506, 0, 1506, 34, 212, 1965 0, 0, 0, 37, 0, 182, 183, 40, 37, 0, 1966 182, 183, 40, 0, 41, 42, 73, 0, 486, 41, 1967 42, 0, 1465, 0, 0, 0, 37, 1469, 182, 183, 1968 40, 0, 175, 495, 1124, 323, 0, 41, 42, 0, 1969 184, 0, 213, 258, 0, 1530, 603, 410, 73, 0, 1970 185, 0, 631, 0, 0, 1531, 0, 1491, 0, 0, 1971 212, 0, 0, 184, 0, 636, 690, 0, 0, 636, 1972 0, 0, 258, 185, 0, 0, 0, 601, 608, 0, 1973 0, 0, 0, 221, 0, 0, 870, 0, 0, 632, 1974 633, 8, 9, 10, 11, 12, 0, 0, 212, 0, 1975 732, 0, 212, 37, 0, 182, 183, 40, 0, 0, 1976 0, 0, 0, 0, 41, 42, 0, 0, 506, 480, 1977 31, 729, 729, 0, 0, 0, 125, 125, 125, 0, 1978 0, 0, 0, 0, 349, 0, 0, 528, 0, 480, 1979 264, 0, 528, 1560, 0, 528, 0, 480, 34, 1560, 1980 265, 214, 8, 9, 10, 11, 12, 0, 0, 0, 1981 1560, 0, 0, 0, 1560, 0, 0, 455, 829, 0, 1982 0, 352, 0, 724, 0, 0, 430, 0, 0, 729, 1983 729, 31, 0, 0, 8, 9, 10, 11, 12, 212, 1984 777, 738, 410, 64, 0, 0, 0, 125, 175, 125, 1985 778, 430, 0, 0, 0, 430, 0, 0, 0, 34, 1986 0, 0, 0, 31, 37, 0, 182, 183, 40, 0, 1987 0, 213, 0, 0, 274, 41, 42, 0, 0, 0, 1988 0, 175, 0, 0, 258, 349, 0, 0, 0, 0, 1989 0, 34, 0, 0, 0, 448, 37, 175, 182, 183, 1990 40, 609, 0, 610, 0, 0, 0, 41, 42, 0, 1991 0, 611, 175, 0, 0, 0, 73, 0, 0, 0, 1992 212, 73, 0, 0, 0, 8, 9, 10, 11, 12, 1993 125, 819, 0, 698, 0, 410, 339, 212, 125, 0, 1994 125, 125, 0, 700, 0, 125, 0, 125, 125, 636, 1995 832, 0, 603, 918, 31, 0, 0, 0, 0, 0, 1996 1124, 0, 925, 851, 0, 0, 927, 213, 0, 0, 1997 212, 1330, 0, 8, 9, 10, 11, 12, 0, 0, 1998 214, 603, 34, 0, 0, 0, 603, 37, 0, 182, 1999 183, 40, 636, 0, 0, 349, 349, 349, 41, 42, 2000 0, 0, 31, 729, 0, 0, 0, 0, 0, 175, 2001 0, 729, 729, 729, 349, 0, 221, 125, 0, 0, 2002 0, 0, 0, 0, 1530, 0, 410, 0, 0, 0, 2003 34, 0, 724, 0, 1531, 37, 0, 182, 183, 40, 2004 0, 0, 0, 480, 0, 0, 41, 42, 258, 738, 2005 0, 0, 938, 1124, 0, 0, 0, 0, 0, 729, 2006 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2007 0, 0, 264, 0, 0, 0, 214, 0, 0, 0, 2008 0, 0, 265, 73, 0, 480, 0, 0, 349, 0, 2009 0, 31, 0, 212, 0, 0, 0, 964, 352, 0, 2010 430, 0, 0, 73, 0, 0, 0, 0, 952, 0, 2011 953, 73, 0, 0, 0, 0, 0, 956, 957, 34, 2012 0, 212, 962, 0, 258, 738, 212, 0, 0, 0, 2013 992, 0, 0, 0, 967, 0, 0, 352, 0, 971, 2014 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 2015 0, 0, 0, 0, 0, 352, 1124, 73, 0, 0, 2016 0, 959, 0, 610, 0, 1000, 0, 724, 0, 0, 2017 0, 960, 0, 0, 554, 175, 0, 724, 0, 0, 2018 349, 0, 636, 0, 0, 1024, 636, 832, 1505, 0, 2019 1505, 0, 724, 0, 0, 0, 0, 0, 0, 352, 2020 1101, 0, 1035, 0, 0, 0, 0, 0, 0, 0, 2021 601, 0, 0, 0, 212, 0, 0, 0, 0, 0, 2022 0, 0, 0, 0, 0, 1505, 0, 1505, 212, 0, 1784 46, 111, 95, 147, 451, 438, 397, 398, 426, 148, 1785 53, 113, 112, 399, 149, 790, 400, 401, 265, 258, 1786 405, 711, 767, 604, 66, 67, 870, 706, 111, 111, 1787 402, 46, 932, 95, 933, 403, 750, 934, 853, 841, 1788 755, 53, 46, 918, 46, 717, 159, 617, 1185, 748, 1789 511, 1091, 894, 110, 46, 66, 67, 381, 382, 845, 1790 46, 1201, 191, 46, 846, 214, 46, 852, 224, 341, 1791 612, 47, 819, 208, 1151, 504, 218, 217, 678, 1143, 1792 111, 111, 1183, 1184, 406, 847, 397, 398, 210, 994, 1793 150, 636, 408, 399, 844, 640, 400, 401, 687, 141, 1794 405, 778, 47, 423, 46, 1398, 691, 46, 842, 200, 1795 402, 932, 74, 933, 46, 403, 934, 151, 843, 950, 1796 883, 883, 883, 1195, 974, 682, 684, 856, 30, 477, 1797 885, 886, 30, 863, 289, 152, 1317, 166, 1461, 883, 1798 104, 104, 407, 74, 147, 46, 161, 159, 904, 1134, 1799 148, 535, 121, 46, 445, 149, 1135, 1465, 46, 201, 1800 371, 167, 30, 977, 406, 857, 481, 483, 739, 860, 1801 278, 104, 164, 466, 841, 1341, -234, -234, 1009, 1098, 1802 1218, 1219, 1342, 46, 46, 120, 159, 482, 1014, 175, 1803 877, 1418, 1419, 30, 880, 30, 676, 1262, 250, 46, 1804 409, 754, 212, 1025, 409, 1318, 104, 46, 1481, 159, 1805 1090, 161, 1461, 883, 1418, 1419, 46, 745, 140, 46, 1806 769, 441, 957, 30, 147, 1263, 111, 535, 279, 439, 1807 148, 150, 417, 142, 409, 149, 375, 164, 144, 259, 1808 673, 111, 260, 842, 440, 111, 1185, -234, 1259, 46, 1809 111, 95, 376, 843, 212, 1465, 595, 169, 151, 53, 1810 1465, 1420, 975, 46, 46, 487, 159, 409, 179, 841, 1811 46, 30, 326, 66, 67, 60, 152, 46, 1037, 604, 1812 1465, 759, 199, 711, 1429, 341, 823, 1465, 535, 845, 1813 702, 477, 111, 854, 846, 609, 1185, 212, 665, 1507, 1814 153, 1549, 471, 1201, 674, 883, 60, 1036, 604, 433, 1815 617, 477, 1013, 604, 1016, 847, 760, 469, 1153, 477, 1816 47, 1560, 673, 761, 1024, 830, 680, 46, 1564, 371, 1817 1183, 1184, 685, 535, 1536, 434, 1538, 1343, 842, 573, 1818 459, 861, 1191, 609, 523, 873, 46, 46, 843, 874, 1819 535, 437, 925, 1491, 704, 1550, 856, 245, 212, 936, 1820 1133, 74, -290, 46, 114, 326, 74, 46, 879, 1192, 1821 1200, 433, 108, 210, 574, 1091, 739, 1401, 652, 108, 1822 1192, 949, 1565, 40, 41, 250, 674, 853, -10, 104, 1823 40, 41, -112, -112, 46, 530, 212, 434, 161, 108, 1824 212, 482, 1180, 1181, 46, 489, 371, 157, -112, 845, 1825 40, 41, 506, 385, 846, 108, 248, 388, 870, -517, 1826 1185, 390, 46, 575, 164, 1040, 40, 41, 46, 386, 1827 46, 738, 1209, 389, 584, 847, 1215, 391, 782, 1211, 1828 585, 227, 392, 563, 564, 228, 915, 341, 232, 712, 1829 234, 262, 739, 714, 46, 1456, 108, 243, 393, 111, 1830 1230, 1231, 1213, 1201, 111, 713, 256, 40, 41, 715, 1831 1201, 606, 157, 111, -440, 1450, 1451, 712, 46, 565, 1832 566, 175, -112, 250, 328, 692, 46, 212, 371, 1405, 1833 46, 585, 95, 928, 46, 788, 329, 111, 637, 111, 1834 53, 108, 641, -112, 210, 1120, 1149, 322, 559, 560, 1835 1106, 1101, 40, 41, 66, 67, 338, 1117, 706, 652, 1836 397, 398, 714, 1201, 60, 110, -441, 399, 74, 478, 1837 400, 401, 978, 274, 1090, 405, 111, 1258, 929, 652, 1838 1347, 111, 652, 1037, 402, 1171, 1173, 895, 74, 403, 1839 617, 276, 326, 326, 459, 504, 74, 459, 1018, 561, 1840 562, 47, 830, 459, 1106, 477, 428, 906, 212, 284, 1841 432, 766, 908, 1035, 1198, 8, 9, 10, 11, 12, 1842 40, 41, 1198, 277, 227, 884, 884, 884, 783, 111, 1843 1199, 766, 727, 789, 766, 330, 46, 1332, 1323, 406, 1844 322, 454, 74, 30, 884, 331, 520, 954, 46, 1334, 1845 46, 341, 1380, 1333, 530, 108, 530, 774, 212, 530, 1846 875, 832, 530, 332, 876, 1335, 40, 41, 326, 46, 1847 104, 33, 432, 1381, 1355, 494, 333, -466, 1132, 738, 1848 516, 471, 1357, 1358, 1359, 46, 108, 326, 137, 138, 1849 334, 111, 830, 533, 534, 440, 528, 40, 41, 157, 1850 46, 369, 111, 46, 111, 555, 383, 711, -466, 1378, 1851 -466, 896, -291, 875, -466, 1048, 370, 1116, 884, 8, 1852 9, 10, 11, 12, 567, 568, 1035, 341, 241, 94, 1853 1394, 478, 729, 586, 526, 409, 1095, 46, 730, 46, 1854 604, 534, 897, 594, 651, -105, 601, 30, 898, -105, 1855 374, 478, 111, 326, 905, 738, 907, 556, 111, 478, 1856 94, 395, 557, 558, 227, 634, 232, 606, 108, 638, 1857 111, 146, 338, 94, 1366, 33, 1128, 534, 1367, 40, 1858 41, 212, 387, 46, 46, 746, 1428, 756, 210, 187, 1859 1249, 747, 94, 757, 1253, 94, 871, 46, 577, 407, 1860 409, 606, 210, 736, 872, 60, 424, 1349, 578, 212, 1861 884, 1520, 1497, 673, 212, 425, 776, 1525, 409, 1497, 1862 887, 702, 953, 958, 1055, 609, 777, 322, 322, 430, 1863 773, 919, 1390, 959, 1251, 903, 774, 774, 1545, 461, 1864 921, 727, 74, 1552, 448, 171, 774, 464, 762, 108, 1865 763, 137, 236, 764, 227, 454, 770, 1002, 454, 459, 1866 40, 41, 1015, 1003, 454, 681, 683, 499, 730, 500, 1867 490, 830, 1546, 1499, 94, 1500, 114, 674, 46, 1175, 1868 739, 1006, 1003, 1247, 74, 704, 237, 94, 251, 585, 1869 46, 238, 1291, 1292, 1374, 589, 210, 409, 832, 467, 1870 774, 494, 212, 322, 932, 494, 933, 468, 1375, 934, 1871 774, 1008, 396, 187, 774, 528, 212, 528, 1377, 1382, 1872 528, 1447, 322, 528, 774, 774, 108, 1444, 137, 138, 1873 1547, 510, 506, 652, 338, 514, 94, 40, 41, 1466, 1874 111, 652, 978, 1513, 1570, 774, 978, 978, 94, 1514, 1875 585, 53, 289, 526, 793, 794, 795, 909, 526, 409, 1876 739, 526, 912, 46, 409, 66, 67, 328, 409, 2, 1877 204, 4, 5, 6, 7, 519, 727, 46, 94, 108, 1878 531, 137, 138, 535, 415, 46, 727, 1196, 322, 569, 1879 40, 41, 485, 1077, 250, 328, 409, 534, 1155, 828, 1880 409, 727, 601, 46, 1167, 478, 409, 435, 1387, 1388, 1881 212, 736, 417, 669, 409, 812, 751, 443, 1122, 1121, 1882 1170, 752, 609, 111, 1182, 2, 204, 4, 5, 6, 1883 7, 869, 652, 34, 570, 35, 601, 487, 328, 409, 1884 111, 571, 878, 652, 575, 111, 36, 478, 181, 182, 1885 39, 337, 1172, 74, 609, -292, 94, 40, 41, 1438, 1886 1003, 1339, 8, 9, 10, 11, 12, 1242, 36, 459, 1887 172, 173, 39, 1444, 1445, 1137, 611, 1492, 1493, 40, 1888 41, 104, 1235, 608, 409, 609, 527, 736, 440, 34, 1889 30, 35, 1145, 610, 111, 766, -3, 1145, 338, 854, 1890 328, 609, 1446, 572, 652, 370, -437, 111, 111, 111, 1891 593, 53, 8, 9, 10, 11, 12, 1532, 33, 1458, 1892 454, 800, 801, 802, 803, 1203, 67, 108, 596, 137, 1893 138, 534, 111, 187, 1418, 1419, 160, 326, 40, 41, 1894 30, 646, 940, 738, 940, 666, 1145, 667, 104, 1399, 1895 494, 668, 192, 1399, 670, 215, 1077, 671, 225, 1210, 1896 1212, 1214, -293, 46, 798, 799, 890, 1106, 33, 8, 1897 9, 10, 11, 12, 338, 672, 341, 993, 36, 675, 1898 172, 173, 39, 703, 677, -112, 695, -112, 871, 40, 1899 41, -112, 1518, 1458, 1310, 1311, 1312, 30, 804, 805, 1900 727, 727, 212, 1348, 1350, 1351, -112, -112, 796, 797, 1901 577, 255, 409, 74, 718, 374, 60, 720, -238, 94, 1902 578, 758, 771, 611, 534, 33, 775, 779, -12, 893, 1903 833, 835, 1017, 837, 689, 848, 828, 160, 111, -13, 1904 900, 104, 892, 459, 920, 536, 537, 538, 922, 923, 1905 372, -414, 208, 218, 217, 1482, 927, 698, 727, 727, 1906 46, 948, -521, 962, 969, 652, 747, 210, 731, 539, 1907 983, 540, 1369, 541, 542, 53, 160, 971, 2, 204, 1908 4, 5, 6, 7, 976, 982, 984, 986, 987, 66, 1909 67, 988, 989, 998, 1122, 1121, 36, 1010, 1011, 160, 1910 39, 1012, 111, 111, 111, 527, 226, 40, 41, 1026, 1911 527, 442, 1027, 527, 1028, 1029, 127, 1077, 128, 129, 1912 130, 536, 537, 538, 1030, 1031, 828, 40, 41, 728, 1913 454, 1032, 1043, 838, 1057, 609, -402, 840, -401, 611, 1914 1092, 1442, 34, 610, 35, 539, 1558, 540, 439, 541, 1915 1319, 935, 1102, 53, 1145, 1145, 1145, 1103, 1094, 652, 1916 652, 1104, 1105, 440, 1109, 1110, 1111, 1203, 67, 1112, 1917 494, 1123, 322, 935, 1113, 1119, 478, 74, 36, 1129, 1918 774, 212, 39, 104, 1130, 1079, 1136, 1122, 1121, 40, 1919 41, 1141, 397, 398, 1131, 992, 1144, 36, 1165, 399, 1920 1328, 39, 400, 401, 1190, 104, 405, 1186, 40, 41, 1921 1187, 766, 1077, 1188, 652, 42, 402, 652, 534, 372, 1922 1189, 403, 1204, 869, 104, 145, 931, 1205, 703, 1207, 1923 673, 1208, 727, 1216, 743, 1220, 46, 46, 1222, 1223, 1924 727, 727, 727, -3, 744, 1228, 111, 111, 1531, 36, 1925 1233, 172, 173, 39, 1239, 74, 63, 115, 499, 516, 1926 40, 41, 652, 1243, 1007, 1248, 1077, 652, 1250, 1077, 1927 406, 917, 840, 611, 1252, 736, 1255, 212, 1256, 1260, 1928 924, 1264, 1267, 104, 926, 111, 1269, 63, 727, 1271, 1929 1122, 1121, 1272, 1273, 674, 1274, 372, 652, 1145, 1145, 1930 158, 1275, 1277, 174, 454, 828, 1284, 1293, 1294, 1301, 1931 139, 1330, 1304, 53, 1077, 1322, 1305, 104, 1307, 1077, 1932 53, 36, 219, 181, 182, 39, 1336, 1203, 67, 1308, 1933 147, 1316, 40, 41, 1203, 67, 148, 1483, 728, 1338, 1934 60, 149, 1050, 1340, 46, 111, 1344, 1345, 1206, 1077, 1935 1346, 1352, 1353, 174, 111, 736, 174, 1354, 183, 257, 1936 652, 239, 242, 1356, 1362, 652, 1363, 840, 184, 46, 1937 46, 1441, 159, 53, 1364, 534, 1365, 1372, 1376, 611, 1938 1373, 213, 1383, 652, 1384, 652, 1312, 1203, 67, 652, 1939 1395, 1392, 652, 1393, 46, 1402, 371, 1533, 240, 1405, 1940 652, 327, 174, 1412, 652, 1413, 1541, -403, 1416, 257, 1941 348, 1427, 1077, 1435, 1505, 74, 1505, 1077, 478, 1431, 1942 104, 1433, 74, 338, 1436, 1443, 1437, 1367, 1448, 1452, 1943 935, 1453, 1454, 213, 1455, 1077, 1457, 1077, 1467, 1469, 1944 404, 1077, 1475, 104, 1077, 1299, 1300, 1123, 1302, 1462, 1945 104, 1505, 1077, 1505, 1306, 422, 1077, 1309, 427, 429, 1946 1471, 1152, 1473, 158, 1477, 174, 703, 1479, 1480, 1485, 1947 1486, 1487, 1498, 728, 703, 74, 213, 1508, 1512, 1510, 1948 165, 1524, 170, 728, 446, 176, 177, 178, 449, 180, 1949 450, 1516, 611, 1517, 1539, 1544, 1540, 1551, 728, 465, 1950 1553, 1555, 1561, 104, 231, 63, 1568, 326, 1569, 1079, 1951 479, 1050, 1221, 806, 1321, 807, 246, 247, 1100, 174, 1952 486, 808, 463, 1519, 211, 810, 174, 1430, 429, 809, 1953 122, 125, 126, 1571, 230, 1386, 1254, 213, 1403, 1501, 1954 1123, 8, 9, 10, 11, 12, 8, 9, 10, 11, 1955 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1956 22, 23, 24, -294, 1227, 25, 26, 27, 693, 30, 1957 694, 1107, 941, 722, 30, 213, 211, 1056, 478, 213, 1958 1108, 1140, 825, 1118, 899, 478, 935, 964, 1331, 741, 1959 972, 815, 0, 0, 816, 174, 257, 33, 817, 602, 1960 0, 252, 33, 253, 1391, 630, 0, 0, 0, 37, 1961 38, 0, 174, -294, 0, 0, 174, 1424, 635, 211, 1962 0, 0, 635, 0, 0, 257, 0, 8, 9, 10, 1963 11, 12, 0, 0, 0, 0, 0, 0, 478, 776, 1964 0, 409, 0, 1123, 935, 935, 337, 0, 0, 777, 1965 0, 0, 0, 0, 109, 30, 0, 0, 1417, 653, 1966 0, 1425, 0, 0, 0, 1217, 213, 0, 0, 0, 1967 0, 0, 479, 0, 0, 1504, 0, 1504, 0, 174, 1968 211, 0, 0, 33, 394, 0, 0, 348, 0, 0, 1969 0, 0, 479, 0, 413, 414, 0, 728, 728, 418, 1970 479, 420, 421, 0, 0, 0, 1464, 0, 0, 0, 1971 0, 1468, 1504, 0, 1504, 0, 0, 0, 211, 0, 1972 0, 0, 211, 0, 0, 958, 723, 609, 0, 429, 1973 0, 0, 0, 0, 0, 959, 0, 0, 505, 0, 1974 716, 1490, 322, 0, 737, 463, 63, 213, 0, 8, 1975 9, 10, 11, 12, 429, 728, 728, 0, 429, 0, 1976 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 1977 11, 12, 0, 600, 607, 0, 0, 30, 749, 36, 1978 753, 181, 182, 39, 0, 631, 632, 257, 348, 0, 1979 40, 41, 0, 0, 0, 30, 0, 213, 0, 0, 1980 0, 0, 0, 0, 0, 33, 0, 0, 0, 211, 1981 36, 0, 181, 182, 39, 0, 697, 0, 409, 0, 1982 0, 40, 41, 33, 698, 0, 699, 1559, 36, 0, 1983 181, 182, 39, 1559, 818, 0, 0, 0, 0, 40, 1984 41, 0, 0, 0, 1559, 174, 0, 608, 1559, 609, 1985 0, 0, 635, 831, 935, 602, 0, 610, 0, 0, 1986 0, 0, 0, 0, 0, 697, 850, 409, 0, 0, 1987 0, 935, 0, 0, 0, 699, 0, 0, 174, 0, 1988 0, 0, 0, 0, 602, 0, 0, 0, 0, 602, 1989 211, 0, 0, 0, 174, 635, 0, 1329, 348, 348, 1990 348, 0, 0, 0, 0, 1385, 0, 211, 0, 174, 1991 36, 0, 181, 182, 39, 0, 0, 348, 0, 0, 1992 213, 40, 41, 0, 0, 0, 0, 0, 0, 728, 1993 0, 0, 891, 0, 0, 723, 0, 728, 728, 728, 1994 211, 0, 0, 0, 935, 935, 479, 697, 213, 409, 1995 0, 257, 737, 213, 0, 937, 0, 699, 0, 0, 1996 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1997 17, 18, 19, 20, 21, 22, 23, 24, 72, 0, 1998 25, 26, 27, 0, 0, 728, 0, 0, 479, 30, 1999 452, 348, 0, 944, 0, 0, 0, 0, 0, 947, 2000 963, 0, 0, 429, 0, 75, 174, 0, 0, 72, 2001 36, 0, 181, 182, 39, 0, 0, 33, 0, 0, 2002 0, 40, 41, 0, 37, 38, 0, 257, 737, 0, 2003 0, 0, 0, 991, 0, 0, 75, 0, 0, 0, 2004 0, 213, 0, 0, 220, 0, 0, 1529, 0, 409, 2005 0, 0, 0, 0, 0, 213, 0, 1530, 485, 0, 2006 0, 453, 0, 211, 1502, 710, 1506, 0, 0, 109, 2007 723, 221, 0, 0, 0, 0, 0, 0, 0, 0, 2008 723, 0, 0, 348, 0, 635, 820, 821, 1023, 635, 2009 831, 211, 0, 0, 0, 723, 211, 0, 0, 0, 2010 0, 1535, 0, 1537, 0, 1034, 36, 0, 181, 182, 2011 39, 0, 0, 0, 0, 0, 855, 40, 41, 858, 2012 859, 0, 862, 0, 864, 865, 0, 0, 0, 866, 2013 867, 0, 351, 543, 544, 545, 546, 547, 548, 549, 2014 550, 551, 552, 263, 0, 0, 1566, 0, 1567, 213, 2015 0, 0, 0, 264, 951, 0, 952, 63, 0, 353, 2016 0, 1574, 1575, 955, 956, 0, 0, 553, 961, 0, 2017 0, 0, 174, 0, 653, 0, 411, 0, 0, 635, 2018 966, 1060, 0, 419, 211, 970, 0, 0, 8, 9, 2019 10, 11, 12, 0, 0, 0, 0, 0, 211, 0, 2020 0, 0, 0, 0, 0, 0, 447, 0, 0, 0, 2021 0, 999, 0, 942, 943, 1115, 30, 0, 505, 945, 2022 0, 0, 0, 429, 115, 0, 0, 72, 0, 0, 2023 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 2024 0, 348, 0, 0, 33, 0, 0, 0, 0, 36, 2025 0, 181, 182, 39, 75, 411, 600, 0, 0, 75, 2026 40, 41, 0, 0, 0, 0, 124, 124, 124, 0, 2027 0, 0, 0, 653, 0, 0, 602, 0, 0, 0, 2028 0, 0, 0, 0, 0, 0, 1529, 0, 409, 427, 2029 0, 0, 211, 0, 723, 723, 1530, 348, 348, 0, 2030 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 2031 0, 583, 0, 1044, 1045, 1046, 1047, 1202, 1049, 587, 2032 0, 0, 590, 0, 0, 0, 0, 220, 0, 0, 2033 0, 0, 30, 0, 1093, 0, 0, 124, 0, 124, 2034 0, 213, 0, 0, 0, 0, 0, 0, 1099, 0, 2035 0, 0, 723, 723, 221, 0, 0, 0, 635, 0, 2036 33, 0, 0, 0, 273, 36, 0, 181, 182, 39, 2037 0, 0, 0, 1060, 0, 0, 40, 41, 0, 0, 2038 0, 0, 0, 0, 0, 411, 0, 1114, 0, 419, 2039 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 2040 0, 0, 183, 0, 0, 0, 0, 0, 0, 351, 2041 0, 0, 184, 0, 72, 0, 737, 0, 0, 0, 2042 124, 75, 72, 0, 0, 0, 0, 1142, 124, 0, 2043 124, 124, 0, 0, 1150, 124, 353, 124, 124, 1154, 2044 0, 75, 0, 0, 1158, 0, 1159, 0, 351, 75, 2045 1161, 1162, 1163, 0, 0, 1166, 0, 0, 0, 1298, 2046 0, 0, 0, 0, 1178, 0, 351, 0, 72, 174, 2047 0, 0, 0, 0, 411, 353, 257, 0, 0, 1297, 2048 0, 63, 1193, 1194, 211, 0, 0, 0, 8, 9, 2049 10, 11, 12, 353, 723, 75, 737, 0, 0, 0, 2050 115, 0, 0, 0, 0, 0, 0, 124, 0, 1224, 2051 351, 0, 1226, 0, 0, 0, 30, 0, 0, 0, 2052 213, 0, 0, 0, 0, 0, 723, 0, 0, 0, 2053 0, 0, 0, 0, 723, 723, 723, 353, 0, 0, 2054 0, 0, 0, 0, 33, 348, 348, 0, 0, 36, 2055 1241, 181, 182, 39, 0, 0, 1245, 1246, 0, 1202, 2056 40, 41, 0, 0, 0, 0, 583, 583, 1257, 0, 2057 0, 0, 0, 1261, 0, 351, 1265, 0, 1266, 0, 2058 0, 1268, 723, 0, 0, 0, 263, 0, 0, 0, 2059 0, 0, 0, 115, 1276, 0, 264, 0, 0, 0, 2060 0, 0, 353, 1232, 0, 0, 0, 1283, 0, 1285, 2061 1286, 1287, 1288, 0, 0, 0, 213, 0, 0, 0, 2062 351, 351, 351, 0, 0, 1295, 0, 1296, 0, 0, 2063 0, 170, 0, 0, 0, 0, 0, 0, 0, 351, 2064 0, 0, 0, 0, 0, 174, 0, 353, 353, 353, 2065 0, 0, 0, 0, 0, 910, 0, 351, 0, 913, 2066 1324, 1325, 0, 211, 0, 0, 353, 0, 72, 0, 2067 348, 0, 77, 0, 351, 0, 0, 0, 0, 0, 2068 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 2069 0, 0, 411, 0, 0, 75, 115, 0, 0, 84, 2070 0, 353, 0, 77, 0, 54, 54, 0, 0, 0, 2071 72, 1360, 1361, 351, 0, 0, 0, 0, 0, 1202, 2072 0, 1371, 0, 0, 0, 0, 1202, 1320, 0, 0, 2073 84, 0, 0, 0, 0, 0, 54, 75, 222, 0, 2074 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2075 351, 0, 0, 0, 0, 0, 0, 0, 0, 211, 2076 0, 0, 0, 0, 0, 223, 0, 0, 54, 0, 2077 0, 54, 0, 1404, 0, 0, 0, 353, 0, 1202, 2078 0, 0, 0, 0, 0, 1408, 1554, 1409, 1410, 1411, 2079 0, 0, 351, 0, 0, 0, 0, 0, 0, 1415, 2080 0, 0, 351, 0, 0, 351, 0, 583, 1426, 0, 2081 220, 0, 351, 0, 0, 0, 0, 351, 0, 353, 2082 0, 0, 124, 124, 1439, 0, 354, 0, 0, 353, 2083 0, 0, 353, 0, 0, 0, 0, 221, 0, 353, 2084 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 2085 0, 0, 124, 361, 0, 124, 124, 0, 124, 346, 2086 124, 124, 0, 0, 0, 124, 124, 0, 0, 0, 2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2088 1488, 1489, 0, 0, 0, 0, 0, 0, 0, 0, 2089 0, 0, 0, 1494, 0, 0, 0, 0, 0, 0, 2090 1494, 0, 0, 0, 0, 0, 75, 0, 0, 0, 2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2092 411, 77, 0, 0, 54, 0, 77, 0, 0, 0, 2093 0, 0, 0, 1528, 0, 0, 0, 1534, 0, 0, 2094 0, 0, 0, 0, 124, 0, 0, 0, 84, 124, 2095 124, 0, 0, 84, 54, 124, 0, 0, 0, 0, 2096 0, 0, 0, 351, 0, 0, 1556, 0, 1557, 0, 2097 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2098 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2099 353, 25, 26, 27, 0, 0, 1572, 1573, 0, 1156, 2100 30, 452, 0, 0, 1576, 1577, 0, 0, 0, 0, 2101 0, 0, 0, 0, 0, 1168, 351, 351, 0, 351, 2102 351, 222, 0, 0, 0, 0, 0, 0, 33, 0, 2103 0, 0, 0, 0, 0, 37, 38, 0, 0, 72, 2104 0, 0, 0, 353, 353, 0, 353, 353, 223, 8, 2105 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2106 19, 20, 21, 22, 23, 24, 75, 0, 25, 26, 2107 27, 0, 453, 0, 351, 351, 946, 30, 0, 0, 2108 109, 0, 0, 0, 0, 0, 0, 0, 77, 0, 2109 0, 0, 1236, 0, 0, 0, 0, 0, 0, 0, 2110 0, 353, 353, 354, 0, 33, 0, 0, 77, 0, 2111 36, 0, 37, 38, 39, 84, 77, 0, 0, 0, 2112 0, 40, 41, 0, 0, 0, 0, 0, 0, 0, 2113 361, 0, 0, 0, 0, 84, 346, 0, 351, 0, 2114 0, 0, 354, 84, 0, 0, 0, 42, 0, 155, 2115 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 2116 354, 0, 77, 0, 0, 353, 0, 0, 0, 361, 2117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2118 0, 220, 0, 0, 0, 0, 0, 361, 0, 84, 2119 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 2120 0, 0, 0, 72, 354, 0, 0, 0, 221, 0, 2121 0, 0, 0, 0, 0, 0, 351, 0, 351, 0, 2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2123 75, 361, 0, 0, 0, 0, 0, 346, 0, 0, 2124 0, 0, 0, 353, 0, 353, 0, 0, 351, 0, 2125 0, 0, 0, 0, 0, 0, 351, 351, 351, 0, 2126 0, 0, 0, 0, 0, 0, 0, 351, 351, 354, 2127 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 2128 0, 72, 0, 353, 353, 353, 0, 0, 0, 0, 2129 0, 0, 0, 0, 353, 353, 361, 0, 0, 0, 2130 0, 0, 346, 0, 351, 0, 0, 0, 75, 0, 2131 0, 0, 0, 0, 354, 354, 354, 0, 0, 0, 2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2133 0, 353, 0, 354, 0, 0, 0, 0, 0, 124, 2134 0, 361, 361, 361, 0, 0, 0, 346, 346, 346, 2135 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 2136 361, 0, 77, 0, 0, 0, 346, 0, 354, 0, 2137 0, 0, 0, 0, 0, 0, 0, 0, 361, 1033, 2138 0, 0, 8, 9, 10, 11, 12, 0, 0, 84, 2139 0, 0, 351, 0, 0, 361, 0, 0, 0, 0, 2140 0, 0, 0, 0, 77, 0, 0, 354, 280, 281, 2141 30, 282, 0, 0, 0, 0, 0, 0, 0, 353, 2142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2143 0, 84, 0, 0, 361, 0, 0, 283, 33, 0, 2144 346, 72, 0, 284, 354, 0, 0, 285, 72, 0, 2145 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2146 0, 0, 0, 124, 0, 292, 0, 0, 75, 0, 2147 0, 361, 0, 0, 0, 75, 0, 0, 0, 0, 2148 293, 0, 377, 0, 0, 0, 354, 0, 0, 295, 2149 826, 297, 298, 299, 300, 0, 354, 0, 0, 354, 2150 0, 72, 0, 0, 222, 0, 354, 0, 0, 0, 2151 0, 354, 0, 361, 0, 0, 0, 0, 0, 0, 2152 0, 0, 0, 361, 0, 0, 361, 0, 75, 0, 2153 0, 223, 346, 361, 0, 0, 0, 0, 361, 346, 2154 0, 0, 0, 0, 0, -516, 0, 0, 1, 2, 2155 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2156 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2157 23, 24, 0, 77, 25, 26, 27, 28, 0, 0, 2158 29, 0, 0, 30, 31, 0, 0, 0, 0, 8, 2159 9, 10, 11, 12, 0, 8, 9, 10, 11, 12, 2160 84, 0, 0, 0, 0, 0, 54, 0, 32, 0, 2161 0, 33, 163, 34, 0, 35, 36, 30, 37, 38, 2162 39, 0, 0, 30, 0, 0, 0, 40, 41, 0, 2163 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 2164 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2165 36, 33, 0, 42, 39, 43, 36, 354, 0, 0, 2166 39, 40, 41, 44, 0, 0, 0, 40, 41, 0, 2167 0, 0, 0, 54, 0, 0, 0, 163, 0, 0, 2168 0, 0, 0, 270, 361, 0, 0, 42, 0, 0, 2169 346, 0, 0, 743, 0, 0, 0, 145, 0, 0, 2170 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 2171 354, 354, 163, 354, 354, 0, 0, 0, 0, 0, 2172 0, 0, 367, 0, 0, 0, 373, 0, 0, 0, 2173 0, 0, 0, 77, 0, 0, 0, 361, 361, 0, 2174 361, 361, 0, 0, 0, 0, 346, 346, 0, 0, 2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2176 84, 0, 0, 0, 0, 0, 54, 0, 354, 354, 2177 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 2178 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 2179 0, 0, 0, 0, 0, 361, 361, 0, 0, 0, 2180 0, 280, 281, 0, 282, 163, 460, 8, 9, 10, 2181 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2182 21, 22, 23, 24, 0, 0, 25, 26, 27, 373, 2183 283, 0, 354, 0, 0, 30, 284, 163, 0, 0, 2184 285, 0, 0, 286, 287, 288, 289, 40, 41, 0, 2185 290, 291, 0, 0, 0, 0, 0, 0, 292, 361, 2186 0, 460, 0, 33, 163, 0, 0, 0, 0, 0, 2187 205, 38, 0, 512, 0, 222, 0, 0, 0, 0, 2188 0, 0, 295, 379, 297, 298, 299, 300, 0, 0, 2189 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 2190 0, 0, 223, 0, 0, 0, 0, 54, 54, 0, 2191 354, 605, 354, 0, 0, 269, 629, 0, 0, 0, 2192 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 2193 54, 0, 0, 0, 0, 0, 0, 361, 0, 361, 2194 0, 0, 354, 0, 0, 0, 0, 0, 0, 54, 2195 354, 354, 354, 0, 0, 0, 0, 0, 0, 0, 2196 0, 354, 354, 0, 0, 0, 0, 0, 0, 361, 2197 0, 0, 0, 0, 0, 77, 0, 361, 361, 361, 2198 0, 0, 0, 0, 0, 0, 0, 0, 361, 361, 2199 0, 0, 163, 163, 346, 346, 0, 0, 354, 367, 2200 0, 0, 84, 54, 0, 0, 0, 0, 54, 0, 2201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2202 460, 0, 0, 460, 0, 361, 0, 0, 0, 460, 2203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2204 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 2205 0, 0, 0, 0, 0, 0, 740, 0, 0, 0, 2206 209, 0, 0, 0, 0, 0, 0, 0, 163, 0, 2207 229, 0, 233, 0, 235, 0, 0, 0, 0, 0, 2208 460, 244, 460, 0, 0, 460, 354, 163, 460, 0, 2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2210 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2211 0, 0, 209, 361, 233, 235, 244, 0, 0, 346, 2212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2213 0, 0, 0, 0, 0, 77, 0, 154, 0, 0, 2214 0, 0, 77, 0, 0, 54, 0, 0, 0, 0, 2215 0, 0, 0, 163, 0, 209, 0, 0, 0, 0, 2216 0, 0, 84, 0, 0, 367, 0, 605, 54, 84, 2217 836, 0, 0, 0, 0, 54, 0, 0, 0, 0, 2218 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 2219 0, 0, 0, 254, 0, 77, 605, 0, 0, 0, 2220 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 2221 367, 367, 367, 0, 0, 0, 209, 0, 233, 235, 2222 244, 0, 84, 0, 0, 0, 0, 0, 54, 367, 2223 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2224 17, 18, 19, 20, 21, 22, 23, 24, -294, 154, 2225 25, 26, 27, 0, 209, 0, 0, 0, 209, 30, 2226 0, 0, 0, 384, 740, 0, 0, 0, 0, 0, 2227 0, 0, 0, 0, 503, 0, 0, 0, 0, 0, 2228 0, 0, 0, 0, 0, 460, 416, 33, 0, 0, 2229 0, 0, 0, 0, 37, 38, 0, 0, -294, 0, 2230 431, 0, 0, 367, 0, 960, 0, 0, 0, 436, 2231 0, 0, 0, 0, 0, 0, 0, 0, 0, 444, 2232 0, 0, 0, 0, 209, 0, 0, 0, 0, 642, 2233 0, 337, 280, 281, 0, 282, 0, 0, 0, 109, 2234 740, 0, 0, 0, 470, 209, 0, 0, 0, 480, 2235 233, 235, 0, 0, 0, 0, 0, 0, 244, 0, 2236 0, 283, 488, 0, 0, 0, 0, 284, 498, 0, 2237 502, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2238 0, 290, 291, 0, 0, 0, 0, 0, 532, 292, 2239 0, 0, 0, 0, 0, 367, 0, 0, 0, 629, 2240 0, 209, 367, 0, 293, 0, 377, 0, 0, 378, 2241 0, 0, 0, 295, 379, 297, 298, 299, 300, 209, 2242 0, 0, 0, 0, 209, 0, 209, 0, 0, 0, 2243 0, 592, 0, 0, 0, 0, 597, 0, 0, 0, 2244 0, 0, 0, 209, 0, 0, 209, 209, 0, 0, 2245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2246 0, 0, 209, 0, 643, 0, 0, 0, 644, 645, 2247 0, 647, 0, 0, 0, 0, 209, 0, 659, 660, 2248 0, 661, 662, 209, 663, 0, 664, 0, 0, 0, 2249 0, 0, 0, 1176, 0, 460, 8, 9, 10, 11, 2250 12, 0, 0, 592, 0, 0, 0, 0, 0, 0, 2251 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 2252 0, 0, 280, 281, 30, 282, 0, 0, 0, 0, 2253 0, 0, 0, 0, 0, 0, 690, 163, 0, 0, 2254 0, 0, 0, 0, 0, 0, 0, 696, 0, 0, 2255 0, 283, 33, 367, 0, 0, 0, 284, 0, 0, 2256 0, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2257 732, 290, 291, 0, 0, 0, 735, 0, 0, 292, 2258 0, 470, 0, 0, 0, 0, 0, 0, 605, 0, 2259 0, 0, 0, 0, 293, 0, 377, 0, 0, 209, 2260 0, 0, 0, 295, 1177, 297, 298, 299, 300, 367, 2261 367, 0, 0, 0, 0, 0, 0, 0, 772, 0, 2262 0, 0, 0, 0, 0, 0, 0, 209, 513, 0, 2263 515, 518, 209, 0, 787, 0, 0, 0, 521, 522, 2264 0, 0, 0, 515, 515, 0, 0, 0, 0, 0, 2265 0, 0, 0, 0, 0, 515, 0, 0, 0, 0, 2266 0, 0, 0, 0, 0, 280, 281, 0, 282, 460, 2267 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 2268 824, 0, 0, 0, 0, 0, 0, 827, 0, 0, 2269 0, 515, 834, 0, 283, 0, 0, 0, 0, 0, 2270 284, 0, 0, 849, 285, 0, 0, 286, 287, 288, 2271 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2272 209, 0, 292, 0, 0, 0, 0, 515, 740, 0, 2273 0, 0, 0, 0, 209, 0, 0, 293, 0, 377, 2274 0, 0, 0, 0, 889, 811, 295, 379, 297, 298, 2275 299, 300, 0, 0, 503, 0, 0, 0, 0, 0, 2276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2278 834, 0, 0, 0, 0, 8, 9, 10, 11, 12, 2279 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2280 23, 24, -294, 0, 25, 26, 27, 0, 740, 0, 2281 0, 0, 0, 30, 0, 209, 0, 0, 0, 0, 2282 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 2283 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 2284 0, 33, 0, 0, 0, 967, 968, 209, 37, 38, 2285 0, 0, -294, 0, 0, 0, 0, 367, 367, 985, 2286 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 2287 0, 0, 0, 0, 0, 0, 1000, 0, 1001, 0, 2288 0, 0, 1005, 642, 0, 337, 0, 0, 0, 0, 2289 0, 0, 0, 633, 0, 0, 0, 0, 0, 0, 2290 0, 0, 0, 0, 515, 515, 515, 515, 515, 515, 2291 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 2292 515, 515, 0, 0, 0, 0, 0, 0, 0, 0, 2293 280, 281, 0, 282, 209, 0, 0, 0, 0, 0, 2294 0, 0, 0, 0, 0, 0, 0, 515, 1038, 0, 2295 0, 0, 0, 0, 0, 1039, 0, 0, 0, 283, 2296 209, 0, 0, 0, 0, 284, 0, 0, 1041, 285, 2297 1042, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2298 291, 0, 367, 0, 1054, 0, 0, 292, 209, 0, 2299 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0, 2300 0, 0, 293, 1096, 377, 0, 1097, 0, 0, 780, 2301 0, 295, 379, 297, 298, 299, 300, 0, 0, 0, 2302 209, 0, 0, 0, 597, 0, 0, 0, 0, 0, 2303 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 2304 460, 0, 460, 0, 0, 0, 515, 0, 8, 9, 2305 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2306 20, 21, 22, 23, 24, -294, 0, 0, 515, 0, 2307 0, 0, 0, 0, 0, 0, 30, 460, 0, 460, 2308 0, 515, 8, 9, 10, 11, 12, 13, 14, 15, 2309 16, 17, 18, 19, 20, 21, 22, 23, 24, -294, 2310 0, 25, 26, 27, 33, 0, 0, 163, 0, 0, 2311 30, 0, 209, 1160, 0, -294, 0, 0, 0, 340, 2312 362, 0, 0, 0, 0, 0, 0, 515, 0, 0, 2313 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2314 0, 0, 0, 36, 0, 335, 336, 39, 0, -294, 2315 0, 0, 0, 412, 40, 41, 0, 0, 0, 515, 2316 412, 0, 0, 0, 0, 0, 0, 0, 0, 532, 2317 0, 0, 0, 0, 515, 0, 1225, 0, 0, 0, 2318 642, 0, 337, 0, 0, 0, 0, 0, 0, 0, 2319 633, 280, 281, 0, 282, 0, 0, 0, 0, 209, 2320 0, 0, 0, 0, 0, 1238, 0, 0, 0, 0, 2321 1240, 0, 0, 0, 0, 0, 0, 0, 1244, 0, 2322 283, 0, 0, 0, 0, 0, 648, 0, 137, 138, 2323 285, 0, 412, 286, 649, 288, 289, 40, 41, 0, 2324 290, 291, 0, 0, 0, 0, 0, 0, 292, 1270, 2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2326 0, 1278, 0, 293, 1279, 650, 1280, 651, 378, 0, 2327 0, 0, 295, 379, 297, 298, 299, 300, 0, 0, 2328 1289, 1290, 0, 0, 0, 0, 0, 0, 412, 0, 2329 0, 0, 0, 0, 0, 209, 412, 588, 0, 412, 2330 591, 0, 1303, 0, 0, 0, 0, 0, 0, 362, 2331 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, 2332 0, 0, 0, 0, 0, 515, 0, 0, 0, 1326, 2333 320, 0, 639, 0, 0, 340, 0, 0, 0, 0, 2334 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2335 0, 0, 380, 380, 0, 0, 515, 0, 0, 0, 2336 0, 0, 412, 0, 0, 0, 412, 0, 515, 2, 2337 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2338 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2339 23, 24, 0, 0, 25, 26, 27, 362, 0, 0, 2340 0, 0, 0, 30, 0, 0, 0, 0, 0, 515, 2341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2342 412, 0, 0, 320, 0, 0, 1396, 0, 1397, 0, 2343 0, 33, 0, 34, 0, 35, 0, 0, 37, 38, 2344 0, 1406, 0, 1407, 0, 0, 0, 0, 484, 0, 2345 0, 412, 0, 0, 362, 0, 0, 0, 0, 0, 2346 0, 1414, 0, 0, 0, 0, 0, 0, 0, 0, 2347 0, 0, 0, 0, -399, 686, 0, 1432, 1434, 0, 2348 0, 515, 0, 633, 0, 0, 0, 0, 0, 1440, 2349 0, 0, 1244, 0, 412, 0, 0, 340, 362, 0, 2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2351 0, 0, 0, 0, 1463, 0, 0, 0, 0, 0, 2352 0, 0, 0, 1470, 0, 515, 1472, 0, 1474, 1476, 2353 1478, 0, 0, 0, 0, 0, 0, 0, 0, 515, 2354 515, 0, 0, 412, 412, 0, 0, 0, 0, 0, 2355 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 2356 0, 0, 829, 362, 380, 362, 0, 0, 0, 0, 2357 1509, 0, 1511, 0, 621, 1244, 621, 621, 0, 0, 2358 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, 2359 1523, 0, 0, 868, 362, 0, 0, 0, 0, 362, 2360 0, 0, 0, 0, 0, 0, 0, 0, 362, 362, 2361 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2362 0, 0, 0, 0, 0, 0, 0, 362, 0, 0, 2363 0, 0, 412, 911, 0, 0, 412, 914, 0, 0, 2364 0, 0, 0, 916, 0, 0, 0, 0, 0, 0, 2365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2366 0, 340, 362, 412, 0, 412, 734, 0, 0, 412, 2367 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2368 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2369 25, 26, 27, 0, 0, 0, 0, 0, 0, 30, 2370 0, 362, 621, 0, 0, 768, 0, 0, 0, 0, 2371 0, 0, 0, 0, 0, 0, 0, 0, 781, 0, 2372 0, 0, 0, 0, 0, 768, 0, 33, 768, 0, 2373 0, 0, 0, 0, 205, 38, 0, 340, 362, 791, 2374 792, 0, 412, 412, 0, 0, 0, 0, 0, 515, 2375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2376 0, 813, 0, 0, 0, 0, 515, 0, 0, 0, 2377 0, 822, 0, 0, 0, 0, 0, 0, 344, 628, 2378 0, 0, 0, 781, 412, 0, 0, 0, 0, 0, 2379 0, 0, 0, 362, 0, 0, 0, 0, 0, 829, 2380 362, 0, 0, 0, 621, 0, 621, 0, 0, 0, 2381 0, 0, 0, 0, 0, 0, 621, 0, 0, 0, 2382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2383 0, 0, 0, 888, 0, 0, 0, 0, 0, 515, 2384 515, 0, 380, 0, 0, 0, 0, 0, 0, 1, 2385 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2386 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2387 22, 23, 24, 0, 0, 25, 26, 27, 28, 0, 2388 0, 29, 344, 0, 30, 31, 0, 0, 0, 829, 2389 0, 0, 0, 0, 0, 0, 0, 412, 280, 281, 2390 0, 282, 0, 412, 0, 0, 0, 0, 0, 32, 2391 0, 412, 33, 0, 34, 0, 35, 36, 0, 37, 2392 38, 39, 0, 0, 621, 621, 0, 283, 40, 41, 2393 0, 0, 0, 284, 0, 0, 0, 285, 0, 0, 2394 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2395 0, 362, 0, 0, 42, 292, 43, 412, 781, 0, 2396 990, 0, 0, 0, 44, 0, 995, 0, 0, 0, 2397 293, 0, 377, 1004, 0, 992, 412, 1157, 0, 295, 2398 379, 297, 298, 299, 300, 0, 362, 0, 0, 0, 2399 0, 0, 412, 1169, 0, 621, 621, 1174, 0, 0, 2400 0, 0, 0, 0, 0, 0, 0, 362, 362, 0, 2401 0, 0, 0, 0, 0, 0, 0, 1021, 1022, 0, 2402 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2403 0, 0, 0, 0, 0, 344, 0, 0, 0, 0, 2404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2406 0, 0, 0, 0, 0, 0, 0, 0, 829, 412, 2407 1237, 0, 0, 0, 0, 1052, 0, 0, 0, 380, 2408 0, 621, 0, 0, 0, 0, 1, 2, 204, 4, 2409 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2410 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2411 0, 0, 25, 26, 27, 28, 0, 0, 29, 280, 2412 281, 30, 1061, 1062, 0, 1063, 362, 0, 1064, 1065, 2413 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 1072, 2414 0, 0, 0, 1073, 1074, 0, 32, 0, 283, 33, 2415 0, 34, 0, 35, 648, 320, 37, 38, 285, 0, 2416 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2417 0, 1138, 1139, 0, 0, 0, 292, 0, 380, 0, 2418 0, 0, 280, 281, 995, 282, 340, 1148, 0, 768, 2419 0, 293, 0, 1075, 0, 0, 169, 0, 0, 0, 2420 295, 296, 297, 298, 299, 300, 362, 0, 0, 1164, 2421 1076, 283, 0, 0, -129, 0, 0, 284, 0, 0, 2422 1179, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2423 0, 290, 291, 0, 0, 0, 0, 0, 0, 292, 2424 0, 0, 380, 0, 1197, 0, 0, 0, 0, 0, 2425 0, 0, 0, 0, 293, 362, 362, 0, 0, 995, 2426 995, 0, 0, 295, 379, 297, 298, 299, 300, 0, 2427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2428 1229, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2429 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2430 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2431 23, 24, 0, 0, 25, 26, 27, 28, 0, 0, 2432 29, 280, 281, 30, 282, 0, 0, 995, 0, 0, 2433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2434 280, 281, 0, 282, 0, 0, 888, 0, 0, 0, 2435 283, 33, 0, 34, 0, 35, 284, 0, 37, 38, 2436 285, 1281, 1282, 286, 287, 288, 289, 40, 41, 283, 2437 290, 291, 0, 0, 0, 284, 0, 0, 292, 285, 2438 362, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2439 291, 0, 0, 293, 0, 1075, 0, 292, 0, 0, 2440 0, 0, 295, 296, 297, 298, 299, 300, 0, 0, 2441 0, 0, 293, 0, 377, 0, -129, 0, 0, 0, 2442 0, 295, 379, 297, 298, 299, 300, 0, 0, 0, 2443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2444 0, 0, 995, 0, 0, 0, 1, 2, 204, 4, 2445 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2446 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2447 412, 0, 25, 26, 27, 28, 0, 0, 29, 280, 2448 281, 30, 282, 0, 0, 0, 0, 0, 0, 0, 2449 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, 2450 0, 0, 0, 1389, 0, 768, 0, 0, 283, 33, 2451 0, 34, 0, 35, 284, 0, 37, 38, 285, 0, 2452 412, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2453 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2455 0, 293, 0, 43, 0, 0, 0, 0, 0, 0, 2456 295, 296, 297, 298, 299, 300, 0, 0, 2, 204, 2457 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2458 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2459 24, 1449, 0, 25, 26, 27, 0, 0, 0, 0, 2460 280, 281, 30, 282, 0, 8, 9, 10, 11, 12, 2461 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2462 23, 24, 0, 0, 25, 26, 27, 0, 0, 283, 2463 33, 0, 34, 30, 35, 284, 0, 37, 38, 285, 2464 0, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2465 291, 0, 0, 0, 0, 0, 0, 292, 0, 0, 2466 0, 33, 0, 0, 0, 0, 108, 0, 37, 38, 2467 0, 0, 293, 1515, 342, 0, 0, 40, 41, 780, 2468 0, 295, 343, 297, 298, 299, 300, 2, 204, 4, 2469 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2470 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2471 0, 0, 25, 26, 27, 0, 0, 0, 0, 280, 2472 281, 30, 282, 0, 0, 320, 0, 8, 9, 10, 2473 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2474 21, 22, 23, 24, -295, 0, 0, 0, 283, 33, 2475 0, 34, 0, 35, 284, 30, 37, 38, 285, 0, 2476 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2477 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2478 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2479 0, 293, 0, 930, -295, 0, 0, 0, 780, 0, 2480 295, 343, 297, 298, 299, 300, 2, 204, 4, 5, 2481 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2482 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2483 0, 25, 26, 27, 0, 0, 0, 0, 280, 281, 2484 30, 282, 0, 8, 9, 10, 11, 12, 13, 14, 2485 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2486 0, 0, 25, 26, 27, 0, 0, 283, 33, 0, 2487 34, 30, 35, 284, 0, 37, 38, 285, 0, 0, 2488 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2489 0, 0, 0, 0, 0, 292, 0, 0, 0, 33, 2490 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2491 293, 0, 930, 0, 0, 0, 0, 780, 0, 295, 2492 599, 297, 298, 299, 300, 2, 204, 4, 5, 6, 2493 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2494 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2495 25, 26, 27, 0, 0, 0, 0, 280, 281, 30, 2496 282, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2497 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2498 0, 25, 26, 27, 0, 0, 283, 33, 0, 34, 2499 30, 35, 284, 0, 37, 38, 285, 0, 0, 286, 2500 287, 288, 289, 40, 41, 0, 290, 291, 0, 0, 2501 0, 0, 0, 0, 292, 0, 0, 0, 33, 0, 2502 0, 0, 0, 0, 0, 205, 38, 0, 0, 293, 2503 0, 342, 0, 0, 0, 0, 0, 0, 295, 343, 2504 297, 298, 299, 300, 2, 204, 4, 5, 6, 7, 2023 2505 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2024 18, 19, 20, 21, 22, 23, 24, 25, 506, 0, 2025 26, 27, 28, 0, 64, 323, 0, 0, 0, 31, 2026 0, 0, 0, 0, 352, 0, 0, 1045, 1046, 1047, 2027 1048, 0, 1050, 0, 0, 0, 636, 0, 8, 9, 2028 10, 11, 12, 0, 0, 0, 76, 34, 1094, 0, 2029 0, 0, 37, 0, 38, 39, 40, 0, 0, 0, 2030 0, 0, 1100, 41, 42, 0, 0, 31, 0, 352, 2031 352, 352, 1116, 0, 0, 0, 0, 0, 76, 0, 2032 430, 116, 212, 0, 0, 0, 0, 0, 352, 43, 2033 0, 156, 125, 125, 0, 34, 0, 0, 349, 45, 2034 37, 1115, 0, 0, 40, 0, 352, 1218, 0, 0, 2035 0, 41, 42, 222, 0, 0, 0, 73, 0, 0, 2036 0, 0, 125, 352, 0, 125, 125, 0, 125, 0, 2037 125, 125, 0, 603, 0, 125, 125, 43, 0, 0, 2038 0, 1143, 0, 0, 0, 0, 428, 146, 1151, 0, 2039 0, 724, 724, 1155, 349, 349, 0, 0, 1159, 73, 2040 1160, 0, 352, 0, 1162, 1163, 1164, 0, 0, 1167, 2041 0, 0, 0, 0, 1203, 0, 0, 0, 1179, 0, 2042 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2043 0, 0, 0, 0, 0, 0, 1194, 1195, 0, 352, 2044 0, 354, 0, 0, 0, 78, 0, 0, 0, 724, 2045 724, 31, 0, 0, 125, 636, 0, 0, 0, 125, 2046 125, 0, 0, 1225, 0, 125, 1227, 0, 0, 0, 2047 0, 0, 175, 0, 0, 0, 0, 78, 0, 34, 2048 0, 352, 0, 0, 37, 0, 0, 0, 40, 0, 2049 0, 352, 0, 0, 352, 41, 42, 0, 0, 221, 2050 0, 352, 0, 0, 1242, 0, 352, 0, 0, 0, 2051 1246, 1247, 223, 738, 212, 0, 0, 0, 0, 0, 2052 0, 744, 1258, 0, 0, 0, 0, 1262, 0, 0, 2053 1266, 745, 1267, 0, 0, 1269, 76, 0, 0, 0, 2054 0, 76, 412, 0, 0, 0, 0, 0, 1277, 420, 2055 0, 0, 0, 0, 0, 0, 1299, 0, 0, 0, 2056 0, 1284, 85, 1286, 1287, 1288, 1289, 0, 73, 0, 2057 0, 0, 0, 258, 0, 0, 0, 0, 64, 1296, 2058 0, 1297, 0, 0, 0, 171, 0, 1386, 0, 0, 2059 0, 724, 0, 738, 85, 55, 55, 116, 0, 0, 2060 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2061 0, 0, 0, 0, 1325, 1326, 0, 0, 0, 0, 2062 0, 412, 0, 724, 0, 0, 0, 55, 0, 224, 2063 0, 724, 724, 724, 0, 0, 222, 0, 0, 0, 2064 0, 0, 349, 349, 0, 0, 0, 0, 175, 0, 2065 0, 0, 352, 0, 0, 0, 1203, 0, 0, 55, 2066 0, 0, 55, 0, 0, 1361, 1362, 0, 0, 0, 2067 0, 0, 0, 0, 0, 1372, 0, 584, 0, 724, 2068 0, 0, 0, 0, 0, 588, 0, 0, 591, 0, 2069 116, 0, 0, 212, 0, 78, 0, 0, 0, 0, 2070 78, 0, 0, 76, 0, 352, 352, 0, 352, 352, 2071 0, 0, 0, 0, 0, 0, 0, 362, 354, 0, 2072 0, 0, 0, 76, 0, 0, 0, 1405, 73, 0, 2073 0, 76, 0, 0, 0, 0, 0, 0, 0, 1409, 2074 0, 1410, 1411, 1412, 0, 0, 1503, 0, 1507, 0, 2075 347, 412, 0, 1416, 0, 420, 0, 354, 0, 0, 2076 0, 0, 1427, 352, 352, 0, 0, 349, 0, 0, 2077 0, 0, 0, 0, 0, 354, 0, 76, 1440, 0, 2078 0, 0, 0, 1536, 0, 1538, 0, 0, 0, 212, 2079 0, 0, 0, 116, 0, 223, 0, 0, 0, 0, 2506 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2507 26, 27, 0, 0, 0, 0, 280, 281, 30, 282, 2508 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2509 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2510 0, 0, 0, 0, 0, 283, 33, 0, 34, 30, 2511 35, 284, 0, 37, 38, 285, 0, 0, 286, 287, 2512 288, 289, 40, 41, 0, 290, 291, 0, 0, 0, 2513 0, 0, 0, 292, 0, 0, 0, 33, 0, 0, 2514 0, 0, 0, 0, 0, 0, 0, 0, 293, 0, 2515 930, 0, 0, 0, 0, 0, 0, 295, 343, 297, 2516 298, 299, 300, 2, 204, 4, 5, 6, 7, 8, 2517 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2518 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2519 27, 0, 0, 0, 0, 280, 281, 30, 282, 0, 2080 2520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2081 0, 0, 85, 0, 0, 55, 1203, 85, 0, 354, 2082 0, 0, 0, 1203, 0, 0, 0, 352, 1567, 0, 2083 1568, 0, 0, 0, 1489, 1490, 0, 0, 0, 0, 2084 412, 0, 0, 1575, 1576, 55, 0, 1495, 0, 125, 2085 0, 0, 0, 0, 1495, 0, 0, 0, 0, 0, 2086 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 2087 221, 0, 0, 0, 0, 0, 1203, 355, 0, 0, 2088 0, 0, 78, 1555, 354, 0, 0, 1529, 0, 0, 2089 78, 1535, 73, 0, 0, 0, 0, 0, 0, 0, 2090 0, 0, 0, 0, 0, 352, 0, 352, 0, 0, 2091 0, 0, 224, 0, 0, 0, 355, 0, 0, 0, 2092 1557, 0, 1558, 0, 0, 0, 0, 0, 0, 354, 2093 354, 354, 584, 584, 355, 0, 78, 352, 0, 0, 2094 0, 0, 0, 0, 0, 352, 352, 352, 354, 0, 2095 1573, 1574, 0, 0, 0, 0, 352, 352, 1577, 1578, 2096 0, 0, 0, 0, 0, 0, 354, 0, 0, 0, 2097 73, 0, 0, 125, 0, 0, 0, 76, 355, 85, 2098 0, 0, 0, 354, 0, 0, 0, 0, 0, 0, 2099 0, 0, 0, 352, 362, 0, 0, 0, 0, 85, 2100 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 2102 0, 911, 354, 0, 0, 914, 0, 347, 0, 0, 2103 0, 0, 0, 362, 0, 0, 0, 0, 0, 0, 2104 0, 0, 0, 355, 0, 0, 0, 0, 0, 0, 2105 0, 362, 0, 85, 0, 0, 0, 0, 412, 354, 2521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2522 0, 0, 0, 0, 283, 33, 0, 34, 0, 35, 2523 284, 0, 205, 38, 285, 0, 0, 286, 287, 288, 2524 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2525 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 2526 0, 0, 0, 0, 0, 0, 0, 293, 0, 1019, 2527 0, 0, 0, 0, 0, 0, 295, 1020, 297, 298, 2528 299, 300, 2, 204, 4, 5, 6, 7, 8, 9, 2529 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2530 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2531 0, 0, 0, 0, 280, 281, 30, 282, 0, 0, 2532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2534 0, 0, 0, 283, 33, 0, 34, 0, 35, 284, 2535 0, 205, 38, 285, 0, 0, 286, 287, 288, 289, 2536 40, 41, 0, 290, 291, 0, 0, 0, 0, 0, 2537 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 2538 0, 0, 0, 0, 0, 0, 293, 0, 377, 0, 2539 0, 0, 0, 0, 0, 295, 379, 297, 298, 299, 2540 300, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2541 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2542 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2543 28, 0, 0, 29, 0, 0, 30, 31, 0, 0, 2544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546 0, 32, 0, 0, 33, 0, 34, 0, 35, 36, 2547 0, 37, 38, 39, 0, 0, 0, 0, 0, 0, 2548 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, 2549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550 0, 0, 0, 0, 0, 0, 42, 0, 43, 0, 2551 0, 0, -520, 0, 0, 0, 44, 203, 2, 204, 2552 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2553 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2554 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2555 0, 0, 30, 8, 9, 10, 11, 12, 13, 14, 2556 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2557 0, 0, 25, 26, 27, 491, 492, 493, 0, 0, 2558 33, 30, 34, 0, 35, 36, 0, 205, 38, 39, 2559 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2560 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2561 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2562 0, 0, 42, 0, 206, 0, 0, 0, 0, 0, 2563 0, 0, 207, 1, 2, 204, 4, 5, 6, 7, 2564 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2565 18, 19, 20, 21, 22, 23, 24, -294, 0, 25, 2566 26, 27, 28, 0, 0, 29, 0, 0, 30, 0, 2567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2570 35, 0, 0, 37, 38, 0, 0, -294, 0, 1, 2571 2, 204, 4, 5, 6, 7, 8, 9, 10, 11, 2572 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2573 22, 23, 24, 0, 0, 25, 26, 27, 28, 0, 2574 43, 29, 0, 0, 30, 0, 0, 0, 109, 0, 2575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2577 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2578 38, 0, 203, 2, 204, 4, 5, 6, 7, 8, 2579 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2580 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2581 27, 0, 0, 0, 0, 0, 43, 30, 0, 0, 2582 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2584 0, 0, 0, 0, 0, 33, 0, 34, 0, 35, 2585 0, 0, 205, 38, 2, 204, 4, 5, 6, 7, 2586 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2587 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2588 26, 27, 0, 0, 0, 0, 0, 0, 30, 206, 2589 0, 0, 0, 0, 0, 0, 0, 269, 0, 0, 2590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2591 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2592 35, 36, 0, 205, 38, 39, 0, 0, 0, 0, 2593 0, 0, 40, 41, 0, 0, 8, 9, 10, 11, 2594 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2595 22, 23, 24, 0, 0, 25, 26, 27, 42, 0, 2596 206, 0, 0, 0, 30, 0, 0, 0, 207, 2, 2597 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2598 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2599 23, 24, 33, 0, 25, 26, 27, 36, 0, 37, 2600 38, 39, 0, 30, 0, 0, 0, 0, 40, 41, 2601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2603 0, 33, 0, 34, 42, 35, 43, 0, 37, 38, 2604 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 2605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2606 1368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2607 0, 0, 0, 0, 0, 686, 0, 0, 0, 0, 2608 0, 0, 0, 633, 2, 204, 4, 5, 6, 7, 2609 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2610 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2611 26, 27, 0, 0, 0, 0, 0, 0, 30, 0, 2106 2612 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2107 2613 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2108 25, 352, 0, 0, 0, 0, 55, 0, 355, 355, 2109 355, 0, 31, 0, 0, 362, 0, 0, 0, 0, 2110 0, 354, 0, 0, 0, 0, 0, 355, 0, 0, 2111 0, 354, 0, 0, 354, 0, 0, 0, 0, 222, 2112 34, 354, 0, 0, 0, 355, 354, 0, 347, 0, 2113 73, 0, 0, 0, 0, 0, 78, 73, 0, 0, 2114 0, 0, 355, 0, 0, 0, 0, 0, 0, 0, 2614 0, 0, 25, 26, 27, 0, 33, 0, 34, 0, 2615 35, 30, 0, 37, 38, 0, 0, 0, 0, 0, 2115 2616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2116 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2117 0, 0, 0, 584, 0, 0, 0, 0, 78, 0, 2118 0, 355, 0, 0, 0, 123, 126, 127, 76, 0, 2119 73, 0, 0, 347, 0, 0, 0, 0, 0, 0, 2120 0, 0, 0, 0, 0, 362, 362, 362, 0, 0, 2121 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, 2122 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 2123 0, 0, 0, 0, 0, 0, 0, 0, 347, 347, 2124 347, 0, 362, 0, 0, 0, 0, 0, 0, 0, 2125 0, 0, 0, 85, 0, 0, 253, 347, 254, 362, 2126 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2127 355, 0, 354, 355, 0, 0, 0, 0, 223, 0, 2128 355, 0, 0, 0, 0, 355, 412, 0, 0, 0, 2129 0, 0, 0, 0, 0, 85, 0, 0, 362, 2, 2130 205, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2617 0, 0, 0, 0, 0, 1370, 0, 0, 0, 33, 2618 0, 0, 0, 0, 36, 0, 335, 336, 39, 0, 2619 686, 0, 0, 0, 0, 40, 41, 0, 633, 2, 2620 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2131 2621 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2132 23, 24, 25, 0, 0, 354, 354, 0, 354, 354, 2133 0, 347, 0, 0, 31, 362, 0, 0, 0, 395, 2134 0, 0, 0, 0, 0, 0, 0, 78, 76, 414, 2135 415, 0, 0, 0, 419, 0, 421, 422, 0, 0, 2136 0, 0, 34, 0, 35, 1157, 36, 37, 0, 173, 2137 174, 40, 0, 0, 0, 0, 0, 362, 41, 42, 2138 0, 1169, 0, 354, 354, 0, 0, 362, 0, 0, 2139 362, 0, 0, 0, 0, 224, 0, 362, 0, 0, 2140 0, 0, 362, 0, 8, 9, 10, 11, 12, 13, 2141 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2142 24, 25, -294, 347, 26, 27, 28, 0, 0, 0, 2143 347, 355, 0, 31, 0, 0, 0, 0, 0, 0, 2144 0, 0, 0, 0, 0, 0, 0, 354, 0, 0, 2145 0, 0, 0, 0, 0, 0, 0, 0, 1237, 0, 2146 0, 34, 0, 0, 85, 0, 37, 0, 336, 337, 2147 40, 0, -294, 0, 0, 0, 0, 41, 42, 0, 2148 0, 0, 0, 0, 355, 355, 0, 355, 355, 0, 2149 222, 0, 0, 0, 0, 0, 0, 55, 0, 0, 2150 0, 0, 0, 643, 0, 338, 0, 78, 0, 0, 2151 0, 0, 76, 634, 0, 164, 0, 0, 0, 0, 2152 0, 0, 0, 0, 0, 354, 0, 354, 0, 0, 2153 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 2154 0, 0, 355, 355, 0, 0, 0, 0, 362, 0, 2155 281, 282, 0, 283, 0, 0, 0, 354, 0, 0, 2156 0, 0, 0, 0, 55, 354, 354, 354, 0, 0, 2157 0, 0, 0, 0, 0, 0, 354, 354, 0, 284, 2158 164, 347, 0, 0, 0, 285, 271, 0, 0, 286, 2159 76, 0, 287, 288, 289, 290, 41, 42, 0, 291, 2160 292, 362, 362, 0, 362, 362, 355, 293, 0, 0, 2161 0, 0, 0, 354, 0, 164, 0, 0, 0, 0, 2162 0, 0, 513, 0, 85, 368, 0, 0, 0, 374, 2163 0, 296, 380, 298, 299, 300, 301, 347, 347, 0, 2164 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 2165 0, 0, 0, 0, 0, 0, 0, 55, 0, 362, 2166 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2167 0, 78, 0, 0, 0, 0, 0, 0, 164, 0, 2168 0, 0, 0, 0, 355, 0, 355, 0, 0, 0, 2169 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170 0, 354, 0, 0, 0, 0, 0, 0, 164, 461, 2171 0, 0, 0, 0, 0, 0, 355, 0, 0, 0, 2172 0, 0, 0, 362, 355, 355, 355, 0, 0, 0, 2173 0, 0, 374, 0, 0, 355, 355, 0, 0, 0, 2174 164, 821, 822, 0, 0, 0, 0, 0, 0, 78, 2175 76, 0, 0, 0, 0, 0, 0, 76, 0, 0, 2176 0, 0, 0, 0, 461, 0, 224, 164, 0, 0, 2177 0, 856, 355, 0, 859, 860, 0, 863, 0, 865, 2178 866, 0, 0, 0, 867, 868, 0, 0, 85, 0, 2179 0, 0, 0, 0, 0, 0, 0, 0, 55, 55, 2180 0, 362, 0, 362, 0, 0, 0, 0, 0, 0, 2181 76, 0, 0, 0, 606, 0, 0, 0, 0, 630, 2182 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 2183 0, 0, 0, 362, 0, 0, 210, 0, 0, 0, 2184 55, 362, 362, 362, 0, 0, 230, 0, 234, 0, 2185 236, 0, 362, 362, 0, 0, 0, 245, 0, 0, 2186 355, 0, 0, 0, 0, 0, 85, 0, 943, 944, 2187 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 2188 0, 0, 0, 0, 0, 347, 347, 0, 210, 362, 2189 234, 236, 245, 0, 55, 164, 164, 0, 0, 55, 2190 0, 0, 368, 0, 0, 0, 0, 0, 0, 78, 2191 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 2192 0, 0, 0, 461, 0, 0, 461, 0, 0, 0, 2193 0, 210, 461, 55, 474, 2, 205, 4, 5, 6, 2194 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2195 17, 18, 19, 20, 21, 22, 23, 24, 25, 741, 2196 0, 26, 27, 28, 0, 0, 0, 0, 0, 78, 2197 31, 164, 0, 0, 0, 0, 0, 362, 0, 0, 2198 0, 0, 155, 461, 0, 461, 0, 0, 461, 0, 2199 164, 461, 210, 0, 234, 236, 245, 0, 34, 0, 2200 35, 0, 36, 368, 0, 38, 39, 0, 0, 0, 2201 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2202 0, 0, 0, 0, 0, 0, 85, 0, 250, 0, 2203 210, 0, 0, 85, 210, 0, 55, 0, 255, 0, 2204 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 2205 504, 0, 0, 0, 0, 0, 164, 0, 0, 55, 2206 0, 0, 0, 0, 0, 0, 55, 0, 368, 0, 2207 606, 0, 0, 837, 0, 0, 0, 0, 0, 0, 2208 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 2209 0, 0, 0, 0, 155, 0, 0, 0, 0, 606, 2210 210, 0, 0, 0, 606, 0, 0, 0, 385, 0, 2211 0, 0, 0, 368, 368, 368, 0, 0, 0, 55, 2212 0, 210, 0, 0, 0, 0, 234, 236, 0, 0, 2213 0, 417, 368, 0, 245, 0, 0, 0, 0, 0, 2214 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 2215 0, 0, 1034, 0, 437, 8, 9, 10, 11, 12, 2216 0, 0, 0, 0, 445, 0, 0, 741, 0, 0, 2217 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 2218 0, 0, 281, 282, 31, 283, 0, 0, 461, 471, 2219 0, 0, 0, 0, 481, 210, 0, 0, 0, 0, 2220 210, 0, 210, 0, 0, 0, 368, 489, 961, 0, 2221 0, 284, 34, 499, 0, 503, 0, 285, 0, 210, 2222 0, 286, 210, 210, 287, 288, 289, 290, 41, 42, 2223 0, 291, 292, 533, 0, 0, 0, 0, 210, 293, 2224 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 2225 0, 0, 210, 0, 294, 0, 378, 0, 1233, 210, 2226 0, 0, 0, 296, 827, 298, 299, 300, 301, 0, 2227 0, 0, 0, 0, 0, 0, 593, 0, 0, 0, 2228 0, 598, 0, 0, 0, 0, 0, 0, 0, 0, 2229 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 2230 0, 0, 630, 0, 0, 368, 0, 0, 0, 644, 2231 0, 0, 0, 645, 646, 0, 648, 0, 0, 0, 2232 0, 0, 0, 660, 661, 0, 662, 663, 0, 664, 2233 0, 665, 0, 0, 0, 0, 0, 1177, 0, 0, 2234 8, 9, 10, 11, 12, 0, 0, 0, 593, 0, 2235 0, 0, 0, 0, 0, 0, 680, 0, 0, 0, 2236 0, 0, 0, 0, 0, 0, 0, 281, 282, 31, 2237 283, 0, 0, 0, 0, 210, 0, 0, 0, 0, 2238 0, 691, 1321, 0, 0, 0, 0, 0, 0, 0, 2239 0, 0, 697, 0, 0, 0, 284, 34, 461, 0, 2240 0, 0, 285, 210, 0, 0, 286, 0, 210, 287, 2241 288, 289, 290, 41, 42, 733, 291, 292, 0, 0, 2242 0, 736, 0, 0, 293, 0, 471, 0, 0, 0, 2243 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 2244 164, 378, 0, 0, 0, 0, 0, 0, 296, 1178, 2245 298, 299, 300, 301, 0, 0, 368, 0, 0, 0, 2246 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 2247 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 2248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2249 0, 606, 0, 0, 0, 0, 210, 0, 0, 0, 2250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2251 210, 0, 368, 368, 0, 0, 815, 0, 0, 0, 2252 0, 0, 0, 0, 0, 825, 0, 0, 0, 0, 2253 504, 0, 828, 0, 0, 281, 282, 835, 283, 0, 2254 0, 0, 0, 0, 0, 0, 0, 0, 850, 0, 2255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2256 0, 0, 0, 0, 284, 0, 0, 0, 0, 0, 2257 285, 0, 461, 0, 286, 0, 0, 287, 288, 289, 2258 290, 41, 42, 0, 291, 292, 0, 0, 0, 890, 2259 0, 210, 293, 0, 0, 0, 0, 0, 0, 0, 2260 0, 0, 0, 0, 210, 0, 0, 294, 0, 378, 2261 0, 0, 379, 0, 0, 0, 296, 380, 298, 299, 2262 300, 301, 0, 210, 0, 835, 0, 0, 0, 0, 2263 0, 741, 0, 0, 1, 2, 3, 4, 5, 6, 2264 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2265 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2266 0, 26, 27, 28, 29, 0, 0, 30, 0, 0, 2267 31, 32, 0, 217, 0, 0, 0, 0, 0, 0, 2268 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2269 968, 969, 0, 0, 0, 33, 0, 0, 34, 0, 2270 35, 0, 36, 37, 986, 38, 39, 40, 0, 0, 2271 210, 741, 341, 363, 41, 42, 0, 0, 0, 0, 2272 0, 1001, 0, 1002, 0, 0, 0, 1006, 0, 0, 2273 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 2274 43, 0, 44, 0, 0, 0, 413, 0, 0, 0, 2275 45, 0, 0, 413, 0, 0, 0, 0, 0, 0, 2276 368, 368, 0, 0, 210, 0, 0, 0, 0, 217, 2277 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2278 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2279 26, 27, 28, 1039, 0, 0, 210, 0, 0, 31, 2280 1040, 0, 0, 0, 0, 0, 0, 210, 0, 0, 2281 0, 0, 0, 1042, 0, 1043, 0, 0, 0, 0, 2282 0, 0, 0, 0, 0, 413, 0, 34, 0, 1055, 2283 0, 0, 109, 0, 38, 39, 1059, 0, 0, 0, 2284 0, 0, 0, 41, 42, 0, 0, 0, 1097, 0, 2285 0, 1098, 0, 0, 0, 0, 0, 0, 0, 0, 2286 0, 0, 0, 0, 0, 0, 0, 0, 0, 598, 2287 0, 44, 0, 0, 0, 0, 0, 0, 0, 110, 2288 0, 413, 0, 0, 0, 368, 0, 0, 210, 413, 2289 589, 0, 413, 592, 0, 0, 0, 0, 0, 0, 2290 0, 0, 363, 0, 0, 0, 622, 0, 0, 0, 2291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 640, 0, 0, 341, 0, 2293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2294 0, 0, 0, 461, 0, 461, 0, 0, 0, 0, 2295 281, 282, 0, 283, 0, 413, 0, 0, 1161, 413, 2296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2297 0, 0, 0, 0, 0, 210, 0, 0, 0, 284, 2298 461, 321, 461, 0, 0, 649, 0, 138, 139, 286, 2299 363, 345, 287, 650, 289, 290, 41, 42, 0, 291, 2300 292, 0, 0, 381, 381, 0, 0, 293, 0, 0, 2301 164, 0, 0, 413, 533, 0, 0, 0, 0, 0, 2302 0, 1226, 294, 0, 651, 0, 652, 379, 0, 0, 2303 0, 296, 380, 298, 299, 300, 301, 0, 0, 0, 2304 0, 0, 0, 0, 413, 0, 0, 363, 0, 0, 2305 1239, 0, 0, 0, 0, 1241, 0, 0, 0, 0, 2306 0, 0, 0, 1245, 0, 0, 0, 0, 0, 0, 2307 0, 210, 0, 0, 321, 0, 0, 0, 0, 0, 2308 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, 2309 341, 363, 0, 0, 1271, 0, 0, 0, 0, 485, 2310 0, 0, 0, 0, 0, 0, 1279, 0, 0, 1280, 2311 0, 1281, 0, 0, 0, 0, 0, 0, 0, 0, 2312 0, 0, 0, 0, 0, 1290, 1291, 0, 0, 0, 2313 0, 0, 0, 0, 0, 0, 413, 413, 0, 0, 2314 0, 0, 0, 0, 0, 0, 0, 1304, 0, 0, 2315 0, 0, 0, 0, 0, 830, 363, 0, 363, 0, 2316 0, 0, 0, 0, 0, 0, 0, 622, 0, 622, 2317 622, 0, 0, 0, 1327, 0, 622, 0, 0, 514, 2318 0, 516, 519, 0, 0, 0, 869, 363, 0, 522, 2319 523, 0, 363, 0, 516, 516, 0, 0, 0, 0, 2320 0, 363, 363, 363, 0, 0, 516, 0, 0, 0, 2321 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 2322 363, 0, 0, 0, 0, 413, 912, 0, 0, 413, 2323 915, 0, 0, 0, 0, 0, 917, 0, 0, 0, 2324 0, 0, 516, 0, 0, 0, 0, 0, 0, 0, 2325 0, 0, 0, 0, 341, 363, 413, 0, 413, 0, 2326 0, 0, 413, 0, 0, 0, 0, 0, 0, 281, 2327 282, 1397, 283, 1398, 0, 0, 0, 0, 516, 0, 2328 0, 0, 0, 0, 0, 0, 1407, 0, 1408, 0, 2329 0, 0, 0, 0, 363, 622, 0, 0, 284, 0, 2330 0, 0, 0, 0, 285, 0, 1415, 0, 286, 0, 2331 0, 287, 288, 289, 290, 41, 42, 735, 291, 292, 2332 0, 0, 1433, 1435, 0, 0, 293, 210, 0, 0, 2333 341, 363, 0, 0, 1441, 413, 413, 1245, 0, 0, 2334 0, 294, 0, 378, 0, 0, 0, 0, 0, 812, 2335 296, 380, 298, 299, 300, 301, 769, 0, 0, 1464, 2336 0, 0, 0, 0, 0, 0, 0, 0, 1471, 782, 2337 0, 1473, 0, 1475, 1477, 1479, 769, 413, 0, 769, 2338 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 2339 792, 793, 830, 363, 0, 0, 0, 622, 0, 622, 2340 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 2341 0, 0, 814, 0, 0, 1510, 0, 1512, 0, 0, 2342 1245, 0, 823, 0, 0, 0, 0, 0, 0, 345, 2343 0, 0, 0, 0, 782, 1524, 0, 0, 0, 0, 2344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2345 0, 0, 0, 0, 0, 516, 516, 516, 516, 516, 2346 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 2347 516, 516, 516, 0, 0, 0, 0, 0, 0, 0, 2348 0, 0, 830, 0, 889, 0, 0, 0, 0, 0, 2349 413, 0, 0, 381, 0, 0, 413, 0, 516, 0, 2350 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, 2351 0, 0, 0, 0, 0, 0, 0, 622, 622, 0, 2352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2353 0, 0, 0, 345, 0, 0, 0, 0, 0, 0, 2354 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 2355 413, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2356 17, 18, 19, 20, 21, 22, 23, 24, 25, 413, 2357 1158, 26, 27, 28, 0, 0, 0, 0, 0, 363, 2358 31, 453, 0, 0, 0, 413, 1170, 0, 622, 622, 2359 1175, 0, 0, 0, 0, 0, 0, 516, 0, 0, 2360 363, 363, 0, 0, 0, 0, 0, 0, 34, 782, 2361 0, 991, 0, 0, 0, 38, 39, 996, 0, 516, 2362 0, 0, 0, 0, 1005, 0, 0, 0, 0, 0, 2363 0, 0, 516, 0, 0, 0, 0, 0, 0, 0, 2364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2365 0, 0, 454, 0, 0, 0, 711, 0, 0, 0, 2366 110, 830, 413, 1238, 0, 0, 0, 0, 1022, 1023, 2367 0, 345, 0, 0, 622, 0, 0, 0, 516, 0, 2368 0, 0, 0, 0, 0, 0, 345, 0, 0, 0, 2622 23, 24, 0, 337, 25, 26, 27, 0, 0, 0, 2623 0, 109, 0, 30, 0, 0, 0, 0, 0, 0, 2369 2624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2370 2625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2371 516, 0, 0, 0, 0, 0, 0, 0, 0, 363, 2372 0, 0, 0, 0, 0, 516, 1053, 0, 0, 0, 2373 381, 0, 0, -517, 0, 0, 1, 2, 3, 4, 2626 0, 33, 0, 34, 0, 35, 0, 0, 205, 38, 2627 2, 204, 4, 5, 6, 7, 8, 9, 10, 11, 2628 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2629 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2630 0, 0, 0, 0, 30, 268, 0, 0, 0, 0, 2631 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2633 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2634 38, 2, 204, 4, 5, 6, 7, 8, 9, 10, 2635 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2636 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2637 0, 0, 0, 0, 0, 30, 686, 0, 0, 0, 2638 0, 0, 0, 0, 633, 0, 0, 0, 0, 0, 2639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2640 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2641 37, 38, 2, 204, 4, 5, 6, 7, 8, 9, 2642 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2643 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2644 0, 0, 0, 0, 0, 0, 30, 598, 0, 0, 2645 0, 0, 0, 0, 0, 633, 0, 0, 0, 0, 2646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2647 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2648 0, 205, 38, 8, 9, 10, 11, 12, 13, 14, 2649 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2650 0, 0, 25, 26, 27, 0, 0, 0, 0, 280, 2651 281, 30, 282, 0, 0, 0, 0, 0, 206, 0, 2652 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 2653 0, 0, 0, 0, 0, 0, 0, 0, 283, 33, 2654 0, 0, 0, 0, 284, 0, 37, 38, 285, 0, 2655 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2656 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2658 0, 293, 0, 524, 0, 0, 169, 0, 0, 0, 2659 295, 296, 297, 298, 299, 300, 8, 9, 10, 11, 2660 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2661 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2662 0, 0, 280, 281, 30, 282, 8, 9, 10, 11, 2663 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2664 22, 23, 24, -294, 0, 25, 26, 27, 0, 0, 2665 0, 283, 33, 0, 30, 0, 0, 284, 0, 37, 2666 38, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2667 0, 290, 291, 0, 0, 0, 0, 0, 0, 292, 2668 0, 0, 33, 0, 0, 0, 0, 36, 0, 335, 2669 336, 39, 0, -294, 293, 0, 598, -3, 40, 41, 2670 0, 0, 0, 295, 599, 297, 298, 299, 300, 8, 2671 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2672 19, 20, 21, 22, 23, 24, 337, 0, 25, 26, 2673 27, 0, 0, 0, 109, 280, 281, 30, 282, 8, 2674 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2675 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2676 27, 0, 0, 0, 283, 33, 0, 30, 0, 0, 2677 648, 0, 37, 38, 285, 0, 0, 286, 287, 288, 2678 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2679 0, 0, 292, 0, 0, 33, 0, 0, 0, 0, 2680 108, 0, 37, 38, 0, 0, 0, 293, -35, 765, 2681 0, 40, 41, 0, 0, 0, 295, 296, 297, 298, 2682 299, 300, 8, 9, 10, 11, 12, 13, 14, 15, 2683 16, 17, 18, 19, 20, 21, 22, 23, 24, 43, 2684 0, 25, 26, 27, 0, 0, 0, 109, 280, 281, 2685 30, 282, 8, 9, 10, 11, 12, 13, 14, 15, 2686 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2687 0, 25, 26, 27, 0, 0, 0, 283, 33, 0, 2688 30, 452, 0, 284, 0, 37, 38, 285, 0, 0, 2689 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2690 0, 0, 0, 0, 0, 292, 0, 0, 33, 0, 2691 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 2692 293, 0, 294, 0, 0, 0, 0, 0, 0, 295, 2693 296, 297, 298, 299, 300, 8, 9, 10, 11, 12, 2694 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2695 23, 24, 453, 0, 25, 26, 27, 0, 0, 0, 2696 109, 280, 281, 30, 282, 0, 0, 0, 0, 0, 2697 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2698 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2699 283, 33, 25, 26, 27, 0, 284, 0, 37, 38, 2700 285, 30, 0, 286, 287, 288, 289, 40, 41, 0, 2701 290, 291, 0, 0, 0, 0, 0, 0, 292, 0, 2702 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2703 0, 0, 0, 293, 0, 155, 37, 38, 0, 0, 2704 0, 0, 295, 296, 297, 298, 299, 300, 8, 9, 2705 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2706 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2707 0, 642, 0, 337, 280, 281, 30, 282, 0, 0, 2708 0, 109, 0, 0, 0, 0, 8, 9, 10, 11, 2709 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2710 22, 23, 24, 283, 33, 25, 26, 27, 0, 284, 2711 0, 37, 38, 285, 30, 0, 286, 287, 288, 289, 2712 40, 41, 0, 290, 291, 0, 0, 0, 0, 0, 2713 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 2714 0, 0, 33, 0, 0, 0, 293, 0, 598, 37, 2715 38, 0, 0, 0, 0, 295, 599, 297, 298, 299, 2716 300, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2717 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2718 25, 26, 27, 0, 642, 0, 337, 280, 281, 30, 2719 282, 0, 0, 0, 633, 0, 0, 0, 0, 8, 2720 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2721 19, 20, 21, 22, 23, 24, 283, 33, 25, 26, 2722 27, 0, 284, 0, 37, 38, 285, 30, 452, 286, 2723 287, 288, 289, 40, 41, 0, 290, 291, 0, 0, 2724 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, 2725 0, 0, 0, 0, 0, 33, 0, 0, 0, 293, 2726 0, 377, 37, 38, 0, 0, 0, 0, 295, 379, 2727 297, 298, 299, 300, 473, 2, 204, 4, 5, 6, 2728 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2729 17, 18, 19, 20, 21, 22, 23, 24, 0, 453, 2730 25, 26, 27, 1234, 0, 0, 0, 109, 0, 30, 2731 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2732 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2733 26, 27, 0, 0, 0, 0, 0, 33, 30, 34, 2734 0, 35, 0, 0, 37, 38, 0, 0, 8, 9, 2735 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2736 20, 21, 22, 23, 24, 0, 33, 25, 26, 27, 2737 0, 36, 0, 205, 38, 39, 30, 0, 0, 0, 2738 0, 0, 40, 41, -3, 0, 8, 9, 10, 11, 2739 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2740 22, 23, 24, 0, 33, 25, 26, 27, 42, 36, 2741 268, 335, 336, 39, 30, 0, 0, 0, 207, 0, 2742 40, 41, 0, 0, 8, 9, 10, 11, 12, 13, 2743 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2744 24, 0, 33, 25, 26, 27, 642, 0, 337, 37, 2745 38, 0, 30, 0, 0, 0, 633, 8, 9, 10, 2746 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2747 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2748 33, 0, 0, 0, 0, 30, 255, 37, 38, 0, 2749 0, 0, 0, 0, 109, 8, 9, 10, 11, 12, 2750 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2751 23, 24, 0, 33, 25, 26, 27, 0, 0, 0, 2752 205, 38, 0, 30, 155, 0, 0, 0, 0, 0, 2753 0, 0, 109, 8, 9, 10, 11, 12, 13, 14, 2754 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2755 0, 33, 25, 26, 27, 0, 0, 268, 37, 38, 2756 0, 30, 0, 0, 0, 269, 8, 9, 10, 11, 2757 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2758 22, 23, 24, 0, 0, 25, 26, 27, 0, 33, 2759 0, 0, 0, 0, 30, 255, 37, 38, 0, 0, 2760 0, 0, 0, 633, 8, 9, 10, 11, 12, 13, 2761 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2762 24, 0, 33, 25, 26, 27, 0, 0, 0, 37, 2763 38, 0, 30, 337, 0, 0, 0, 0, 0, 0, 2764 0, 633, 8, 9, 10, 11, 12, 13, 14, 15, 2765 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2766 33, 25, 26, 27, 0, 0, 453, 205, 38, 0, 2767 30, 0, 0, 0, 109, 8, 9, 10, 11, 12, 2768 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2769 23, 24, 0, 0, 25, 26, 27, 0, 33, 0, 2770 0, 0, 0, 30, 268, 37, 38, 0, 0, 0, 2771 0, 0, 628, 8, 9, 10, 11, 12, 13, 14, 2772 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2773 0, 33, 25, 26, 27, 0, 0, 0, 37, 38, 2774 0, 30, 598, 0, 0, 0, 0, 0, 0, 0, 2775 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2776 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2777 0, 0, 0, 0, 0, 337, 37, 38, 0, 0, 2778 0, 0, 0, 109, 2, 204, 4, 5, 6, 7, 2779 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2780 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2781 26, 27, 0, 43, 0, 0, 0, 0, 30, 0, 2782 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 2783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2784 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2785 35, 0, 0, 37, 38, 280, 281, 0, 282, 1062, 2786 0, 1063, 0, 0, 1064, 1065, 1066, 1067, 1068, 1069, 2787 1070, 1071, 0, 0, 1548, 1072, 0, 0, 0, 1073, 2788 1074, 0, 32, 0, 283, 0, 0, 0, 0, -412, 2789 648, 0, 0, 0, 285, 0, 0, 286, 287, 288, 2790 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2791 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 2792 0, 0, 0, 0, 0, 0, 0, 293, 0, 377, 2793 0, 0, 169, 0, 0, 0, 295, 379, 297, 298, 2794 299, 300, 0, 0, 0, 0, 1076, 0, 280, 281, 2795 -129, 282, 1062, 0, 1063, 0, 0, 1064, 1065, 1066, 2796 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 1072, 0, 2797 0, 0, 1073, 1074, 0, 32, 0, 283, 0, 0, 2798 0, 0, 0, 648, 0, 0, 0, 285, 0, 0, 2799 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2800 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 2801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2802 293, 0, 377, 0, 0, 169, 0, 0, 0, 295, 2803 379, 297, 298, 299, 300, 0, 0, 0, 0, 1076, 2804 0, 280, 281, -129, 282, 1062, 0, 1063, 1418, 1419, 2805 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 2806 1548, 1072, 0, 0, 0, 1073, 1074, 0, 32, 0, 2807 283, 0, 0, 0, 0, 0, 648, 0, 0, 0, 2808 285, 0, 0, 286, 287, 288, 289, 40, 41, 0, 2809 290, 291, 0, 0, 0, 0, 0, 0, 292, 0, 2810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2811 0, 0, 0, 293, 0, 377, 0, 0, 169, 0, 2812 0, 0, 295, 379, 297, 298, 299, 300, 0, 0, 2813 280, 281, 1076, 282, 1062, 0, 1063, 1418, 1419, 1064, 2814 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 2815 1072, 0, 0, 0, 1073, 1074, 0, 32, 0, 283, 2816 0, 0, 0, 0, 0, 648, 0, 0, 0, 285, 2817 0, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2818 291, 0, 0, 0, 0, 0, 0, 292, 0, 0, 2819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2820 0, 0, 293, 0, 377, 0, 0, 169, 0, 0, 2821 0, 295, 379, 297, 298, 299, 300, 0, 0, 280, 2822 281, 1076, 282, 1062, 0, 1063, 0, 0, 1064, 1065, 2823 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 1072, 2824 0, 0, 0, 1073, 1074, 0, 32, 0, 283, 0, 2825 0, 0, 0, 0, 648, 0, 0, 0, 285, 0, 2826 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2827 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2829 0, 293, 0, 377, 0, 0, 169, 0, 0, 0, 2830 295, 379, 297, 298, 299, 300, 0, 0, 0, 0, 2831 1076, 2, 204, 4, 5, 6, 7, 8, 9, 10, 2832 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2833 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2834 0, 0, 0, 0, 0, 30, 0, 280, 281, 0, 2835 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2836 0, 0, 0, 0, 0, 0, 280, 281, 0, 282, 2837 0, 0, 0, 33, 0, 34, 283, 35, 0, 0, 2838 37, 38, 284, 0, 0, 0, 285, 0, 0, 286, 2839 287, 288, 289, 40, 41, 283, 290, 291, 0, 0, 2840 0, 648, 1327, 0, 292, 285, 0, 0, 286, 287, 2841 288, 289, 40, 41, 0, 290, 291, 0, 0, 293, 2842 0, 377, 0, 292, 280, 281, 0, 282, 295, 733, 2843 297, 298, 299, 300, 0, 0, 0, 0, 293, 0, 2844 784, 0, 0, 280, 281, 0, 282, 295, 379, 297, 2845 298, 299, 300, 283, 0, 0, 0, 0, 0, 284, 2846 0, 0, 0, 285, 0, 0, 286, 287, 288, 289, 2847 40, 41, 283, 290, 291, 0, 0, 0, 284, 0, 2848 0, 292, 285, 0, 0, 286, 287, 288, 289, 40, 2849 41, 0, 290, 291, 0, 0, 293, 0, 377, 0, 2850 292, 280, 281, 0, 282, 295, 826, 297, 298, 299, 2851 300, 0, 0, 0, 0, 517, 0, 0, 0, 0, 2852 0, 0, 0, 0, 295, 379, 297, 298, 299, 300, 2853 283, 0, 0, 0, 0, 0, 284, 0, 0, 0, 2854 285, 0, 0, 286, 287, 288, 289, 40, 41, 0, 2855 290, 291, 0, 0, 0, 0, 0, 0, 292, 0, 2856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2857 0, 0, 0, 520, 0, 0, 0, 0, 0, 0, 2858 0, 0, 295, 379, 297, 298, 299, 300, 2, 204, 2859 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2860 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2861 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2862 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 2863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2865 33, 0, 34, 0, 35, 36, 0, 172, 173, 39, 2866 0, 0, 0, 0, 0, 0, 40, 41, 203, 2, 2867 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2868 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2869 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2870 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 2871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2873 0, 33, 0, 34, 0, 35, 0, 0, 205, 38, 2874 473, 2, 204, 4, 5, 6, 7, 8, 9, 10, 2875 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2876 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2877 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2880 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2881 37, 38, 2, 204, 4, 5, 6, 7, 8, 9, 2882 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2883 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2884 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2887 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2888 0, 205, 38 2889 }; 2890 2891 #define yypact_value_is_default(yystate) \ 2892 ((yystate) == (-1281)) 2893 2894 #define yytable_value_is_error(yytable_value) \ 2895 YYID (0) 2896 2897 static const yytype_int16 yycheck[] = 2898 { 2899 0, 1, 0, 42, 237, 217, 183, 183, 202, 42, 2900 0, 1, 1, 183, 42, 542, 183, 183, 114, 103, 2901 184, 455, 519, 343, 0, 0, 628, 454, 28, 29, 2902 183, 31, 697, 31, 697, 183, 498, 697, 610, 608, 2903 502, 31, 42, 679, 44, 461, 44, 347, 1042, 496, 2904 279, 901, 655, 1, 54, 31, 31, 166, 167, 608, 2905 60, 1061, 60, 63, 608, 63, 66, 610, 66, 153, 2906 347, 0, 578, 63, 1005, 277, 66, 66, 416, 998, 2907 80, 81, 1041, 1042, 184, 608, 263, 263, 63, 779, 2908 42, 362, 185, 263, 608, 366, 263, 263, 436, 31, 2909 264, 528, 31, 199, 104, 1337, 444, 107, 608, 27, 2910 263, 776, 0, 776, 114, 263, 776, 42, 608, 722, 2911 642, 643, 644, 1054, 758, 424, 425, 611, 38, 254, 2912 643, 644, 38, 617, 81, 42, 62, 106, 1418, 661, 2913 0, 1, 63, 31, 183, 145, 44, 145, 661, 109, 2914 183, 81, 108, 153, 226, 183, 116, 1422, 158, 77, 2915 158, 130, 38, 110, 264, 612, 259, 260, 488, 616, 2916 50, 31, 44, 245, 743, 109, 43, 44, 814, 109, 2917 1073, 1074, 116, 183, 184, 81, 184, 108, 824, 54, 2918 637, 43, 44, 38, 641, 38, 408, 84, 108, 199, 2919 110, 500, 63, 839, 110, 131, 66, 207, 1440, 207, 2920 901, 109, 1492, 735, 43, 44, 216, 494, 108, 219, 2921 519, 219, 735, 38, 263, 112, 226, 81, 108, 219, 2922 263, 183, 108, 11, 110, 263, 115, 109, 108, 104, 2923 404, 241, 107, 743, 219, 245, 1240, 114, 1141, 249, 2924 250, 249, 131, 743, 115, 1520, 340, 113, 183, 249, 2925 1525, 113, 116, 263, 264, 108, 264, 110, 115, 838, 2926 270, 38, 144, 249, 249, 0, 183, 277, 850, 599, 2927 1545, 510, 3, 717, 113, 369, 585, 1552, 81, 838, 2928 454, 416, 292, 108, 838, 110, 1290, 158, 394, 1474, 2929 111, 1525, 250, 1303, 404, 827, 31, 850, 628, 207, 2930 610, 436, 818, 633, 827, 838, 109, 249, 1008, 444, 2931 249, 1545, 486, 116, 838, 596, 422, 327, 1552, 327, 2932 1289, 1290, 428, 81, 1509, 207, 1511, 1256, 838, 94, 2933 238, 108, 95, 110, 292, 111, 346, 347, 838, 115, 2934 81, 216, 690, 95, 454, 1525, 840, 115, 219, 698, 2935 108, 249, 3, 363, 1, 237, 254, 367, 639, 122, 2936 1061, 269, 71, 348, 129, 1225, 696, 108, 378, 71, 2937 122, 720, 1552, 82, 83, 108, 486, 959, 108, 249, 2938 82, 83, 114, 115, 394, 293, 257, 269, 296, 71, 2939 261, 108, 1038, 1039, 404, 270, 404, 44, 130, 958, 2940 82, 83, 277, 115, 958, 71, 0, 115, 1020, 0, 2941 1414, 115, 422, 130, 296, 872, 82, 83, 428, 131, 2942 430, 488, 131, 131, 109, 958, 1070, 131, 110, 131, 2943 115, 67, 115, 89, 90, 71, 675, 531, 74, 115, 2944 76, 130, 772, 115, 454, 1414, 71, 83, 131, 459, 2945 1096, 1097, 118, 1463, 464, 131, 103, 82, 83, 131, 2946 1470, 343, 109, 473, 108, 1406, 1407, 115, 478, 125, 2947 126, 346, 109, 108, 109, 109, 486, 348, 486, 116, 2948 490, 115, 490, 131, 494, 110, 109, 497, 363, 499, 2949 490, 71, 367, 130, 479, 967, 1003, 144, 120, 121, 2950 937, 927, 82, 83, 490, 490, 153, 964, 945, 519, 2951 697, 697, 115, 1523, 249, 473, 108, 697, 416, 254, 2952 697, 697, 761, 108, 1225, 699, 536, 1140, 131, 539, 2953 110, 541, 542, 1115, 697, 1029, 1030, 656, 436, 697, 2954 850, 108, 424, 425, 452, 757, 444, 455, 829, 87, 2955 88, 490, 833, 461, 991, 690, 203, 663, 429, 71, 2956 207, 519, 665, 850, 115, 10, 11, 12, 13, 14, 2957 82, 83, 115, 108, 210, 642, 643, 644, 536, 589, 2958 131, 539, 470, 541, 542, 109, 596, 115, 131, 699, 2959 237, 238, 490, 38, 661, 109, 108, 732, 608, 115, 2960 610, 695, 1303, 131, 512, 71, 514, 115, 479, 517, 2961 111, 597, 520, 109, 115, 131, 82, 83, 500, 629, 2962 490, 66, 269, 131, 1270, 272, 109, 79, 977, 696, 2963 282, 589, 1278, 1279, 1280, 645, 71, 519, 73, 74, 2964 109, 651, 923, 295, 296, 630, 293, 82, 83, 296, 2965 660, 111, 662, 663, 664, 307, 114, 1101, 110, 1303, 2966 112, 79, 3, 111, 116, 887, 108, 115, 735, 10, 2967 11, 12, 13, 14, 91, 92, 963, 771, 113, 0, 2968 1326, 416, 109, 108, 293, 110, 908, 697, 115, 699, 2969 1020, 343, 110, 340, 112, 111, 343, 38, 116, 115, 2970 108, 436, 712, 585, 662, 772, 664, 118, 718, 444, 2971 31, 131, 123, 124, 350, 362, 352, 599, 71, 366, 2972 730, 42, 369, 44, 111, 66, 969, 379, 115, 82, 2973 83, 602, 108, 743, 744, 109, 1380, 109, 723, 60, 2974 1131, 115, 63, 115, 1135, 66, 628, 757, 108, 63, 2975 110, 633, 737, 488, 629, 490, 108, 110, 118, 630, 2976 827, 1495, 1463, 937, 635, 108, 108, 1501, 110, 1470, 2977 645, 945, 730, 108, 893, 110, 118, 424, 425, 111, 2978 109, 109, 1319, 118, 1133, 660, 115, 115, 1522, 113, 2979 109, 679, 690, 1527, 131, 52, 115, 113, 512, 71, 2980 514, 73, 74, 517, 440, 452, 520, 109, 455, 717, 2981 82, 83, 109, 115, 461, 424, 425, 128, 115, 130, 2982 113, 1102, 1523, 1467, 145, 1469, 473, 937, 838, 1033, 2983 1160, 114, 115, 109, 732, 945, 108, 158, 95, 115, 2984 850, 113, 1191, 1192, 109, 108, 831, 110, 834, 131, 2985 115, 498, 723, 500, 1529, 502, 1529, 131, 109, 1529, 2986 115, 116, 183, 184, 115, 512, 737, 514, 109, 109, 2987 517, 109, 519, 520, 115, 115, 71, 115, 73, 74, 2988 1524, 108, 757, 893, 531, 108, 207, 82, 83, 109, 2989 900, 901, 1131, 109, 109, 115, 1135, 1136, 219, 115, 2990 115, 901, 81, 512, 556, 557, 558, 108, 517, 110, 2991 1240, 520, 108, 923, 110, 901, 901, 109, 110, 4, 2992 5, 6, 7, 8, 9, 108, 814, 937, 249, 71, 2993 111, 73, 74, 81, 191, 945, 824, 1056, 585, 119, 2994 82, 83, 263, 901, 108, 109, 110, 599, 108, 596, 2995 110, 839, 599, 963, 108, 690, 110, 214, 57, 58, 2996 831, 696, 108, 109, 110, 574, 108, 224, 968, 968, 2997 108, 113, 110, 983, 1041, 4, 5, 6, 7, 8, 2998 9, 628, 992, 68, 127, 70, 633, 108, 109, 110, 2999 1000, 128, 639, 1003, 130, 1005, 71, 732, 73, 74, 3000 75, 110, 108, 901, 110, 3, 327, 82, 83, 114, 3001 115, 1250, 10, 11, 12, 13, 14, 1123, 71, 927, 3002 73, 74, 75, 115, 116, 983, 347, 115, 116, 82, 3003 83, 901, 108, 108, 110, 110, 293, 772, 1023, 68, 3004 38, 70, 1000, 118, 1054, 1003, 131, 1005, 695, 108, 3005 109, 110, 1401, 93, 1064, 108, 108, 1067, 1068, 1069, 3006 108, 1061, 10, 11, 12, 13, 14, 1504, 66, 1418, 3007 717, 563, 564, 565, 566, 1061, 1061, 71, 111, 73, 3008 74, 733, 1092, 404, 43, 44, 44, 969, 82, 83, 3009 38, 111, 702, 1160, 704, 109, 1054, 109, 968, 1338, 3010 747, 109, 60, 1342, 109, 63, 1064, 109, 66, 1067, 3011 1068, 1069, 3, 1123, 561, 562, 110, 1554, 66, 10, 3012 11, 12, 13, 14, 771, 109, 1220, 779, 71, 108, 3013 73, 74, 75, 454, 111, 109, 111, 111, 1020, 82, 3014 83, 115, 1491, 1492, 57, 58, 59, 38, 567, 568, 3015 1038, 1039, 1023, 1262, 1263, 1264, 130, 131, 559, 560, 3016 108, 110, 110, 1061, 115, 108, 901, 130, 113, 490, 3017 118, 108, 111, 494, 826, 66, 109, 109, 116, 115, 3018 111, 111, 829, 111, 441, 111, 833, 145, 1198, 116, 3019 28, 1061, 116, 1101, 109, 84, 85, 86, 109, 111, 3020 158, 109, 1202, 1203, 1203, 1444, 113, 116, 1096, 1097, 3021 1220, 114, 114, 114, 108, 1225, 115, 1202, 475, 108, 3022 115, 110, 1289, 112, 113, 1225, 184, 109, 4, 5, 3023 6, 7, 8, 9, 131, 109, 109, 116, 109, 1225, 3024 1225, 109, 109, 115, 1244, 1244, 71, 109, 109, 207, 3025 75, 109, 1262, 1263, 1264, 512, 32, 82, 83, 109, 3026 517, 219, 109, 520, 109, 109, 71, 1225, 73, 74, 3027 75, 84, 85, 86, 109, 109, 923, 82, 83, 470, 3028 927, 109, 109, 108, 114, 110, 109, 608, 109, 610, 3029 28, 1397, 68, 118, 70, 108, 1539, 110, 1298, 112, 3030 113, 698, 111, 1303, 1262, 1263, 1264, 109, 130, 1319, 3031 1320, 109, 109, 1298, 114, 109, 115, 1303, 1303, 111, 3032 967, 968, 969, 720, 111, 109, 1061, 1225, 71, 109, 3033 115, 1202, 75, 1203, 109, 901, 115, 1337, 1337, 82, 3034 83, 115, 1529, 1529, 116, 113, 111, 71, 109, 1529, 3035 1238, 75, 1529, 1529, 111, 1225, 1530, 115, 82, 83, 3036 115, 1319, 1320, 109, 1374, 108, 1529, 1377, 1020, 327, 3037 109, 1529, 108, 1020, 1244, 118, 697, 108, 699, 108, 3038 1554, 108, 1270, 108, 108, 111, 1396, 1397, 116, 131, 3039 1278, 1279, 1280, 114, 118, 109, 1406, 1407, 1504, 71, 3040 109, 73, 74, 75, 109, 1303, 0, 1, 128, 1061, 3041 82, 83, 1422, 114, 811, 113, 1374, 1427, 111, 1377, 3042 1530, 678, 743, 744, 131, 1160, 109, 1298, 115, 111, 3043 687, 115, 111, 1303, 691, 1445, 109, 31, 1326, 109, 3044 1440, 1440, 109, 111, 1554, 111, 404, 1457, 1406, 1407, 3045 44, 111, 109, 54, 1101, 1102, 111, 111, 111, 46, 3046 29, 109, 131, 1463, 1422, 114, 131, 1337, 131, 1427, 3047 1470, 71, 66, 73, 74, 75, 114, 1463, 1463, 131, 3048 1529, 131, 82, 83, 1470, 1470, 1529, 1445, 679, 116, 3049 1225, 1529, 889, 109, 1504, 1505, 111, 114, 1064, 1457, 3050 111, 111, 111, 104, 1514, 1240, 107, 111, 108, 103, 3051 1520, 80, 81, 111, 111, 1525, 111, 838, 118, 1529, 3052 1530, 1396, 1530, 1523, 109, 1177, 109, 111, 108, 850, 3053 111, 63, 108, 1543, 108, 1545, 59, 1523, 1523, 1549, 3054 113, 109, 1552, 109, 1554, 131, 1554, 1505, 80, 116, 3055 1560, 145, 153, 111, 1564, 111, 1514, 109, 111, 153, 3056 154, 109, 1520, 108, 1472, 1463, 1474, 1525, 1303, 95, 3057 1440, 95, 1470, 1220, 108, 114, 131, 115, 111, 109, 3058 977, 109, 109, 115, 109, 1543, 41, 1545, 131, 131, 3059 184, 1549, 95, 1463, 1552, 1204, 1205, 1244, 1207, 116, 3060 1470, 1509, 1560, 1511, 1213, 199, 1564, 1216, 202, 203, 3061 109, 1008, 109, 207, 95, 216, 937, 131, 109, 109, 3062 131, 116, 131, 814, 945, 1523, 158, 109, 114, 109, 3063 50, 131, 52, 824, 228, 55, 56, 57, 232, 59, 3064 234, 111, 963, 111, 108, 114, 131, 114, 839, 243, 3065 109, 109, 131, 1523, 74, 249, 109, 1539, 109, 1225, 3066 254, 1058, 1076, 569, 1225, 570, 86, 87, 925, 270, 3067 264, 571, 241, 1492, 63, 573, 277, 1382, 272, 572, 3068 25, 26, 27, 1564, 73, 1313, 1136, 219, 1342, 1470, 3069 1337, 10, 11, 12, 13, 14, 10, 11, 12, 13, 3070 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3071 24, 25, 26, 27, 1092, 29, 30, 31, 452, 38, 3072 452, 945, 704, 464, 38, 257, 115, 893, 1463, 261, 3073 947, 992, 589, 965, 657, 1470, 1133, 747, 1244, 490, 3074 757, 577, -1, -1, 577, 346, 340, 66, 577, 343, 3075 -1, 96, 66, 98, 1320, 349, -1, -1, -1, 73, 3076 74, -1, 363, 77, -1, -1, 367, 1376, 362, 158, 3077 -1, -1, 366, -1, -1, 369, -1, 10, 11, 12, 3078 13, 14, -1, -1, -1, -1, -1, -1, 1523, 108, 3079 -1, 110, -1, 1440, 1191, 1192, 110, -1, -1, 118, 3080 -1, -1, -1, -1, 118, 38, -1, -1, 1374, 378, 3081 -1, 1377, -1, -1, -1, 1072, 348, -1, -1, -1, 3082 -1, -1, 416, -1, -1, 1472, -1, 1474, -1, 430, 3083 219, -1, -1, 66, 179, -1, -1, 431, -1, -1, 3084 -1, -1, 436, -1, 189, 190, -1, 1038, 1039, 194, 3085 444, 196, 197, -1, -1, -1, 1422, -1, -1, -1, 3086 -1, 1427, 1509, -1, 1511, -1, -1, -1, 257, -1, 3087 -1, -1, 261, -1, -1, 108, 470, 110, -1, 473, 3088 -1, -1, -1, -1, -1, 118, -1, -1, 277, -1, 3089 459, 1457, 1539, -1, 488, 464, 490, 429, -1, 10, 3090 11, 12, 13, 14, 498, 1096, 1097, -1, 502, -1, 3091 -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 3092 13, 14, -1, 343, 344, -1, -1, 38, 497, 71, 3093 499, 73, 74, 75, -1, 355, 356, 531, 532, -1, 3094 82, 83, -1, -1, -1, 38, -1, 479, -1, -1, 3095 -1, -1, -1, -1, -1, 66, -1, -1, -1, 348, 3096 71, -1, 73, 74, 75, -1, 108, -1, 110, -1, 3097 -1, 82, 83, 66, 116, -1, 118, 1543, 71, -1, 3098 73, 74, 75, 1549, 578, -1, -1, -1, -1, 82, 3099 83, -1, -1, -1, 1560, 596, -1, 108, 1564, 110, 3100 -1, -1, 596, 597, 1401, 599, -1, 118, -1, -1, 3101 -1, -1, -1, -1, -1, 108, 610, 110, -1, -1, 3102 -1, 1418, -1, -1, -1, 118, -1, -1, 629, -1, 3103 -1, -1, -1, -1, 628, -1, -1, -1, -1, 633, 3104 429, -1, -1, -1, 645, 639, -1, 1238, 642, 643, 3105 644, -1, -1, -1, -1, 1312, -1, 446, -1, 660, 3106 71, -1, 73, 74, 75, -1, -1, 661, -1, -1, 3107 602, 82, 83, -1, -1, -1, -1, -1, -1, 1270, 3108 -1, -1, 651, -1, -1, 679, -1, 1278, 1279, 1280, 3109 479, -1, -1, -1, 1491, 1492, 690, 108, 630, 110, 3110 -1, 695, 696, 635, -1, 699, -1, 118, -1, -1, 3111 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3112 19, 20, 21, 22, 23, 24, 25, 26, 0, -1, 3113 29, 30, 31, -1, -1, 1326, -1, -1, 732, 38, 3114 39, 735, -1, 712, -1, -1, -1, -1, -1, 718, 3115 744, -1, -1, 747, -1, 0, 757, -1, -1, 31, 3116 71, -1, 73, 74, 75, -1, -1, 66, -1, -1, 3117 -1, 82, 83, -1, 73, 74, -1, 771, 772, -1, 3118 -1, -1, -1, 777, -1, -1, 31, -1, -1, -1, 3119 -1, 723, -1, -1, 66, -1, -1, 108, -1, 110, 3120 -1, -1, -1, -1, -1, 737, -1, 118, 1529, -1, 3121 -1, 110, -1, 602, 1471, 114, 1473, -1, -1, 118, 3122 814, 66, -1, -1, -1, -1, -1, -1, -1, -1, 3123 824, -1, -1, 827, -1, 829, 581, 582, 832, 833, 3124 834, 630, -1, -1, -1, 839, 635, -1, -1, -1, 3125 -1, 1508, -1, 1510, -1, 849, 71, -1, 73, 74, 3126 75, -1, -1, -1, -1, -1, 611, 82, 83, 614, 3127 615, -1, 617, -1, 619, 620, -1, -1, -1, 624, 3128 625, -1, 154, 96, 97, 98, 99, 100, 101, 102, 3129 103, 104, 105, 108, -1, -1, 1553, -1, 1555, 831, 3130 -1, -1, -1, 118, 724, -1, 726, 901, -1, 154, 3131 -1, 1568, 1569, 733, 734, -1, -1, 130, 738, -1, 3132 -1, -1, 923, -1, 893, -1, 187, -1, -1, 923, 3133 750, 900, -1, 194, 723, 755, -1, -1, 10, 11, 3134 12, 13, 14, -1, -1, -1, -1, -1, 737, -1, 3135 -1, -1, -1, -1, -1, -1, 228, -1, -1, -1, 3136 -1, 781, -1, 708, 709, 959, 38, -1, 757, 714, 3137 -1, -1, -1, 967, 968, -1, -1, 249, -1, -1, 3138 -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, 3139 -1, 985, -1, -1, 66, -1, -1, -1, -1, 71, 3140 -1, 73, 74, 75, 249, 266, 826, -1, -1, 254, 3141 82, 83, -1, -1, -1, -1, 25, 26, 27, -1, 3142 -1, -1, -1, 992, -1, -1, 1020, -1, -1, -1, 3143 -1, -1, -1, -1, -1, -1, 108, -1, 110, 1033, 3144 -1, -1, 831, -1, 1038, 1039, 118, 1041, 1042, -1, 3145 -1, -1, -1, -1, 10, 11, 12, 13, 14, -1, 3146 -1, 322, -1, 883, 884, 885, 886, 1061, 888, 330, 3147 -1, -1, 333, -1, -1, -1, -1, 349, -1, -1, 3148 -1, -1, 38, -1, 904, -1, -1, 96, -1, 98, 3149 -1, 1023, -1, -1, -1, -1, -1, -1, 918, -1, 3150 -1, -1, 1096, 1097, 349, -1, -1, -1, 1102, -1, 3151 66, -1, -1, -1, 123, 71, -1, 73, 74, 75, 3152 -1, -1, -1, 1092, -1, -1, 82, 83, -1, -1, 3153 -1, -1, -1, -1, -1, 396, -1, 957, -1, 400, 3154 -1, -1, -1, -1, 416, -1, -1, -1, -1, -1, 3155 -1, -1, 108, -1, -1, -1, -1, -1, -1, 431, 3156 -1, -1, 118, -1, 436, -1, 1160, -1, -1, -1, 3157 179, 416, 444, -1, -1, -1, -1, 997, 187, -1, 3158 189, 190, -1, -1, 1004, 194, 431, 196, 197, 1009, 3159 -1, 436, -1, -1, 1014, -1, 1016, -1, 470, 444, 3160 1020, 1021, 1022, -1, -1, 1025, -1, -1, -1, 1203, 3161 -1, -1, -1, -1, 1034, -1, 488, -1, 490, 1220, 3162 -1, -1, -1, -1, 485, 470, 1220, -1, -1, 1198, 3163 -1, 1225, 1052, 1053, 1023, -1, -1, -1, 10, 11, 3164 12, 13, 14, 488, 1238, 490, 1240, -1, -1, -1, 3165 1244, -1, -1, -1, -1, -1, -1, 266, -1, 1079, 3166 532, -1, 1082, -1, -1, -1, 38, -1, -1, -1, 3167 1202, -1, -1, -1, -1, -1, 1270, -1, -1, -1, 3168 -1, -1, -1, -1, 1278, 1279, 1280, 532, -1, -1, 3169 -1, -1, -1, -1, 66, 1289, 1290, -1, -1, 71, 3170 1120, 73, 74, 75, -1, -1, 1126, 1127, -1, 1303, 3171 82, 83, -1, -1, -1, -1, 577, 578, 1138, -1, 3172 -1, -1, -1, 1143, -1, 597, 1146, -1, 1148, -1, 3173 -1, 1151, 1326, -1, -1, -1, 108, -1, -1, -1, 3174 -1, -1, -1, 1337, 1164, -1, 118, -1, -1, -1, 3175 -1, -1, 597, 1098, -1, -1, -1, 1177, -1, 1179, 3176 1180, 1181, 1182, -1, -1, -1, 1298, -1, -1, -1, 3177 642, 643, 644, -1, -1, 1195, -1, 1197, -1, -1, 3178 -1, 1201, -1, -1, -1, -1, -1, -1, -1, 661, 3179 -1, -1, -1, -1, -1, 1396, -1, 642, 643, 644, 3180 -1, -1, -1, -1, -1, 666, -1, 679, -1, 670, 3181 1230, 1231, -1, 1202, -1, -1, 661, -1, 690, -1, 3182 1414, -1, 0, -1, 696, -1, -1, -1, -1, -1, 3183 -1, -1, -1, -1, 679, -1, -1, -1, -1, -1, 3184 -1, -1, 703, -1, -1, 690, 1440, -1, -1, 0, 3185 -1, 696, -1, 31, -1, 0, 1, -1, -1, -1, 3186 732, 1281, 1282, 735, -1, -1, -1, -1, -1, 1463, 3187 -1, 1291, -1, -1, -1, -1, 1470, 1222, -1, -1, 3188 31, -1, -1, -1, -1, -1, 31, 732, 66, -1, 3189 735, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3190 772, -1, -1, -1, -1, -1, -1, -1, -1, 1298, 3191 -1, -1, -1, -1, -1, 66, -1, -1, 63, -1, 3192 -1, 66, -1, 1343, -1, -1, -1, 772, -1, 1523, 3193 -1, -1, -1, -1, -1, 1355, 1530, 1357, 1358, 1359, 3194 -1, -1, 814, -1, -1, -1, -1, -1, -1, 1369, 3195 -1, -1, 824, -1, -1, 827, -1, 818, 1378, -1, 3196 832, -1, 834, -1, -1, -1, -1, 839, -1, 814, 3197 -1, -1, 581, 582, 1394, -1, 154, -1, -1, 824, 3198 -1, -1, 827, -1, -1, -1, -1, 832, -1, 834, 3199 -1, -1, -1, -1, 839, -1, -1, -1, -1, -1, 3200 -1, -1, 611, 154, -1, 614, 615, -1, 617, 154, 3201 619, 620, -1, -1, -1, 624, 625, -1, -1, -1, 3202 -1, -1, -1, -1, -1, -1, -1, -1, -1, 901, 3203 1450, 1451, -1, -1, -1, -1, -1, -1, -1, -1, 3204 -1, -1, -1, 1463, -1, -1, -1, -1, -1, -1, 3205 1470, -1, -1, -1, -1, -1, 901, -1, -1, -1, 3206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3207 931, 249, -1, -1, 219, -1, 254, -1, -1, -1, 3208 -1, -1, -1, 1503, -1, -1, -1, 1507, -1, -1, 3209 -1, -1, -1, -1, 703, -1, -1, -1, 249, 708, 3210 709, -1, -1, 254, 249, 714, -1, -1, -1, -1, 3211 -1, -1, -1, 985, -1, -1, 1536, -1, 1538, -1, 3212 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3213 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3214 985, 29, 30, 31, -1, -1, 1566, 1567, -1, 1010, 3215 38, 39, -1, -1, 1574, 1575, -1, -1, -1, -1, 3216 -1, -1, -1, -1, -1, 1026, 1038, 1039, -1, 1041, 3217 1042, 349, -1, -1, -1, -1, -1, -1, 66, -1, 3218 -1, -1, -1, -1, -1, 73, 74, -1, -1, 1061, 3219 -1, -1, -1, 1038, 1039, -1, 1041, 1042, 349, 10, 3220 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3221 21, 22, 23, 24, 25, 26, 1061, -1, 29, 30, 3222 31, -1, 110, -1, 1096, 1097, 114, 38, -1, -1, 3223 118, -1, -1, -1, -1, -1, -1, -1, 416, -1, 3224 -1, -1, 1103, -1, -1, -1, -1, -1, -1, -1, 3225 -1, 1096, 1097, 431, -1, 66, -1, -1, 436, -1, 3226 71, -1, 73, 74, 75, 416, 444, -1, -1, -1, 3227 -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, 3228 431, -1, -1, -1, -1, 436, 431, -1, 1160, -1, 3229 -1, -1, 470, 444, -1, -1, -1, 108, -1, 110, 3230 -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, 3231 488, -1, 490, -1, -1, 1160, -1, -1, -1, 470, 3232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3233 -1, 1203, -1, -1, -1, -1, -1, 488, -1, 490, 3234 -1, -1, -1, -1, -1, 490, -1, -1, -1, -1, 3235 -1, -1, -1, 1225, 532, -1, -1, -1, 1203, -1, 3236 -1, -1, -1, -1, -1, -1, 1238, -1, 1240, -1, 3237 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3238 1225, 532, -1, -1, -1, -1, -1, 532, -1, -1, 3239 -1, -1, -1, 1238, -1, 1240, -1, -1, 1270, -1, 3240 -1, -1, -1, -1, -1, -1, 1278, 1279, 1280, -1, 3241 -1, -1, -1, -1, -1, -1, -1, 1289, 1290, 597, 3242 -1, -1, -1, -1, -1, 1270, -1, -1, -1, -1, 3243 -1, 1303, -1, 1278, 1279, 1280, -1, -1, -1, -1, 3244 -1, -1, -1, -1, 1289, 1290, 597, -1, -1, -1, 3245 -1, -1, 597, -1, 1326, -1, -1, -1, 1303, -1, 3246 -1, -1, -1, -1, 642, 643, 644, -1, -1, -1, 3247 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3248 -1, 1326, -1, 661, -1, -1, -1, -1, -1, 1098, 3249 -1, 642, 643, 644, -1, -1, -1, 642, 643, 644, 3250 -1, 679, -1, -1, -1, -1, -1, -1, -1, -1, 3251 661, -1, 690, -1, -1, -1, 661, -1, 696, -1, 3252 -1, -1, -1, -1, -1, -1, -1, -1, 679, 7, 3253 -1, -1, 10, 11, 12, 13, 14, -1, -1, 690, 3254 -1, -1, 1414, -1, -1, 696, -1, -1, -1, -1, 3255 -1, -1, -1, -1, 732, -1, -1, 735, 36, 37, 3256 38, 39, -1, -1, -1, -1, -1, -1, -1, 1414, 3257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3258 -1, 732, -1, -1, 735, -1, -1, 65, 66, -1, 3259 735, 1463, -1, 71, 772, -1, -1, 75, 1470, -1, 3260 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3261 -1, -1, -1, 1222, -1, 93, -1, -1, 1463, -1, 3262 -1, 772, -1, -1, -1, 1470, -1, -1, -1, -1, 3263 108, -1, 110, -1, -1, -1, 814, -1, -1, 117, 3264 118, 119, 120, 121, 122, -1, 824, -1, -1, 827, 3265 -1, 1523, -1, -1, 832, -1, 834, -1, -1, -1, 3266 -1, 839, -1, 814, -1, -1, -1, -1, -1, -1, 3267 -1, -1, -1, 824, -1, -1, 827, -1, 1523, -1, 3268 -1, 832, 827, 834, -1, -1, -1, -1, 839, 834, 3269 -1, -1, -1, -1, -1, 0, -1, -1, 3, 4, 2374 3270 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2375 3271 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2376 25, 0, 0, 26, 27, 28, 29, 0, 0, 30, 2377 0, 0, 31, 32, 0, 0, 0, 0, 0, 341, 2378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379 0, 0, 0, 0, 0, 0, 0, 33, 0, 363, 2380 34, 0, 35, 0, 36, 37, 321, 38, 39, 40, 2381 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 2382 0, 0, 1139, 1140, 0, 0, 0, 0, 0, 381, 2383 0, 0, 0, 0, 0, 996, 0, 0, 1149, 0, 2384 769, 0, 43, 0, 44, 0, 0, 0, 363, 363, 2385 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 2386 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2387 0, 1180, 0, 0, 0, 0, 516, 0, 0, 0, 2388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2389 0, 0, 0, 381, 0, 1198, 0, 0, 0, 0, 2390 0, 0, 0, 0, 0, 0, 0, 516, 0, 0, 2391 996, 996, 0, 0, 0, 0, 0, 0, 0, 516, 2392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2393 0, 1230, 0, 0, 1, 2, 3, 4, 5, 6, 3272 25, 26, -1, 901, 29, 30, 31, 32, -1, -1, 3273 35, -1, -1, 38, 39, -1, -1, -1, -1, 10, 3274 11, 12, 13, 14, -1, 10, 11, 12, 13, 14, 3275 901, -1, -1, -1, -1, -1, 901, -1, 63, -1, 3276 -1, 66, 44, 68, -1, 70, 71, 38, 73, 74, 3277 75, -1, -1, 38, -1, -1, -1, 82, 83, -1, 3278 -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, 3279 -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, 3280 71, 66, -1, 108, 75, 110, 71, 985, -1, -1, 3281 75, 82, 83, 118, -1, -1, -1, 82, 83, -1, 3282 -1, -1, -1, 968, -1, -1, -1, 109, -1, -1, 3283 -1, -1, -1, 115, 985, -1, -1, 108, -1, -1, 3284 985, -1, -1, 108, -1, -1, -1, 118, -1, -1, 3285 -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 3286 1038, 1039, 144, 1041, 1042, -1, -1, -1, -1, -1, 3287 -1, -1, 154, -1, -1, -1, 158, -1, -1, -1, 3288 -1, -1, -1, 1061, -1, -1, -1, 1038, 1039, -1, 3289 1041, 1042, -1, -1, -1, -1, 1041, 1042, -1, -1, 3290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3291 1061, -1, -1, -1, -1, -1, 1061, -1, 1096, 1097, 3292 -1, -1, -1, -1, -1, 207, -1, -1, -1, -1, 3293 -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 3294 -1, -1, -1, -1, -1, 1096, 1097, -1, -1, -1, 3295 -1, 36, 37, -1, 39, 237, 238, 10, 11, 12, 3296 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3297 23, 24, 25, 26, -1, -1, 29, 30, 31, 261, 3298 65, -1, 1160, -1, -1, 38, 71, 269, -1, -1, 3299 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 3300 85, 86, -1, -1, -1, -1, -1, -1, 93, 1160, 3301 -1, 293, -1, 66, 296, -1, -1, -1, -1, -1, 3302 73, 74, -1, 108, -1, 1203, -1, -1, -1, -1, 3303 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3304 -1, -1, -1, -1, -1, -1, -1, 1225, -1, -1, 3305 -1, -1, 1203, -1, -1, -1, -1, 1202, 1203, -1, 3306 1238, 343, 1240, -1, -1, 118, 348, -1, -1, -1, 3307 -1, -1, -1, -1, 1225, -1, -1, -1, -1, -1, 3308 1225, -1, -1, -1, -1, -1, -1, 1238, -1, 1240, 3309 -1, -1, 1270, -1, -1, -1, -1, -1, -1, 1244, 3310 1278, 1279, 1280, -1, -1, -1, -1, -1, -1, -1, 3311 -1, 1289, 1290, -1, -1, -1, -1, -1, -1, 1270, 3312 -1, -1, -1, -1, -1, 1303, -1, 1278, 1279, 1280, 3313 -1, -1, -1, -1, -1, -1, -1, -1, 1289, 1290, 3314 -1, -1, 424, 425, 1289, 1290, -1, -1, 1326, 431, 3315 -1, -1, 1303, 1298, -1, -1, -1, -1, 1303, -1, 3316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3317 452, -1, -1, 455, -1, 1326, -1, -1, -1, 461, 3318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3319 -1, -1, 1337, -1, -1, -1, -1, -1, -1, -1, 3320 -1, -1, -1, -1, -1, -1, 488, -1, -1, -1, 3321 63, -1, -1, -1, -1, -1, -1, -1, 500, -1, 3322 73, -1, 75, -1, 77, -1, -1, -1, -1, -1, 3323 512, 84, 514, -1, -1, 517, 1414, 519, 520, -1, 3324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3325 532, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3326 -1, -1, 115, 1414, 117, 118, 119, -1, -1, 1414, 3327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3328 -1, -1, -1, -1, -1, 1463, -1, 43, -1, -1, 3329 -1, -1, 1470, -1, -1, 1440, -1, -1, -1, -1, 3330 -1, -1, -1, 585, -1, 158, -1, -1, -1, -1, 3331 -1, -1, 1463, -1, -1, 597, -1, 599, 1463, 1470, 3332 602, -1, -1, -1, -1, 1470, -1, -1, -1, -1, 3333 -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, 3334 -1, -1, -1, 99, -1, 1523, 628, -1, -1, -1, 3335 -1, 633, -1, -1, -1, -1, -1, -1, -1, -1, 3336 642, 643, 644, -1, -1, -1, 219, -1, 221, 222, 3337 223, -1, 1523, -1, -1, -1, -1, -1, 1523, 661, 3338 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3339 19, 20, 21, 22, 23, 24, 25, 26, 27, 155, 3340 29, 30, 31, -1, 257, -1, -1, -1, 261, 38, 3341 -1, -1, -1, 169, 696, -1, -1, -1, -1, -1, 3342 -1, -1, -1, -1, 277, -1, -1, -1, -1, -1, 3343 -1, -1, -1, -1, -1, 717, 192, 66, -1, -1, 3344 -1, -1, -1, -1, 73, 74, -1, -1, 77, -1, 3345 206, -1, -1, 735, -1, 737, -1, -1, -1, 215, 3346 -1, -1, -1, -1, -1, -1, -1, -1, -1, 225, 3347 -1, -1, -1, -1, 327, -1, -1, -1, -1, 108, 3348 -1, 110, 36, 37, -1, 39, -1, -1, -1, 118, 3349 772, -1, -1, -1, 250, 348, -1, -1, -1, 255, 3350 353, 354, -1, -1, -1, -1, -1, -1, 361, -1, 3351 -1, 65, 268, -1, -1, -1, -1, 71, 274, -1, 3352 276, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3353 -1, 85, 86, -1, -1, -1, -1, -1, 294, 93, 3354 -1, -1, -1, -1, -1, 827, -1, -1, -1, 831, 3355 -1, 404, 834, -1, 108, -1, 110, -1, -1, 113, 3356 -1, -1, -1, 117, 118, 119, 120, 121, 122, 422, 3357 -1, -1, -1, -1, 427, -1, 429, -1, -1, -1, 3358 -1, 337, -1, -1, -1, -1, 342, -1, -1, -1, 3359 -1, -1, -1, 446, -1, -1, 449, 450, -1, -1, 3360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3361 -1, -1, 465, -1, 370, -1, -1, -1, 374, 375, 3362 -1, 377, -1, -1, -1, -1, 479, -1, 384, 385, 3363 -1, 387, 388, 486, 390, -1, 392, -1, -1, -1, 3364 -1, -1, -1, 7, -1, 927, 10, 11, 12, 13, 3365 14, -1, -1, 409, -1, -1, -1, -1, -1, -1, 3366 -1, 417, -1, -1, -1, -1, -1, -1, -1, -1, 3367 -1, -1, 36, 37, 38, 39, -1, -1, -1, -1, 3368 -1, -1, -1, -1, -1, -1, 442, 969, -1, -1, 3369 -1, -1, -1, -1, -1, -1, -1, 453, -1, -1, 3370 -1, 65, 66, 985, -1, -1, -1, 71, -1, -1, 3371 -1, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3372 476, 85, 86, -1, -1, -1, 482, -1, -1, 93, 3373 -1, 487, -1, -1, -1, -1, -1, -1, 1020, -1, 3374 -1, -1, -1, -1, 108, -1, 110, -1, -1, 602, 3375 -1, -1, -1, 117, 118, 119, 120, 121, 122, 1041, 3376 1042, -1, -1, -1, -1, -1, -1, -1, 524, -1, 3377 -1, -1, -1, -1, -1, -1, -1, 630, 280, -1, 3378 282, 283, 635, -1, 540, -1, -1, -1, 290, 291, 3379 -1, -1, -1, 295, 296, -1, -1, -1, -1, -1, 3380 -1, -1, -1, -1, -1, 307, -1, -1, -1, -1, 3381 -1, -1, -1, -1, -1, 36, 37, -1, 39, 1101, 3382 -1, 577, -1, -1, -1, -1, -1, -1, -1, -1, 3383 586, -1, -1, -1, -1, -1, -1, 593, -1, -1, 3384 -1, 343, 598, -1, 65, -1, -1, -1, -1, -1, 3385 71, -1, -1, 609, 75, -1, -1, 78, 79, 80, 3386 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3387 723, -1, 93, -1, -1, -1, -1, 379, 1160, -1, 3388 -1, -1, -1, -1, 737, -1, -1, 108, -1, 110, 3389 -1, -1, -1, -1, 650, 116, 117, 118, 119, 120, 3390 121, 122, -1, -1, 757, -1, -1, -1, -1, -1, 3391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3392 1202, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3393 686, -1, -1, -1, -1, 10, 11, 12, 13, 14, 3394 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3395 25, 26, 27, -1, 29, 30, 31, -1, 1240, -1, 3396 -1, -1, -1, 38, -1, 818, -1, -1, -1, -1, 3397 -1, -1, -1, -1, -1, -1, -1, -1, 831, -1, 3398 -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, 3399 -1, 66, -1, -1, -1, 751, 752, 850, 73, 74, 3400 -1, -1, 77, -1, -1, -1, -1, 1289, 1290, 765, 3401 -1, -1, -1, -1, -1, -1, 1298, -1, -1, -1, 3402 -1, -1, -1, -1, -1, -1, 782, -1, 784, -1, 3403 -1, -1, 788, 108, -1, 110, -1, -1, -1, -1, 3404 -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 3405 -1, -1, -1, -1, 556, 557, 558, 559, 560, 561, 3406 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 3407 572, 573, -1, -1, -1, -1, -1, -1, -1, -1, 3408 36, 37, -1, 39, 937, -1, -1, -1, -1, -1, 3409 -1, -1, -1, -1, -1, -1, -1, 599, 854, -1, 3410 -1, -1, -1, -1, -1, 861, -1, -1, -1, 65, 3411 963, -1, -1, -1, -1, 71, -1, -1, 874, 75, 3412 876, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3413 86, -1, 1414, -1, 890, -1, -1, 93, 991, -1, 3414 -1, 897, -1, -1, -1, -1, -1, -1, -1, -1, 3415 -1, -1, 108, 909, 110, -1, 912, -1, -1, 115, 3416 -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, 3417 1023, -1, -1, -1, 930, -1, -1, -1, -1, -1, 3418 -1, 1034, -1, -1, -1, -1, -1, -1, -1, -1, 3419 1472, -1, 1474, -1, -1, -1, 698, -1, 10, 11, 3420 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3421 22, 23, 24, 25, 26, 27, -1, -1, 720, -1, 3422 -1, -1, -1, -1, -1, -1, 38, 1509, -1, 1511, 3423 -1, 733, 10, 11, 12, 13, 14, 15, 16, 17, 3424 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3425 -1, 29, 30, 31, 66, -1, -1, 1539, -1, -1, 3426 38, -1, 1115, 1019, -1, 77, -1, -1, -1, 153, 3427 154, -1, -1, -1, -1, -1, -1, 779, -1, -1, 3428 -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, 3429 -1, -1, -1, 71, -1, 73, 74, 75, -1, 77, 3430 -1, -1, -1, 187, 82, 83, -1, -1, -1, 811, 3431 194, -1, -1, -1, -1, -1, -1, -1, -1, 1075, 3432 -1, -1, -1, -1, 826, -1, 1082, -1, -1, -1, 3433 108, -1, 110, -1, -1, -1, -1, -1, -1, -1, 3434 118, 36, 37, -1, 39, -1, -1, -1, -1, 1202, 3435 -1, -1, -1, -1, -1, 1111, -1, -1, -1, -1, 3436 1116, -1, -1, -1, -1, -1, -1, -1, 1124, -1, 3437 65, -1, -1, -1, -1, -1, 71, -1, 73, 74, 3438 75, -1, 266, 78, 79, 80, 81, 82, 83, -1, 3439 85, 86, -1, -1, -1, -1, -1, -1, 93, 1155, 3440 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3441 -1, 1167, -1, 108, 1170, 110, 1172, 112, 113, -1, 3442 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3443 1186, 1187, -1, -1, -1, -1, -1, -1, 322, -1, 3444 -1, -1, -1, -1, -1, 1298, 330, 331, -1, 333, 3445 334, -1, 1208, -1, -1, -1, -1, -1, -1, 343, 3446 -1, -1, -1, 347, -1, -1, -1, -1, -1, -1, 3447 -1, -1, -1, -1, -1, 977, -1, -1, -1, 1235, 3448 144, -1, 366, -1, -1, 369, -1, -1, -1, -1, 3449 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3450 -1, -1, 166, 167, -1, -1, 1008, -1, -1, -1, 3451 -1, -1, 396, -1, -1, -1, 400, -1, 1020, 4, 3452 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3453 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3454 25, 26, -1, -1, 29, 30, 31, 431, -1, -1, 3455 -1, -1, -1, 38, -1, -1, -1, -1, -1, 1061, 3456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3457 454, -1, -1, 237, -1, -1, 1332, -1, 1334, -1, 3458 -1, 66, -1, 68, -1, 70, -1, -1, 73, 74, 3459 -1, 1347, -1, 1349, -1, -1, -1, -1, 262, -1, 3460 -1, 485, -1, -1, 488, -1, -1, -1, -1, -1, 3461 -1, 1367, -1, -1, -1, -1, -1, -1, -1, -1, 3462 -1, -1, -1, -1, 109, 110, -1, 1383, 1384, -1, 3463 -1, 1133, -1, 118, -1, -1, -1, -1, -1, 1395, 3464 -1, -1, 1398, -1, 528, -1, -1, 531, 532, -1, 3465 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3466 -1, -1, -1, -1, 1420, -1, -1, -1, -1, -1, 3467 -1, -1, -1, 1429, -1, 1177, 1432, -1, 1434, 1435, 3468 1436, -1, -1, -1, -1, -1, -1, -1, -1, 1191, 3469 1192, -1, -1, 577, 578, -1, -1, -1, -1, -1, 3470 -1, 1554, -1, -1, -1, -1, -1, -1, -1, -1, 3471 -1, -1, 596, 597, 378, 599, -1, -1, -1, -1, 3472 1476, -1, 1478, -1, 608, 1481, 610, 611, -1, -1, 3473 -1, -1, -1, 617, -1, -1, -1, -1, -1, -1, 3474 1496, -1, -1, 627, 628, -1, -1, -1, -1, 633, 3475 -1, -1, -1, -1, -1, -1, -1, -1, 642, 643, 3476 644, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3477 -1, -1, -1, -1, -1, -1, -1, 661, -1, -1, 3478 -1, -1, 666, 667, -1, -1, 670, 671, -1, -1, 3479 -1, -1, -1, 677, -1, -1, -1, -1, -1, -1, 3480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3481 -1, 695, 696, 697, -1, 699, 480, -1, -1, 703, 3482 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3483 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3484 29, 30, 31, -1, -1, -1, -1, -1, -1, 38, 3485 -1, 735, 736, -1, -1, 519, -1, -1, -1, -1, 3486 -1, -1, -1, -1, -1, -1, -1, -1, 532, -1, 3487 -1, -1, -1, -1, -1, 539, -1, 66, 542, -1, 3488 -1, -1, -1, -1, 73, 74, -1, 771, 772, 553, 3489 554, -1, 776, 777, -1, -1, -1, -1, -1, 1401, 3490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3491 -1, 575, -1, -1, -1, -1, 1418, -1, -1, -1, 3492 -1, 585, -1, -1, -1, -1, -1, -1, 592, 118, 3493 -1, -1, -1, 597, 818, -1, -1, -1, -1, -1, 3494 -1, -1, -1, 827, -1, -1, -1, -1, -1, 833, 3495 834, -1, -1, -1, 838, -1, 840, -1, -1, -1, 3496 -1, -1, -1, -1, -1, -1, 850, -1, -1, -1, 3497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3498 -1, -1, -1, 647, -1, -1, -1, -1, -1, 1491, 3499 1492, -1, 656, -1, -1, -1, -1, -1, -1, 3, 3500 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3501 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3502 24, 25, 26, -1, -1, 29, 30, 31, 32, -1, 3503 -1, 35, 696, -1, 38, 39, -1, -1, -1, 923, 3504 -1, -1, -1, -1, -1, -1, -1, 931, 36, 37, 3505 -1, 39, -1, 937, -1, -1, -1, -1, -1, 63, 3506 -1, 945, 66, -1, 68, -1, 70, 71, -1, 73, 3507 74, 75, -1, -1, 958, 959, -1, 65, 82, 83, 3508 -1, -1, -1, 71, -1, -1, -1, 75, -1, -1, 3509 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3510 -1, 985, -1, -1, 108, 93, 110, 991, 772, -1, 3511 774, -1, -1, -1, 118, -1, 780, -1, -1, -1, 3512 108, -1, 110, 787, -1, 113, 1010, 1011, -1, 117, 3513 118, 119, 120, 121, 122, -1, 1020, -1, -1, -1, 3514 -1, -1, 1026, 1027, -1, 1029, 1030, 1031, -1, -1, 3515 -1, -1, -1, -1, -1, -1, -1, 1041, 1042, -1, 3516 -1, -1, -1, -1, -1, -1, -1, 831, 832, -1, 3517 834, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3518 -1, -1, -1, -1, -1, 849, -1, -1, -1, -1, 3519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3521 -1, -1, -1, -1, -1, -1, -1, -1, 1102, 1103, 3522 1104, -1, -1, -1, -1, 889, -1, -1, -1, 893, 3523 -1, 1115, -1, -1, -1, -1, 3, 4, 5, 6, 2394 3524 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2395 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2396 516, 26, 27, 28, 29, 0, 0, 30, 0, 0, 2397 31, 32, 0, 363, 0, 0, 0, 0, 996, 0, 2398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2399 0, 0, 0, 0, 0, 33, 0, 889, 34, 0, 2400 35, 0, 36, 37, 0, 38, 39, 40, 0, 0, 2401 0, 0, 1282, 1283, 41, 42, 0, 0, 0, 0, 2402 0, 0, 281, 282, 0, 283, 0, 0, 0, 0, 2403 0, 0, 516, 0, 0, 0, 0, 0, 0, 0, 2404 43, 0, 44, 0, 0, 0, -521, 0, 0, 0, 2405 45, 284, 0, 0, 0, 0, 0, 285, 0, 0, 2406 0, 286, 0, 413, 287, 288, 289, 290, 41, 42, 2407 0, 291, 292, 0, 0, 0, 516, 0, 0, 293, 2408 0, 0, 0, 0, 0, 0, 0, 0, 413, 413, 2409 516, 516, 0, 996, 294, 0, 378, 0, 0, 0, 2410 0, 781, 0, 296, 380, 298, 299, 300, 301, 0, 2411 0, 0, 0, 413, 0, 1, 2, 205, 4, 5, 3525 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3526 -1, -1, 29, 30, 31, 32, -1, -1, 35, 36, 3527 37, 38, 39, 40, -1, 42, 1160, -1, 45, 46, 3528 47, 48, 49, 50, 51, 52, -1, -1, -1, 56, 3529 -1, -1, -1, 60, 61, -1, 63, -1, 65, 66, 3530 -1, 68, -1, 70, 71, 969, 73, 74, 75, -1, 3531 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3532 -1, 985, 986, -1, -1, -1, 93, -1, 992, -1, 3533 -1, -1, 36, 37, 998, 39, 1220, 1001, -1, 1003, 3534 -1, 108, -1, 110, -1, -1, 113, -1, -1, -1, 3535 117, 118, 119, 120, 121, 122, 1240, -1, -1, 1023, 3536 127, 65, -1, -1, 131, -1, -1, 71, -1, -1, 3537 1034, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3538 -1, 85, 86, -1, -1, -1, -1, -1, -1, 93, 3539 -1, -1, 1056, -1, 1058, -1, -1, -1, -1, -1, 3540 -1, -1, -1, -1, 108, 1289, 1290, -1, -1, 1073, 3541 1074, -1, -1, 117, 118, 119, 120, 121, 122, -1, 3542 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543 1094, -1, -1, -1, -1, -1, -1, -1, 3, 4, 3544 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3545 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3546 25, 26, -1, -1, 29, 30, 31, 32, -1, -1, 3547 35, 36, 37, 38, 39, -1, -1, 1141, -1, -1, 3548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3549 36, 37, -1, 39, -1, -1, 1160, -1, -1, -1, 3550 65, 66, -1, 68, -1, 70, 71, -1, 73, 74, 3551 75, 1175, 1176, 78, 79, 80, 81, 82, 83, 65, 3552 85, 86, -1, -1, -1, 71, -1, -1, 93, 75, 3553 1414, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3554 86, -1, -1, 108, -1, 110, -1, 93, -1, -1, 3555 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3556 -1, -1, 108, -1, 110, -1, 131, -1, -1, -1, 3557 -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, 3558 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3559 -1, -1, 1256, -1, -1, -1, 3, 4, 5, 6, 3560 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3561 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3562 1504, -1, 29, 30, 31, 32, -1, -1, 35, 36, 3563 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 3564 -1, -1, -1, -1, -1, 1529, 1530, -1, -1, -1, 3565 -1, -1, -1, 1317, -1, 1319, -1, -1, 65, 66, 3566 -1, 68, -1, 70, 71, -1, 73, 74, 75, -1, 3567 1554, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3568 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3570 -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 3571 117, 118, 119, 120, 121, 122, -1, -1, 4, 5, 2412 3572 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2413 3573 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2414 0, 0, 26, 27, 28, 29, 0, 0, 30, 281, 2415 282, 31, 1062, 1063, 1390, 1064, 769, 0, 1065, 1066, 2416 1067, 1068, 1069, 1070, 1071, 1072, 0, 0, 0, 1073, 2417 0, 0, 0, 1074, 1075, 0, 33, 0, 284, 34, 2418 0, 35, 0, 36, 649, 0, 38, 39, 286, 0, 2419 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2420 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2422 0, 294, 0, 1076, 0, 0, 170, 0, 0, 0, 2423 296, 297, 298, 299, 300, 301, 0, 0, 0, 0, 2424 1077, 0, 1450, 0, -129, 0, 0, 0, 0, 0, 2425 1, 2, 205, 4, 5, 6, 7, 8, 9, 10, 3574 26, 1405, -1, 29, 30, 31, -1, -1, -1, -1, 3575 36, 37, 38, 39, -1, 10, 11, 12, 13, 14, 3576 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3577 25, 26, -1, -1, 29, 30, 31, -1, -1, 65, 3578 66, -1, 68, 38, 70, 71, -1, 73, 74, 75, 3579 -1, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3580 86, -1, -1, -1, -1, -1, -1, 93, -1, -1, 3581 -1, 66, -1, -1, -1, -1, 71, -1, 73, 74, 3582 -1, -1, 108, 1487, 110, -1, -1, 82, 83, 115, 3583 -1, 117, 118, 119, 120, 121, 122, 4, 5, 6, 3584 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3585 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3586 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3587 37, 38, 39, -1, -1, 1539, -1, 10, 11, 12, 3588 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3589 23, 24, 25, 26, 27, -1, -1, -1, 65, 66, 3590 -1, 68, -1, 70, 71, 38, 73, 74, 75, -1, 3591 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3592 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3593 -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 3594 -1, 108, -1, 110, 77, -1, -1, -1, 115, -1, 3595 117, 118, 119, 120, 121, 122, 4, 5, 6, 7, 3596 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3597 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3598 -1, 29, 30, 31, -1, -1, -1, -1, 36, 37, 3599 38, 39, -1, 10, 11, 12, 13, 14, 15, 16, 3600 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3601 -1, -1, 29, 30, 31, -1, -1, 65, 66, -1, 3602 68, 38, 70, 71, -1, 73, 74, 75, -1, -1, 3603 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3604 -1, -1, -1, -1, -1, 93, -1, -1, -1, 66, 3605 -1, -1, -1, -1, -1, -1, 73, 74, -1, -1, 3606 108, -1, 110, -1, -1, -1, -1, 115, -1, 117, 3607 118, 119, 120, 121, 122, 4, 5, 6, 7, 8, 3608 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3609 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3610 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3611 39, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3612 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3613 -1, 29, 30, 31, -1, -1, 65, 66, -1, 68, 3614 38, 70, 71, -1, 73, 74, 75, -1, -1, 78, 3615 79, 80, 81, 82, 83, -1, 85, 86, -1, -1, 3616 -1, -1, -1, -1, 93, -1, -1, -1, 66, -1, 3617 -1, -1, -1, -1, -1, 73, 74, -1, -1, 108, 3618 -1, 110, -1, -1, -1, -1, -1, -1, 117, 118, 3619 119, 120, 121, 122, 4, 5, 6, 7, 8, 9, 3620 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3621 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3622 30, 31, -1, -1, -1, -1, 36, 37, 38, 39, 3623 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3624 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3625 -1, -1, -1, -1, -1, 65, 66, -1, 68, 38, 3626 70, 71, -1, 73, 74, 75, -1, -1, 78, 79, 3627 80, 81, 82, 83, -1, 85, 86, -1, -1, -1, 3628 -1, -1, -1, 93, -1, -1, -1, 66, -1, -1, 3629 -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, 3630 110, -1, -1, -1, -1, -1, -1, 117, 118, 119, 3631 120, 121, 122, 4, 5, 6, 7, 8, 9, 10, 2426 3632 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2427 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2428 29, 0, 0, 30, 281, 282, 31, 283, 0, 0, 2429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2430 516, 0, 0, 281, 282, 0, 283, 0, 0, 0, 2431 0, 0, 0, 284, 34, 0, 35, 516, 36, 285, 2432 0, 38, 39, 286, 1516, 0, 287, 288, 289, 290, 2433 41, 42, 284, 291, 292, 0, 0, 0, 285, 0, 2434 0, 293, 286, 0, 0, 287, 288, 289, 290, 41, 2435 42, 0, 291, 292, 0, 0, 294, 0, 1076, 0, 2436 293, 0, 0, 0, 0, 296, 297, 298, 299, 300, 2437 301, 0, 0, 0, 0, 294, 321, 378, 0, -129, 2438 993, 0, 0, 0, 296, 380, 298, 299, 300, 301, 2439 516, 516, 1, 2, 205, 4, 5, 6, 7, 8, 2440 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2441 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2442 27, 28, 29, 0, 0, 30, 281, 282, 31, 283, 2443 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2444 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2445 26, 27, 28, 0, 0, 284, 34, 0, 35, 31, 2446 36, 285, 0, 38, 39, 286, 0, 0, 287, 288, 2447 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2448 0, 0, 0, 293, 0, 0, 0, 34, 0, 0, 2449 0, 0, 109, 0, 38, 39, 0, 0, 294, 0, 2450 44, 0, 0, 41, 42, 0, 0, 296, 297, 298, 2451 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2452 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2453 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2454 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2455 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2456 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2457 25, -294, 0, 0, 0, 284, 34, 0, 35, 0, 2458 36, 285, 31, 38, 39, 286, 0, 0, 287, 288, 2459 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2460 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 2461 34, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2462 343, -294, 0, 0, 0, 781, 0, 296, 344, 298, 2463 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2464 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2465 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2466 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2467 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2468 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2469 25, -295, 0, 0, 0, 284, 34, 0, 35, 0, 2470 36, 285, 31, 38, 39, 286, 0, 0, 287, 288, 2471 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2472 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 2473 34, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2474 931, -295, 0, 0, 0, 781, 0, 296, 344, 298, 2475 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2476 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2477 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2478 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2479 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2480 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2481 26, 27, 28, 0, 0, 284, 34, 0, 35, 31, 2482 36, 285, 0, 38, 39, 286, 0, 0, 287, 288, 2483 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2484 0, 0, 0, 293, 0, 0, 0, 34, 0, 0, 2485 0, 0, 0, 0, 38, 39, 0, 0, 294, 0, 2486 931, 0, 0, 0, 0, 781, 0, 296, 600, 298, 2487 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2488 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2489 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2490 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2491 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2492 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2493 26, 27, 28, 0, 0, 284, 34, 0, 35, 31, 2494 36, 285, 0, 38, 39, 286, 0, 0, 287, 288, 2495 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2496 0, 0, 0, 293, 0, 0, 0, 34, 0, 0, 2497 0, 0, 0, 0, 206, 39, 0, 0, 294, 0, 2498 343, 0, 0, 0, 0, 0, 0, 296, 344, 298, 2499 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2500 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2501 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2502 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2505 0, 0, 0, 0, 0, 284, 34, 0, 35, 0, 2506 36, 285, 0, 38, 39, 286, 0, 0, 287, 288, 2507 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2508 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 2509 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2510 931, 0, 0, 0, 0, 0, 0, 296, 344, 298, 2511 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2512 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2513 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2514 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2517 0, 0, 0, 0, 0, 284, 34, 0, 35, 0, 2518 36, 285, 0, 206, 39, 286, 0, 0, 287, 288, 2519 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2520 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 2521 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2522 1020, 0, 0, 0, 0, 0, 0, 296, 1021, 298, 2523 299, 300, 301, 2, 205, 4, 5, 6, 7, 8, 2524 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2525 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2526 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2527 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2528 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2529 26, 27, 28, 0, 0, 284, 34, 0, 35, 31, 2530 36, 285, 0, 206, 39, 286, 0, 0, 287, 288, 2531 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2532 0, 0, 0, 293, 0, 0, 0, 34, 0, 0, 2533 0, 0, 0, 0, 206, 39, 0, 0, 294, 0, 2534 378, 0, 0, 0, 0, 0, 0, 296, 380, 298, 2535 299, 300, 301, 204, 2, 205, 4, 5, 6, 7, 2536 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2537 18, 19, 20, 21, 22, 23, 24, 25, 0, 270, 2538 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2539 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2540 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2541 0, 26, 27, 28, 492, 493, 494, 34, 0, 35, 2542 31, 36, 37, 0, 206, 39, 40, 0, 0, 0, 2543 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 2544 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2545 0, 0, 0, 0, 0, 38, 39, 0, 0, 43, 2546 0, 207, 0, 0, 0, 0, 0, 0, 0, 208, 2547 1, 2, 205, 4, 5, 6, 7, 8, 9, 10, 3633 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3634 31, -1, -1, -1, -1, 36, 37, 38, 39, -1, 3635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3636 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3637 -1, -1, -1, -1, 65, 66, -1, 68, -1, 70, 3638 71, -1, 73, 74, 75, -1, -1, 78, 79, 80, 3639 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3640 -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 3641 -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, 3642 -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, 3643 121, 122, 4, 5, 6, 7, 8, 9, 10, 11, 3644 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3645 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3646 -1, -1, -1, -1, 36, 37, 38, 39, -1, -1, 3647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3649 -1, -1, -1, 65, 66, -1, 68, -1, 70, 71, 3650 -1, 73, 74, 75, -1, -1, 78, 79, 80, 81, 3651 82, 83, -1, 85, 86, -1, -1, -1, -1, -1, 3652 -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 3653 -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, 3654 -1, -1, -1, -1, -1, 117, 118, 119, 120, 121, 3655 122, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3656 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3657 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3658 32, -1, -1, 35, -1, -1, 38, 39, -1, -1, 3659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3661 -1, 63, -1, -1, 66, -1, 68, -1, 70, 71, 3662 -1, 73, 74, 75, -1, -1, -1, -1, -1, -1, 3663 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, 3664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, 3666 -1, -1, 114, -1, -1, -1, 118, 3, 4, 5, 3667 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3668 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3669 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3670 -1, -1, 38, 10, 11, 12, 13, 14, 15, 16, 3671 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3672 -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, 3673 66, 38, 68, -1, 70, 71, -1, 73, 74, 75, 3674 -1, -1, -1, -1, -1, -1, 82, 83, -1, -1, 3675 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3676 -1, -1, -1, -1, -1, -1, 73, 74, -1, -1, 3677 -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, 3678 -1, -1, 118, 3, 4, 5, 6, 7, 8, 9, 3679 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3680 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 3681 30, 31, 32, -1, -1, 35, -1, -1, 38, -1, 3682 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3684 -1, -1, -1, -1, -1, -1, 66, -1, 68, -1, 3685 70, -1, -1, 73, 74, -1, -1, 77, -1, 3, 3686 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3687 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3688 24, 25, 26, -1, -1, 29, 30, 31, 32, -1, 3689 110, 35, -1, -1, 38, -1, -1, -1, 118, -1, 3690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3692 -1, -1, 66, -1, 68, -1, 70, -1, -1, 73, 3693 74, -1, 3, 4, 5, 6, 7, 8, 9, 10, 2548 3694 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2549 21, 22, 23, 24, 25, -294, 0, 26, 27, 28, 2550 29, 0, 0, 30, 0, 0, 31, 0, 0, 0, 2551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2553 0, 0, 0, 0, 34, 0, 35, 0, 36, 0, 2554 0, 38, 39, 0, 0, -294, 1, 2, 205, 4, 3695 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3696 31, -1, -1, -1, -1, -1, 110, 38, -1, -1, 3697 -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, 3698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3699 -1, -1, -1, -1, -1, 66, -1, 68, -1, 70, 3700 -1, -1, 73, 74, 4, 5, 6, 7, 8, 9, 3701 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3702 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3703 30, 31, -1, -1, -1, -1, -1, -1, 38, 110, 3704 -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, 3705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3706 -1, -1, -1, -1, -1, -1, 66, -1, 68, -1, 3707 70, 71, -1, 73, 74, 75, -1, -1, -1, -1, 3708 -1, -1, 82, 83, -1, -1, 10, 11, 12, 13, 3709 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3710 24, 25, 26, -1, -1, 29, 30, 31, 108, -1, 3711 110, -1, -1, -1, 38, -1, -1, -1, 118, 4, 2555 3712 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2556 3713 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2557 25, 0, 0, 26, 27, 28, 29, 0, 44, 30, 2558 0, 0, 31, 0, 0, 0, 110, 0, 0, 0, 2559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2561 34, 0, 35, 0, 36, 0, 0, 38, 39, 204, 2562 2, 205, 4, 5, 6, 7, 8, 9, 10, 11, 2563 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2564 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2565 0, 0, 0, 0, 44, 31, 0, 0, 0, 0, 2566 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 2567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2568 0, 0, 0, 34, 0, 35, 0, 36, 0, 0, 2569 206, 39, 0, 2, 205, 4, 5, 6, 7, 8, 2570 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2571 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2572 27, 28, 0, 0, 0, 0, 0, 207, 31, 0, 2573 0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 2574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2575 0, 0, 0, 0, 0, 0, 34, 0, 35, 0, 2576 36, 37, 0, 206, 39, 40, 0, 0, 0, 0, 2577 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 2578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2579 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 2580 207, 0, 0, 0, 0, 0, 0, 0, 208, 2, 2581 205, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2582 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2583 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2584 0, 0, 0, 0, 31, 0, 0, 0, 0, 8, 2585 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2586 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2587 27, 28, 34, 0, 35, 0, 36, 0, 31, 38, 2588 39, 0, 2, 205, 4, 5, 6, 7, 8, 9, 3714 25, 26, 66, -1, 29, 30, 31, 71, -1, 73, 3715 74, 75, -1, 38, -1, -1, -1, -1, 82, 83, 3716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3717 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3718 -1, 66, -1, 68, 108, 70, 110, -1, 73, 74, 3719 -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, 3720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3721 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3722 -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, 3723 -1, -1, -1, 118, 4, 5, 6, 7, 8, 9, 2589 3724 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2590 20, 21, 22, 23, 24, 25, 34, 0, 26, 27, 2591 28, 0, 0, 38, 39, -400, 687, 31, 0, 0, 2592 0, 0, 0, 0, 634, 0, 0, 0, 0, 0, 2593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2594 0, 0, 0, 0, 0, 34, 0, 35, 643, 36, 2595 338, 0, 38, 39, 0, 0, 0, 0, 110, 0, 2596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2597 0, 0, 0, 0, 1369, 0, 0, 0, 0, 0, 2598 0, 0, 0, 0, 0, 0, 0, 0, 0, 687, 2599 0, 0, 0, 0, 0, 0, 0, 634, 2, 205, 3725 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3726 30, 31, -1, -1, -1, -1, -1, -1, 38, -1, 3727 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3728 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3729 -1, -1, 29, 30, 31, -1, 66, -1, 68, -1, 3730 70, 38, -1, 73, 74, -1, -1, -1, -1, -1, 3731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3732 -1, -1, -1, -1, -1, 95, -1, -1, -1, 66, 3733 -1, -1, -1, -1, 71, -1, 73, 74, 75, -1, 3734 110, -1, -1, -1, -1, 82, 83, -1, 118, 4, 3735 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3736 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3737 25, 26, -1, 110, 29, 30, 31, -1, -1, -1, 3738 -1, 118, -1, 38, -1, -1, -1, -1, -1, -1, 3739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3741 -1, 66, -1, 68, -1, 70, -1, -1, 73, 74, 2600 3742 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2601 3743 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2602 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2603 0, 0, 0, 31, 0, 0, 0, 0, 8, 9, 3744 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3745 -1, -1, -1, -1, 38, 110, -1, -1, -1, -1, 3746 -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 3747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3748 -1, -1, 66, -1, 68, -1, 70, -1, -1, 73, 3749 74, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3750 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3751 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3752 -1, -1, -1, -1, -1, 38, 110, -1, -1, -1, 3753 -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, 3754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3755 -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, 3756 73, 74, 4, 5, 6, 7, 8, 9, 10, 11, 3757 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3758 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3759 -1, -1, -1, -1, -1, -1, 38, 110, -1, -1, 3760 -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, 3761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3762 -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, 3763 -1, 73, 74, 10, 11, 12, 13, 14, 15, 16, 3764 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3765 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3766 37, 38, 39, -1, -1, -1, -1, -1, 110, -1, 3767 -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, 3768 -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 3769 -1, -1, -1, -1, 71, -1, 73, 74, 75, -1, 3770 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3771 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3773 -1, 108, -1, 110, -1, -1, 113, -1, -1, -1, 3774 117, 118, 119, 120, 121, 122, 10, 11, 12, 13, 3775 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3776 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3777 -1, -1, 36, 37, 38, 39, 10, 11, 12, 13, 3778 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3779 24, 25, 26, 27, -1, 29, 30, 31, -1, -1, 3780 -1, 65, 66, -1, 38, -1, -1, 71, -1, 73, 3781 74, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3782 -1, 85, 86, -1, -1, -1, -1, -1, -1, 93, 3783 -1, -1, 66, -1, -1, -1, -1, 71, -1, 73, 3784 74, 75, -1, 77, 108, -1, 110, 111, 82, 83, 3785 -1, -1, -1, 117, 118, 119, 120, 121, 122, 10, 3786 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3787 21, 22, 23, 24, 25, 26, 110, -1, 29, 30, 3788 31, -1, -1, -1, 118, 36, 37, 38, 39, 10, 3789 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3790 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3791 31, -1, -1, -1, 65, 66, -1, 38, -1, -1, 3792 71, -1, 73, 74, 75, -1, -1, 78, 79, 80, 3793 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3794 -1, -1, 93, -1, -1, 66, -1, -1, -1, -1, 3795 71, -1, 73, 74, -1, -1, -1, 108, 109, 110, 3796 -1, 82, 83, -1, -1, -1, 117, 118, 119, 120, 3797 121, 122, 10, 11, 12, 13, 14, 15, 16, 17, 3798 18, 19, 20, 21, 22, 23, 24, 25, 26, 110, 3799 -1, 29, 30, 31, -1, -1, -1, 118, 36, 37, 3800 38, 39, 10, 11, 12, 13, 14, 15, 16, 17, 3801 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3802 -1, 29, 30, 31, -1, -1, -1, 65, 66, -1, 3803 38, 39, -1, 71, -1, 73, 74, 75, -1, -1, 3804 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3805 -1, -1, -1, -1, -1, 93, -1, -1, 66, -1, 3806 -1, -1, -1, -1, -1, 73, 74, -1, -1, -1, 3807 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, 3808 118, 119, 120, 121, 122, 10, 11, 12, 13, 14, 3809 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3810 25, 26, 110, -1, 29, 30, 31, -1, -1, -1, 3811 118, 36, 37, 38, 39, -1, -1, -1, -1, -1, 3812 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3813 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3814 65, 66, 29, 30, 31, -1, 71, -1, 73, 74, 3815 75, 38, -1, 78, 79, 80, 81, 82, 83, -1, 3816 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, 3817 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3818 -1, -1, -1, 108, -1, 110, 73, 74, -1, -1, 3819 -1, -1, 117, 118, 119, 120, 121, 122, 10, 11, 3820 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3821 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3822 -1, 108, -1, 110, 36, 37, 38, 39, -1, -1, 3823 -1, 118, -1, -1, -1, -1, 10, 11, 12, 13, 3824 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3825 24, 25, 26, 65, 66, 29, 30, 31, -1, 71, 3826 -1, 73, 74, 75, 38, -1, 78, 79, 80, 81, 3827 82, 83, -1, 85, 86, -1, -1, -1, -1, -1, 3828 -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 3829 -1, -1, 66, -1, -1, -1, 108, -1, 110, 73, 3830 74, -1, -1, -1, -1, 117, 118, 119, 120, 121, 3831 122, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3832 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3833 29, 30, 31, -1, 108, -1, 110, 36, 37, 38, 3834 39, -1, -1, -1, 118, -1, -1, -1, -1, 10, 3835 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3836 21, 22, 23, 24, 25, 26, 65, 66, 29, 30, 3837 31, -1, 71, -1, 73, 74, 75, 38, 39, 78, 3838 79, 80, 81, 82, 83, -1, 85, 86, -1, -1, 3839 -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, 3840 -1, -1, -1, -1, -1, 66, -1, -1, -1, 108, 3841 -1, 110, 73, 74, -1, -1, -1, -1, 117, 118, 3842 119, 120, 121, 122, 3, 4, 5, 6, 7, 8, 3843 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3844 19, 20, 21, 22, 23, 24, 25, 26, -1, 110, 3845 29, 30, 31, 114, -1, -1, -1, 118, -1, 38, 2604 3846 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2605 20, 21, 22, 23, 24, 25, -294, 0, 26, 27, 2606 28, 34, 0, 35, 0, 36, 0, 31, 38, 39, 2607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2609 1371, 0, 0, 0, 0, 34, 0, 0, 0, 0, 2610 37, 0, 336, 337, 40, 687, -294, 0, 0, 0, 2611 0, 41, 42, 634, 2, 205, 4, 5, 6, 7, 2612 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2613 18, 19, 20, 21, 22, 23, 24, 25, 0, 338, 2614 26, 27, 28, 0, 0, 0, 0, 110, 0, 31, 2615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 2618 0, 36, 0, 0, 206, 39, 0, 2, 205, 4, 3847 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3848 30, 31, -1, -1, -1, -1, -1, 66, 38, 68, 3849 -1, 70, -1, -1, 73, 74, -1, -1, 10, 11, 3850 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3851 22, 23, 24, 25, 26, -1, 66, 29, 30, 31, 3852 -1, 71, -1, 73, 74, 75, 38, -1, -1, -1, 3853 -1, -1, 82, 83, 113, -1, 10, 11, 12, 13, 3854 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3855 24, 25, 26, -1, 66, 29, 30, 31, 108, 71, 3856 110, 73, 74, 75, 38, -1, -1, -1, 118, -1, 3857 82, 83, -1, -1, 10, 11, 12, 13, 14, 15, 3858 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3859 26, -1, 66, 29, 30, 31, 108, -1, 110, 73, 3860 74, -1, 38, -1, -1, -1, 118, 10, 11, 12, 3861 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3862 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3863 66, -1, -1, -1, -1, 38, 110, 73, 74, -1, 3864 -1, -1, -1, -1, 118, 10, 11, 12, 13, 14, 3865 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3866 25, 26, -1, 66, 29, 30, 31, -1, -1, -1, 3867 73, 74, -1, 38, 110, -1, -1, -1, -1, -1, 3868 -1, -1, 118, 10, 11, 12, 13, 14, 15, 16, 3869 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3870 -1, 66, 29, 30, 31, -1, -1, 110, 73, 74, 3871 -1, 38, -1, -1, -1, 118, 10, 11, 12, 13, 3872 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3873 24, 25, 26, -1, -1, 29, 30, 31, -1, 66, 3874 -1, -1, -1, -1, 38, 110, 73, 74, -1, -1, 3875 -1, -1, -1, 118, 10, 11, 12, 13, 14, 15, 3876 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3877 26, -1, 66, 29, 30, 31, -1, -1, -1, 73, 3878 74, -1, 38, 110, -1, -1, -1, -1, -1, -1, 3879 -1, 118, 10, 11, 12, 13, 14, 15, 16, 17, 3880 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3881 66, 29, 30, 31, -1, -1, 110, 73, 74, -1, 3882 38, -1, -1, -1, 118, 10, 11, 12, 13, 14, 3883 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3884 25, 26, -1, -1, 29, 30, 31, -1, 66, -1, 3885 -1, -1, -1, 38, 110, 73, 74, -1, -1, -1, 3886 -1, -1, 118, 10, 11, 12, 13, 14, 15, 16, 3887 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3888 -1, 66, 29, 30, 31, -1, -1, -1, 73, 74, 3889 -1, 38, 110, -1, -1, -1, -1, -1, -1, -1, 3890 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3891 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3892 -1, -1, -1, -1, -1, 110, 73, 74, -1, -1, 3893 -1, -1, -1, 118, 4, 5, 6, 7, 8, 9, 3894 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3895 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3896 30, 31, -1, 110, -1, -1, -1, -1, 38, -1, 3897 -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 3898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3899 -1, -1, -1, -1, -1, -1, 66, -1, 68, -1, 3900 70, -1, -1, 73, 74, 36, 37, -1, 39, 40, 3901 -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, 3902 51, 52, -1, -1, 55, 56, -1, -1, -1, 60, 3903 61, -1, 63, -1, 65, -1, -1, -1, -1, 109, 3904 71, -1, -1, -1, 75, -1, -1, 78, 79, 80, 3905 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3906 -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 3907 -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, 3908 -1, -1, 113, -1, -1, -1, 117, 118, 119, 120, 3909 121, 122, -1, -1, -1, -1, 127, -1, 36, 37, 3910 131, 39, 40, -1, 42, -1, -1, 45, 46, 47, 3911 48, 49, 50, 51, 52, -1, -1, -1, 56, -1, 3912 -1, -1, 60, 61, -1, 63, -1, 65, -1, -1, 3913 -1, -1, -1, 71, -1, -1, -1, 75, -1, -1, 3914 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3915 -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, 3916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3917 108, -1, 110, -1, -1, 113, -1, -1, -1, 117, 3918 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, 3919 -1, 36, 37, 131, 39, 40, -1, 42, 43, 44, 3920 45, 46, 47, 48, 49, 50, 51, 52, -1, -1, 3921 55, 56, -1, -1, -1, 60, 61, -1, 63, -1, 3922 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, 3923 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 3924 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, 3925 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3926 -1, -1, -1, 108, -1, 110, -1, -1, 113, -1, 3927 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3928 36, 37, 127, 39, 40, -1, 42, 43, 44, 45, 3929 46, 47, 48, 49, 50, 51, 52, -1, -1, -1, 3930 56, -1, -1, -1, 60, 61, -1, 63, -1, 65, 3931 -1, -1, -1, -1, -1, 71, -1, -1, -1, 75, 3932 -1, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3933 86, -1, -1, -1, -1, -1, -1, 93, -1, -1, 3934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3935 -1, -1, 108, -1, 110, -1, -1, 113, -1, -1, 3936 -1, 117, 118, 119, 120, 121, 122, -1, -1, 36, 3937 37, 127, 39, 40, -1, 42, -1, -1, 45, 46, 3938 47, 48, 49, 50, 51, 52, -1, -1, -1, 56, 3939 -1, -1, -1, 60, 61, -1, 63, -1, 65, -1, 3940 -1, -1, -1, -1, 71, -1, -1, -1, 75, -1, 3941 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3942 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3944 -1, 108, -1, 110, -1, -1, 113, -1, -1, -1, 3945 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, 3946 127, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3947 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3948 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3949 -1, -1, -1, -1, -1, 38, -1, 36, 37, -1, 3950 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3951 -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 3952 -1, -1, -1, 66, -1, 68, 65, 70, -1, -1, 3953 73, 74, 71, -1, -1, -1, 75, -1, -1, 78, 3954 79, 80, 81, 82, 83, 65, 85, 86, -1, -1, 3955 -1, 71, 95, -1, 93, 75, -1, -1, 78, 79, 3956 80, 81, 82, 83, -1, 85, 86, -1, -1, 108, 3957 -1, 110, -1, 93, 36, 37, -1, 39, 117, 118, 3958 119, 120, 121, 122, -1, -1, -1, -1, 108, -1, 3959 110, -1, -1, 36, 37, -1, 39, 117, 118, 119, 3960 120, 121, 122, 65, -1, -1, -1, -1, -1, 71, 3961 -1, -1, -1, 75, -1, -1, 78, 79, 80, 81, 3962 82, 83, 65, 85, 86, -1, -1, -1, 71, -1, 3963 -1, 93, 75, -1, -1, 78, 79, 80, 81, 82, 3964 83, -1, 85, 86, -1, -1, 108, -1, 110, -1, 3965 93, 36, 37, -1, 39, 117, 118, 119, 120, 121, 3966 122, -1, -1, -1, -1, 108, -1, -1, -1, -1, 3967 -1, -1, -1, -1, 117, 118, 119, 120, 121, 122, 3968 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, 3969 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 3970 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, 3971 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3972 -1, -1, -1, 108, -1, -1, -1, -1, -1, -1, 3973 -1, -1, 117, 118, 119, 120, 121, 122, 4, 5, 3974 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3975 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3976 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3977 -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, 3978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3980 66, -1, 68, -1, 70, 71, -1, 73, 74, 75, 3981 -1, -1, -1, -1, -1, -1, 82, 83, 3, 4, 2619 3982 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2620 3983 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2621 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2622 0, 269, 31, 0, 0, 0, 0, 0, 0, 629, 2623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2625 34, 0, 35, 0, 36, 0, 0, 38, 39, 0, 2626 2, 205, 4, 5, 6, 7, 8, 9, 10, 11, 2627 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2628 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2629 0, 0, 0, 0, 687, 31, 0, 0, 0, 0, 2630 0, 0, 634, 0, 0, 0, 0, 0, 0, 0, 2631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2632 0, 0, 0, 34, 0, 35, 0, 36, 0, 0, 2633 38, 39, 0, 2, 205, 4, 5, 6, 7, 8, 2634 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2635 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2636 27, 28, 0, 0, 0, 0, 0, 599, 31, 0, 2637 0, 0, 0, 0, 0, 634, 0, 0, 0, 0, 2638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639 0, 0, 0, 0, 0, 0, 34, 0, 35, 0, 2640 36, 0, 0, 206, 39, 8, 9, 10, 11, 12, 2641 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2642 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2643 0, 0, 281, 282, 31, 283, 0, 0, 0, 0, 2644 207, 0, 0, 0, 0, 0, 0, 0, 270, 0, 2645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646 0, 284, 34, 0, 0, 0, 0, 285, 0, 38, 2647 39, 286, 0, 0, 287, 288, 289, 290, 41, 42, 2648 0, 291, 292, 0, 0, 0, 0, 0, 0, 293, 2649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2650 0, 0, 0, 0, 294, 0, 525, 0, 0, 170, 2651 0, 0, 0, 296, 297, 298, 299, 300, 301, 8, 2652 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2653 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2654 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2655 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2656 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2657 26, 27, 28, 0, 0, 284, 34, 0, 0, 31, 2658 0, 285, 0, 38, 39, 286, 0, 0, 287, 288, 2659 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2660 0, 0, 0, 293, 0, 0, 0, 34, 0, 0, 2661 0, 0, 37, 0, 336, 337, 40, 0, 294, 0, 2662 599, -3, 0, 41, 42, 0, 0, 296, 600, 298, 2663 299, 300, 301, 8, 9, 10, 11, 12, 13, 14, 2664 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2665 25, 338, 0, 26, 27, 28, 0, 0, 0, 110, 2666 281, 282, 31, 283, 8, 9, 10, 11, 12, 13, 2667 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2668 24, 25, 0, 0, 26, 27, 28, 0, 0, 284, 2669 34, 0, 0, 31, 453, 649, 0, 38, 39, 286, 2670 0, 0, 287, 288, 289, 290, 41, 42, 0, 291, 2671 292, 0, 0, 0, 0, 0, 0, 293, 0, 0, 2672 0, 34, 0, 0, 0, 0, 0, 0, 38, 39, 2673 0, 0, 294, -35, 766, 0, 0, 0, 0, 0, 2674 0, 296, 297, 298, 299, 300, 301, 8, 9, 10, 2675 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2676 21, 22, 23, 24, 25, 454, 0, 26, 27, 28, 2677 0, 0, 0, 110, 281, 282, 31, 283, 0, 0, 2678 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 2679 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2680 23, 24, 25, 284, 34, 26, 27, 28, 0, 285, 2681 0, 38, 39, 286, 31, 0, 287, 288, 289, 290, 2682 41, 42, 0, 291, 292, 0, 0, 0, 0, 0, 2683 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, 2684 0, 0, 34, 0, 0, 0, 294, 0, 295, 38, 2685 39, 0, 0, 0, 0, 296, 297, 298, 299, 300, 2686 301, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2687 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2688 0, 26, 27, 28, 643, 0, 338, 0, 281, 282, 2689 31, 283, 0, 0, 634, 0, 0, 0, 0, 8, 2690 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2691 19, 20, 21, 22, 23, 24, 25, 284, 34, 26, 2692 27, 28, 0, 285, 0, 38, 39, 286, 31, 0, 2693 287, 288, 289, 290, 41, 42, 0, 291, 292, 0, 2694 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, 2695 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 2696 294, 0, 156, 38, 39, 0, 0, 0, 0, 296, 2697 297, 298, 299, 300, 301, 8, 9, 10, 11, 12, 2698 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2699 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2700 256, 0, 281, 282, 31, 283, 0, 0, 110, 0, 2701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2703 0, 284, 34, 0, 0, 0, 0, 285, 0, 38, 2704 39, 286, 0, 0, 287, 288, 289, 290, 41, 42, 2705 0, 291, 292, 0, 0, 0, 0, 0, 0, 293, 2706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2707 0, 0, 0, 0, 294, 0, 599, 0, 0, 0, 2708 0, 0, 0, 296, 600, 298, 299, 300, 301, 8, 2709 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2710 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2711 27, 28, 0, 0, 0, 0, 281, 282, 31, 283, 2712 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2713 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2714 26, 27, 28, 0, 0, 284, 34, 0, 0, 31, 2715 0, 285, 0, 38, 39, 286, 0, 0, 287, 288, 2716 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2717 0, 0, 0, 293, 0, 0, 0, 34, 0, 0, 2718 0, 0, 37, 0, 38, 39, 40, 0, 294, 0, 2719 378, 0, 0, 41, 42, 0, 0, 296, 380, 298, 2720 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 2721 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 2722 0, 44, 0, 0, 0, 0, 0, 0, 0, 45, 2723 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2724 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2725 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2726 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2727 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2728 26, 27, 28, 0, 0, 0, 0, 34, 0, 31, 2729 0, 0, 37, 0, 206, 39, 40, 0, 0, 0, 2730 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 2731 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 2732 0, 0, 37, 0, 336, 337, 40, 0, 0, 43, 2733 0, 269, 0, 41, 42, 0, 0, 0, 0, 208, 2734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2735 0, 0, 0, 0, 0, 0, 0, 0, 0, 643, 2736 0, 338, 0, 0, 0, 0, 0, 0, 0, 634, 2737 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2738 18, 19, 20, 21, 22, 23, 24, 25, -294, 0, 2739 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2740 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2741 18, 19, 20, 21, 22, 23, 24, 25, -294, 0, 2742 26, 27, 28, 0, 0, 0, 0, 34, 0, 31, 2743 0, 0, 0, 0, 38, 39, 0, 0, -294, 0, 2744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2745 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 2746 0, 0, 0, 0, 38, 39, 0, 0, -294, 643, 2747 0, 338, 0, 0, 0, 0, 0, 0, 0, 110, 2748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2749 0, 0, 0, 0, 0, 0, 0, 0, 0, 643, 2750 0, 338, 0, 0, 0, 0, 0, 0, 0, 634, 2751 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2752 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2753 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2754 453, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2755 17, 18, 19, 20, 21, 22, 23, 24, 25, -294, 2756 0, 26, 27, 28, 0, 0, 0, 34, 0, 0, 2757 31, 0, 0, 0, 38, 39, 0, 0, 0, 0, 2758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2759 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2760 0, 0, 0, 0, 0, 38, 39, 0, 0, -294, 2761 0, 454, 0, 0, 0, 947, 0, 0, 0, 110, 2762 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2763 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2764 25, 0, 338, 26, 27, 28, 0, 0, 0, 0, 2765 110, 0, 31, 453, 8, 9, 10, 11, 12, 13, 2766 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2767 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2768 34, 0, 0, 31, 0, 0, 0, 38, 39, 0, 2769 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2770 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2771 0, 34, 26, 27, 28, 0, 0, 0, 38, 39, 2772 0, 31, 0, 0, 454, 0, 0, 0, 1235, 0, 2773 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 2774 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2775 0, 0, 0, 0, 0, 156, 206, 39, 0, 0, 2776 0, 0, 0, 110, 0, 8, 9, 10, 11, 12, 2777 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2778 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2779 0, 0, 0, 269, 31, 0, 0, 0, 0, 0, 2780 0, 270, 0, 8, 9, 10, 11, 12, 13, 14, 2781 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2782 25, 0, 34, 26, 27, 28, 0, 0, 0, 38, 2783 39, 0, 31, 8, 9, 10, 11, 12, 13, 14, 2784 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2785 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2786 34, 0, 31, 0, 0, 0, 256, 38, 39, 0, 2787 0, 0, 0, 0, 634, 0, 0, 0, 0, 0, 2788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2789 34, 0, 0, 0, 0, 0, 0, 38, 39, 0, 2790 0, 0, 0, 0, 338, 0, 0, 0, 0, 0, 2791 0, 0, 634, 0, 0, 8, 9, 10, 11, 12, 2792 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2793 23, 24, 25, 0, 454, 26, 27, 28, 0, 0, 2794 0, 0, 110, 0, 31, 8, 9, 10, 11, 12, 2795 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2796 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2797 0, 0, 34, 0, 31, 0, 0, 0, 0, 206, 2798 39, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2799 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2800 25, 0, 34, 26, 27, 28, 0, 0, 0, 38, 2801 39, 0, 31, 0, 0, 0, 269, 0, 0, 0, 2802 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 2803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2804 34, 0, 0, 0, 0, 0, 599, 38, 39, 0, 2805 0, 0, 0, 0, 634, 0, 8, 9, 10, 11, 2806 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2807 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2808 0, 0, 0, 0, 338, 31, 0, 0, 0, 0, 2809 0, 0, 110, 0, 8, 9, 10, 11, 12, 13, 2810 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2811 24, 25, 0, 34, 26, 27, 28, 0, 0, 0, 2812 38, 39, 0, 31, 0, 0, 2, 205, 4, 5, 2813 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2814 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2815 0, 34, 26, 27, 28, 0, 0, 44, 206, 39, 2816 0, 31, 0, 281, 282, 110, 283, 1063, 0, 1064, 2817 0, 0, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 2818 0, 0, 1549, 1073, 0, 0, 0, 1074, 1075, 34, 2819 33, 35, 284, 36, 0, 0, 38, 39, 649, 0, 2820 0, 0, 286, 629, 0, 287, 288, 289, 290, 41, 2821 42, 0, 291, 292, 0, 0, 0, 0, 0, 0, 2822 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2823 0, 0, -413, 0, 0, 294, 0, 378, 0, 0, 2824 170, 0, 0, 0, 296, 380, 298, 299, 300, 301, 2825 0, 0, 0, 0, 1077, 0, 281, 282, -129, 283, 2826 1063, 0, 1064, 0, 0, 1065, 1066, 1067, 1068, 1069, 2827 1070, 1071, 1072, 0, 0, 0, 1073, 0, 0, 0, 2828 1074, 1075, 0, 33, 0, 284, 0, 0, 0, 0, 2829 0, 649, 0, 0, 0, 286, 0, 0, 287, 288, 2830 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2831 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 2832 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2833 378, 0, 0, 170, 0, 0, 0, 296, 380, 298, 2834 299, 300, 301, 0, 0, 0, 0, 1077, 0, 0, 2835 0, -129, 2, 205, 4, 5, 6, 7, 8, 9, 2836 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2837 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2838 28, 0, 0, 0, 0, 0, 0, 31, 0, 281, 2839 282, 0, 283, 1063, 0, 1064, 1419, 1420, 1065, 1066, 2840 1067, 1068, 1069, 1070, 1071, 1072, 0, 0, 1549, 1073, 2841 0, 0, 0, 1074, 1075, 34, 33, 35, 284, 36, 2842 0, 0, 38, 39, 649, 0, 0, 0, 286, 0, 2843 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2844 0, 0, 0, 0, 1328, 0, 293, 0, 0, 0, 2845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2846 0, 294, 0, 378, 0, 0, 170, 0, 0, 0, 2847 296, 380, 298, 299, 300, 301, 0, 0, 281, 282, 2848 1077, 283, 1063, 0, 1064, 1419, 1420, 1065, 1066, 1067, 2849 1068, 1069, 1070, 1071, 1072, 0, 0, 0, 1073, 0, 2850 0, 0, 1074, 1075, 0, 33, 0, 284, 0, 0, 2851 0, 0, 0, 649, 0, 0, 0, 286, 0, 0, 2852 287, 288, 289, 290, 41, 42, 0, 291, 292, 0, 2853 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, 2854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2855 294, 0, 378, 0, 0, 170, 0, 0, 0, 296, 2856 380, 298, 299, 300, 301, 0, 0, 281, 282, 1077, 2857 283, 1063, 0, 1064, 0, 0, 1065, 1066, 1067, 1068, 2858 1069, 1070, 1071, 1072, 0, 0, 0, 1073, 0, 0, 2859 0, 1074, 1075, 0, 33, 0, 284, 0, 0, 0, 2860 0, 0, 649, 0, 0, 0, 286, 0, 0, 287, 2861 288, 289, 290, 41, 42, 0, 291, 292, 0, 0, 2862 0, 0, 0, 0, 293, 281, 282, 0, 283, 0, 2863 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 2864 0, 378, 0, 0, 170, 0, 0, 0, 296, 380, 2865 298, 299, 300, 301, 284, 0, 0, 0, 1077, 0, 2866 285, 0, 0, 0, 286, 0, 0, 287, 288, 289, 2867 290, 41, 42, 0, 291, 292, 0, 0, 0, 0, 2868 0, 0, 293, 281, 282, 0, 283, 0, 0, 0, 2869 0, 0, 0, 0, 0, 0, 0, 294, 0, 378, 2870 0, 0, 281, 282, 0, 283, 296, 380, 298, 299, 2871 300, 301, 284, 0, 0, 0, 0, 0, 285, 0, 2872 0, 0, 286, 0, 0, 287, 288, 289, 290, 41, 2873 42, 284, 291, 292, 0, 0, 0, 649, 0, 0, 2874 293, 286, 0, 0, 287, 288, 289, 290, 41, 42, 2875 0, 291, 292, 0, 0, 294, 0, 378, 0, 293, 2876 281, 282, 0, 283, 296, 734, 298, 299, 300, 301, 2877 0, 0, 0, 0, 294, 0, 785, 0, 0, 281, 2878 282, 0, 283, 296, 380, 298, 299, 300, 301, 284, 2879 0, 0, 0, 0, 0, 285, 0, 0, 0, 286, 2880 0, 0, 287, 288, 289, 290, 41, 42, 284, 291, 2881 292, 0, 0, 0, 285, 0, 0, 293, 286, 0, 2882 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2883 0, 0, 294, 0, 378, 0, 293, 281, 282, 0, 2884 283, 296, 827, 298, 299, 300, 301, 0, 0, 0, 2885 0, 294, 0, 0, 0, 0, 281, 282, 0, 283, 2886 296, 380, 298, 299, 300, 301, 284, 0, 0, 0, 2887 0, 0, 285, 0, 0, 0, 286, 0, 0, 287, 2888 288, 289, 290, 41, 42, 284, 291, 292, 0, 0, 2889 0, 285, 0, 0, 293, 286, 0, 0, 287, 288, 2890 289, 290, 41, 42, 0, 291, 292, 0, 0, 518, 2891 0, 0, 0, 293, 0, 0, 0, 0, 296, 380, 2892 298, 299, 300, 301, 0, 0, 0, 0, 521, 0, 2893 0, 0, 0, 0, 0, 0, 0, 296, 380, 298, 2894 299, 300, 301, 204, 2, 205, 4, 5, 6, 7, 2895 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2896 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2897 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2900 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 2901 0, 36, 0, 0, 206, 39, 474, 2, 205, 4, 2902 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2903 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2904 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2905 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 2906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2908 34, 0, 35, 0, 36, 0, 0, 38, 39, 2, 2909 205, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2910 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2911 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2912 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 2913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2915 0, 0, 34, 0, 35, 0, 36, 0, 0, 206, 2916 39 2917 }; 2918 2919 #define yypact_value_is_default(yystate) \ 2920 ((yystate) == (-1356)) 2921 2922 #define yytable_value_is_error(yytable_value) \ 2923 YYID (0) 2924 2925 static const yytype_int16 yycheck[] = 2926 { 2927 0, 1, 0, 184, 43, 698, 115, 184, 43, 184, 2928 43, 238, 55, 698, 1, 167, 168, 698, 104, 203, 2929 543, 294, 184, 455, 185, 218, 280, 278, 456, 29, 2930 30, 656, 32, 184, 32, 348, 611, 184, 520, 185, 2931 759, 611, 1, 43, 184, 45, 1006, 45, 186, 629, 2932 499, 579, 609, 0, 503, 55, 902, 999, 462, 1042, 2933 1043, 61, 105, 61, 64, 108, 64, 67, 154, 67, 2934 902, 348, 780, 43, 43, 609, 609, 32, 39, 51, 2935 67, 81, 82, 264, 777, 32, 1419, 264, 609, 264, 2936 1338, 200, 777, 609, 28, 1055, 777, 529, 723, 63, 2937 95, 1062, 264, 609, 265, 105, 699, 39, 108, 110, 2938 417, 82, 43, 264, 699, 115, 117, 264, 109, 265, 2939 1475, 497, 260, 261, 264, 609, 64, 363, 721, 82, 2940 437, 367, 39, 0, 612, 130, 721, 109, 445, 110, 2941 618, 1074, 1075, 344, 78, 184, 146, 82, 146, 184, 2942 111, 184, 425, 426, 154, 1510, 0, 1512, 111, 159, 2943 1493, 159, 1043, 425, 426, 32, 107, 227, 132, 0, 2944 1, 109, 109, 109, 217, 111, 255, 109, 39, 111, 2945 0, 1, 283, 119, 184, 185, 246, 185, 32, 0, 2946 131, 39, 0, 1441, 72, 296, 297, 64, 44, 45, 2947 200, 32, 109, 39, 111, 83, 84, 308, 208, 1142, 2948 208, 680, 32, 39, 184, 184, 409, 217, 495, 812, 2949 220, 32, 220, 744, 32, 264, 110, 227, 271, 264, 2950 1062, 264, 116, 64, 109, 278, 67, 613, 744, 501, 2951 513, 617, 242, 344, 405, 518, 246, 67, 521, 11, 2952 250, 251, 250, 184, 132, 341, 131, 511, 520, 405, 2953 744, 109, 638, 111, 264, 265, 642, 265, 0, 115, 2954 109, 271, 111, 109, 109, 111, 851, 45, 278, 380, 2955 119, 851, 839, 109, 370, 111, 395, 82, 489, 110, 2956 718, 819, 251, 293, 455, 250, 117, 890, 611, 85, 2957 32, 1009, 575, 250, 347, 839, 839, 1290, 1291, 455, 2958 45, 43, 82, 45, 423, 1257, 44, 45, 839, 112, 2959 429, 364, 117, 839, 586, 368, 487, 113, 328, 61, 2960 328, 114, 64, 839, 293, 67, 116, 82, 417, 109, 2961 96, 487, 110, 1304, 3, 112, 815, 347, 348, 116, 2962 44, 45, 1071, 220, 3, 839, 825, 489, 437, 116, 2963 1241, 597, 72, 841, 364, 110, 445, 123, 368, 82, 2964 72, 840, 117, 83, 84, 110, 72, 145, 0, 379, 2965 1226, 83, 84, 250, 691, 978, 114, 83, 84, 220, 2966 960, 644, 645, 978, 1226, 395, 109, 96, 129, 600, 2967 131, 111, 959, 0, 640, 405, 250, 405, 1526, 662, 2968 1291, 255, 109, 513, 146, 515, 1009, 119, 518, 250, 2969 114, 521, 676, 423, 123, 959, 959, 159, 629, 429, 2970 250, 431, 1415, 634, 1526, 1553, 132, 1496, 72, 250, 2971 208, 1021, 250, 1502, 255, 131, 532, 1407, 1408, 83, 2972 84, 116, 184, 185, 1546, 455, 557, 558, 559, 112, 2973 460, 1553, 109, 116, 1523, 465, 1059, 132, 116, 1528, 2974 238, 110, 1304, 208, 474, 471, 208, 111, 117, 479, 2975 109, 110, 349, 736, 132, 115, 116, 487, 220, 487, 2976 109, 491, 131, 491, 80, 495, 697, 873, 498, 600, 2977 500, 131, 270, 1464, 239, 657, 938, 758, 762, 109, 2978 1471, 643, 644, 645, 946, 474, 1141, 698, 250, 968, 2979 520, 698, 1004, 698, 928, 111, 109, 113, 666, 297, 2980 662, 117, 264, 109, 1415, 270, 698, 537, 851, 700, 2981 540, 1134, 542, 543, 491, 109, 1116, 698, 116, 1134, 2982 116, 698, 1030, 1031, 700, 664, 72, 110, 698, 294, 2983 992, 520, 297, 1524, 132, 697, 132, 83, 84, 110, 2984 1039, 1040, 773, 417, 851, 828, 344, 110, 537, 1423, 2985 112, 540, 110, 542, 543, 1304, 116, 630, 116, 965, 2986 590, 30, 110, 437, 830, 111, 328, 597, 834, 1192, 2987 1193, 445, 132, 646, 736, 110, 417, 1192, 1193, 609, 2988 696, 611, 691, 480, 90, 91, 348, 119, 661, 643, 2989 644, 645, 124, 125, 491, 109, 437, 111, 1097, 1098, 2990 630, 590, 1464, 734, 445, 80, 1132, 116, 662, 1471, 2991 1136, 773, 81, 82, 72, 112, 646, 491, 76, 116, 2992 126, 127, 652, 132, 733, 83, 84, 425, 426, 116, 2993 491, 661, 1381, 663, 664, 665, 111, 110, 113, 116, 2994 110, 491, 117, 405, 1102, 132, 116, 1521, 489, 780, 2995 491, 109, 1526, 491, 680, 132, 772, 964, 924, 116, 2996 115, 119, 1524, 109, 116, 888, 828, 109, 698, 111, 2997 700, 116, 1546, 109, 663, 132, 665, 119, 116, 1553, 2998 132, 109, 736, 713, 116, 758, 909, 132, 453, 719, 2999 64, 456, 110, 455, 132, 68, 827, 462, 116, 72, 3000 132, 731, 75, 501, 77, 72, 10, 11, 12, 13, 3001 14, 84, 894, 970, 744, 745, 83, 84, 110, 1468, 3002 72, 1470, 520, 109, 116, 111, 132, 116, 758, 491, 3003 3, 83, 84, 495, 631, 39, 112, 10, 11, 12, 3004 13, 14, 731, 132, 111, 110, 110, 938, 513, 109, 3005 515, 116, 116, 518, 112, 946, 521, 109, 116, 110, 3006 598, 132, 938, 67, 112, 116, 39, 1320, 116, 110, 3007 946, 110, 1271, 242, 828, 116, 1525, 116, 109, 1402, 3008 1279, 1280, 1281, 109, 45, 111, 110, 1402, 586, 815, 3009 1021, 110, 116, 112, 67, 110, 1419, 116, 114, 825, 3010 61, 116, 600, 64, 1419, 110, 67, 1530, 109, 839, 3011 111, 116, 131, 132, 840, 1530, 1, 691, 72, 1530, 3012 1034, 851, 76, 72, 114, 74, 75, 724, 1327, 83, 3013 84, 629, 64, 72, 83, 84, 634, 1103, 211, 132, 3014 110, 738, 121, 122, 83, 84, 116, 609, 1132, 611, 3015 691, 132, 1136, 1137, 114, 109, 697, 111, 109, 733, 3016 45, 109, 72, 111, 894, 119, 76, 88, 89, 1492, 3017 1493, 901, 902, 83, 84, 1057, 110, 1492, 1493, 82, 3018 1042, 110, 116, 110, 116, 146, 109, 116, 111, 116, 3019 1021, 110, 733, 109, 924, 110, 109, 116, 159, 109, 3020 112, 116, 1205, 1206, 109, 1208, 111, 82, 938, 119, 3021 379, 1214, 120, 902, 1217, 109, 946, 111, 129, 104, 3022 564, 565, 566, 567, 185, 110, 109, 159, 111, 128, 3023 1161, 1062, 773, 94, 964, 832, 698, 72, 700, 74, 3024 75, 64, 92, 93, 85, 86, 87, 208, 83, 84, 3025 115, 116, 969, 718, 984, 109, 110, 111, 81, 220, 3026 145, 116, 117, 993, 109, 110, 111, 1251, 109, 154, 3027 111, 1001, 113, 114, 1004, 703, 1006, 705, 351, 114, 3028 353, 111, 744, 745, 131, 1124, 110, 111, 220, 58, 3029 59, 460, 109, 116, 109, 984, 465, 835, 112, 1161, 3030 109, 110, 111, 115, 116, 902, 109, 110, 111, 109, 3031 1241, 112, 1001, 1039, 1040, 1004, 110, 1006, 110, 204, 3032 58, 59, 60, 208, 110, 1055, 258, 110, 902, 498, 3033 262, 500, 116, 117, 110, 1065, 159, 110, 1068, 1069, 3034 1070, 902, 112, 1505, 116, 117, 72, 1178, 74, 75, 3035 76, 111, 902, 238, 239, 1339, 112, 83, 84, 1343, 3036 131, 902, 116, 1093, 902, 114, 1055, 328, 441, 44, 3037 45, 1097, 1098, 109, 1377, 112, 1065, 839, 110, 1068, 3038 1069, 1070, 110, 109, 72, 270, 74, 75, 273, 851, 3039 1263, 1264, 1265, 1555, 1124, 83, 84, 220, 112, 4, 3040 5, 6, 7, 8, 9, 1221, 560, 561, 969, 294, 3041 112, 112, 297, 562, 563, 568, 569, 349, 112, 969, 3042 117, 109, 3, 29, 117, 117, 114, 1024, 1290, 10, 3043 11, 12, 13, 14, 72, 258, 74, 75, 76, 262, 3044 116, 110, 110, 114, 405, 83, 84, 112, 10, 11, 3045 12, 13, 14, 117, 115, 110, 341, 115, 39, 344, 3046 116, 1445, 115, 928, 69, 1062, 71, 109, 116, 1199, 3047 110, 109, 970, 111, 110, 132, 938, 39, 363, 117, 3048 110, 119, 367, 652, 946, 370, 67, 1204, 1062, 117, 3049 110, 1221, 72, 110, 74, 75, 1226, 110, 430, 110, 3050 3, 1062, 964, 83, 84, 67, 116, 10, 11, 12, 3051 13, 14, 1062, 1239, 4, 5, 6, 7, 8, 9, 3052 110, 1062, 110, 1021, 1062, 110, 349, 132, 1245, 115, 3053 29, 111, 110, 1263, 1264, 1265, 39, 1226, 110, 110, 3054 425, 426, 110, 33, 713, 1271, 110, 109, 480, 111, 3055 719, 902, 110, 1279, 1280, 1281, 110, 119, 72, 1398, 3056 74, 75, 76, 110, 67, 110, 131, 110, 453, 83, 3057 84, 456, 112, 110, 1263, 1264, 1265, 462, 110, 69, 3058 115, 71, 110, 1540, 85, 86, 87, 116, 112, 474, 3059 1320, 1321, 112, 110, 4, 5, 6, 7, 8, 9, 3060 110, 1327, 110, 471, 116, 116, 1203, 430, 109, 114, 3061 111, 117, 113, 114, 499, 112, 501, 110, 503, 1530, 3062 1161, 1338, 116, 1530, 1397, 1530, 110, 116, 513, 1226, 3063 515, 1320, 1321, 518, 116, 520, 521, 1102, 1530, 110, 3064 1531, 117, 1203, 1204, 112, 1375, 109, 532, 1378, 1530, 3065 109, 109, 1226, 1530, 1204, 1531, 109, 480, 109, 69, 3066 1530, 71, 112, 132, 1555, 1226, 1505, 1397, 1398, 115, 3067 110, 603, 110, 110, 129, 114, 1226, 1407, 1408, 1555, 3068 72, 115, 74, 75, 1245, 1226, 1375, 112, 1226, 1378, 3069 132, 83, 84, 1423, 110, 1245, 116, 112, 1428, 631, 3070 1241, 586, 1299, 116, 636, 112, 55, 1304, 110, 110, 3071 110, 47, 597, 112, 1065, 600, 1446, 109, 1407, 1408, 3072 110, 112, 114, 112, 1441, 894, 112, 53, 1458, 112, 3073 1304, 112, 901, 115, 1423, 132, 132, 132, 1299, 1428, 3074 110, 115, 117, 1304, 629, 132, 110, 132, 115, 634, 3075 112, 112, 0, 1, 1304, 640, 105, 1446, 112, 108, 3076 112, 1530, 112, 1304, 112, 1530, 1304, 1530, 112, 1458, 3077 96, 112, 110, 110, 109, 1505, 1506, 1338, 112, 112, 3078 603, 109, 109, 60, 32, 1515, 110, 110, 1338, 114, 3079 132, 1521, 724, 112, 112, 117, 1526, 45, 110, 112, 3080 1530, 1531, 110, 1531, 96, 154, 738, 96, 631, 109, 3081 109, 696, 680, 636, 1544, 132, 1546, 1506, 115, 67, 3082 1550, 112, 110, 1553, 993, 1555, 1515, 1555, 110, 110, 3083 110, 1561, 1521, 718, 51, 1565, 53, 1526, 116, 56, 3084 57, 58, 72, 60, 74, 75, 76, 42, 72, 117, 3085 74, 75, 76, 83, 84, 1544, 104, 1546, 75, 83, 3086 84, 1550, 132, 748, 1553, 132, 192, 1464, 217, 110, 3087 87, 88, 1561, 110, 1471, 1226, 1565, 96, 96, 109, 3088 1441, 72, 132, 74, 75, 76, 132, 772, 110, 215, 3089 1464, 1441, 83, 84, 110, 110, 117, 1471, 146, 225, 3090 832, 724, 110, 1464, 132, 115, 154, 155, 112, 112, 3091 1471, 109, 132, 115, 1464, 738, 115, 110, 109, 132, 3092 111, 1471, 271, 1464, 1093, 110, 1464, 1524, 119, 278, 3093 1471, 132, 72, 1471, 74, 75, 76, 185, 110, 110, 3094 1077, 570, 573, 83, 84, 830, 571, 815, 572, 834, 3095 1524, 574, 200, 1226, 64, 203, 204, 825, 1493, 1565, 3096 208, 1383, 1343, 1524, 74, 1137, 1314, 1471, 294, 109, 3097 1321, 111, 840, 1093, 1524, 453, 453, 946, 705, 119, 3098 465, 229, 948, 1524, 993, 233, 1524, 235, 590, 748, 3099 894, 10, 11, 12, 13, 14, 244, 758, 347, 658, 3100 1245, 966, 250, 491, 578, 578, 116, 255, 1473, 832, 3101 1475, 578, -1, -1, -1, 364, -1, 265, -1, 368, 3102 39, -1, -1, -1, 1375, 273, -1, 1378, -1, -1, 3103 1199, -1, -1, -1, -1, -1, -1, -1, -1, 924, 3104 -1, -1, 1540, 928, -1, 1510, -1, 1512, 67, 159, 3105 -1, -1, -1, 72, -1, 74, 75, 76, 72, -1, 3106 74, 75, 76, -1, 83, 84, 0, -1, 1530, 83, 3107 84, -1, 1423, -1, -1, -1, 72, 1428, 74, 75, 3108 76, -1, 431, 968, 969, 970, -1, 83, 84, -1, 3109 109, -1, 1024, 341, -1, 109, 344, 111, 32, -1, 3110 119, -1, 350, -1, -1, 119, -1, 1458, -1, -1, 3111 220, -1, -1, 109, -1, 363, 442, -1, -1, 367, 3112 -1, -1, 370, 119, -1, -1, -1, 344, 345, -1, 3113 -1, -1, -1, 67, -1, -1, 1021, -1, -1, 356, 3114 357, 10, 11, 12, 13, 14, -1, -1, 258, -1, 3115 476, -1, 262, 72, -1, 74, 75, 76, -1, -1, 3116 -1, -1, -1, -1, 83, 84, -1, -1, 278, 417, 3117 39, 1039, 1040, -1, -1, -1, 26, 27, 28, -1, 3118 -1, -1, -1, -1, 432, -1, -1, 513, -1, 437, 3119 109, -1, 518, 1544, -1, 521, -1, 445, 67, 1550, 3120 119, 1024, 10, 11, 12, 13, 14, -1, -1, -1, 3121 1561, -1, -1, -1, 1565, -1, -1, 1102, 1103, -1, 3122 -1, 155, -1, 471, -1, -1, 474, -1, -1, 1097, 3123 1098, 39, -1, -1, 10, 11, 12, 13, 14, 349, 3124 109, 489, 111, 491, -1, -1, -1, 97, 597, 99, 3125 119, 499, -1, -1, -1, 503, -1, -1, -1, 67, 3126 -1, -1, -1, 39, 72, -1, 74, 75, 76, -1, 3127 -1, 1203, -1, -1, 124, 83, 84, -1, -1, -1, 3128 -1, 630, -1, -1, 532, 533, -1, -1, -1, -1, 3129 -1, 67, -1, -1, -1, 229, 72, 646, 74, 75, 3130 76, 109, -1, 111, -1, -1, -1, 83, 84, -1, 3131 -1, 119, 661, -1, -1, -1, 250, -1, -1, -1, 3132 430, 255, -1, -1, -1, 10, 11, 12, 13, 14, 3133 180, 579, -1, 109, -1, 111, 1221, 447, 188, -1, 3134 190, 191, -1, 119, -1, 195, -1, 197, 198, 597, 3135 598, -1, 600, 679, 39, -1, -1, -1, -1, -1, 3136 1245, -1, 688, 611, -1, -1, 692, 1299, -1, -1, 3137 480, 1239, -1, 10, 11, 12, 13, 14, -1, -1, 3138 1203, 629, 67, -1, -1, -1, 634, 72, -1, 74, 3139 75, 76, 640, -1, -1, 643, 644, 645, 83, 84, 3140 -1, -1, 39, 1271, -1, -1, -1, -1, -1, 758, 3141 -1, 1279, 1280, 1281, 662, -1, 350, 267, -1, -1, 3142 -1, -1, -1, -1, 109, -1, 111, -1, -1, -1, 3143 67, -1, 680, -1, 119, 72, -1, 74, 75, 76, 3144 -1, -1, -1, 691, -1, -1, 83, 84, 696, 697, 3145 -1, -1, 700, 1338, -1, -1, -1, -1, -1, 1327, 3146 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3147 -1, -1, 109, -1, -1, -1, 1299, -1, -1, -1, 3148 -1, -1, 119, 417, -1, 733, -1, -1, 736, -1, 3149 -1, 39, -1, 603, -1, -1, -1, 745, 432, -1, 3150 748, -1, -1, 437, -1, -1, -1, -1, 725, -1, 3151 727, 445, -1, -1, -1, -1, -1, 734, 735, 67, 3152 -1, 631, 739, -1, 772, 773, 636, -1, -1, -1, 3153 778, -1, -1, -1, 751, -1, -1, 471, -1, 756, 3154 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 3155 -1, -1, -1, -1, -1, 489, 1441, 491, -1, -1, 3156 -1, 109, -1, 111, -1, 782, -1, 815, -1, -1, 3157 -1, 119, -1, -1, 131, 924, -1, 825, -1, -1, 3158 828, -1, 830, -1, -1, 833, 834, 835, 1473, -1, 3159 1475, -1, 840, -1, -1, -1, -1, -1, -1, 533, 3160 926, -1, 850, -1, -1, -1, -1, -1, -1, -1, 3161 827, -1, -1, -1, 724, -1, -1, -1, -1, -1, 3162 -1, -1, -1, -1, -1, 1510, -1, 1512, 738, -1, 3163 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3164 20, 21, 22, 23, 24, 25, 26, 27, 758, -1, 3165 30, 31, 32, -1, 902, 1540, -1, -1, -1, 39, 3166 -1, -1, -1, -1, 598, -1, -1, 884, 885, 886, 3167 887, -1, 889, -1, -1, -1, 924, -1, 10, 11, 3168 12, 13, 14, -1, -1, -1, 0, 67, 905, -1, 3169 -1, -1, 72, -1, 74, 75, 76, -1, -1, -1, 3170 -1, -1, 919, 83, 84, -1, -1, 39, -1, 643, 3171 644, 645, 960, -1, -1, -1, -1, -1, 32, -1, 3172 968, 969, 832, -1, -1, -1, -1, -1, 662, 109, 3173 -1, 111, 582, 583, -1, 67, -1, -1, 986, 119, 3174 72, 958, -1, -1, 76, -1, 680, 1073, -1, -1, 3175 -1, 83, 84, 67, -1, -1, -1, 691, -1, -1, 3176 -1, -1, 612, 697, -1, 615, 616, -1, 618, -1, 3177 620, 621, -1, 1021, -1, 625, 626, 109, -1, -1, 3178 -1, 998, -1, -1, -1, -1, 1034, 119, 1005, -1, 3179 -1, 1039, 1040, 1010, 1042, 1043, -1, -1, 1015, 733, 3180 1017, -1, 736, -1, 1021, 1022, 1023, -1, -1, 1026, 3181 -1, -1, -1, -1, 1062, -1, -1, -1, 1035, -1, 3182 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3183 -1, -1, -1, -1, -1, -1, 1053, 1054, -1, 773, 3184 -1, 155, -1, -1, -1, 0, -1, -1, -1, 1097, 3185 1098, 39, -1, -1, 704, 1103, -1, -1, -1, 709, 3186 710, -1, -1, 1080, -1, 715, 1083, -1, -1, -1, 3187 -1, -1, 1221, -1, -1, -1, -1, 32, -1, 67, 3188 -1, 815, -1, -1, 72, -1, -1, -1, 76, -1, 3189 -1, 825, -1, -1, 828, 83, 84, -1, -1, 833, 3190 -1, 835, -1, -1, 1121, -1, 840, -1, -1, -1, 3191 1127, 1128, 67, 1161, 1024, -1, -1, -1, -1, -1, 3192 -1, 109, 1139, -1, -1, -1, -1, 1144, -1, -1, 3193 1147, 119, 1149, -1, -1, 1152, 250, -1, -1, -1, 3194 -1, 255, 188, -1, -1, -1, -1, -1, 1165, 195, 3195 -1, -1, -1, -1, -1, -1, 1204, -1, -1, -1, 3196 -1, 1178, 0, 1180, 1181, 1182, 1183, -1, 902, -1, 3197 -1, -1, -1, 1221, -1, -1, -1, -1, 1226, 1196, 3198 -1, 1198, -1, -1, -1, 1202, -1, 1313, -1, -1, 3199 -1, 1239, -1, 1241, 32, 0, 1, 1245, -1, -1, 3200 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3201 -1, -1, -1, -1, 1231, 1232, -1, -1, -1, -1, 3202 -1, 267, -1, 1271, -1, -1, -1, 32, -1, 67, 3203 -1, 1279, 1280, 1281, -1, -1, 350, -1, -1, -1, 3204 -1, -1, 1290, 1291, -1, -1, -1, -1, 1397, -1, 3205 -1, -1, 986, -1, -1, -1, 1304, -1, -1, 64, 3206 -1, -1, 67, -1, -1, 1282, 1283, -1, -1, -1, 3207 -1, -1, -1, -1, -1, 1292, -1, 323, -1, 1327, 3208 -1, -1, -1, -1, -1, 331, -1, -1, 334, -1, 3209 1338, -1, -1, 1203, -1, 250, -1, -1, -1, -1, 3210 255, -1, -1, 417, -1, 1039, 1040, -1, 1042, 1043, 3211 -1, -1, -1, -1, -1, -1, -1, 155, 432, -1, 3212 -1, -1, -1, 437, -1, -1, -1, 1344, 1062, -1, 3213 -1, 445, -1, -1, -1, -1, -1, -1, -1, 1356, 3214 -1, 1358, 1359, 1360, -1, -1, 1472, -1, 1474, -1, 3215 155, 397, -1, 1370, -1, 401, -1, 471, -1, -1, 3216 -1, -1, 1379, 1097, 1098, -1, -1, 1415, -1, -1, 3217 -1, -1, -1, -1, -1, 489, -1, 491, 1395, -1, 3218 -1, -1, -1, 1509, -1, 1511, -1, -1, -1, 1299, 3219 -1, -1, -1, 1441, -1, 350, -1, -1, -1, -1, 3220 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221 -1, -1, 250, -1, -1, 220, 1464, 255, -1, 533, 3222 -1, -1, -1, 1471, -1, -1, -1, 1161, 1554, -1, 3223 1556, -1, -1, -1, 1451, 1452, -1, -1, -1, -1, 3224 486, -1, -1, 1569, 1570, 250, -1, 1464, -1, 1099, 3225 -1, -1, -1, -1, 1471, -1, -1, -1, -1, -1, 3226 -1, -1, 417, -1, -1, -1, -1, -1, -1, -1, 3227 1204, -1, -1, -1, -1, -1, 1524, 432, -1, -1, 3228 -1, -1, 437, 1531, 598, -1, -1, 1504, -1, -1, 3229 445, 1508, 1226, -1, -1, -1, -1, -1, -1, -1, 3230 -1, -1, -1, -1, -1, 1239, -1, 1241, -1, -1, 3231 -1, -1, 350, -1, -1, -1, 471, -1, -1, -1, 3232 1537, -1, 1539, -1, -1, -1, -1, -1, -1, 643, 3233 644, 645, 578, 579, 489, -1, 491, 1271, -1, -1, 3234 -1, -1, -1, -1, -1, 1279, 1280, 1281, 662, -1, 3235 1567, 1568, -1, -1, -1, -1, 1290, 1291, 1575, 1576, 3236 -1, -1, -1, -1, -1, -1, 680, -1, -1, -1, 3237 1304, -1, -1, 1223, -1, -1, -1, 691, 533, 417, 3238 -1, -1, -1, 697, -1, -1, -1, -1, -1, -1, 3239 -1, -1, -1, 1327, 432, -1, -1, -1, -1, 437, 3240 -1, -1, -1, -1, -1, -1, -1, 445, -1, -1, 3241 -1, -1, -1, -1, -1, -1, -1, -1, -1, 733, 3242 -1, 667, 736, -1, -1, 671, -1, 432, -1, -1, 3243 -1, -1, -1, 471, -1, -1, -1, -1, -1, -1, 3244 -1, -1, -1, 598, -1, -1, -1, -1, -1, -1, 3245 -1, 489, -1, 491, -1, -1, -1, -1, 704, 773, 3246 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3247 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3248 27, 1415, -1, -1, -1, -1, 491, -1, 643, 644, 3249 645, -1, 39, -1, -1, 533, -1, -1, -1, -1, 3250 -1, 815, -1, -1, -1, -1, -1, 662, -1, -1, 3251 -1, 825, -1, -1, 828, -1, -1, -1, -1, 833, 3252 67, 835, -1, -1, -1, 680, 840, -1, 533, -1, 3253 1464, -1, -1, -1, -1, -1, 691, 1471, -1, -1, 3254 -1, -1, 697, -1, -1, -1, -1, -1, -1, -1, 3255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3256 598, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3257 -1, -1, -1, 819, -1, -1, -1, -1, 733, -1, 3258 -1, 736, -1, -1, -1, 26, 27, 28, 902, -1, 3259 1524, -1, -1, 598, -1, -1, -1, -1, -1, -1, 3260 -1, -1, -1, -1, -1, 643, 644, 645, -1, -1, 3261 -1, -1, -1, -1, -1, -1, -1, -1, 773, -1, 3262 -1, -1, -1, -1, 662, -1, -1, -1, -1, -1, 3263 -1, -1, -1, -1, -1, -1, -1, -1, 643, 644, 3264 645, -1, 680, -1, -1, -1, -1, -1, -1, -1, 3265 -1, -1, -1, 691, -1, -1, 97, 662, 99, 697, 3266 815, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3267 825, -1, 986, 828, -1, -1, -1, -1, 833, -1, 3268 835, -1, -1, -1, -1, 840, 932, -1, -1, -1, 3269 -1, -1, -1, -1, -1, 733, -1, -1, 736, 4, 3270 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3271 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3272 25, 26, 27, -1, -1, 1039, 1040, -1, 1042, 1043, 3273 -1, 736, -1, -1, 39, 773, -1, -1, -1, 180, 3274 -1, -1, -1, -1, -1, -1, -1, 902, 1062, 190, 3275 191, -1, -1, -1, 195, -1, 197, 198, -1, -1, 3276 -1, -1, 67, -1, 69, 1011, 71, 72, -1, 74, 3277 75, 76, -1, -1, -1, -1, -1, 815, 83, 84, 3278 -1, 1027, -1, 1097, 1098, -1, -1, 825, -1, -1, 3279 828, -1, -1, -1, -1, 833, -1, 835, -1, -1, 3280 -1, -1, 840, -1, 10, 11, 12, 13, 14, 15, 3281 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3282 26, 27, 28, 828, 30, 31, 32, -1, -1, -1, 3283 835, 986, -1, 39, -1, -1, -1, -1, -1, -1, 3284 -1, -1, -1, -1, -1, -1, -1, 1161, -1, -1, 3285 -1, -1, -1, -1, -1, -1, -1, -1, 1104, -1, 3286 -1, 67, -1, -1, 902, -1, 72, -1, 74, 75, 3287 76, -1, 78, -1, -1, -1, -1, 83, 84, -1, 3288 -1, -1, -1, -1, 1039, 1040, -1, 1042, 1043, -1, 3289 1204, -1, -1, -1, -1, -1, -1, 902, -1, -1, 3290 -1, -1, -1, 109, -1, 111, -1, 1062, -1, -1, 3291 -1, -1, 1226, 119, -1, 45, -1, -1, -1, -1, 3292 -1, -1, -1, -1, -1, 1239, -1, 1241, -1, -1, 3293 -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, 3294 -1, -1, 1097, 1098, -1, -1, -1, -1, 986, -1, 3295 37, 38, -1, 40, -1, -1, -1, 1271, -1, -1, 3296 -1, -1, -1, -1, 969, 1279, 1280, 1281, -1, -1, 3297 -1, -1, -1, -1, -1, -1, 1290, 1291, -1, 66, 3298 110, 986, -1, -1, -1, 72, 116, -1, -1, 76, 3299 1304, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3300 87, 1039, 1040, -1, 1042, 1043, 1161, 94, -1, -1, 3301 -1, -1, -1, 1327, -1, 145, -1, -1, -1, -1, 3302 -1, -1, 109, -1, 1062, 155, -1, -1, -1, 159, 3303 -1, 118, 119, 120, 121, 122, 123, 1042, 1043, -1, 3304 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1204, 3305 -1, -1, -1, -1, -1, -1, -1, 1062, -1, 1097, 3306 1098, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3307 -1, 1226, -1, -1, -1, -1, -1, -1, 208, -1, 3308 -1, -1, -1, -1, 1239, -1, 1241, -1, -1, -1, 3309 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3310 -1, 1415, -1, -1, -1, -1, -1, -1, 238, 239, 3311 -1, -1, -1, -1, -1, -1, 1271, -1, -1, -1, 3312 -1, -1, -1, 1161, 1279, 1280, 1281, -1, -1, -1, 3313 -1, -1, 262, -1, -1, 1290, 1291, -1, -1, -1, 3314 270, 582, 583, -1, -1, -1, -1, -1, -1, 1304, 3315 1464, -1, -1, -1, -1, -1, -1, 1471, -1, -1, 3316 -1, -1, -1, -1, 294, -1, 1204, 297, -1, -1, 3317 -1, 612, 1327, -1, 615, 616, -1, 618, -1, 620, 3318 621, -1, -1, -1, 625, 626, -1, -1, 1226, -1, 3319 -1, -1, -1, -1, -1, -1, -1, -1, 1203, 1204, 3320 -1, 1239, -1, 1241, -1, -1, -1, -1, -1, -1, 3321 1524, -1, -1, -1, 344, -1, -1, -1, -1, 349, 3322 -1, 1226, -1, -1, -1, -1, -1, -1, -1, -1, 3323 -1, -1, -1, 1271, -1, -1, 64, -1, -1, -1, 3324 1245, 1279, 1280, 1281, -1, -1, 74, -1, 76, -1, 3325 78, -1, 1290, 1291, -1, -1, -1, 85, -1, -1, 3326 1415, -1, -1, -1, -1, -1, 1304, -1, 709, 710, 3327 -1, -1, -1, -1, 715, -1, -1, -1, -1, -1, 3328 -1, -1, -1, -1, -1, 1290, 1291, -1, 116, 1327, 3329 118, 119, 120, -1, 1299, 425, 426, -1, -1, 1304, 3330 -1, -1, 432, -1, -1, -1, -1, -1, -1, 1464, 3331 -1, -1, -1, -1, -1, -1, 1471, -1, -1, -1, 3332 -1, -1, -1, 453, -1, -1, 456, -1, -1, -1, 3333 -1, 159, 462, 1338, 3, 4, 5, 6, 7, 8, 3334 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3335 19, 20, 21, 22, 23, 24, 25, 26, 27, 489, 3336 -1, 30, 31, 32, -1, -1, -1, -1, -1, 1524, 3337 39, 501, -1, -1, -1, -1, -1, 1415, -1, -1, 3338 -1, -1, 44, 513, -1, 515, -1, -1, 518, -1, 3339 520, 521, 220, -1, 222, 223, 224, -1, 67, -1, 3340 69, -1, 71, 533, -1, 74, 75, -1, -1, -1, 3341 1415, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3342 -1, -1, -1, -1, -1, -1, 1464, -1, 90, -1, 3343 258, -1, -1, 1471, 262, -1, 1441, -1, 100, -1, 3344 -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, 3345 278, -1, -1, -1, -1, -1, 586, -1, -1, 1464, 3346 -1, -1, -1, -1, -1, -1, 1471, -1, 598, -1, 3347 600, -1, -1, 603, -1, -1, -1, -1, -1, -1, 3348 -1, -1, -1, -1, -1, -1, 1524, -1, -1, -1, 3349 -1, -1, -1, -1, 156, -1, -1, -1, -1, 629, 3350 328, -1, -1, -1, 634, -1, -1, -1, 170, -1, 3351 -1, -1, -1, 643, 644, 645, -1, -1, -1, 1524, 3352 -1, 349, -1, -1, -1, -1, 354, 355, -1, -1, 3353 -1, 193, 662, -1, 362, -1, -1, -1, -1, -1, 3354 -1, -1, -1, -1, -1, 207, -1, -1, -1, -1, 3355 -1, -1, 7, -1, 216, 10, 11, 12, 13, 14, 3356 -1, -1, -1, -1, 226, -1, -1, 697, -1, -1, 3357 -1, -1, -1, -1, -1, -1, -1, 405, -1, -1, 3358 -1, -1, 37, 38, 39, 40, -1, -1, 718, 251, 3359 -1, -1, -1, -1, 256, 423, -1, -1, -1, -1, 3360 428, -1, 430, -1, -1, -1, 736, 269, 738, -1, 3361 -1, 66, 67, 275, -1, 277, -1, 72, -1, 447, 3362 -1, 76, 450, 451, 79, 80, 81, 82, 83, 84, 3363 -1, 86, 87, 295, -1, -1, -1, -1, 466, 94, 3364 -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, 3365 -1, -1, 480, -1, 109, -1, 111, -1, 1099, 487, 3366 -1, -1, -1, 118, 119, 120, 121, 122, 123, -1, 3367 -1, -1, -1, -1, -1, -1, 338, -1, -1, -1, 3368 -1, 343, -1, -1, -1, -1, -1, -1, -1, -1, 3369 -1, -1, -1, -1, -1, -1, -1, -1, 828, -1, 3370 -1, -1, 832, -1, -1, 835, -1, -1, -1, 371, 3371 -1, -1, -1, 375, 376, -1, 378, -1, -1, -1, 3372 -1, -1, -1, 385, 386, -1, 388, 389, -1, 391, 3373 -1, 393, -1, -1, -1, -1, -1, 7, -1, -1, 3374 10, 11, 12, 13, 14, -1, -1, -1, 410, -1, 3375 -1, -1, -1, -1, -1, -1, 418, -1, -1, -1, 3376 -1, -1, -1, -1, -1, -1, -1, 37, 38, 39, 3377 40, -1, -1, -1, -1, 603, -1, -1, -1, -1, 3378 -1, 443, 1223, -1, -1, -1, -1, -1, -1, -1, 3379 -1, -1, 454, -1, -1, -1, 66, 67, 928, -1, 3380 -1, -1, 72, 631, -1, -1, 76, -1, 636, 79, 3381 80, 81, 82, 83, 84, 477, 86, 87, -1, -1, 3382 -1, 483, -1, -1, 94, -1, 488, -1, -1, -1, 3383 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3384 970, 111, -1, -1, -1, -1, -1, -1, 118, 119, 3385 120, 121, 122, 123, -1, -1, 986, -1, -1, -1, 3386 -1, -1, -1, 525, -1, -1, -1, -1, -1, -1, 3387 -1, -1, -1, -1, -1, -1, -1, -1, -1, 541, 3388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3389 -1, 1021, -1, -1, -1, -1, 724, -1, -1, -1, 3390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3391 738, -1, 1042, 1043, -1, -1, 578, -1, -1, -1, 3392 -1, -1, -1, -1, -1, 587, -1, -1, -1, -1, 3393 758, -1, 594, -1, -1, 37, 38, 599, 40, -1, 3394 -1, -1, -1, -1, -1, -1, -1, -1, 610, -1, 3395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3396 -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, 3397 72, -1, 1102, -1, 76, -1, -1, 79, 80, 81, 3398 82, 83, 84, -1, 86, 87, -1, -1, -1, 651, 3399 -1, 819, 94, -1, -1, -1, -1, -1, -1, -1, 3400 -1, -1, -1, -1, 832, -1, -1, 109, -1, 111, 3401 -1, -1, 114, -1, -1, -1, 118, 119, 120, 121, 3402 122, 123, -1, 851, -1, 687, -1, -1, -1, -1, 3403 -1, 1161, -1, -1, 3, 4, 5, 6, 7, 8, 3404 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3405 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3406 -1, 30, 31, 32, 33, -1, -1, 36, -1, -1, 3407 39, 40, -1, 1203, -1, -1, -1, -1, -1, -1, 3408 742, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3409 752, 753, -1, -1, -1, 64, -1, -1, 67, -1, 3410 69, -1, 71, 72, 766, 74, 75, 76, -1, -1, 3411 938, 1241, 154, 155, 83, 84, -1, -1, -1, -1, 3412 -1, 783, -1, 785, -1, -1, -1, 789, -1, -1, 3413 -1, -1, -1, -1, -1, -1, 964, -1, -1, -1, 3414 109, -1, 111, -1, -1, -1, 188, -1, -1, -1, 3415 119, -1, -1, 195, -1, -1, -1, -1, -1, -1, 3416 1290, 1291, -1, -1, 992, -1, -1, -1, -1, 1299, 3417 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3418 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3419 30, 31, 32, 855, -1, -1, 1024, -1, -1, 39, 3420 862, -1, -1, -1, -1, -1, -1, 1035, -1, -1, 3421 -1, -1, -1, 875, -1, 877, -1, -1, -1, -1, 3422 -1, -1, -1, -1, -1, 267, -1, 67, -1, 891, 3423 -1, -1, 72, -1, 74, 75, 898, -1, -1, -1, 3424 -1, -1, -1, 83, 84, -1, -1, -1, 910, -1, 3425 -1, 913, -1, -1, -1, -1, -1, -1, -1, -1, 3426 -1, -1, -1, -1, -1, -1, -1, -1, -1, 931, 3427 -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, 3428 -1, 323, -1, -1, -1, 1415, -1, -1, 1116, 331, 3429 332, -1, 334, 335, -1, -1, -1, -1, -1, -1, 3430 -1, -1, 344, -1, -1, -1, 348, -1, -1, -1, 3431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3432 -1, -1, -1, -1, -1, 367, -1, -1, 370, -1, 3433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3434 -1, -1, -1, 1473, -1, 1475, -1, -1, -1, -1, 3435 37, 38, -1, 40, -1, 397, -1, -1, 1020, 401, 3436 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3437 -1, -1, -1, -1, -1, 1203, -1, -1, -1, 66, 3438 1510, 145, 1512, -1, -1, 72, -1, 74, 75, 76, 3439 432, 155, 79, 80, 81, 82, 83, 84, -1, 86, 3440 87, -1, -1, 167, 168, -1, -1, 94, -1, -1, 3441 1540, -1, -1, 455, 1076, -1, -1, -1, -1, -1, 3442 -1, 1083, 109, -1, 111, -1, 113, 114, -1, -1, 3443 -1, 118, 119, 120, 121, 122, 123, -1, -1, -1, 3444 -1, -1, -1, -1, 486, -1, -1, 489, -1, -1, 3445 1112, -1, -1, -1, -1, 1117, -1, -1, -1, -1, 3446 -1, -1, -1, 1125, -1, -1, -1, -1, -1, -1, 3447 -1, 1299, -1, -1, 238, -1, -1, -1, -1, -1, 3448 -1, -1, -1, -1, -1, -1, -1, 529, -1, -1, 3449 532, 533, -1, -1, 1156, -1, -1, -1, -1, 263, 3450 -1, -1, -1, -1, -1, -1, 1168, -1, -1, 1171, 3451 -1, 1173, -1, -1, -1, -1, -1, -1, -1, -1, 3452 -1, -1, -1, -1, -1, 1187, 1188, -1, -1, -1, 3453 -1, -1, -1, -1, -1, -1, 578, 579, -1, -1, 3454 -1, -1, -1, -1, -1, -1, -1, 1209, -1, -1, 3455 -1, -1, -1, -1, -1, 597, 598, -1, 600, -1, 3456 -1, -1, -1, -1, -1, -1, -1, 609, -1, 611, 3457 612, -1, -1, -1, 1236, -1, 618, -1, -1, 281, 3458 -1, 283, 284, -1, -1, -1, 628, 629, -1, 291, 3459 292, -1, 634, -1, 296, 297, -1, -1, -1, -1, 3460 -1, 643, 644, 645, -1, -1, 308, -1, -1, -1, 3461 -1, -1, -1, -1, -1, 379, -1, -1, -1, -1, 3462 662, -1, -1, -1, -1, 667, 668, -1, -1, 671, 3463 672, -1, -1, -1, -1, -1, 678, -1, -1, -1, 3464 -1, -1, 344, -1, -1, -1, -1, -1, -1, -1, 3465 -1, -1, -1, -1, 696, 697, 698, -1, 700, -1, 3466 -1, -1, 704, -1, -1, -1, -1, -1, -1, 37, 3467 38, 1333, 40, 1335, -1, -1, -1, -1, 380, -1, 3468 -1, -1, -1, -1, -1, -1, 1348, -1, 1350, -1, 3469 -1, -1, -1, -1, 736, 737, -1, -1, 66, -1, 3470 -1, -1, -1, -1, 72, -1, 1368, -1, 76, -1, 3471 -1, 79, 80, 81, 82, 83, 84, 481, 86, 87, 3472 -1, -1, 1384, 1385, -1, -1, 94, 1555, -1, -1, 3473 772, 773, -1, -1, 1396, 777, 778, 1399, -1, -1, 3474 -1, 109, -1, 111, -1, -1, -1, -1, -1, 117, 3475 118, 119, 120, 121, 122, 123, 520, -1, -1, 1421, 3476 -1, -1, -1, -1, -1, -1, -1, -1, 1430, 533, 3477 -1, 1433, -1, 1435, 1436, 1437, 540, 819, -1, 543, 3478 -1, -1, -1, -1, -1, -1, 828, -1, -1, -1, 3479 554, 555, 834, 835, -1, -1, -1, 839, -1, 841, 3480 -1, -1, -1, -1, -1, -1, -1, -1, -1, 851, 3481 -1, -1, 576, -1, -1, 1477, -1, 1479, -1, -1, 3482 1482, -1, 586, -1, -1, -1, -1, -1, -1, 593, 3483 -1, -1, -1, -1, 598, 1497, -1, -1, -1, -1, 3484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3485 -1, -1, -1, -1, -1, 557, 558, 559, 560, 561, 3486 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 3487 572, 573, 574, -1, -1, -1, -1, -1, -1, -1, 3488 -1, -1, 924, -1, 648, -1, -1, -1, -1, -1, 3489 932, -1, -1, 657, -1, -1, 938, -1, 600, -1, 3490 -1, -1, -1, -1, 946, -1, -1, -1, -1, -1, 3491 -1, -1, -1, -1, -1, -1, -1, 959, 960, -1, 3492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3493 -1, -1, -1, 697, -1, -1, -1, -1, -1, -1, 3494 -1, -1, -1, -1, 986, -1, -1, -1, -1, -1, 3495 992, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3496 19, 20, 21, 22, 23, 24, 25, 26, 27, 1011, 3497 1012, 30, 31, 32, -1, -1, -1, -1, -1, 1021, 3498 39, 40, -1, -1, -1, 1027, 1028, -1, 1030, 1031, 3499 1032, -1, -1, -1, -1, -1, -1, 699, -1, -1, 3500 1042, 1043, -1, -1, -1, -1, -1, -1, 67, 773, 3501 -1, 775, -1, -1, -1, 74, 75, 781, -1, 721, 3502 -1, -1, -1, -1, 788, -1, -1, -1, -1, -1, 3503 -1, -1, 734, -1, -1, -1, -1, -1, -1, -1, 3504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3505 -1, -1, 111, -1, -1, -1, 115, -1, -1, -1, 3506 119, 1103, 1104, 1105, -1, -1, -1, -1, 832, 833, 3507 -1, 835, -1, -1, 1116, -1, -1, -1, 780, -1, 3508 -1, -1, -1, -1, -1, -1, 850, -1, -1, -1, 3984 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3985 -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, 3509 3986 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3510 3987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3511 812, -1, -1, -1, -1, -1, -1, -1, -1, 1161, 3512 -1, -1, -1, -1, -1, 827, 890, -1, -1, -1, 3513 894, -1, -1, 0, -1, -1, 3, 4, 5, 6, 3514 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3515 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3516 27, -1, -1, 30, 31, 32, 33, -1, -1, 36, 3517 -1, -1, 39, 40, -1, -1, -1, -1, -1, 1221, 3518 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3519 -1, -1, -1, -1, -1, -1, -1, 64, -1, 1241, 3520 67, -1, 69, -1, 71, 72, 970, 74, 75, 76, 3521 -1, -1, -1, -1, -1, -1, 83, 84, -1, -1, 3522 -1, -1, 986, 987, -1, -1, -1, -1, -1, 993, 3523 -1, -1, -1, -1, -1, 999, -1, -1, 1002, -1, 3524 1004, -1, 109, -1, 111, -1, -1, -1, 1290, 1291, 3525 -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, 3526 1024, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3527 -1, 1035, -1, -1, -1, -1, 978, -1, -1, -1, 3528 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3529 -1, -1, -1, 1057, -1, 1059, -1, -1, -1, -1, 3530 -1, -1, -1, -1, -1, -1, -1, 1009, -1, -1, 3531 1074, 1075, -1, -1, -1, -1, -1, -1, -1, 1021, 3532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3533 -1, 1095, -1, -1, 3, 4, 5, 6, 7, 8, 3534 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3535 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3536 1062, 30, 31, 32, 33, -1, -1, 36, -1, -1, 3537 39, 40, -1, 1415, -1, -1, -1, -1, 1142, -1, 3538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3539 -1, -1, -1, -1, -1, 64, -1, 1161, 67, -1, 3540 69, -1, 71, 72, -1, 74, 75, 76, -1, -1, 3541 -1, -1, 1176, 1177, 83, 84, -1, -1, -1, -1, 3542 -1, -1, 37, 38, -1, 40, -1, -1, -1, -1, 3543 -1, -1, 1134, -1, -1, -1, -1, -1, -1, -1, 3544 109, -1, 111, -1, -1, -1, 115, -1, -1, -1, 3545 119, 66, -1, -1, -1, -1, -1, 72, -1, -1, 3546 -1, 76, -1, 1505, 79, 80, 81, 82, 83, 84, 3547 -1, 86, 87, -1, -1, -1, 1178, -1, -1, 94, 3548 -1, -1, -1, -1, -1, -1, -1, -1, 1530, 1531, 3549 1192, 1193, -1, 1257, 109, -1, 111, -1, -1, -1, 3550 -1, 116, -1, 118, 119, 120, 121, 122, 123, -1, 3551 -1, -1, -1, 1555, -1, 3, 4, 5, 6, 7, 3552 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3553 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3554 -1, -1, 30, 31, 32, 33, -1, -1, 36, 37, 3555 38, 39, 40, 41, 1318, 43, 1320, -1, 46, 47, 3556 48, 49, 50, 51, 52, 53, -1, -1, -1, 57, 3557 -1, -1, -1, 61, 62, -1, 64, -1, 66, 67, 3558 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3559 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3560 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3561 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3562 -1, 109, -1, 111, -1, -1, 114, -1, -1, -1, 3563 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, 3564 128, -1, 1406, -1, 132, -1, -1, -1, -1, -1, 3988 -1, 66, -1, 68, -1, 70, -1, -1, 73, 74, 3565 3989 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3566 3990 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3567 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3568 33, -1, -1, 36, 37, 38, 39, 40, -1, -1, 3569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3570 1402, -1, -1, 37, 38, -1, 40, -1, -1, -1, 3571 -1, -1, -1, 66, 67, -1, 69, 1419, 71, 72, 3572 -1, 74, 75, 76, 1488, -1, 79, 80, 81, 82, 3573 83, 84, 66, 86, 87, -1, -1, -1, 72, -1, 3574 -1, 94, 76, -1, -1, 79, 80, 81, 82, 83, 3575 84, -1, 86, 87, -1, -1, 109, -1, 111, -1, 3576 94, -1, -1, -1, -1, 118, 119, 120, 121, 122, 3577 123, -1, -1, -1, -1, 109, 1540, 111, -1, 132, 3578 114, -1, -1, -1, 118, 119, 120, 121, 122, 123, 3579 1492, 1493, 3, 4, 5, 6, 7, 8, 9, 10, 3580 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3581 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3582 31, 32, 33, -1, -1, 36, 37, 38, 39, 40, 3583 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3584 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3585 30, 31, 32, -1, -1, 66, 67, -1, 69, 39, 3586 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3587 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3588 -1, -1, -1, 94, -1, -1, -1, 67, -1, -1, 3589 -1, -1, 72, -1, 74, 75, -1, -1, 109, -1, 3590 111, -1, -1, 83, 84, -1, -1, 118, 119, 120, 3591 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3592 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3593 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3594 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3595 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3596 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3597 27, 28, -1, -1, -1, 66, 67, -1, 69, -1, 3598 71, 72, 39, 74, 75, 76, -1, -1, 79, 80, 3599 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3600 -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, 3601 67, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3602 111, 78, -1, -1, -1, 116, -1, 118, 119, 120, 3603 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3604 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3605 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3606 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3607 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3608 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3609 27, 28, -1, -1, -1, 66, 67, -1, 69, -1, 3610 71, 72, 39, 74, 75, 76, -1, -1, 79, 80, 3611 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3612 -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, 3613 67, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3614 111, 78, -1, -1, -1, 116, -1, 118, 119, 120, 3615 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3616 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3617 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3618 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3619 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3620 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3621 30, 31, 32, -1, -1, 66, 67, -1, 69, 39, 3622 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3623 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3624 -1, -1, -1, 94, -1, -1, -1, 67, -1, -1, 3625 -1, -1, -1, -1, 74, 75, -1, -1, 109, -1, 3626 111, -1, -1, -1, -1, 116, -1, 118, 119, 120, 3627 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3628 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3629 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3630 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3631 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3632 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3633 30, 31, 32, -1, -1, 66, 67, -1, 69, 39, 3634 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3635 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3636 -1, -1, -1, 94, -1, -1, -1, 67, -1, -1, 3637 -1, -1, -1, -1, 74, 75, -1, -1, 109, -1, 3638 111, -1, -1, -1, -1, -1, -1, 118, 119, 120, 3639 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3640 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3641 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3642 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3991 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3992 -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, 3643 3993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3644 3994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3645 -1, -1, -1, -1, -1, 66, 67, -1, 69, -1, 3646 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3647 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3648 -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, 3649 -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3650 111, -1, -1, -1, -1, -1, -1, 118, 119, 120, 3651 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3652 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3653 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3654 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3995 -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, 3996 73, 74, 4, 5, 6, 7, 8, 9, 10, 11, 3997 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3998 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3999 -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, 3655 4000 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3656 4001 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3657 -1, -1, -1, -1, -1, 66, 67, -1, 69, -1, 3658 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3659 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3660 -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, 3661 -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3662 111, -1, -1, -1, -1, -1, -1, 118, 119, 120, 3663 121, 122, 123, 4, 5, 6, 7, 8, 9, 10, 3664 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3665 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3666 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3667 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3668 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3669 30, 31, 32, -1, -1, 66, 67, -1, 69, 39, 3670 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3671 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3672 -1, -1, -1, 94, -1, -1, -1, 67, -1, -1, 3673 -1, -1, -1, -1, 74, 75, -1, -1, 109, -1, 3674 111, -1, -1, -1, -1, -1, -1, 118, 119, 120, 3675 121, 122, 123, 3, 4, 5, 6, 7, 8, 9, 3676 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3677 20, 21, 22, 23, 24, 25, 26, 27, -1, 119, 3678 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 3679 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3680 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3681 -1, 30, 31, 32, 33, 34, 35, 67, -1, 69, 3682 39, 71, 72, -1, 74, 75, 76, -1, -1, -1, 3683 -1, -1, -1, 83, 84, -1, -1, -1, -1, -1, 3684 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3685 -1, -1, -1, -1, -1, 74, 75, -1, -1, 109, 3686 -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, 3687 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3688 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3689 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, 3690 33, -1, -1, 36, -1, -1, 39, -1, -1, -1, 3691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3693 -1, -1, -1, -1, 67, -1, 69, -1, 71, -1, 3694 -1, 74, 75, -1, -1, 78, 3, 4, 5, 6, 3695 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3696 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3697 27, -1, -1, 30, 31, 32, 33, -1, 111, 36, 3698 -1, -1, 39, -1, -1, -1, 119, -1, -1, -1, 3699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3700 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3701 67, -1, 69, -1, 71, -1, -1, 74, 75, 3, 3702 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3703 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3704 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3705 -1, -1, -1, -1, 111, 39, -1, -1, -1, -1, 3706 -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, 3707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3708 -1, -1, -1, 67, -1, 69, -1, 71, -1, -1, 3709 74, 75, -1, 4, 5, 6, 7, 8, 9, 10, 3710 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3711 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3712 31, 32, -1, -1, -1, -1, -1, 111, 39, -1, 3713 -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, 3714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3715 -1, -1, -1, -1, -1, -1, 67, -1, 69, -1, 3716 71, 72, -1, 74, 75, 76, -1, -1, -1, -1, 3717 -1, -1, 83, 84, -1, -1, -1, -1, -1, -1, 3718 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3719 -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3720 111, -1, -1, -1, -1, -1, -1, -1, 119, 4, 3721 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3722 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3723 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3724 -1, -1, -1, -1, 39, -1, -1, -1, -1, 10, 3725 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3726 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3727 31, 32, 67, -1, 69, -1, 71, -1, 39, 74, 3728 75, -1, 4, 5, 6, 7, 8, 9, 10, 11, 3729 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3730 22, 23, 24, 25, 26, 27, 67, -1, 30, 31, 3731 32, -1, -1, 74, 75, 110, 111, 39, -1, -1, 3732 -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, 3733 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3734 -1, -1, -1, -1, -1, 67, -1, 69, 109, 71, 3735 111, -1, 74, 75, -1, -1, -1, -1, 119, -1, 3736 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3737 -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, 3738 -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, 3739 -1, -1, -1, -1, -1, -1, -1, 119, 4, 5, 3740 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3741 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3742 26, 27, -1, -1, 30, 31, 32, -1, -1, -1, 3743 -1, -1, -1, 39, -1, -1, -1, -1, 10, 11, 3744 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3745 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 3746 32, 67, -1, 69, -1, 71, -1, 39, 74, 75, 3747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3749 96, -1, -1, -1, -1, 67, -1, -1, -1, -1, 3750 72, -1, 74, 75, 76, 111, 78, -1, -1, -1, 3751 -1, 83, 84, 119, 4, 5, 6, 7, 8, 9, 3752 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3753 20, 21, 22, 23, 24, 25, 26, 27, -1, 111, 3754 30, 31, 32, -1, -1, -1, -1, 119, -1, 39, 3755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3756 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3757 -1, -1, -1, -1, -1, -1, -1, 67, -1, 69, 3758 -1, 71, -1, -1, 74, 75, -1, 4, 5, 6, 3759 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3760 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3761 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3762 -1, 111, 39, -1, -1, -1, -1, -1, -1, 119, 3763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3764 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3765 67, -1, 69, -1, 71, -1, -1, 74, 75, -1, 3766 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3767 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3768 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3769 -1, -1, -1, -1, 111, 39, -1, -1, -1, -1, 3770 -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, 3771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3772 -1, -1, -1, 67, -1, 69, -1, 71, -1, -1, 3773 74, 75, -1, 4, 5, 6, 7, 8, 9, 10, 3774 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3775 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3776 31, 32, -1, -1, -1, -1, -1, 111, 39, -1, 3777 -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, 3778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3779 -1, -1, -1, -1, -1, -1, 67, -1, 69, -1, 3780 71, -1, -1, 74, 75, 10, 11, 12, 13, 14, 3781 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3782 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3783 -1, -1, 37, 38, 39, 40, -1, -1, -1, -1, 3784 111, -1, -1, -1, -1, -1, -1, -1, 119, -1, 3785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3786 -1, 66, 67, -1, -1, -1, -1, 72, -1, 74, 3787 75, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3788 -1, 86, 87, -1, -1, -1, -1, -1, -1, 94, 3789 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3790 -1, -1, -1, -1, 109, -1, 111, -1, -1, 114, 3791 -1, -1, -1, 118, 119, 120, 121, 122, 123, 10, 3792 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3793 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3794 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3795 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3796 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3797 30, 31, 32, -1, -1, 66, 67, -1, -1, 39, 3798 -1, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3799 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3800 -1, -1, -1, 94, -1, -1, -1, 67, -1, -1, 3801 -1, -1, 72, -1, 74, 75, 76, -1, 109, -1, 3802 111, 112, -1, 83, 84, -1, -1, 118, 119, 120, 3803 121, 122, 123, 10, 11, 12, 13, 14, 15, 16, 3804 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3805 27, 111, -1, 30, 31, 32, -1, -1, -1, 119, 3806 37, 38, 39, 40, 10, 11, 12, 13, 14, 15, 3807 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3808 26, 27, -1, -1, 30, 31, 32, -1, -1, 66, 3809 67, -1, -1, 39, 40, 72, -1, 74, 75, 76, 3810 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3811 87, -1, -1, -1, -1, -1, -1, 94, -1, -1, 3812 -1, 67, -1, -1, -1, -1, -1, -1, 74, 75, 3813 -1, -1, 109, 110, 111, -1, -1, -1, -1, -1, 3814 -1, 118, 119, 120, 121, 122, 123, 10, 11, 12, 3815 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3816 23, 24, 25, 26, 27, 111, -1, 30, 31, 32, 3817 -1, -1, -1, 119, 37, 38, 39, 40, -1, -1, 3818 -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 3819 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3820 25, 26, 27, 66, 67, 30, 31, 32, -1, 72, 3821 -1, 74, 75, 76, 39, -1, 79, 80, 81, 82, 3822 83, 84, -1, 86, 87, -1, -1, -1, -1, -1, 3823 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, 3824 -1, -1, 67, -1, -1, -1, 109, -1, 111, 74, 3825 75, -1, -1, -1, -1, 118, 119, 120, 121, 122, 3826 123, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3827 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3828 -1, 30, 31, 32, 109, -1, 111, -1, 37, 38, 3829 39, 40, -1, -1, 119, -1, -1, -1, -1, 10, 3830 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3831 21, 22, 23, 24, 25, 26, 27, 66, 67, 30, 3832 31, 32, -1, 72, -1, 74, 75, 76, 39, -1, 3833 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3834 -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, 3835 -1, -1, -1, -1, -1, -1, 67, -1, -1, -1, 3836 109, -1, 111, 74, 75, -1, -1, -1, -1, 118, 3837 119, 120, 121, 122, 123, 10, 11, 12, 13, 14, 3838 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3839 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3840 111, -1, 37, 38, 39, 40, -1, -1, 119, -1, 3841 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3842 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3843 -1, 66, 67, -1, -1, -1, -1, 72, -1, 74, 3844 75, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3845 -1, 86, 87, -1, -1, -1, -1, -1, -1, 94, 3846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3847 -1, -1, -1, -1, 109, -1, 111, -1, -1, -1, 3848 -1, -1, -1, 118, 119, 120, 121, 122, 123, 10, 3849 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3850 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3851 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3852 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3853 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3854 30, 31, 32, -1, -1, 66, 67, -1, -1, 39, 3855 -1, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3856 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3857 -1, -1, -1, 94, -1, -1, -1, 67, -1, -1, 3858 -1, -1, 72, -1, 74, 75, 76, -1, 109, -1, 3859 111, -1, -1, 83, 84, -1, -1, 118, 119, 120, 3860 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, 3861 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3862 -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, 3863 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3864 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3865 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 3866 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3867 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3868 30, 31, 32, -1, -1, -1, -1, 67, -1, 39, 3869 -1, -1, 72, -1, 74, 75, 76, -1, -1, -1, 3870 -1, -1, -1, 83, 84, -1, -1, -1, -1, -1, 3871 -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 3872 -1, -1, 72, -1, 74, 75, 76, -1, -1, 109, 3873 -1, 111, -1, 83, 84, -1, -1, -1, -1, 119, 3874 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3875 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3876 -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, 3877 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3878 20, 21, 22, 23, 24, 25, 26, 27, 28, -1, 3879 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 3880 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3881 20, 21, 22, 23, 24, 25, 26, 27, 28, -1, 3882 30, 31, 32, -1, -1, -1, -1, 67, -1, 39, 3883 -1, -1, -1, -1, 74, 75, -1, -1, 78, -1, 3884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3885 -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 3886 -1, -1, -1, -1, 74, 75, -1, -1, 78, 109, 3887 -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, 3888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3889 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3890 -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, 3891 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3892 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3893 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 3894 40, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3895 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3896 -1, 30, 31, 32, -1, -1, -1, 67, -1, -1, 3897 39, -1, -1, -1, 74, 75, -1, -1, -1, -1, 3898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3899 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3900 -1, -1, -1, -1, -1, 74, 75, -1, -1, 78, 3901 -1, 111, -1, -1, -1, 115, -1, -1, -1, 119, 3902 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3903 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3904 27, -1, 111, 30, 31, 32, -1, -1, -1, -1, 3905 119, -1, 39, 40, 10, 11, 12, 13, 14, 15, 3906 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3907 26, 27, -1, -1, 30, 31, 32, -1, -1, -1, 3908 67, -1, -1, 39, -1, -1, -1, 74, 75, -1, 3909 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3910 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3911 -1, 67, 30, 31, 32, -1, -1, -1, 74, 75, 3912 -1, 39, -1, -1, 111, -1, -1, -1, 115, -1, 3913 -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, 3914 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 3915 -1, -1, -1, -1, -1, 111, 74, 75, -1, -1, 3916 -1, -1, -1, 119, -1, 10, 11, 12, 13, 14, 3917 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3918 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3919 -1, -1, -1, 111, 39, -1, -1, -1, -1, -1, 3920 -1, 119, -1, 10, 11, 12, 13, 14, 15, 16, 3921 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3922 27, -1, 67, 30, 31, 32, -1, -1, -1, 74, 3923 75, -1, 39, 10, 11, 12, 13, 14, 15, 16, 3924 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3925 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3926 67, -1, 39, -1, -1, -1, 111, 74, 75, -1, 3927 -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, 3928 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3929 67, -1, -1, -1, -1, -1, -1, 74, 75, -1, 3930 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3931 -1, -1, 119, -1, -1, 10, 11, 12, 13, 14, 3932 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3933 25, 26, 27, -1, 111, 30, 31, 32, -1, -1, 3934 -1, -1, 119, -1, 39, 10, 11, 12, 13, 14, 3935 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3936 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3937 -1, -1, 67, -1, 39, -1, -1, -1, -1, 74, 3938 75, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3939 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3940 27, -1, 67, 30, 31, 32, -1, -1, -1, 74, 3941 75, -1, 39, -1, -1, -1, 111, -1, -1, -1, 3942 -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, 3943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3944 67, -1, -1, -1, -1, -1, 111, 74, 75, -1, 3945 -1, -1, -1, -1, 119, -1, 10, 11, 12, 13, 3946 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3947 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3948 -1, -1, -1, -1, 111, 39, -1, -1, -1, -1, 3949 -1, -1, 119, -1, 10, 11, 12, 13, 14, 15, 3950 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3951 26, 27, -1, 67, 30, 31, 32, -1, -1, -1, 3952 74, 75, -1, 39, -1, -1, 4, 5, 6, 7, 3953 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3954 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3955 -1, 67, 30, 31, 32, -1, -1, 111, 74, 75, 3956 -1, 39, -1, 37, 38, 119, 40, 41, -1, 43, 3957 -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, 3958 -1, -1, 56, 57, -1, -1, -1, 61, 62, 67, 3959 64, 69, 66, 71, -1, -1, 74, 75, 72, -1, 3960 -1, -1, 76, 119, -1, 79, 80, 81, 82, 83, 3961 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3962 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3963 -1, -1, 110, -1, -1, 109, -1, 111, -1, -1, 3964 114, -1, -1, -1, 118, 119, 120, 121, 122, 123, 3965 -1, -1, -1, -1, 128, -1, 37, 38, 132, 40, 3966 41, -1, 43, -1, -1, 46, 47, 48, 49, 50, 3967 51, 52, 53, -1, -1, -1, 57, -1, -1, -1, 3968 61, 62, -1, 64, -1, 66, -1, -1, -1, -1, 3969 -1, 72, -1, -1, -1, 76, -1, -1, 79, 80, 3970 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3971 -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, 3972 -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3973 111, -1, -1, 114, -1, -1, -1, 118, 119, 120, 3974 121, 122, 123, -1, -1, -1, -1, 128, -1, -1, 3975 -1, 132, 4, 5, 6, 7, 8, 9, 10, 11, 3976 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3977 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3978 32, -1, -1, -1, -1, -1, -1, 39, -1, 37, 3979 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, 3980 48, 49, 50, 51, 52, 53, -1, -1, 56, 57, 3981 -1, -1, -1, 61, 62, 67, 64, 69, 66, 71, 3982 -1, -1, 74, 75, 72, -1, -1, -1, 76, -1, 3983 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3984 -1, -1, -1, -1, 96, -1, 94, -1, -1, -1, 3985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3986 -1, 109, -1, 111, -1, -1, 114, -1, -1, -1, 3987 118, 119, 120, 121, 122, 123, -1, -1, 37, 38, 3988 128, 40, 41, -1, 43, 44, 45, 46, 47, 48, 3989 49, 50, 51, 52, 53, -1, -1, -1, 57, -1, 3990 -1, -1, 61, 62, -1, 64, -1, 66, -1, -1, 3991 -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 3992 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3993 -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, 3994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3995 109, -1, 111, -1, -1, 114, -1, -1, -1, 118, 3996 119, 120, 121, 122, 123, -1, -1, 37, 38, 128, 3997 40, 41, -1, 43, -1, -1, 46, 47, 48, 49, 3998 50, 51, 52, 53, -1, -1, -1, 57, -1, -1, 3999 -1, 61, 62, -1, 64, -1, 66, -1, -1, -1, 4000 -1, -1, 72, -1, -1, -1, 76, -1, -1, 79, 4001 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 4002 -1, -1, -1, -1, 94, 37, 38, -1, 40, -1, 4003 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 4004 -1, 111, -1, -1, 114, -1, -1, -1, 118, 119, 4005 120, 121, 122, 123, 66, -1, -1, -1, 128, -1, 4006 72, -1, -1, -1, 76, -1, -1, 79, 80, 81, 4007 82, 83, 84, -1, 86, 87, -1, -1, -1, -1, 4008 -1, -1, 94, 37, 38, -1, 40, -1, -1, -1, 4009 -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, 4010 -1, -1, 37, 38, -1, 40, 118, 119, 120, 121, 4011 122, 123, 66, -1, -1, -1, -1, -1, 72, -1, 4012 -1, -1, 76, -1, -1, 79, 80, 81, 82, 83, 4013 84, 66, 86, 87, -1, -1, -1, 72, -1, -1, 4014 94, 76, -1, -1, 79, 80, 81, 82, 83, 84, 4015 -1, 86, 87, -1, -1, 109, -1, 111, -1, 94, 4016 37, 38, -1, 40, 118, 119, 120, 121, 122, 123, 4017 -1, -1, -1, -1, 109, -1, 111, -1, -1, 37, 4018 38, -1, 40, 118, 119, 120, 121, 122, 123, 66, 4019 -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, 4020 -1, -1, 79, 80, 81, 82, 83, 84, 66, 86, 4021 87, -1, -1, -1, 72, -1, -1, 94, 76, -1, 4022 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 4023 -1, -1, 109, -1, 111, -1, 94, 37, 38, -1, 4024 40, 118, 119, 120, 121, 122, 123, -1, -1, -1, 4025 -1, 109, -1, -1, -1, -1, 37, 38, -1, 40, 4026 118, 119, 120, 121, 122, 123, 66, -1, -1, -1, 4027 -1, -1, 72, -1, -1, -1, 76, -1, -1, 79, 4028 80, 81, 82, 83, 84, 66, 86, 87, -1, -1, 4029 -1, 72, -1, -1, 94, 76, -1, -1, 79, 80, 4030 81, 82, 83, 84, -1, 86, 87, -1, -1, 109, 4031 -1, -1, -1, 94, -1, -1, -1, -1, 118, 119, 4032 120, 121, 122, 123, -1, -1, -1, -1, 109, -1, 4033 -1, -1, -1, -1, -1, -1, -1, 118, 119, 120, 4034 121, 122, 123, 3, 4, 5, 6, 7, 8, 9, 4035 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 4036 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 4037 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 4038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4039 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4040 -1, -1, -1, -1, -1, -1, -1, 67, -1, 69, 4041 -1, 71, -1, -1, 74, 75, 3, 4, 5, 6, 4042 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 4043 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 4044 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 4045 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 4046 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4047 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4048 67, -1, 69, -1, 71, -1, -1, 74, 75, 4, 4049 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4050 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 4051 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 4052 -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, 4053 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4054 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4055 -1, -1, 67, -1, 69, -1, 71, -1, -1, 74, 4056 75 4002 -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, 4003 -1, 73, 74 4057 4004 }; 4058 4005 … … 4063 4010 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 4064 4011 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 4065 22, 23, 24, 25, 26, 2 7, 30, 31, 32, 33,4066 3 6, 39, 40, 64, 67, 69, 71, 72, 74, 75,4067 76, 83, 84, 109, 111, 119, 137, 140, 197, 211,4012 22, 23, 24, 25, 26, 29, 30, 31, 32, 35, 4013 38, 39, 63, 66, 68, 70, 71, 73, 74, 75, 4014 82, 83, 108, 110, 118, 136, 139, 196, 210, 211, 4068 4015 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 4069 222, 223, 224, 225, 226, 227, 22 8, 230, 231, 232,4070 233, 234, 235, 236, 23 7, 239, 240, 241, 242, 243,4071 244, 2 45, 253, 254, 280, 281, 282, 290, 293, 299,4072 30 0, 302, 304, 305, 311, 316, 320, 321, 322, 323,4073 324, 325, 326, 3 27, 347, 364, 365, 366, 367, 72,4074 1 19, 139, 140, 214, 216, 224, 226, 236, 240, 242,4075 281, 82, 109, 309, 310, 311, 309, 309, 72, 74,4076 75, 76, 138, 139, 270, 271, 291, 292, 74, 75,4077 271, 109, 302, 11, 198, 109, 119, 316, 321, 322,4078 32 3, 325, 326, 327, 112, 134, 111, 217, 224, 226,4079 32 0, 324, 363, 364, 367, 368, 135, 107, 131, 274,4080 1 14, 135, 172, 74, 75, 137, 269, 135, 135, 135,4081 1 16, 135, 74, 75, 109, 119, 306, 315, 316, 317,4082 318, 319, 32 0, 324, 328, 329, 330, 331, 332, 338,4083 3, 28, 78, 238, 3, 5, 74, 111, 119, 216,4084 2 27, 231, 234, 243, 282, 320, 324, 367, 214, 216,4085 2 26, 236, 240, 242, 281, 320, 324, 33, 232, 232,4086 2 27, 234, 135, 232, 227, 232, 227, 75, 109, 114,4087 2 71, 282, 114, 271, 232, 227, 116, 135, 135, 0,4088 1 34, 109, 172, 309, 309, 134, 111, 224, 226, 365,4089 26 9, 269, 226, 131, 109, 119, 306, 316, 320, 111,4090 119, 367, 303, 229, 311, 109, 287, 109, 109, 51,4091 109, 37, 38, 40, 66, 72, 76, 79, 80, 81,4092 8 2, 86, 87, 94, 109, 111, 118, 119, 120, 121,4093 122, 1 23, 136, 140, 141, 142, 143, 148, 149, 150,4016 222, 223, 224, 225, 226, 227, 229, 230, 231, 232, 4017 233, 234, 235, 236, 238, 239, 240, 241, 242, 243, 4018 244, 252, 253, 279, 280, 281, 289, 292, 298, 299, 4019 301, 303, 304, 310, 315, 319, 320, 321, 322, 323, 4020 324, 325, 326, 346, 363, 364, 365, 366, 71, 118, 4021 138, 139, 213, 215, 223, 225, 235, 239, 241, 280, 4022 81, 108, 308, 309, 310, 308, 308, 71, 73, 74, 4023 75, 137, 138, 269, 270, 290, 291, 73, 74, 270, 4024 108, 301, 11, 197, 108, 118, 315, 320, 321, 322, 4025 324, 325, 326, 111, 133, 110, 216, 223, 225, 319, 4026 323, 362, 363, 366, 367, 134, 106, 130, 273, 113, 4027 134, 171, 73, 74, 136, 268, 134, 134, 134, 115, 4028 134, 73, 74, 108, 118, 305, 314, 315, 316, 317, 4029 318, 319, 323, 327, 328, 329, 330, 331, 337, 3, 4030 27, 77, 237, 3, 5, 73, 110, 118, 215, 226, 4031 230, 233, 242, 281, 319, 323, 366, 213, 215, 225, 4032 235, 239, 241, 280, 319, 323, 32, 231, 231, 226, 4033 233, 134, 231, 226, 231, 226, 74, 108, 113, 270, 4034 281, 113, 270, 231, 226, 115, 134, 134, 0, 133, 4035 108, 171, 308, 308, 133, 110, 223, 225, 364, 268, 4036 268, 225, 130, 108, 118, 305, 315, 319, 110, 118, 4037 366, 302, 228, 310, 108, 286, 108, 108, 50, 108, 4038 36, 37, 39, 65, 71, 75, 78, 79, 80, 81, 4039 85, 86, 93, 108, 110, 117, 118, 119, 120, 121, 4040 122, 135, 139, 140, 141, 142, 147, 148, 149, 150, 4094 4041 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 4095 16 1, 163, 165, 224, 273, 289, 363, 368, 226, 110,4096 1 10, 110, 110, 110, 110, 110, 74, 75, 111, 224,4097 269, 347, 365, 111, 119, 163, 216, 217, 223, 226,4098 230, 23 1, 236, 239, 240, 242, 259, 260, 264, 265,4099 266, 2 67, 281, 347, 359, 360, 361, 362, 367, 368,4100 1 12, 109, 320, 324, 367, 109, 116, 132, 111, 114,4101 1 19, 163, 275, 275, 115, 134, 116, 132, 109, 116,4102 1 32, 116, 132, 116, 132, 309, 132, 316, 317, 318,4103 3 19, 329, 330, 331, 332, 226, 315, 328, 64, 308,4104 111, 309, 346, 347, 309, 309, 172, 134, 109, 309,4105 3 46, 309, 309, 226, 306, 109, 109, 225, 226, 224,4106 226, 112, 134, 224, 363, 368, 172, 134, 269, 274,4107 2 16, 231, 320, 324, 172, 134, 291, 226, 236, 132,4108 22 6, 226, 289, 40, 111, 224, 246, 247, 248, 249,4109 36 3, 367, 114, 255, 271, 114, 226, 291, 132, 132,4110 302, 134, 139, 268, 3, 135, 206, 207, 221, 223,4111 226, 134, 308, 109, 308, 163, 316, 226, 109, 134,4112 269, 114, 33, 34, 35, 224, 283, 284, 286, 134,4113 1 29, 131, 288, 134, 227, 233, 234, 269, 312, 313,4114 314, 109, 141, 109, 148, 109, 148, 150, 109, 148,4115 10 9, 109, 148, 148, 139, 111, 163, 168, 172, 224,4116 272, 363, 112, 134, 150, 150, 82, 85, 86, 87,4117 1 09, 111, 113, 114, 97, 98, 99, 100, 101, 102,4118 103, 104, 105, 1 06, 131, 167, 150, 119, 124, 125,4119 121, 122, 88, 89, 90, 91, 126, 127, 92, 93,4120 12 0, 128, 129, 94, 95, 130, 131, 370, 109, 119,4121 342, 343, 344, 345, 346, 110, 116, 109, 346, 347,4122 109, 346, 347, 134, 109, 224, 365, 112, 134, 111,4123 1 19, 135, 224, 226, 358, 359, 367, 368, 135, 109,4124 11 1, 119, 316, 333, 334, 335, 336, 337, 338, 339,4125 340, 34 1, 347, 348, 349, 350, 351, 352, 353, 119,4126 367, 226, 135, 135, 119, 224, 226, 360, 269, 224,4127 3 47, 360, 269, 109, 134, 134, 134, 112, 134, 72,4128 80, 111, 113, 140, 271, 275, 276, 277, 278, 279,4129 13 4, 134, 134, 134, 134, 134, 306, 110, 110, 110,4130 1 10, 110, 110, 110, 315, 328, 109, 274, 112, 206,4131 134, 306, 168, 273, 168, 273, 306, 111, 206, 308,4132 1 72, 134, 206, 110, 248, 249, 112, 134, 109, 117,4133 119, 250, 252, 315, 316, 328, 346, 354, 355, 356,4134 357, 115, 247, 116, 132, 116, 132, 271, 246, 116,4135 369, 131, 256, 255, 226, 261, 262, 263, 266, 267,4136 11 0, 116, 172, 134, 119, 163, 134, 223, 226, 260,4137 3 59, 367, 300, 301, 109, 119, 333, 110, 116, 370,4138 2 71, 283, 109, 114, 271, 273, 283, 110, 116, 109,4139 1 41, 110, 117, 272, 272, 272, 111, 139, 145, 163,4140 27 3, 272, 112, 134, 110, 116, 110, 109, 119, 354,4141 11 0, 116, 163, 111, 139, 111, 144, 145, 134, 111,4142 1 39, 144, 163, 163, 150, 150, 150, 151, 151, 152,4143 152, 15 3, 153, 153, 153, 154, 154, 155, 156, 157,4144 158, 1 59, 117, 168, 163, 134, 343, 344, 345, 226,4145 3 42, 309, 309, 163, 273, 134, 268, 119, 134, 224,4146 3 47, 360, 226, 230, 112, 134, 112, 367, 112, 109,4147 134, 316, 334, 335, 336, 339, 349, 350, 351, 112,4148 134, 226, 333, 337, 348, 109, 309, 352, 370, 309,4149 3 09, 370, 109, 309, 352, 309, 309, 309, 309, 347,4150 224, 358, 368, 269, 112, 116, 112, 116, 370, 224,4151 36 0, 370, 257, 258, 259, 260, 257, 257, 269, 163,4152 1 34, 111, 271, 117, 116, 369, 275, 80, 111, 117,4153 279, 29, 208, 209, 269, 257, 139, 306, 139, 308,4154 109, 346, 347, 109, 346, 347, 141, 347, 172, 261,4155 1 10, 110, 110, 110, 112, 172, 206, 172, 114, 132,4156 1 32, 111, 316, 355, 356, 357, 161, 162, 226, 354,4157 251, 25 2, 251, 309, 309, 271, 309, 115, 271, 115,4158 162, 369, 135, 135, 139, 221, 135, 135, 257, 109,4159 119, 367, 135, 115, 226, 284, 285, 135, 134, 134,4160 1 09, 135, 110, 313, 168, 169, 117, 132, 111, 141,4161 199, 200, 201, 110, 116, 110, 134, 117, 110, 110,4162 1 10, 163, 226, 114, 150, 165, 163, 164, 166, 116,4163 13 5, 134, 134, 110, 116, 163, 134, 115, 161, 117,4164 261, 110, 110, 110, 342, 261, 110, 257, 224, 360,4165 11 1, 119, 163, 163, 226, 339, 261, 110, 110, 110,4166 1 10, 110, 110, 110, 7, 226, 333, 337, 348, 134,4167 134, 370, 134, 134, 110, 135, 135, 135, 135, 274,4168 1 35, 161, 162, 163, 307, 134, 275, 277, 115, 134,4169 2 10, 271, 40, 41, 43, 46, 47, 48, 49, 50,4170 51, 52, 5 3, 57, 61, 62, 111, 128, 139, 169,4171 170, 171, 172, 173, 17 4, 176, 177, 189, 191, 192,4172 197, 211, 305, 29, 135, 131, 274, 134, 134, 110,4173 1 35, 172, 246, 112, 110, 110, 110, 354, 250, 256,4174 1 15, 110, 116, 112, 112, 135, 226, 116, 370, 287,4175 110, 283, 214, 216, 224, 295, 296, 297, 298, 289,4176 1 10, 110, 117, 162, 109, 110, 117, 116, 139, 163,4177 163, 276, 116, 135, 166, 112, 139, 146, 147, 163,4178 1 45, 135, 146, 161, 165, 135, 109, 346, 347, 135,4179 13 5, 134, 135, 135, 135, 163, 110, 135, 109, 346,4180 347, 109, 352, 109, 352, 347, 225, 7, 119, 135,4181 163, 261, 261, 260, 264, 264, 265, 116, 116, 110,4182 11 0, 112, 96, 123, 135, 135, 146, 275, 163, 116,4183 132, 211, 215, 226, 230, 109, 109, 170, 109, 109,4184 13 2, 139, 132, 139, 119, 139, 169, 109, 172, 164,4185 1 64, 112, 143, 117, 132, 135, 134, 135, 210, 110,4186 163, 261, 261, 309, 110, 115, 109, 346, 347, 134,4187 1 10, 134, 135, 306, 115, 134, 135, 135, 110, 114,4188 1 99, 112, 162, 132, 199, 201, 110, 116, 135, 369,4189 1 64, 112, 135, 85, 113, 116, 135, 135, 112, 135,4190 1 10, 134, 110, 110, 112, 112, 112, 135, 110, 134,4191 13 4, 134, 163, 163, 135, 112, 135, 135, 135, 135,4192 13 4, 134, 162, 162, 112, 112, 135, 135, 271, 226,4193 16 8, 168, 47, 168, 134, 132, 132, 168, 132, 132,4194 168, 58, 59, 60, 193, 194, 195, 132, 63, 132,4195 114, 309, 174, 115, 132, 135, 135, 134, 96, 266,4196 267, 110, 296, 116, 132, 116, 132, 115, 294, 117,4197 1 41, 110, 110, 117, 166, 112, 115, 112, 111, 147,4198 1 11, 147, 147, 112, 112, 112, 261, 112, 261, 261,4199 261, 135, 135, 112, 112, 110, 110, 112, 116, 96,4200 260, 96, 135, 112, 112, 110, 110, 109, 110, 169,4201 190, 211, 132, 110, 109, 109, 172, 195, 58, 59,4202 1 63, 144, 170, 110, 110, 261, 114, 134, 134, 295,4203 141, 202, 109, 132, 202, 135, 117, 134, 134, 135,4204 13 5, 135, 135, 112, 112, 134, 135, 112, 170, 44,4205 45, 114, 180, 181, 182, 168, 170, 135, 110, 169,4206 1 14, 182, 96, 134, 96, 134, 109, 109, 132, 115,4207 13 5, 134, 269, 306, 115, 116, 117, 162, 110, 112,4208 1 63, 146, 146, 110, 110, 110, 110, 264, 42, 162,4209 178, 179, 307, 117, 134, 170, 180, 110, 132, 170,4210 13 2, 134, 110, 134, 110, 134, 96, 134, 96, 134,4211 1 32, 110, 295, 141, 139, 203, 110, 132, 117, 135,4212 1 35, 170, 96, 116, 117, 135, 204, 205, 211, 132,4213 16 9, 169, 204, 172, 196, 224, 363, 172, 196, 110,4214 1 34, 110, 134, 115, 110, 116, 163, 112, 112, 162,4215 1 78, 181, 183, 184, 134, 132, 181, 185, 186, 135,4216 1 09, 119, 306, 354, 139, 135, 172, 196, 172, 196,4217 1 09, 132, 139, 170, 175, 115, 181, 211, 169, 56,4218 1 75, 188, 115, 181, 110, 226, 110, 135, 135, 289,4219 17 0, 175, 132, 187, 188, 175, 188, 172, 172, 110,4220 1 10, 110, 187, 135, 135, 172, 172, 135, 1354042 162, 164, 223, 272, 288, 362, 367, 225, 109, 109, 4043 109, 109, 109, 109, 109, 73, 74, 110, 223, 268, 4044 346, 364, 110, 118, 162, 215, 216, 222, 225, 229, 4045 230, 235, 238, 239, 241, 258, 259, 263, 264, 265, 4046 266, 280, 346, 358, 359, 360, 361, 366, 367, 111, 4047 108, 319, 323, 366, 108, 115, 131, 110, 113, 118, 4048 162, 274, 274, 114, 133, 115, 131, 108, 115, 131, 4049 115, 131, 115, 131, 308, 131, 315, 316, 317, 318, 4050 328, 329, 330, 331, 225, 314, 327, 63, 307, 110, 4051 308, 345, 346, 308, 308, 171, 133, 108, 308, 345, 4052 308, 308, 225, 305, 108, 108, 224, 225, 223, 225, 4053 111, 133, 223, 362, 367, 171, 133, 268, 273, 215, 4054 230, 319, 323, 171, 133, 290, 225, 235, 131, 225, 4055 225, 288, 39, 110, 223, 245, 246, 247, 248, 362, 4056 366, 113, 254, 270, 113, 225, 290, 131, 131, 301, 4057 133, 138, 267, 3, 134, 205, 206, 220, 222, 225, 4058 133, 307, 108, 307, 162, 315, 225, 108, 133, 268, 4059 113, 32, 33, 34, 223, 282, 283, 285, 133, 128, 4060 130, 287, 133, 226, 232, 233, 268, 311, 312, 313, 4061 108, 140, 108, 147, 108, 147, 149, 108, 147, 108, 4062 108, 147, 147, 138, 110, 162, 167, 171, 223, 271, 4063 362, 111, 133, 149, 149, 81, 84, 85, 86, 108, 4064 110, 112, 113, 96, 97, 98, 99, 100, 101, 102, 4065 103, 104, 105, 130, 166, 149, 118, 123, 124, 120, 4066 121, 87, 88, 89, 90, 125, 126, 91, 92, 119, 4067 127, 128, 93, 94, 129, 130, 369, 108, 118, 341, 4068 342, 343, 344, 345, 109, 115, 108, 345, 346, 108, 4069 345, 346, 133, 108, 223, 364, 111, 133, 110, 118, 4070 134, 223, 225, 357, 358, 366, 367, 134, 108, 110, 4071 118, 315, 332, 333, 334, 335, 336, 337, 338, 339, 4072 340, 346, 347, 348, 349, 350, 351, 352, 118, 366, 4073 225, 134, 134, 118, 223, 225, 359, 268, 223, 346, 4074 359, 268, 108, 133, 133, 133, 111, 133, 71, 79, 4075 110, 112, 139, 270, 274, 275, 276, 277, 278, 133, 4076 133, 133, 133, 133, 133, 305, 109, 109, 109, 109, 4077 109, 109, 109, 314, 327, 108, 273, 111, 205, 133, 4078 305, 167, 272, 167, 272, 305, 110, 205, 307, 171, 4079 133, 205, 109, 247, 248, 111, 133, 108, 116, 118, 4080 249, 251, 314, 315, 327, 345, 353, 354, 355, 356, 4081 114, 246, 115, 131, 115, 131, 270, 245, 115, 368, 4082 130, 255, 254, 225, 260, 261, 262, 265, 266, 109, 4083 115, 171, 133, 118, 162, 133, 222, 225, 259, 358, 4084 366, 299, 300, 108, 118, 332, 109, 115, 369, 270, 4085 282, 108, 113, 270, 272, 282, 109, 115, 108, 140, 4086 109, 116, 271, 271, 271, 110, 138, 144, 162, 272, 4087 271, 111, 133, 109, 115, 109, 108, 118, 353, 109, 4088 115, 162, 110, 138, 110, 143, 144, 133, 110, 138, 4089 143, 162, 162, 149, 149, 149, 150, 150, 151, 151, 4090 152, 152, 152, 152, 153, 153, 154, 155, 156, 157, 4091 158, 116, 167, 162, 133, 342, 343, 344, 225, 341, 4092 308, 308, 162, 272, 133, 267, 118, 133, 223, 346, 4093 359, 225, 229, 111, 133, 111, 366, 111, 108, 133, 4094 315, 333, 334, 335, 338, 348, 349, 350, 111, 133, 4095 225, 332, 336, 347, 108, 308, 351, 369, 308, 308, 4096 369, 108, 308, 351, 308, 308, 308, 308, 346, 223, 4097 357, 367, 268, 111, 115, 111, 115, 369, 223, 359, 4098 369, 256, 257, 258, 259, 256, 256, 268, 162, 133, 4099 110, 270, 116, 115, 368, 274, 79, 110, 116, 278, 4100 28, 207, 208, 268, 256, 138, 305, 138, 307, 108, 4101 345, 346, 108, 345, 346, 140, 346, 171, 260, 109, 4102 109, 109, 109, 111, 171, 205, 171, 113, 131, 131, 4103 110, 315, 354, 355, 356, 160, 161, 225, 353, 250, 4104 251, 250, 308, 308, 270, 308, 114, 270, 114, 161, 4105 368, 134, 134, 138, 220, 134, 134, 256, 108, 118, 4106 366, 134, 114, 225, 283, 284, 134, 133, 133, 108, 4107 134, 109, 312, 167, 168, 116, 131, 110, 140, 198, 4108 199, 200, 109, 115, 109, 133, 116, 109, 109, 109, 4109 162, 225, 113, 149, 164, 162, 163, 165, 115, 134, 4110 133, 133, 109, 115, 162, 133, 114, 160, 116, 260, 4111 109, 109, 109, 341, 260, 109, 256, 223, 359, 110, 4112 118, 162, 162, 225, 338, 260, 109, 109, 109, 109, 4113 109, 109, 109, 7, 225, 332, 336, 347, 133, 133, 4114 369, 133, 133, 109, 134, 134, 134, 134, 273, 134, 4115 160, 161, 162, 306, 133, 274, 276, 114, 133, 209, 4116 270, 39, 40, 42, 45, 46, 47, 48, 49, 50, 4117 51, 52, 56, 60, 61, 110, 127, 138, 168, 169, 4118 170, 171, 172, 173, 175, 176, 188, 190, 191, 196, 4119 210, 304, 28, 134, 130, 273, 133, 133, 109, 134, 4120 171, 245, 111, 109, 109, 109, 353, 249, 255, 114, 4121 109, 115, 111, 111, 134, 225, 115, 369, 286, 109, 4122 282, 213, 215, 223, 294, 295, 296, 297, 288, 109, 4123 109, 116, 161, 108, 109, 116, 115, 138, 162, 162, 4124 275, 115, 134, 165, 111, 138, 145, 146, 162, 144, 4125 134, 145, 160, 164, 134, 108, 345, 346, 134, 134, 4126 133, 134, 134, 134, 162, 109, 134, 108, 345, 346, 4127 108, 351, 108, 351, 346, 224, 7, 118, 134, 162, 4128 260, 260, 259, 263, 263, 264, 115, 115, 109, 109, 4129 111, 95, 122, 134, 134, 145, 274, 162, 115, 131, 4130 210, 214, 225, 229, 108, 108, 169, 108, 108, 131, 4131 138, 131, 138, 118, 138, 168, 108, 171, 163, 163, 4132 111, 142, 116, 131, 134, 133, 134, 209, 109, 162, 4133 260, 260, 308, 109, 114, 108, 345, 346, 133, 109, 4134 133, 134, 305, 114, 133, 134, 134, 109, 113, 198, 4135 111, 161, 131, 198, 200, 109, 115, 134, 368, 163, 4136 111, 134, 84, 112, 115, 134, 134, 111, 134, 109, 4137 133, 109, 109, 111, 111, 111, 134, 109, 133, 133, 4138 133, 162, 162, 134, 111, 134, 134, 134, 134, 133, 4139 133, 161, 161, 111, 111, 134, 134, 270, 225, 167, 4140 167, 46, 167, 133, 131, 131, 167, 131, 131, 167, 4141 57, 58, 59, 192, 193, 194, 131, 62, 131, 113, 4142 308, 173, 114, 131, 134, 134, 133, 95, 265, 266, 4143 109, 295, 115, 131, 115, 131, 114, 293, 116, 140, 4144 109, 109, 116, 165, 111, 114, 111, 110, 146, 110, 4145 146, 146, 111, 111, 111, 260, 111, 260, 260, 260, 4146 134, 134, 111, 111, 109, 109, 111, 115, 95, 259, 4147 95, 134, 111, 111, 109, 109, 108, 109, 168, 189, 4148 210, 131, 109, 108, 108, 171, 194, 57, 58, 162, 4149 143, 169, 109, 109, 260, 113, 133, 133, 294, 140, 4150 201, 108, 131, 201, 134, 116, 133, 133, 134, 134, 4151 134, 134, 111, 111, 133, 134, 111, 169, 43, 44, 4152 113, 179, 180, 181, 167, 169, 134, 109, 168, 113, 4153 181, 95, 133, 95, 133, 108, 108, 131, 114, 134, 4154 133, 268, 305, 114, 115, 116, 161, 109, 111, 162, 4155 145, 145, 109, 109, 109, 109, 263, 41, 161, 177, 4156 178, 306, 116, 133, 169, 179, 109, 131, 169, 131, 4157 133, 109, 133, 109, 133, 95, 133, 95, 133, 131, 4158 109, 294, 140, 138, 202, 109, 131, 116, 134, 134, 4159 169, 95, 115, 116, 134, 203, 204, 210, 131, 168, 4160 168, 203, 171, 195, 223, 362, 171, 195, 109, 133, 4161 109, 133, 114, 109, 115, 162, 111, 111, 161, 177, 4162 180, 182, 183, 133, 131, 180, 184, 185, 134, 108, 4163 118, 305, 353, 138, 134, 171, 195, 171, 195, 108, 4164 131, 138, 169, 174, 114, 180, 210, 168, 55, 174, 4165 187, 114, 180, 109, 225, 109, 134, 134, 288, 169, 4166 174, 131, 186, 187, 174, 187, 171, 171, 109, 109, 4167 109, 186, 134, 134, 171, 171, 134, 134 4221 4168 }; 4222 4169 … … 5055 5002 5056 5003 /* Line 1806 of yacc.c */ 5057 #line 29 1"parser.yy"5004 #line 290 "parser.yy" 5058 5005 { 5059 5006 typedefTable.enterScope(); … … 5064 5011 5065 5012 /* Line 1806 of yacc.c */ 5066 #line 29 7"parser.yy"5013 #line 296 "parser.yy" 5067 5014 { 5068 5015 typedefTable.leaveScope(); … … 5073 5020 5074 5021 /* Line 1806 of yacc.c */ 5022 #line 305 "parser.yy" 5023 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); } 5024 break; 5025 5026 case 5: 5027 5028 /* Line 1806 of yacc.c */ 5075 5029 #line 306 "parser.yy" 5076 { (yyval.constant) = new ConstantNode( ConstantNode:: Integer, (yyvsp[(1) - (1)].tok) ); }5077 break; 5078 5079 case 5:5030 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); } 5031 break; 5032 5033 case 6: 5080 5034 5081 5035 /* Line 1806 of yacc.c */ 5082 5036 #line 307 "parser.yy" 5083 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }5084 break;5085 5086 case 6:5087 5088 /* Line 1806 of yacc.c */5089 #line 308 "parser.yy"5090 5037 { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); } 5091 5038 break; … … 5094 5041 5095 5042 /* Line 1806 of yacc.c */ 5043 #line 332 "parser.yy" 5044 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); } 5045 break; 5046 5047 case 17: 5048 5049 /* Line 1806 of yacc.c */ 5096 5050 #line 333 "parser.yy" 5097 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }5098 break;5099 5100 case 17:5101 5102 /* Line 1806 of yacc.c */5103 #line 334 "parser.yy"5104 5051 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 5105 5052 break; … … 5108 5055 5109 5056 /* Line 1806 of yacc.c */ 5110 #line 34 1"parser.yy"5057 #line 340 "parser.yy" 5111 5058 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5112 5059 break; … … 5115 5062 5116 5063 /* Line 1806 of yacc.c */ 5117 #line 34 3"parser.yy"5064 #line 342 "parser.yy" 5118 5065 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5119 5066 break; … … 5122 5069 5123 5070 /* Line 1806 of yacc.c */ 5124 #line 34 5"parser.yy"5071 #line 344 "parser.yy" 5125 5072 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5126 5073 break; … … 5129 5076 5130 5077 /* Line 1806 of yacc.c */ 5131 #line 34 7"parser.yy"5078 #line 346 "parser.yy" 5132 5079 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5133 5080 break; … … 5136 5083 5137 5084 /* Line 1806 of yacc.c */ 5138 #line 35 7"parser.yy"5085 #line 356 "parser.yy" 5139 5086 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5140 5087 break; … … 5143 5090 5144 5091 /* Line 1806 of yacc.c */ 5145 #line 35 9"parser.yy"5092 #line 358 "parser.yy" 5146 5093 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5147 5094 break; … … 5150 5097 5151 5098 /* Line 1806 of yacc.c */ 5152 #line 36 3"parser.yy"5099 #line 362 "parser.yy" 5153 5100 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5154 5101 break; … … 5157 5104 5158 5105 /* Line 1806 of yacc.c */ 5159 #line 36 6"parser.yy"5106 #line 365 "parser.yy" 5160 5107 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5161 5108 break; … … 5164 5111 5165 5112 /* Line 1806 of yacc.c */ 5166 #line 36 9"parser.yy"5113 #line 368 "parser.yy" 5167 5114 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5168 5115 break; … … 5171 5118 5172 5119 /* Line 1806 of yacc.c */ 5173 #line 37 1"parser.yy"5120 #line 370 "parser.yy" 5174 5121 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5175 5122 break; … … 5178 5125 5179 5126 /* Line 1806 of yacc.c */ 5180 #line 37 3"parser.yy"5127 #line 372 "parser.yy" 5181 5128 { (yyval.en) = 0; } 5182 5129 break; … … 5185 5132 5186 5133 /* Line 1806 of yacc.c */ 5187 #line 37 5"parser.yy"5134 #line 374 "parser.yy" 5188 5135 { 5189 5136 Token fn; fn.str = new std::string( "?{}" ); // location undefined … … 5195 5142 5196 5143 /* Line 1806 of yacc.c */ 5197 #line 38 4"parser.yy"5144 #line 383 "parser.yy" 5198 5145 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5199 5146 break; … … 5202 5149 5203 5150 /* Line 1806 of yacc.c */ 5204 #line 38 9"parser.yy"5151 #line 388 "parser.yy" 5205 5152 { (yyval.en) = 0; } 5206 5153 break; … … 5209 5156 5210 5157 /* Line 1806 of yacc.c */ 5211 #line 39 2"parser.yy"5158 #line 391 "parser.yy" 5212 5159 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); } 5213 5160 break; … … 5216 5163 5217 5164 /* Line 1806 of yacc.c */ 5218 #line 39 7"parser.yy"5165 #line 396 "parser.yy" 5219 5166 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5220 5167 break; … … 5223 5170 5224 5171 /* Line 1806 of yacc.c */ 5225 #line 39 9"parser.yy"5172 #line 398 "parser.yy" 5226 5173 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); } 5227 5174 break; … … 5230 5177 5231 5178 /* Line 1806 of yacc.c */ 5232 #line 40 4"parser.yy"5179 #line 403 "parser.yy" 5233 5180 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5234 5181 break; … … 5237 5184 5238 5185 /* Line 1806 of yacc.c */ 5239 #line 40 9"parser.yy"5186 #line 408 "parser.yy" 5240 5187 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5241 5188 break; … … 5244 5191 5245 5192 /* Line 1806 of yacc.c */ 5246 #line 41 3"parser.yy"5193 #line 412 "parser.yy" 5247 5194 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5248 5195 break; … … 5251 5198 5252 5199 /* Line 1806 of yacc.c */ 5253 #line 41 5"parser.yy"5200 #line 414 "parser.yy" 5254 5201 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5255 5202 break; … … 5258 5205 5259 5206 /* Line 1806 of yacc.c */ 5260 #line 41 7"parser.yy"5207 #line 416 "parser.yy" 5261 5208 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5262 5209 break; … … 5265 5212 5266 5213 /* Line 1806 of yacc.c */ 5267 #line 41 9"parser.yy"5214 #line 418 "parser.yy" 5268 5215 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5269 5216 break; … … 5272 5219 5273 5220 /* Line 1806 of yacc.c */ 5274 #line 42 7"parser.yy"5221 #line 426 "parser.yy" 5275 5222 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5276 5223 break; … … 5279 5226 5280 5227 /* Line 1806 of yacc.c */ 5281 #line 42 9"parser.yy"5228 #line 428 "parser.yy" 5282 5229 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5283 5230 break; … … 5286 5233 5287 5234 /* Line 1806 of yacc.c */ 5288 #line 43 1"parser.yy"5235 #line 430 "parser.yy" 5289 5236 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5290 5237 break; … … 5293 5240 5294 5241 /* Line 1806 of yacc.c */ 5295 #line 43 3"parser.yy"5242 #line 432 "parser.yy" 5296 5243 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5297 5244 break; … … 5300 5247 5301 5248 /* Line 1806 of yacc.c */ 5302 #line 43 5"parser.yy"5249 #line 434 "parser.yy" 5303 5250 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5304 5251 break; … … 5307 5254 5308 5255 /* Line 1806 of yacc.c */ 5309 #line 43 7"parser.yy"5256 #line 436 "parser.yy" 5310 5257 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5311 5258 break; … … 5314 5261 5315 5262 /* Line 1806 of yacc.c */ 5316 #line 43 9"parser.yy"5263 #line 438 "parser.yy" 5317 5264 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5318 5265 break; … … 5321 5268 5322 5269 /* Line 1806 of yacc.c */ 5323 #line 44 1"parser.yy"5270 #line 440 "parser.yy" 5324 5271 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5325 5272 break; … … 5328 5275 5329 5276 /* Line 1806 of yacc.c */ 5330 #line 44 7"parser.yy"5277 #line 446 "parser.yy" 5331 5278 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5332 5279 break; … … 5335 5282 5336 5283 /* Line 1806 of yacc.c */ 5337 #line 44 9"parser.yy"5284 #line 448 "parser.yy" 5338 5285 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5339 5286 break; … … 5342 5289 5343 5290 /* Line 1806 of yacc.c */ 5344 #line 45 1"parser.yy"5291 #line 450 "parser.yy" 5345 5292 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); } 5346 5293 break; … … 5349 5296 5350 5297 /* Line 1806 of yacc.c */ 5351 #line 45 3"parser.yy"5298 #line 452 "parser.yy" 5352 5299 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5353 5300 break; … … 5356 5303 5357 5304 /* Line 1806 of yacc.c */ 5358 #line 45 5"parser.yy"5305 #line 454 "parser.yy" 5359 5306 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5360 5307 break; … … 5363 5310 5364 5311 /* Line 1806 of yacc.c */ 5365 #line 45 7"parser.yy"5312 #line 456 "parser.yy" 5366 5313 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5367 5314 break; … … 5370 5317 5371 5318 /* Line 1806 of yacc.c */ 5372 #line 45 9"parser.yy"5319 #line 458 "parser.yy" 5373 5320 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5374 5321 break; … … 5377 5324 5378 5325 /* Line 1806 of yacc.c */ 5379 #line 46 1"parser.yy"5326 #line 460 "parser.yy" 5380 5327 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); } 5381 5328 break; … … 5384 5331 5385 5332 /* Line 1806 of yacc.c */ 5386 #line 46 3"parser.yy"5333 #line 462 "parser.yy" 5387 5334 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); } 5388 5335 break; … … 5391 5338 5392 5339 /* Line 1806 of yacc.c */ 5340 #line 466 "parser.yy" 5341 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5342 break; 5343 5344 case 66: 5345 5346 /* Line 1806 of yacc.c */ 5393 5347 #line 467 "parser.yy" 5394 { (yyval.en) = new OperatorNode( OperatorNode:: AddressOf); }5395 break; 5396 5397 case 6 6:5348 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5349 break; 5350 5351 case 67: 5398 5352 5399 5353 /* Line 1806 of yacc.c */ 5400 5354 #line 468 "parser.yy" 5401 { (yyval.en) = new OperatorNode( OperatorNode::Un Plus ); }5402 break; 5403 5404 case 6 7:5355 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5356 break; 5357 5358 case 68: 5405 5359 5406 5360 /* Line 1806 of yacc.c */ 5407 5361 #line 469 "parser.yy" 5408 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }5409 break;5410 5411 case 68:5412 5413 /* Line 1806 of yacc.c */5414 #line 470 "parser.yy"5415 5362 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5416 5363 break; … … 5419 5366 5420 5367 /* Line 1806 of yacc.c */ 5421 #line 47 6"parser.yy"5368 #line 475 "parser.yy" 5422 5369 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5423 5370 break; … … 5426 5373 5427 5374 /* Line 1806 of yacc.c */ 5428 #line 47 8"parser.yy"5375 #line 477 "parser.yy" 5429 5376 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5430 5377 break; … … 5433 5380 5434 5381 /* Line 1806 of yacc.c */ 5435 #line 48 4"parser.yy"5382 #line 483 "parser.yy" 5436 5383 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5437 5384 break; … … 5440 5387 5441 5388 /* Line 1806 of yacc.c */ 5442 #line 48 6"parser.yy"5389 #line 485 "parser.yy" 5443 5390 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5444 5391 break; … … 5447 5394 5448 5395 /* Line 1806 of yacc.c */ 5449 #line 48 8"parser.yy"5396 #line 487 "parser.yy" 5450 5397 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5451 5398 break; … … 5454 5401 5455 5402 /* Line 1806 of yacc.c */ 5456 #line 49 4"parser.yy"5403 #line 493 "parser.yy" 5457 5404 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5458 5405 break; … … 5461 5408 5462 5409 /* Line 1806 of yacc.c */ 5463 #line 49 6"parser.yy"5410 #line 495 "parser.yy" 5464 5411 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5465 5412 break; … … 5468 5415 5469 5416 /* Line 1806 of yacc.c */ 5470 #line 50 2"parser.yy"5417 #line 501 "parser.yy" 5471 5418 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5472 5419 break; … … 5475 5422 5476 5423 /* Line 1806 of yacc.c */ 5477 #line 50 4"parser.yy"5424 #line 503 "parser.yy" 5478 5425 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5479 5426 break; … … 5482 5429 5483 5430 /* Line 1806 of yacc.c */ 5484 #line 5 10"parser.yy"5431 #line 509 "parser.yy" 5485 5432 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5486 5433 break; … … 5489 5436 5490 5437 /* Line 1806 of yacc.c */ 5491 #line 51 2"parser.yy"5438 #line 511 "parser.yy" 5492 5439 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5493 5440 break; … … 5496 5443 5497 5444 /* Line 1806 of yacc.c */ 5498 #line 51 4"parser.yy"5445 #line 513 "parser.yy" 5499 5446 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5500 5447 break; … … 5503 5450 5504 5451 /* Line 1806 of yacc.c */ 5505 #line 51 6"parser.yy"5452 #line 515 "parser.yy" 5506 5453 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5507 5454 break; … … 5510 5457 5511 5458 /* Line 1806 of yacc.c */ 5512 #line 52 2"parser.yy"5459 #line 521 "parser.yy" 5513 5460 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5514 5461 break; … … 5517 5464 5518 5465 /* Line 1806 of yacc.c */ 5519 #line 52 4"parser.yy"5466 #line 523 "parser.yy" 5520 5467 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5521 5468 break; … … 5524 5471 5525 5472 /* Line 1806 of yacc.c */ 5526 #line 5 30"parser.yy"5473 #line 529 "parser.yy" 5527 5474 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5528 5475 break; … … 5531 5478 5532 5479 /* Line 1806 of yacc.c */ 5533 #line 53 6"parser.yy"5480 #line 535 "parser.yy" 5534 5481 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5535 5482 break; … … 5538 5485 5539 5486 /* Line 1806 of yacc.c */ 5540 #line 54 2"parser.yy"5487 #line 541 "parser.yy" 5541 5488 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5542 5489 break; … … 5545 5492 5546 5493 /* Line 1806 of yacc.c */ 5547 #line 54 8"parser.yy"5494 #line 547 "parser.yy" 5548 5495 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5549 5496 break; … … 5552 5499 5553 5500 /* Line 1806 of yacc.c */ 5554 #line 55 4"parser.yy"5501 #line 553 "parser.yy" 5555 5502 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5556 5503 break; … … 5559 5506 5560 5507 /* Line 1806 of yacc.c */ 5561 #line 5 60"parser.yy"5508 #line 559 "parser.yy" 5562 5509 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5563 5510 break; … … 5566 5513 5567 5514 /* Line 1806 of yacc.c */ 5568 #line 56 2"parser.yy"5515 #line 561 "parser.yy" 5569 5516 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5570 5517 break; … … 5573 5520 5574 5521 /* Line 1806 of yacc.c */ 5575 #line 56 4"parser.yy"5522 #line 563 "parser.yy" 5576 5523 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5577 5524 break; … … 5580 5527 5581 5528 /* Line 1806 of yacc.c */ 5582 #line 57 5"parser.yy"5529 #line 574 "parser.yy" 5583 5530 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5584 5531 break; … … 5587 5534 5588 5535 /* Line 1806 of yacc.c */ 5589 #line 57 7"parser.yy"5536 #line 576 "parser.yy" 5590 5537 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5591 5538 break; … … 5594 5541 5595 5542 /* Line 1806 of yacc.c */ 5596 #line 57 9"parser.yy"5543 #line 578 "parser.yy" 5597 5544 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5598 5545 break; … … 5601 5548 5602 5549 /* Line 1806 of yacc.c */ 5603 #line 58 4"parser.yy"5550 #line 583 "parser.yy" 5604 5551 { (yyval.en) = new NullExprNode; } 5605 5552 break; … … 5608 5555 5609 5556 /* Line 1806 of yacc.c */ 5610 #line 59 2"parser.yy"5557 #line 591 "parser.yy" 5611 5558 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5612 5559 break; … … 5615 5562 5616 5563 /* Line 1806 of yacc.c */ 5617 #line 59 4"parser.yy"5564 #line 593 "parser.yy" 5618 5565 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5619 5566 break; … … 5622 5569 5623 5570 /* Line 1806 of yacc.c */ 5624 #line 59 6"parser.yy"5571 #line 595 "parser.yy" 5625 5572 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5626 5573 break; … … 5629 5576 5630 5577 /* Line 1806 of yacc.c */ 5631 #line 59 8"parser.yy"5578 #line 597 "parser.yy" 5632 5579 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5633 5580 break; … … 5636 5583 5637 5584 /* Line 1806 of yacc.c */ 5638 #line 60 4"parser.yy"5585 #line 603 "parser.yy" 5639 5586 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5640 5587 break; … … 5643 5590 5644 5591 /* Line 1806 of yacc.c */ 5592 #line 607 "parser.yy" 5593 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5594 break; 5595 5596 case 118: 5597 5598 /* Line 1806 of yacc.c */ 5645 5599 #line 608 "parser.yy" 5646 { (yyval.en) = new OperatorNode( OperatorNode:: MulAssn ); }5647 break; 5648 5649 case 11 8:5600 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5601 break; 5602 5603 case 119: 5650 5604 5651 5605 /* Line 1806 of yacc.c */ 5652 5606 #line 609 "parser.yy" 5653 { (yyval.en) = new OperatorNode( OperatorNode:: DivAssn ); }5654 break; 5655 5656 case 1 19:5607 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5608 break; 5609 5610 case 120: 5657 5611 5658 5612 /* Line 1806 of yacc.c */ 5659 5613 #line 610 "parser.yy" 5660 { (yyval.en) = new OperatorNode( OperatorNode:: ModAssn ); }5661 break; 5662 5663 case 12 0:5614 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5615 break; 5616 5617 case 121: 5664 5618 5665 5619 /* Line 1806 of yacc.c */ 5666 5620 #line 611 "parser.yy" 5667 { (yyval.en) = new OperatorNode( OperatorNode:: PlusAssn ); }5668 break; 5669 5670 case 12 1:5621 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5622 break; 5623 5624 case 122: 5671 5625 5672 5626 /* Line 1806 of yacc.c */ 5673 5627 #line 612 "parser.yy" 5674 { (yyval.en) = new OperatorNode( OperatorNode:: MinusAssn ); }5675 break; 5676 5677 case 12 2:5628 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5629 break; 5630 5631 case 123: 5678 5632 5679 5633 /* Line 1806 of yacc.c */ 5680 5634 #line 613 "parser.yy" 5681 { (yyval.en) = new OperatorNode( OperatorNode:: LSAssn ); }5682 break; 5683 5684 case 12 3:5635 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5636 break; 5637 5638 case 124: 5685 5639 5686 5640 /* Line 1806 of yacc.c */ 5687 5641 #line 614 "parser.yy" 5688 { (yyval.en) = new OperatorNode( OperatorNode:: RSAssn ); }5689 break; 5690 5691 case 12 4:5642 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5643 break; 5644 5645 case 125: 5692 5646 5693 5647 /* Line 1806 of yacc.c */ 5694 5648 #line 615 "parser.yy" 5695 { (yyval.en) = new OperatorNode( OperatorNode:: AndAssn ); }5696 break; 5697 5698 case 12 5:5649 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5650 break; 5651 5652 case 126: 5699 5653 5700 5654 /* Line 1806 of yacc.c */ 5701 5655 #line 616 "parser.yy" 5702 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }5703 break;5704 5705 case 126:5706 5707 /* Line 1806 of yacc.c */5708 #line 617 "parser.yy"5709 5656 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5710 5657 break; … … 5713 5660 5714 5661 /* Line 1806 of yacc.c */ 5715 #line 62 3"parser.yy"5662 #line 622 "parser.yy" 5716 5663 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5717 5664 break; … … 5720 5667 5721 5668 /* Line 1806 of yacc.c */ 5722 #line 62 8"parser.yy"5669 #line 627 "parser.yy" 5723 5670 { (yyval.en) = 0; } 5724 5671 break; … … 5727 5674 5728 5675 /* Line 1806 of yacc.c */ 5729 #line 63 7"parser.yy"5676 #line 636 "parser.yy" 5730 5677 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5731 5678 break; … … 5734 5681 5735 5682 /* Line 1806 of yacc.c */ 5736 #line 64 4"parser.yy"5683 #line 643 "parser.yy" 5737 5684 { 5738 5685 Token fn; fn.str = new std::string( "^?{}" ); // location undefined … … 5745 5692 5746 5693 /* Line 1806 of yacc.c */ 5747 #line 65 3"parser.yy"5694 #line 652 "parser.yy" 5748 5695 { 5749 5696 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5754 5701 5755 5702 /* Line 1806 of yacc.c */ 5756 #line 6 60"parser.yy"5703 #line 659 "parser.yy" 5757 5704 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5758 5705 break; … … 5761 5708 5762 5709 /* Line 1806 of yacc.c */ 5763 #line 66 7"parser.yy"5710 #line 666 "parser.yy" 5764 5711 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5765 5712 break; … … 5768 5715 5769 5716 /* Line 1806 of yacc.c */ 5770 #line 67 3"parser.yy"5717 #line 672 "parser.yy" 5771 5718 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5772 5719 break; … … 5775 5722 5776 5723 /* Line 1806 of yacc.c */ 5777 #line 67 8"parser.yy"5724 #line 677 "parser.yy" 5778 5725 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5779 5726 break; … … 5782 5729 5783 5730 /* Line 1806 of yacc.c */ 5784 #line 6 80"parser.yy"5731 #line 679 "parser.yy" 5785 5732 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5786 5733 break; … … 5789 5736 5790 5737 /* Line 1806 of yacc.c */ 5791 #line 68 2"parser.yy"5738 #line 681 "parser.yy" 5792 5739 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5793 5740 break; … … 5796 5743 5797 5744 /* Line 1806 of yacc.c */ 5798 #line 68 9"parser.yy"5745 #line 688 "parser.yy" 5799 5746 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5800 5747 break; … … 5803 5750 5804 5751 /* Line 1806 of yacc.c */ 5805 #line 69 4"parser.yy"5752 #line 693 "parser.yy" 5806 5753 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5807 5754 break; … … 5810 5757 5811 5758 /* Line 1806 of yacc.c */ 5812 #line 700"parser.yy"5759 #line 699 "parser.yy" 5813 5760 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5814 5761 break; … … 5817 5764 5818 5765 /* Line 1806 of yacc.c */ 5819 #line 70 2"parser.yy"5766 #line 701 "parser.yy" 5820 5767 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5821 5768 break; … … 5824 5771 5825 5772 /* Line 1806 of yacc.c */ 5826 #line 70 4"parser.yy"5773 #line 703 "parser.yy" 5827 5774 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5828 5775 break; … … 5831 5778 5832 5779 /* Line 1806 of yacc.c */ 5833 #line 70 6"parser.yy"5780 #line 705 "parser.yy" 5834 5781 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5835 5782 break; … … 5838 5785 5839 5786 /* Line 1806 of yacc.c */ 5840 #line 71 1"parser.yy"5787 #line 710 "parser.yy" 5841 5788 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5842 5789 break; … … 5845 5792 5846 5793 /* Line 1806 of yacc.c */ 5847 #line 71 3"parser.yy"5794 #line 712 "parser.yy" 5848 5795 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5849 5796 break; … … 5852 5799 5853 5800 /* Line 1806 of yacc.c */ 5854 #line 7 20"parser.yy"5801 #line 719 "parser.yy" 5855 5802 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5856 5803 break; … … 5859 5806 5860 5807 /* Line 1806 of yacc.c */ 5861 #line 72 2"parser.yy"5808 #line 721 "parser.yy" 5862 5809 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5863 5810 break; … … 5866 5813 5867 5814 /* Line 1806 of yacc.c */ 5868 #line 72 9"parser.yy"5815 #line 728 "parser.yy" 5869 5816 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5870 5817 break; … … 5873 5820 5874 5821 /* Line 1806 of yacc.c */ 5822 #line 732 "parser.yy" 5823 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5824 break; 5825 5826 case 164: 5827 5828 /* Line 1806 of yacc.c */ 5875 5829 #line 733 "parser.yy" 5876 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }5877 break;5878 5879 case 164:5880 5881 /* Line 1806 of yacc.c */5882 #line 734 "parser.yy"5883 5830 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5884 5831 break; … … 5887 5834 5888 5835 /* Line 1806 of yacc.c */ 5889 #line 7 40"parser.yy"5836 #line 739 "parser.yy" 5890 5837 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5891 5838 break; … … 5894 5841 5895 5842 /* Line 1806 of yacc.c */ 5896 #line 74 4"parser.yy"5843 #line 743 "parser.yy" 5897 5844 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5898 5845 break; … … 5901 5848 5902 5849 /* Line 1806 of yacc.c */ 5903 #line 74 9"parser.yy"5850 #line 748 "parser.yy" 5904 5851 { (yyval.sn) = 0; } 5905 5852 break; … … 5908 5855 5909 5856 /* Line 1806 of yacc.c */ 5910 #line 75 5"parser.yy"5857 #line 754 "parser.yy" 5911 5858 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5912 5859 break; … … 5915 5862 5916 5863 /* Line 1806 of yacc.c */ 5917 #line 75 7"parser.yy"5864 #line 756 "parser.yy" 5918 5865 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5919 5866 break; … … 5922 5869 5923 5870 /* Line 1806 of yacc.c */ 5924 #line 76 2"parser.yy"5871 #line 761 "parser.yy" 5925 5872 { (yyval.sn) = 0; } 5926 5873 break; … … 5929 5876 5930 5877 /* Line 1806 of yacc.c */ 5931 #line 76 8"parser.yy"5878 #line 767 "parser.yy" 5932 5879 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5933 5880 break; … … 5936 5883 5937 5884 /* Line 1806 of yacc.c */ 5938 #line 7 70"parser.yy"5885 #line 769 "parser.yy" 5939 5886 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5940 5887 break; … … 5943 5890 5944 5891 /* Line 1806 of yacc.c */ 5945 #line 77 2"parser.yy"5892 #line 771 "parser.yy" 5946 5893 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5947 5894 break; … … 5950 5897 5951 5898 /* Line 1806 of yacc.c */ 5952 #line 77 4"parser.yy"5899 #line 773 "parser.yy" 5953 5900 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); } 5954 5901 break; … … 5957 5904 5958 5905 /* Line 1806 of yacc.c */ 5959 #line 77 9"parser.yy"5906 #line 778 "parser.yy" 5960 5907 { (yyval.sn) = 0; } 5961 5908 break; 5962 5909 5963 5910 case 180: 5911 5912 /* Line 1806 of yacc.c */ 5913 #line 783 "parser.yy" 5914 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5915 break; 5916 5917 case 181: 5964 5918 5965 5919 /* Line 1806 of yacc.c */ … … 5968 5922 break; 5969 5923 5970 case 181:5971 5972 /* Line 1806 of yacc.c */5973 #line 785 "parser.yy"5974 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }5975 break;5976 5977 5924 case 182: 5978 5925 5979 5926 /* Line 1806 of yacc.c */ 5980 #line 7 90"parser.yy"5927 #line 789 "parser.yy" 5981 5928 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5982 5929 break; … … 5985 5932 5986 5933 /* Line 1806 of yacc.c */ 5987 #line 79 2"parser.yy"5934 #line 791 "parser.yy" 5988 5935 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5989 5936 break; … … 5992 5939 5993 5940 /* Line 1806 of yacc.c */ 5994 #line 79 4"parser.yy"5941 #line 793 "parser.yy" 5995 5942 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5996 5943 break; … … 5999 5946 6000 5947 /* Line 1806 of yacc.c */ 6001 #line 79 9"parser.yy"5948 #line 798 "parser.yy" 6002 5949 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 6003 5950 break; … … 6006 5953 6007 5954 /* Line 1806 of yacc.c */ 6008 #line 80 1"parser.yy"5955 #line 800 "parser.yy" 6009 5956 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 6010 5957 break; … … 6013 5960 6014 5961 /* Line 1806 of yacc.c */ 6015 #line 80 6"parser.yy"5962 #line 805 "parser.yy" 6016 5963 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 6017 5964 break; … … 6020 5967 6021 5968 /* Line 1806 of yacc.c */ 6022 #line 8 10"parser.yy"5969 #line 809 "parser.yy" 6023 5970 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 6024 5971 break; … … 6027 5974 6028 5975 /* Line 1806 of yacc.c */ 6029 #line 81 3"parser.yy"5976 #line 812 "parser.yy" 6030 5977 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 6031 5978 break; … … 6034 5981 6035 5982 /* Line 1806 of yacc.c */ 6036 #line 81 7"parser.yy"5983 #line 816 "parser.yy" 6037 5984 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 6038 5985 break; … … 6041 5988 6042 5989 /* Line 1806 of yacc.c */ 6043 #line 8 20"parser.yy"5990 #line 819 "parser.yy" 6044 5991 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 6045 5992 break; … … 6048 5995 6049 5996 /* Line 1806 of yacc.c */ 6050 #line 82 4"parser.yy"5997 #line 823 "parser.yy" 6051 5998 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 6052 5999 break; … … 6055 6002 6056 6003 /* Line 1806 of yacc.c */ 6057 #line 82 6"parser.yy"6004 #line 825 "parser.yy" 6058 6005 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 6059 6006 break; … … 6062 6009 6063 6010 /* Line 1806 of yacc.c */ 6064 #line 82 8"parser.yy"6011 #line 827 "parser.yy" 6065 6012 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 6066 6013 break; … … 6069 6016 6070 6017 /* Line 1806 of yacc.c */ 6071 #line 83 2"parser.yy"6018 #line 831 "parser.yy" 6072 6019 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 6073 6020 break; … … 6076 6023 6077 6024 /* Line 1806 of yacc.c */ 6078 #line 83 4"parser.yy"6025 #line 833 "parser.yy" 6079 6026 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); } 6080 6027 break; … … 6083 6030 6084 6031 /* Line 1806 of yacc.c */ 6085 #line 84 1"parser.yy"6032 #line 840 "parser.yy" 6086 6033 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6087 6034 break; … … 6090 6037 6091 6038 /* Line 1806 of yacc.c */ 6092 #line 84 3"parser.yy"6039 #line 842 "parser.yy" 6093 6040 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6094 6041 break; … … 6097 6044 6098 6045 /* Line 1806 of yacc.c */ 6099 #line 84 5"parser.yy"6046 #line 844 "parser.yy" 6100 6047 { 6101 6048 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6107 6054 6108 6055 /* Line 1806 of yacc.c */ 6109 #line 85 6"parser.yy"6056 #line 855 "parser.yy" 6110 6057 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6111 6058 break; … … 6114 6061 6115 6062 /* Line 1806 of yacc.c */ 6116 #line 85 8"parser.yy"6063 #line 857 "parser.yy" 6117 6064 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6118 6065 break; … … 6121 6068 6122 6069 /* Line 1806 of yacc.c */ 6123 #line 8 60"parser.yy"6070 #line 859 "parser.yy" 6124 6071 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6125 6072 break; … … 6128 6075 6129 6076 /* Line 1806 of yacc.c */ 6130 #line 86 2"parser.yy"6077 #line 861 "parser.yy" 6131 6078 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6132 6079 break; … … 6135 6082 6136 6083 /* Line 1806 of yacc.c */ 6137 #line 86 7"parser.yy"6084 #line 866 "parser.yy" 6138 6085 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6139 6086 break; … … 6142 6089 6143 6090 /* Line 1806 of yacc.c */ 6144 #line 86 9"parser.yy"6091 #line 868 "parser.yy" 6145 6092 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6146 6093 break; … … 6149 6096 6150 6097 /* Line 1806 of yacc.c */ 6151 #line 87 1"parser.yy"6098 #line 870 "parser.yy" 6152 6099 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6153 6100 break; … … 6156 6103 6157 6104 /* Line 1806 of yacc.c */ 6158 #line 87 3"parser.yy"6105 #line 872 "parser.yy" 6159 6106 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6160 6107 break; … … 6163 6110 6164 6111 /* Line 1806 of yacc.c */ 6165 #line 87 8"parser.yy"6112 #line 877 "parser.yy" 6166 6113 { 6167 6114 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6173 6120 6174 6121 /* Line 1806 of yacc.c */ 6175 #line 89 2"parser.yy"6122 #line 891 "parser.yy" 6176 6123 { 6177 6124 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6183 6130 6184 6131 /* Line 1806 of yacc.c */ 6185 #line 89 7"parser.yy"6132 #line 896 "parser.yy" 6186 6133 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6187 6134 break; … … 6190 6137 6191 6138 /* Line 1806 of yacc.c */ 6192 #line 89 9"parser.yy"6139 #line 898 "parser.yy" 6193 6140 { 6194 6141 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6200 6147 6201 6148 /* Line 1806 of yacc.c */ 6202 #line 90 8"parser.yy"6149 #line 907 "parser.yy" 6203 6150 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6204 6151 break; … … 6207 6154 6208 6155 /* Line 1806 of yacc.c */ 6209 #line 9 10"parser.yy"6156 #line 909 "parser.yy" 6210 6157 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6211 6158 break; … … 6214 6161 6215 6162 /* Line 1806 of yacc.c */ 6216 #line 91 2"parser.yy"6163 #line 911 "parser.yy" 6217 6164 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6218 6165 break; … … 6221 6168 6222 6169 /* Line 1806 of yacc.c */ 6223 #line 91 4"parser.yy"6170 #line 913 "parser.yy" 6224 6171 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); } 6225 6172 break; … … 6228 6175 6229 6176 /* Line 1806 of yacc.c */ 6230 #line 91 6"parser.yy"6177 #line 915 "parser.yy" 6231 6178 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); } 6232 6179 break; … … 6235 6182 6236 6183 /* Line 1806 of yacc.c */ 6237 #line 92 1"parser.yy"6184 #line 920 "parser.yy" 6238 6185 { (yyval.flag) = false; } 6239 6186 break; … … 6242 6189 6243 6190 /* Line 1806 of yacc.c */ 6244 #line 92 3"parser.yy"6191 #line 922 "parser.yy" 6245 6192 { (yyval.flag) = true; } 6246 6193 break; … … 6249 6196 6250 6197 /* Line 1806 of yacc.c */ 6251 #line 92 8"parser.yy"6198 #line 927 "parser.yy" 6252 6199 { (yyval.en) = 0; } 6253 6200 break; … … 6256 6203 6257 6204 /* Line 1806 of yacc.c */ 6258 #line 93 5"parser.yy"6205 #line 934 "parser.yy" 6259 6206 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6260 6207 break; … … 6263 6210 6264 6211 /* Line 1806 of yacc.c */ 6265 #line 9 40"parser.yy"6212 #line 939 "parser.yy" 6266 6213 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6267 6214 break; … … 6270 6217 6271 6218 /* Line 1806 of yacc.c */ 6272 #line 94 2"parser.yy"6219 #line 941 "parser.yy" 6273 6220 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6274 6221 break; … … 6277 6224 6278 6225 /* Line 1806 of yacc.c */ 6279 #line 94 7"parser.yy"6226 #line 946 "parser.yy" 6280 6227 { (yyval.constant) = 0; } 6281 6228 break; … … 6284 6231 6285 6232 /* Line 1806 of yacc.c */ 6286 #line 94 9"parser.yy"6233 #line 948 "parser.yy" 6287 6234 { (yyval.constant) = (yyvsp[(1) - (1)].constant); } 6288 6235 break; … … 6291 6238 6292 6239 /* Line 1806 of yacc.c */ 6293 #line 95 1"parser.yy"6240 #line 950 "parser.yy" 6294 6241 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6295 6242 break; … … 6298 6245 6299 6246 /* Line 1806 of yacc.c */ 6300 #line 95 6"parser.yy"6247 #line 955 "parser.yy" 6301 6248 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6302 6249 break; … … 6305 6252 6306 6253 /* Line 1806 of yacc.c */ 6307 #line 95 8"parser.yy"6254 #line 957 "parser.yy" 6308 6255 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6309 6256 break; … … 6312 6259 6313 6260 /* Line 1806 of yacc.c */ 6314 #line 96 5"parser.yy"6261 #line 964 "parser.yy" 6315 6262 { (yyval.decl) = 0; } 6316 6263 break; … … 6319 6266 6320 6267 /* Line 1806 of yacc.c */ 6321 #line 97 2"parser.yy"6268 #line 971 "parser.yy" 6322 6269 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6323 6270 break; … … 6326 6273 6327 6274 /* Line 1806 of yacc.c */ 6328 #line 97 7"parser.yy"6275 #line 976 "parser.yy" 6329 6276 { (yyval.decl) = 0; } 6330 6277 break; … … 6333 6280 6334 6281 /* Line 1806 of yacc.c */ 6335 #line 98 4"parser.yy"6282 #line 983 "parser.yy" 6336 6283 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6337 6284 break; 6338 6285 6339 6286 case 245: 6287 6288 /* Line 1806 of yacc.c */ 6289 #line 997 "parser.yy" 6290 {} 6291 break; 6292 6293 case 246: 6340 6294 6341 6295 /* Line 1806 of yacc.c */ … … 6344 6298 break; 6345 6299 6346 case 246:6347 6348 /* Line 1806 of yacc.c */6349 #line 999 "parser.yy"6350 {}6351 break;6352 6353 6300 case 254: 6354 6301 6355 6302 /* Line 1806 of yacc.c */ 6356 #line 102 8"parser.yy"6303 #line 1027 "parser.yy" 6357 6304 { 6358 6305 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6364 6311 6365 6312 /* Line 1806 of yacc.c */ 6366 #line 103 5"parser.yy"6313 #line 1034 "parser.yy" 6367 6314 { 6368 6315 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6374 6321 6375 6322 /* Line 1806 of yacc.c */ 6376 #line 10 40"parser.yy"6323 #line 1039 "parser.yy" 6377 6324 { 6378 6325 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6384 6331 6385 6332 /* Line 1806 of yacc.c */ 6386 #line 10 50"parser.yy"6333 #line 1049 "parser.yy" 6387 6334 { 6388 6335 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6394 6341 6395 6342 /* Line 1806 of yacc.c */ 6396 #line 105 5"parser.yy"6343 #line 1054 "parser.yy" 6397 6344 { 6398 6345 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6404 6351 6405 6352 /* Line 1806 of yacc.c */ 6406 #line 10 60"parser.yy"6353 #line 1059 "parser.yy" 6407 6354 { 6408 6355 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6414 6361 6415 6362 /* Line 1806 of yacc.c */ 6416 #line 106 8"parser.yy"6363 #line 1067 "parser.yy" 6417 6364 { 6418 6365 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6424 6371 6425 6372 /* Line 1806 of yacc.c */ 6426 #line 107 3"parser.yy"6373 #line 1072 "parser.yy" 6427 6374 { 6428 6375 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6434 6381 6435 6382 /* Line 1806 of yacc.c */ 6436 #line 107 8"parser.yy"6383 #line 1077 "parser.yy" 6437 6384 { 6438 6385 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6444 6391 6445 6392 /* Line 1806 of yacc.c */ 6446 #line 108 3"parser.yy"6393 #line 1082 "parser.yy" 6447 6394 { 6448 6395 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6454 6401 6455 6402 /* Line 1806 of yacc.c */ 6456 #line 108 8"parser.yy"6403 #line 1087 "parser.yy" 6457 6404 { 6458 6405 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6464 6411 6465 6412 /* Line 1806 of yacc.c */ 6466 #line 109 6"parser.yy"6413 #line 1095 "parser.yy" 6467 6414 { 6468 6415 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6473 6420 6474 6421 /* Line 1806 of yacc.c */ 6475 #line 111 9"parser.yy"6422 #line 1118 "parser.yy" 6476 6423 { 6477 6424 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6482 6429 6483 6430 /* Line 1806 of yacc.c */ 6484 #line 112 3"parser.yy"6431 #line 1122 "parser.yy" 6485 6432 { 6486 6433 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6491 6438 6492 6439 /* Line 1806 of yacc.c */ 6493 #line 11 30"parser.yy"6440 #line 1129 "parser.yy" 6494 6441 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6495 6442 break; … … 6498 6445 6499 6446 /* Line 1806 of yacc.c */ 6500 #line 113 4"parser.yy"6447 #line 1133 "parser.yy" 6501 6448 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6502 6449 break; … … 6505 6452 6506 6453 /* Line 1806 of yacc.c */ 6507 #line 113 9"parser.yy"6454 #line 1138 "parser.yy" 6508 6455 { 6509 6456 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6515 6462 6516 6463 /* Line 1806 of yacc.c */ 6517 #line 114 4"parser.yy"6464 #line 1143 "parser.yy" 6518 6465 { 6519 6466 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6525 6472 6526 6473 /* Line 1806 of yacc.c */ 6527 #line 114 9"parser.yy"6474 #line 1148 "parser.yy" 6528 6475 { 6529 6476 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6535 6482 6536 6483 /* Line 1806 of yacc.c */ 6537 #line 11 60"parser.yy"6484 #line 1159 "parser.yy" 6538 6485 { 6539 6486 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6545 6492 6546 6493 /* Line 1806 of yacc.c */ 6547 #line 116 5"parser.yy"6494 #line 1164 "parser.yy" 6548 6495 { 6549 6496 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6555 6502 6556 6503 /* Line 1806 of yacc.c */ 6557 #line 11 70"parser.yy"6504 #line 1169 "parser.yy" 6558 6505 { 6559 6506 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6565 6512 6566 6513 /* Line 1806 of yacc.c */ 6567 #line 117 5"parser.yy"6514 #line 1174 "parser.yy" 6568 6515 { 6569 6516 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6575 6522 6576 6523 /* Line 1806 of yacc.c */ 6577 #line 11 80"parser.yy"6524 #line 1179 "parser.yy" 6578 6525 { 6579 6526 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6585 6532 6586 6533 /* Line 1806 of yacc.c */ 6587 #line 118 9"parser.yy"6534 #line 1188 "parser.yy" 6588 6535 { 6589 6536 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6595 6542 6596 6543 /* Line 1806 of yacc.c */ 6597 #line 119 4"parser.yy"6544 #line 1193 "parser.yy" 6598 6545 { 6599 6546 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6605 6552 6606 6553 /* Line 1806 of yacc.c */ 6607 #line 121 1"parser.yy"6554 #line 1210 "parser.yy" 6608 6555 { 6609 6556 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6615 6562 6616 6563 /* Line 1806 of yacc.c */ 6617 #line 121 6"parser.yy"6564 #line 1215 "parser.yy" 6618 6565 { 6619 6566 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6625 6572 6626 6573 /* Line 1806 of yacc.c */ 6627 #line 123 8"parser.yy"6574 #line 1237 "parser.yy" 6628 6575 { (yyval.decl) = 0; } 6629 6576 break; … … 6632 6579 6633 6580 /* Line 1806 of yacc.c */ 6634 #line 12 50"parser.yy"6581 #line 1249 "parser.yy" 6635 6582 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6636 6583 break; … … 6639 6586 6640 6587 /* Line 1806 of yacc.c */ 6641 #line 126 1"parser.yy"6588 #line 1260 "parser.yy" 6642 6589 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6643 6590 break; … … 6646 6593 6647 6594 /* Line 1806 of yacc.c */ 6648 #line 126 3"parser.yy"6595 #line 1262 "parser.yy" 6649 6596 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6650 6597 break; … … 6653 6600 6654 6601 /* Line 1806 of yacc.c */ 6655 #line 126 5"parser.yy"6602 #line 1264 "parser.yy" 6656 6603 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6657 6604 break; … … 6660 6607 6661 6608 /* Line 1806 of yacc.c */ 6662 #line 126 7"parser.yy"6609 #line 1266 "parser.yy" 6663 6610 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6664 6611 break; … … 6667 6614 6668 6615 /* Line 1806 of yacc.c */ 6669 #line 126 9"parser.yy"6616 #line 1268 "parser.yy" 6670 6617 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6671 6618 break; … … 6674 6621 6675 6622 /* Line 1806 of yacc.c */ 6676 #line 127 1"parser.yy"6623 #line 1270 "parser.yy" 6677 6624 { 6678 6625 typedefTable.enterScope(); … … 6683 6630 6684 6631 /* Line 1806 of yacc.c */ 6685 #line 127 5"parser.yy"6632 #line 1274 "parser.yy" 6686 6633 { 6687 6634 typedefTable.leaveScope(); … … 6693 6640 6694 6641 /* Line 1806 of yacc.c */ 6695 #line 128 4"parser.yy"6642 #line 1283 "parser.yy" 6696 6643 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6697 6644 break; … … 6700 6647 6701 6648 /* Line 1806 of yacc.c */ 6702 #line 128 6"parser.yy"6649 #line 1285 "parser.yy" 6703 6650 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6704 6651 break; … … 6707 6654 6708 6655 /* Line 1806 of yacc.c */ 6709 #line 129 7"parser.yy"6656 #line 1296 "parser.yy" 6710 6657 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6711 6658 break; … … 6714 6661 6715 6662 /* Line 1806 of yacc.c */ 6716 #line 130 6"parser.yy"6663 #line 1305 "parser.yy" 6717 6664 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6718 6665 break; … … 6721 6668 6722 6669 /* Line 1806 of yacc.c */ 6723 #line 130 8"parser.yy"6670 #line 1307 "parser.yy" 6724 6671 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6725 6672 break; … … 6728 6675 6729 6676 /* Line 1806 of yacc.c */ 6730 #line 13 10"parser.yy"6677 #line 1309 "parser.yy" 6731 6678 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6732 6679 break; … … 6735 6682 6736 6683 /* Line 1806 of yacc.c */ 6737 #line 131 2"parser.yy"6684 #line 1311 "parser.yy" 6738 6685 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6739 6686 break; … … 6742 6689 6743 6690 /* Line 1806 of yacc.c */ 6744 #line 131 4"parser.yy"6691 #line 1313 "parser.yy" 6745 6692 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6746 6693 break; … … 6749 6696 6750 6697 /* Line 1806 of yacc.c */ 6751 #line 131 6"parser.yy"6698 #line 1315 "parser.yy" 6752 6699 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6753 6700 break; … … 6756 6703 6757 6704 /* Line 1806 of yacc.c */ 6758 #line 131 8"parser.yy"6705 #line 1317 "parser.yy" 6759 6706 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6760 6707 break; … … 6763 6710 6764 6711 /* Line 1806 of yacc.c */ 6765 #line 13 20"parser.yy"6712 #line 1319 "parser.yy" 6766 6713 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6767 6714 break; … … 6770 6717 6771 6718 /* Line 1806 of yacc.c */ 6772 #line 132 5"parser.yy"6719 #line 1324 "parser.yy" 6773 6720 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6774 6721 break; … … 6777 6724 6778 6725 /* Line 1806 of yacc.c */ 6779 #line 132 7"parser.yy"6726 #line 1326 "parser.yy" 6780 6727 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6781 6728 break; … … 6784 6731 6785 6732 /* Line 1806 of yacc.c */ 6786 #line 132 9"parser.yy"6733 #line 1328 "parser.yy" 6787 6734 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6788 6735 break; … … 6791 6738 6792 6739 /* Line 1806 of yacc.c */ 6793 #line 133 1"parser.yy"6740 #line 1330 "parser.yy" 6794 6741 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6795 6742 break; … … 6798 6745 6799 6746 /* Line 1806 of yacc.c */ 6800 #line 133 3"parser.yy"6747 #line 1332 "parser.yy" 6801 6748 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6802 6749 break; … … 6805 6752 6806 6753 /* Line 1806 of yacc.c */ 6807 #line 133 5"parser.yy"6754 #line 1334 "parser.yy" 6808 6755 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6809 6756 break; … … 6812 6759 6813 6760 /* Line 1806 of yacc.c */ 6814 #line 133 7"parser.yy"6761 #line 1336 "parser.yy" 6815 6762 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6816 6763 break; … … 6819 6766 6820 6767 /* Line 1806 of yacc.c */ 6821 #line 133 9"parser.yy"6768 #line 1338 "parser.yy" 6822 6769 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6823 6770 break; … … 6826 6773 6827 6774 /* Line 1806 of yacc.c */ 6828 #line 134 1"parser.yy"6775 #line 1340 "parser.yy" 6829 6776 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6830 6777 break; … … 6833 6780 6834 6781 /* Line 1806 of yacc.c */ 6835 #line 134 3"parser.yy"6782 #line 1342 "parser.yy" 6836 6783 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6837 6784 break; … … 6840 6787 6841 6788 /* Line 1806 of yacc.c */ 6842 #line 134 5"parser.yy"6789 #line 1344 "parser.yy" 6843 6790 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6844 6791 break; … … 6847 6794 6848 6795 /* Line 1806 of yacc.c */ 6849 #line 134 7"parser.yy"6796 #line 1346 "parser.yy" 6850 6797 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6851 6798 break; 6852 6799 6853 case 33 3:6854 6855 /* Line 1806 of yacc.c */ 6856 #line 13 49"parser.yy"6857 { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist); }6800 case 334: 6801 6802 /* Line 1806 of yacc.c */ 6803 #line 1353 "parser.yy" 6804 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6858 6805 break; 6859 6806 … … 6861 6808 6862 6809 /* Line 1806 of yacc.c */ 6863 #line 1356 "parser.yy" 6810 #line 1355 "parser.yy" 6811 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6812 break; 6813 6814 case 336: 6815 6816 /* Line 1806 of yacc.c */ 6817 #line 1357 "parser.yy" 6818 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6819 break; 6820 6821 case 337: 6822 6823 /* Line 1806 of yacc.c */ 6824 #line 1359 "parser.yy" 6825 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6826 break; 6827 6828 case 339: 6829 6830 /* Line 1806 of yacc.c */ 6831 #line 1365 "parser.yy" 6832 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6833 break; 6834 6835 case 341: 6836 6837 /* Line 1806 of yacc.c */ 6838 #line 1372 "parser.yy" 6864 6839 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6865 6840 break; 6866 6841 6867 case 3 36:6868 6869 /* Line 1806 of yacc.c */ 6870 #line 13 58"parser.yy"6842 case 342: 6843 6844 /* Line 1806 of yacc.c */ 6845 #line 1374 "parser.yy" 6871 6846 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6872 6847 break; 6873 6848 6874 case 337: 6875 6876 /* Line 1806 of yacc.c */ 6877 #line 1360 "parser.yy" 6849 case 343: 6850 6851 /* Line 1806 of yacc.c */ 6852 #line 1376 "parser.yy" 6853 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6854 break; 6855 6856 case 344: 6857 6858 /* Line 1806 of yacc.c */ 6859 #line 1381 "parser.yy" 6860 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6861 break; 6862 6863 case 345: 6864 6865 /* Line 1806 of yacc.c */ 6866 #line 1383 "parser.yy" 6867 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6868 break; 6869 6870 case 346: 6871 6872 /* Line 1806 of yacc.c */ 6873 #line 1385 "parser.yy" 6874 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6875 break; 6876 6877 case 347: 6878 6879 /* Line 1806 of yacc.c */ 6880 #line 1387 "parser.yy" 6881 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6882 break; 6883 6884 case 349: 6885 6886 /* Line 1806 of yacc.c */ 6887 #line 1393 "parser.yy" 6888 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6889 break; 6890 6891 case 350: 6892 6893 /* Line 1806 of yacc.c */ 6894 #line 1395 "parser.yy" 6895 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6896 break; 6897 6898 case 351: 6899 6900 /* Line 1806 of yacc.c */ 6901 #line 1397 "parser.yy" 6878 6902 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6879 6903 break; 6880 6904 6881 case 338: 6882 6883 /* Line 1806 of yacc.c */ 6884 #line 1362 "parser.yy" 6885 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6886 break; 6887 6888 case 340: 6889 6890 /* Line 1806 of yacc.c */ 6891 #line 1368 "parser.yy" 6892 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6893 break; 6894 6895 case 342: 6896 6897 /* Line 1806 of yacc.c */ 6898 #line 1375 "parser.yy" 6905 case 353: 6906 6907 /* Line 1806 of yacc.c */ 6908 #line 1403 "parser.yy" 6899 6909 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6900 6910 break; 6901 6911 6902 case 3 43:6903 6904 /* Line 1806 of yacc.c */ 6905 #line 1 377"parser.yy"6912 case 354: 6913 6914 /* Line 1806 of yacc.c */ 6915 #line 1405 "parser.yy" 6906 6916 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6907 6917 break; 6908 6918 6909 case 344: 6910 6911 /* Line 1806 of yacc.c */ 6912 #line 1379 "parser.yy" 6913 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6914 break; 6915 6916 case 345: 6917 6918 /* Line 1806 of yacc.c */ 6919 #line 1384 "parser.yy" 6920 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6921 break; 6922 6923 case 346: 6924 6925 /* Line 1806 of yacc.c */ 6926 #line 1386 "parser.yy" 6927 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6928 break; 6929 6930 case 347: 6931 6932 /* Line 1806 of yacc.c */ 6933 #line 1388 "parser.yy" 6934 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6935 break; 6936 6937 case 348: 6938 6939 /* Line 1806 of yacc.c */ 6940 #line 1390 "parser.yy" 6941 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6942 break; 6943 6944 case 350: 6945 6946 /* Line 1806 of yacc.c */ 6947 #line 1396 "parser.yy" 6919 case 356: 6920 6921 /* Line 1806 of yacc.c */ 6922 #line 1411 "parser.yy" 6948 6923 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6949 6924 break; 6950 6925 6951 case 35 1:6952 6953 /* Line 1806 of yacc.c */ 6954 #line 1 398"parser.yy"6926 case 357: 6927 6928 /* Line 1806 of yacc.c */ 6929 #line 1413 "parser.yy" 6955 6930 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6956 6931 break; 6957 6932 6958 case 35 2:6959 6960 /* Line 1806 of yacc.c */ 6961 #line 14 00"parser.yy"6933 case 358: 6934 6935 /* Line 1806 of yacc.c */ 6936 #line 1415 "parser.yy" 6962 6937 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6963 6938 break; 6964 6939 6965 case 354: 6966 6967 /* Line 1806 of yacc.c */ 6968 #line 1406 "parser.yy" 6969 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6970 break; 6971 6972 case 355: 6973 6974 /* Line 1806 of yacc.c */ 6975 #line 1408 "parser.yy" 6940 case 359: 6941 6942 /* Line 1806 of yacc.c */ 6943 #line 1420 "parser.yy" 6944 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6945 break; 6946 6947 case 360: 6948 6949 /* Line 1806 of yacc.c */ 6950 #line 1422 "parser.yy" 6951 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6952 break; 6953 6954 case 361: 6955 6956 /* Line 1806 of yacc.c */ 6957 #line 1424 "parser.yy" 6976 6958 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6977 6959 break; 6978 6960 6979 case 357: 6980 6981 /* Line 1806 of yacc.c */ 6982 #line 1414 "parser.yy" 6983 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6984 break; 6985 6986 case 358: 6987 6988 /* Line 1806 of yacc.c */ 6989 #line 1416 "parser.yy" 6990 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6991 break; 6992 6993 case 359: 6994 6995 /* Line 1806 of yacc.c */ 6996 #line 1418 "parser.yy" 6997 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6998 break; 6999 7000 case 360: 7001 7002 /* Line 1806 of yacc.c */ 7003 #line 1423 "parser.yy" 7004 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 7005 break; 7006 7007 case 361: 7008 7009 /* Line 1806 of yacc.c */ 7010 #line 1425 "parser.yy" 7011 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7012 break; 7013 7014 case 362: 7015 7016 /* Line 1806 of yacc.c */ 7017 #line 1427 "parser.yy" 7018 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6961 case 364: 6962 6963 /* Line 1806 of yacc.c */ 6964 #line 1434 "parser.yy" 6965 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 7019 6966 break; 7020 6967 … … 7022 6969 7023 6970 /* Line 1806 of yacc.c */ 7024 #line 143 7"parser.yy"7025 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - ( 4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl)); }6971 #line 1436 "parser.yy" 6972 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 7026 6973 break; 7027 6974 … … 7029 6976 7030 6977 /* Line 1806 of yacc.c */ 7031 #line 143 9"parser.yy"7032 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - ( 2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0); }6978 #line 1438 "parser.yy" 6979 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 7033 6980 break; 7034 6981 … … 7036 6983 7037 6984 /* Line 1806 of yacc.c */ 7038 #line 144 1"parser.yy"7039 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - ( 5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }6985 #line 1440 "parser.yy" 6986 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 7040 6987 break; 7041 6988 … … 7043 6990 7044 6991 /* Line 1806 of yacc.c */ 7045 #line 144 3"parser.yy"7046 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl)); }6992 #line 1442 "parser.yy" 6993 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7047 6994 break; 7048 6995 … … 7050 6997 7051 6998 /* Line 1806 of yacc.c */ 7052 #line 144 5"parser.yy"7053 { (yyval. decl) = (yyvsp[(2) - (2)].decl); }6999 #line 1447 "parser.yy" 7000 { (yyval.aggKey) = DeclarationNode::Struct; } 7054 7001 break; 7055 7002 … … 7057 7004 7058 7005 /* Line 1806 of yacc.c */ 7059 #line 14 50"parser.yy"7060 { (yyval.aggKey) = DeclarationNode:: Struct; }7006 #line 1449 "parser.yy" 7007 { (yyval.aggKey) = DeclarationNode::Union; } 7061 7008 break; 7062 7009 … … 7064 7011 7065 7012 /* Line 1806 of yacc.c */ 7066 #line 145 2"parser.yy"7067 { (yyval. aggKey) = DeclarationNode::Union; }7013 #line 1454 "parser.yy" 7014 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 7068 7015 break; 7069 7016 … … 7071 7018 7072 7019 /* Line 1806 of yacc.c */ 7073 #line 1457 "parser.yy" 7074 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 7075 break; 7076 7077 case 373: 7078 7079 /* Line 1806 of yacc.c */ 7080 #line 1459 "parser.yy" 7020 #line 1456 "parser.yy" 7081 7021 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7082 7022 break; 7083 7023 7084 case 375: 7024 case 374: 7025 7026 /* Line 1806 of yacc.c */ 7027 #line 1462 "parser.yy" 7028 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7029 break; 7030 7031 case 376: 7085 7032 7086 7033 /* Line 1806 of yacc.c */ … … 7089 7036 break; 7090 7037 7091 case 37 7:7092 7093 /* Line 1806 of yacc.c */ 7094 #line 14 68"parser.yy"7095 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }7038 case 378: 7039 7040 /* Line 1806 of yacc.c */ 7041 #line 1471 "parser.yy" 7042 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 7096 7043 break; 7097 7044 … … 7099 7046 7100 7047 /* Line 1806 of yacc.c */ 7101 #line 147 4"parser.yy"7102 { (yyval.decl) = (yyvsp[(1) - ( 2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }7048 #line 1473 "parser.yy" 7049 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7103 7050 break; 7104 7051 … … 7106 7053 7107 7054 /* Line 1806 of yacc.c */ 7108 #line 147 6"parser.yy"7109 { (yyval.decl) = (yyvsp[(1) - ( 3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok)) ); }7055 #line 1475 "parser.yy" 7056 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7110 7057 break; 7111 7058 … … 7113 7060 7114 7061 /* Line 1806 of yacc.c */ 7115 #line 14 78"parser.yy"7116 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0) ); }7062 #line 1480 "parser.yy" 7063 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7117 7064 break; 7118 7065 … … 7120 7067 7121 7068 /* Line 1806 of yacc.c */ 7122 #line 148 3"parser.yy"7123 { (yyval.decl) = (yyvsp[( 2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }7069 #line 1482 "parser.yy" 7070 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7124 7071 break; 7125 7072 … … 7127 7074 7128 7075 /* Line 1806 of yacc.c */ 7129 #line 148 5"parser.yy"7130 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) );}7076 #line 1487 "parser.yy" 7077 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7131 7078 break; 7132 7079 … … 7134 7081 7135 7082 /* Line 1806 of yacc.c */ 7136 #line 14 90"parser.yy"7137 { (yyval.decl) = DeclarationNode::new Name( 0 ); /* XXX */}7083 #line 1489 "parser.yy" 7084 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7138 7085 break; 7139 7086 … … 7142 7089 /* Line 1806 of yacc.c */ 7143 7090 #line 1492 "parser.yy" 7144 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }7091 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7145 7092 break; 7146 7093 … … 7152 7099 break; 7153 7100 7154 case 38 7:7155 7156 /* Line 1806 of yacc.c */ 7157 #line 1 498"parser.yy"7158 { (yyval. decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }7101 case 388: 7102 7103 /* Line 1806 of yacc.c */ 7104 #line 1501 "parser.yy" 7105 { (yyval.en) = 0; } 7159 7106 break; 7160 7107 … … 7162 7109 7163 7110 /* Line 1806 of yacc.c */ 7164 #line 1504 "parser.yy" 7111 #line 1503 "parser.yy" 7112 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7113 break; 7114 7115 case 390: 7116 7117 /* Line 1806 of yacc.c */ 7118 #line 1508 "parser.yy" 7119 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7120 break; 7121 7122 case 392: 7123 7124 /* Line 1806 of yacc.c */ 7125 #line 1517 "parser.yy" 7126 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7127 break; 7128 7129 case 393: 7130 7131 /* Line 1806 of yacc.c */ 7132 #line 1519 "parser.yy" 7133 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7134 break; 7135 7136 case 394: 7137 7138 /* Line 1806 of yacc.c */ 7139 #line 1521 "parser.yy" 7140 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7141 break; 7142 7143 case 395: 7144 7145 /* Line 1806 of yacc.c */ 7146 #line 1526 "parser.yy" 7147 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7148 break; 7149 7150 case 396: 7151 7152 /* Line 1806 of yacc.c */ 7153 #line 1528 "parser.yy" 7154 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7155 break; 7156 7157 case 397: 7158 7159 /* Line 1806 of yacc.c */ 7160 #line 1533 "parser.yy" 7165 7161 { (yyval.en) = 0; } 7166 7162 break; 7167 7163 7168 case 390: 7169 7170 /* Line 1806 of yacc.c */ 7171 #line 1506 "parser.yy" 7172 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7173 break; 7174 7175 case 391: 7176 7177 /* Line 1806 of yacc.c */ 7178 #line 1511 "parser.yy" 7164 case 398: 7165 7166 /* Line 1806 of yacc.c */ 7167 #line 1535 "parser.yy" 7179 7168 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7180 7169 break; 7181 7170 7182 case 393:7183 7184 /* Line 1806 of yacc.c */7185 #line 1520 "parser.yy"7186 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }7187 break;7188 7189 case 394:7190 7191 /* Line 1806 of yacc.c */7192 #line 1522 "parser.yy"7193 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }7194 break;7195 7196 case 395:7197 7198 /* Line 1806 of yacc.c */7199 #line 1524 "parser.yy"7200 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }7201 break;7202 7203 case 396:7204 7205 /* Line 1806 of yacc.c */7206 #line 1529 "parser.yy"7207 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }7208 break;7209 7210 case 397:7211 7212 /* Line 1806 of yacc.c */7213 #line 1531 "parser.yy"7214 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }7215 break;7216 7217 case 398:7218 7219 /* Line 1806 of yacc.c */7220 #line 1536 "parser.yy"7221 { (yyval.en) = 0; }7222 break;7223 7224 7171 case 399: 7225 7172 7226 7173 /* Line 1806 of yacc.c */ 7227 #line 1538 "parser.yy" 7228 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7229 break; 7230 7231 case 400: 7232 7233 /* Line 1806 of yacc.c */ 7234 #line 1545 "parser.yy" 7174 #line 1542 "parser.yy" 7235 7175 { (yyval.decl) = 0; } 7236 7176 break; 7237 7177 7178 case 403: 7179 7180 /* Line 1806 of yacc.c */ 7181 #line 1550 "parser.yy" 7182 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7183 break; 7184 7238 7185 case 404: 7239 7186 7240 7187 /* Line 1806 of yacc.c */ 7241 #line 1553 "parser.yy" 7188 #line 1552 "parser.yy" 7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7190 break; 7191 7192 case 405: 7193 7194 /* Line 1806 of yacc.c */ 7195 #line 1554 "parser.yy" 7196 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7197 break; 7198 7199 case 407: 7200 7201 /* Line 1806 of yacc.c */ 7202 #line 1562 "parser.yy" 7242 7203 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7243 7204 break; 7244 7205 7245 case 405: 7246 7247 /* Line 1806 of yacc.c */ 7248 #line 1555 "parser.yy" 7206 case 408: 7207 7208 /* Line 1806 of yacc.c */ 7209 #line 1564 "parser.yy" 7210 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7211 break; 7212 7213 case 409: 7214 7215 /* Line 1806 of yacc.c */ 7216 #line 1566 "parser.yy" 7217 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7218 break; 7219 7220 case 411: 7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1572 "parser.yy" 7224 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7225 break; 7226 7227 case 412: 7228 7229 /* Line 1806 of yacc.c */ 7230 #line 1577 "parser.yy" 7231 { (yyval.decl) = 0; } 7232 break; 7233 7234 case 415: 7235 7236 /* Line 1806 of yacc.c */ 7237 #line 1584 "parser.yy" 7249 7238 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7250 7239 break; 7251 7240 7252 case 406: 7253 7254 /* Line 1806 of yacc.c */ 7255 #line 1557 "parser.yy" 7256 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7257 break; 7258 7259 case 408: 7260 7261 /* Line 1806 of yacc.c */ 7262 #line 1565 "parser.yy" 7241 case 418: 7242 7243 /* Line 1806 of yacc.c */ 7244 #line 1591 "parser.yy" 7263 7245 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7264 7246 break; 7265 7247 7266 case 4 09:7267 7268 /* Line 1806 of yacc.c */ 7269 #line 15 67"parser.yy"7248 case 419: 7249 7250 /* Line 1806 of yacc.c */ 7251 #line 1593 "parser.yy" 7270 7252 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7271 7253 break; 7272 7254 7273 case 410: 7274 7275 /* Line 1806 of yacc.c */ 7276 #line 1569 "parser.yy" 7277 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7278 break; 7279 7280 case 412: 7281 7282 /* Line 1806 of yacc.c */ 7283 #line 1575 "parser.yy" 7284 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7285 break; 7286 7287 case 413: 7288 7289 /* Line 1806 of yacc.c */ 7290 #line 1580 "parser.yy" 7291 { (yyval.decl) = 0; } 7292 break; 7293 7294 case 416: 7295 7296 /* Line 1806 of yacc.c */ 7297 #line 1587 "parser.yy" 7298 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7299 break; 7300 7301 case 419: 7302 7303 /* Line 1806 of yacc.c */ 7304 #line 1594 "parser.yy" 7305 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7306 break; 7307 7308 case 420: 7309 7310 /* Line 1806 of yacc.c */ 7311 #line 1596 "parser.yy" 7312 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7255 case 421: 7256 7257 /* Line 1806 of yacc.c */ 7258 #line 1602 "parser.yy" 7259 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7313 7260 break; 7314 7261 … … 7323 7270 7324 7271 /* Line 1806 of yacc.c */ 7325 #line 1608 "parser.yy" 7326 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7327 break; 7328 7329 case 424: 7330 7331 /* Line 1806 of yacc.c */ 7332 #line 1610 "parser.yy" 7272 #line 1607 "parser.yy" 7333 7273 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7334 7274 break; 7335 7275 7336 case 42 9:7337 7338 /* Line 1806 of yacc.c */ 7339 #line 16 20"parser.yy"7276 case 428: 7277 7278 /* Line 1806 of yacc.c */ 7279 #line 1617 "parser.yy" 7340 7280 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7341 7281 break; 7342 7282 7343 case 43 1:7344 7345 /* Line 1806 of yacc.c */ 7346 #line 162 6"parser.yy"7283 case 430: 7284 7285 /* Line 1806 of yacc.c */ 7286 #line 1623 "parser.yy" 7347 7287 { 7348 7288 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7351 7291 break; 7352 7292 7353 case 43 2:7354 7355 /* Line 1806 of yacc.c */ 7356 #line 16 31"parser.yy"7293 case 431: 7294 7295 /* Line 1806 of yacc.c */ 7296 #line 1628 "parser.yy" 7357 7297 { 7358 7298 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7361 7301 break; 7362 7302 7303 case 433: 7304 7305 /* Line 1806 of yacc.c */ 7306 #line 1637 "parser.yy" 7307 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7308 break; 7309 7363 7310 case 434: 7364 7311 7365 7312 /* Line 1806 of yacc.c */ 7366 #line 1640 "parser.yy" 7313 #line 1646 "parser.yy" 7314 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7315 break; 7316 7317 case 435: 7318 7319 /* Line 1806 of yacc.c */ 7320 #line 1648 "parser.yy" 7321 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7322 break; 7323 7324 case 447: 7325 7326 /* Line 1806 of yacc.c */ 7327 #line 1673 "parser.yy" 7367 7328 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7368 7329 break; 7369 7330 7370 case 435: 7371 7372 /* Line 1806 of yacc.c */ 7373 #line 1649 "parser.yy" 7374 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7375 break; 7376 7377 case 436: 7378 7379 /* Line 1806 of yacc.c */ 7380 #line 1651 "parser.yy" 7381 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7382 break; 7383 7384 case 448: 7385 7386 /* Line 1806 of yacc.c */ 7387 #line 1676 "parser.yy" 7331 case 451: 7332 7333 /* Line 1806 of yacc.c */ 7334 #line 1681 "parser.yy" 7388 7335 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7389 7336 break; … … 7392 7339 7393 7340 /* Line 1806 of yacc.c */ 7394 #line 168 4"parser.yy"7395 { (yyval. decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }7341 #line 1686 "parser.yy" 7342 { (yyval.in) = 0; } 7396 7343 break; 7397 7344 … … 7399 7346 7400 7347 /* Line 1806 of yacc.c */ 7401 #line 1689 "parser.yy" 7348 #line 1688 "parser.yy" 7349 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7350 break; 7351 7352 case 454: 7353 7354 /* Line 1806 of yacc.c */ 7355 #line 1690 "parser.yy" 7356 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7357 break; 7358 7359 case 455: 7360 7361 /* Line 1806 of yacc.c */ 7362 #line 1694 "parser.yy" 7363 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7364 break; 7365 7366 case 456: 7367 7368 /* Line 1806 of yacc.c */ 7369 #line 1695 "parser.yy" 7370 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7371 break; 7372 7373 case 457: 7374 7375 /* Line 1806 of yacc.c */ 7376 #line 1700 "parser.yy" 7402 7377 { (yyval.in) = 0; } 7403 7378 break; 7404 7379 7405 case 454: 7406 7407 /* Line 1806 of yacc.c */ 7408 #line 1691 "parser.yy" 7409 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7410 break; 7411 7412 case 455: 7413 7414 /* Line 1806 of yacc.c */ 7415 #line 1693 "parser.yy" 7416 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7417 break; 7418 7419 case 456: 7420 7421 /* Line 1806 of yacc.c */ 7422 #line 1697 "parser.yy" 7423 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7424 break; 7425 7426 case 457: 7427 7428 /* Line 1806 of yacc.c */ 7429 #line 1698 "parser.yy" 7430 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7431 break; 7432 7433 case 458: 7380 case 459: 7381 7382 /* Line 1806 of yacc.c */ 7383 #line 1702 "parser.yy" 7384 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7385 break; 7386 7387 case 460: 7434 7388 7435 7389 /* Line 1806 of yacc.c */ 7436 7390 #line 1703 "parser.yy" 7437 { (yyval.in) = 0; }7438 break; 7439 7440 case 46 0:7391 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7392 break; 7393 7394 case 461: 7441 7395 7442 7396 /* Line 1806 of yacc.c */ 7443 7397 #line 1705 "parser.yy" 7444 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }7445 break;7446 7447 case 461:7448 7449 /* Line 1806 of yacc.c */7450 #line 1706 "parser.yy"7451 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }7452 break;7453 7454 case 462:7455 7456 /* Line 1806 of yacc.c */7457 #line 1708 "parser.yy"7458 7398 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7459 7399 break; 7460 7400 7461 case 46 4:7462 7463 /* Line 1806 of yacc.c */ 7464 #line 172 4"parser.yy"7401 case 463: 7402 7403 /* Line 1806 of yacc.c */ 7404 #line 1721 "parser.yy" 7465 7405 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7466 7406 break; 7467 7407 7408 case 465: 7409 7410 /* Line 1806 of yacc.c */ 7411 #line 1727 "parser.yy" 7412 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7413 break; 7414 7468 7415 case 466: 7469 7416 7470 7417 /* Line 1806 of yacc.c */ 7471 #line 173 0"parser.yy"7472 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }7418 #line 1735 "parser.yy" 7419 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7473 7420 break; 7474 7421 … … 7476 7423 7477 7424 /* Line 1806 of yacc.c */ 7478 #line 173 8"parser.yy"7479 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[( 1) - (1)].tok) ) ); }7425 #line 1737 "parser.yy" 7426 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7480 7427 break; 7481 7428 … … 7484 7431 /* Line 1806 of yacc.c */ 7485 7432 #line 1740 "parser.yy" 7486 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) )); }7433 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7487 7434 break; 7488 7435 … … 7490 7437 7491 7438 /* Line 1806 of yacc.c */ 7492 #line 174 3"parser.yy"7439 #line 1742 "parser.yy" 7493 7440 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7494 7441 break; … … 7497 7444 7498 7445 /* Line 1806 of yacc.c */ 7499 #line 174 5"parser.yy"7500 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }7446 #line 1744 "parser.yy" 7447 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7501 7448 break; 7502 7449 … … 7504 7451 7505 7452 /* Line 1806 of yacc.c */ 7506 #line 1747 "parser.yy" 7507 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7508 break; 7509 7510 case 472: 7511 7512 /* Line 1806 of yacc.c */ 7513 #line 1749 "parser.yy" 7453 #line 1746 "parser.yy" 7514 7454 { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); } 7515 7455 break; 7516 7456 7457 case 473: 7458 7459 /* Line 1806 of yacc.c */ 7460 #line 1770 "parser.yy" 7461 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7462 break; 7463 7517 7464 case 474: 7518 7465 7519 7466 /* Line 1806 of yacc.c */ 7520 #line 1773 "parser.yy" 7467 #line 1772 "parser.yy" 7468 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7469 break; 7470 7471 case 475: 7472 7473 /* Line 1806 of yacc.c */ 7474 #line 1774 "parser.yy" 7475 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7476 break; 7477 7478 case 477: 7479 7480 /* Line 1806 of yacc.c */ 7481 #line 1780 "parser.yy" 7521 7482 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7522 7483 break; 7523 7484 7524 case 47 5:7525 7526 /* Line 1806 of yacc.c */ 7527 #line 17 75"parser.yy"7485 case 478: 7486 7487 /* Line 1806 of yacc.c */ 7488 #line 1782 "parser.yy" 7528 7489 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7529 7490 break; 7530 7491 7531 case 476:7532 7533 /* Line 1806 of yacc.c */7534 #line 1777 "parser.yy"7535 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }7536 break;7537 7538 case 478:7539 7540 /* Line 1806 of yacc.c */7541 #line 1783 "parser.yy"7542 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }7543 break;7544 7545 7492 case 479: 7546 7493 7547 7494 /* Line 1806 of yacc.c */ 7548 #line 1785 "parser.yy" 7549 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7550 break; 7551 7552 case 480: 7553 7554 /* Line 1806 of yacc.c */ 7555 #line 1790 "parser.yy" 7495 #line 1787 "parser.yy" 7556 7496 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7557 7497 break; 7558 7498 7499 case 481: 7500 7501 /* Line 1806 of yacc.c */ 7502 #line 1793 "parser.yy" 7503 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7504 break; 7505 7559 7506 case 482: 7560 7507 7561 7508 /* Line 1806 of yacc.c */ 7562 #line 179 6"parser.yy"7563 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl)); }7509 #line 1798 "parser.yy" 7510 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7564 7511 break; 7565 7512 … … 7567 7514 7568 7515 /* Line 1806 of yacc.c */ 7569 #line 1801 "parser.yy" 7570 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7571 break; 7572 7573 case 484: 7574 7575 /* Line 1806 of yacc.c */ 7576 #line 1803 "parser.yy" 7516 #line 1800 "parser.yy" 7577 7517 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7578 7518 break; 7579 7519 7520 case 485: 7521 7522 /* Line 1806 of yacc.c */ 7523 #line 1806 "parser.yy" 7524 { (yyval.tclass) = DeclarationNode::Type; } 7525 break; 7526 7580 7527 case 486: 7581 7528 7582 7529 /* Line 1806 of yacc.c */ 7583 #line 180 9"parser.yy"7584 { (yyval.tclass) = DeclarationNode:: Type; }7530 #line 1808 "parser.yy" 7531 { (yyval.tclass) = DeclarationNode::Ftype; } 7585 7532 break; 7586 7533 … … 7588 7535 7589 7536 /* Line 1806 of yacc.c */ 7590 #line 181 1"parser.yy"7591 { (yyval.tclass) = DeclarationNode:: Ftype; }7537 #line 1810 "parser.yy" 7538 { (yyval.tclass) = DeclarationNode::Dtype; } 7592 7539 break; 7593 7540 … … 7595 7542 7596 7543 /* Line 1806 of yacc.c */ 7597 #line 181 3"parser.yy"7598 { (yyval. tclass) = DeclarationNode::Dtype; }7544 #line 1815 "parser.yy" 7545 { (yyval.decl) = 0; } 7599 7546 break; 7600 7547 … … 7602 7549 7603 7550 /* Line 1806 of yacc.c */ 7604 #line 181 8"parser.yy"7605 { (yyval.decl) = 0; }7551 #line 1817 "parser.yy" 7552 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7606 7553 break; 7607 7554 … … 7609 7556 7610 7557 /* Line 1806 of yacc.c */ 7611 #line 1820 "parser.yy" 7612 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7613 break; 7614 7615 case 491: 7616 7617 /* Line 1806 of yacc.c */ 7618 #line 1825 "parser.yy" 7558 #line 1822 "parser.yy" 7619 7559 { 7620 7560 typedefTable.openContext( *(yyvsp[(2) - (5)].tok) ); … … 7623 7563 break; 7624 7564 7565 case 491: 7566 7567 /* Line 1806 of yacc.c */ 7568 #line 1827 "parser.yy" 7569 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7570 break; 7571 7625 7572 case 492: 7626 7573 7627 7574 /* Line 1806 of yacc.c */ 7628 #line 18 30"parser.yy"7629 { (yyval.decl) = (yyvsp[(4) - (5)].decl); }7575 #line 1829 "parser.yy" 7576 { (yyval.decl) = 0; } 7630 7577 break; 7631 7578 … … 7633 7580 7634 7581 /* Line 1806 of yacc.c */ 7635 #line 183 2"parser.yy"7636 { (yyval. decl) = 0; }7637 break; 7638 7639 case 49 4:7582 #line 1834 "parser.yy" 7583 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7584 break; 7585 7586 case 495: 7640 7587 7641 7588 /* Line 1806 of yacc.c */ 7642 7589 #line 1837 "parser.yy" 7643 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl)); }7590 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7644 7591 break; 7645 7592 … … 7647 7594 7648 7595 /* Line 1806 of yacc.c */ 7649 #line 18 40"parser.yy"7650 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }7596 #line 1839 "parser.yy" 7597 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7651 7598 break; 7652 7599 … … 7654 7601 7655 7602 /* Line 1806 of yacc.c */ 7656 #line 184 2"parser.yy"7657 { (yyval. en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }7603 #line 1844 "parser.yy" 7604 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7658 7605 break; 7659 7606 … … 7661 7608 7662 7609 /* Line 1806 of yacc.c */ 7663 #line 184 7"parser.yy"7664 { (yyval.decl) = (yyvsp[( 2) - (2)].decl); }7610 #line 1846 "parser.yy" 7611 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7665 7612 break; 7666 7613 … … 7668 7615 7669 7616 /* Line 1806 of yacc.c */ 7670 #line 184 9"parser.yy"7671 { (yyval.decl) = (yyvsp[( 3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }7617 #line 1848 "parser.yy" 7618 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7672 7619 break; 7673 7620 … … 7675 7622 7676 7623 /* Line 1806 of yacc.c */ 7677 #line 185 1"parser.yy"7678 { (yyval.decl) = (yyvsp[(1) - ( 3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl)) ); }7624 #line 1853 "parser.yy" 7625 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7679 7626 break; 7680 7627 … … 7682 7629 7683 7630 /* Line 1806 of yacc.c */ 7684 #line 185 6"parser.yy"7685 { (yyval.decl) = (yyvsp[(1) - ( 2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }7631 #line 1855 "parser.yy" 7632 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7686 7633 break; 7687 7634 … … 7689 7636 7690 7637 /* Line 1806 of yacc.c */ 7691 #line 1858 "parser.yy" 7692 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7693 break; 7694 7695 case 503: 7696 7697 /* Line 1806 of yacc.c */ 7698 #line 1863 "parser.yy" 7638 #line 1860 "parser.yy" 7699 7639 { 7700 7640 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7703 7643 break; 7704 7644 7705 case 50 4:7706 7707 /* Line 1806 of yacc.c */ 7708 #line 186 8"parser.yy"7645 case 503: 7646 7647 /* Line 1806 of yacc.c */ 7648 #line 1865 "parser.yy" 7709 7649 { 7710 7650 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7713 7653 break; 7714 7654 7715 case 50 5:7716 7717 /* Line 1806 of yacc.c */ 7718 #line 187 6"parser.yy"7655 case 504: 7656 7657 /* Line 1806 of yacc.c */ 7658 #line 1873 "parser.yy" 7719 7659 { 7720 7660 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7723 7663 break; 7724 7664 7725 case 50 6:7726 7727 /* Line 1806 of yacc.c */ 7728 #line 18 81"parser.yy"7665 case 505: 7666 7667 /* Line 1806 of yacc.c */ 7668 #line 1878 "parser.yy" 7729 7669 { 7730 7670 typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) ); … … 7733 7673 break; 7734 7674 7735 case 50 7:7736 7737 /* Line 1806 of yacc.c */ 7738 #line 188 6"parser.yy"7675 case 506: 7676 7677 /* Line 1806 of yacc.c */ 7678 #line 1883 "parser.yy" 7739 7679 { 7740 7680 typedefTable.leaveContext(); … … 7744 7684 break; 7745 7685 7746 case 50 9:7747 7748 /* Line 1806 of yacc.c */ 7749 #line 189 6"parser.yy"7686 case 508: 7687 7688 /* Line 1806 of yacc.c */ 7689 #line 1893 "parser.yy" 7750 7690 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7751 7691 break; 7752 7692 7753 case 51 2:7754 7755 /* Line 1806 of yacc.c */ 7756 #line 190 6"parser.yy"7693 case 511: 7694 7695 /* Line 1806 of yacc.c */ 7696 #line 1903 "parser.yy" 7757 7697 { 7758 7698 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7761 7701 break; 7762 7702 7763 case 51 3:7764 7765 /* Line 1806 of yacc.c */ 7766 #line 19 11"parser.yy"7703 case 512: 7704 7705 /* Line 1806 of yacc.c */ 7706 #line 1908 "parser.yy" 7767 7707 { 7768 7708 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7771 7711 break; 7772 7712 7773 case 51 4:7774 7775 /* Line 1806 of yacc.c */ 7776 #line 191 6"parser.yy"7713 case 513: 7714 7715 /* Line 1806 of yacc.c */ 7716 #line 1913 "parser.yy" 7777 7717 { 7778 7718 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7781 7721 break; 7782 7722 7783 case 51 5:7784 7785 /* Line 1806 of yacc.c */ 7786 #line 192 4"parser.yy"7723 case 514: 7724 7725 /* Line 1806 of yacc.c */ 7726 #line 1921 "parser.yy" 7787 7727 { 7788 7728 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7791 7731 break; 7792 7732 7793 case 51 6:7794 7795 /* Line 1806 of yacc.c */ 7796 #line 192 9"parser.yy"7733 case 515: 7734 7735 /* Line 1806 of yacc.c */ 7736 #line 1926 "parser.yy" 7797 7737 { 7798 7738 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7801 7741 break; 7802 7742 7743 case 516: 7744 7745 /* Line 1806 of yacc.c */ 7746 #line 1936 "parser.yy" 7747 {} 7748 break; 7749 7803 7750 case 517: 7804 7751 7805 7752 /* Line 1806 of yacc.c */ 7806 #line 1939 "parser.yy" 7807 {} 7808 break; 7809 7810 case 518: 7811 7812 /* Line 1806 of yacc.c */ 7813 #line 1941 "parser.yy" 7753 #line 1938 "parser.yy" 7814 7754 { 7815 7755 if ( theTree ) { … … 7821 7761 break; 7822 7762 7763 case 519: 7764 7765 /* Line 1806 of yacc.c */ 7766 #line 1950 "parser.yy" 7767 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7768 break; 7769 7823 7770 case 520: 7824 7771 7825 7772 /* Line 1806 of yacc.c */ 7826 #line 1953 "parser.yy" 7827 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7828 break; 7829 7830 case 521: 7831 7832 /* Line 1806 of yacc.c */ 7833 #line 1958 "parser.yy" 7773 #line 1955 "parser.yy" 7834 7774 { (yyval.decl) = 0; } 7835 7775 break; 7836 7776 7777 case 524: 7778 7779 /* Line 1806 of yacc.c */ 7780 #line 1963 "parser.yy" 7781 {} 7782 break; 7783 7837 7784 case 525: 7838 7785 7839 7786 /* Line 1806 of yacc.c */ 7840 #line 1966 "parser.yy" 7841 {} 7842 break; 7843 7844 case 526: 7845 7846 /* Line 1806 of yacc.c */ 7847 #line 1968 "parser.yy" 7787 #line 1965 "parser.yy" 7848 7788 { 7849 7789 linkageStack.push( linkage ); … … 7852 7792 break; 7853 7793 7854 case 52 7:7855 7856 /* Line 1806 of yacc.c */ 7857 #line 197 3"parser.yy"7794 case 526: 7795 7796 /* Line 1806 of yacc.c */ 7797 #line 1970 "parser.yy" 7858 7798 { 7859 7799 linkage = linkageStack.top(); … … 7863 7803 break; 7864 7804 7865 case 52 8:7866 7867 /* Line 1806 of yacc.c */ 7868 #line 197 9"parser.yy"7805 case 527: 7806 7807 /* Line 1806 of yacc.c */ 7808 #line 1976 "parser.yy" 7869 7809 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7870 7810 break; 7871 7811 7872 case 5 30:7873 7874 /* Line 1806 of yacc.c */ 7875 #line 198 9"parser.yy"7812 case 529: 7813 7814 /* Line 1806 of yacc.c */ 7815 #line 1986 "parser.yy" 7876 7816 { 7877 7817 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7881 7821 break; 7882 7822 7883 case 53 1:7884 7885 /* Line 1806 of yacc.c */ 7886 #line 199 5"parser.yy"7823 case 530: 7824 7825 /* Line 1806 of yacc.c */ 7826 #line 1992 "parser.yy" 7887 7827 { 7888 7828 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7892 7832 break; 7893 7833 7894 case 53 2:7895 7896 /* Line 1806 of yacc.c */ 7897 #line 200 4"parser.yy"7834 case 531: 7835 7836 /* Line 1806 of yacc.c */ 7837 #line 2001 "parser.yy" 7898 7838 { 7899 7839 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7903 7843 break; 7904 7844 7905 case 53 3:7906 7907 /* Line 1806 of yacc.c */ 7908 #line 20 10"parser.yy"7845 case 532: 7846 7847 /* Line 1806 of yacc.c */ 7848 #line 2007 "parser.yy" 7909 7849 { 7910 7850 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7914 7854 break; 7915 7855 7916 case 53 4:7917 7918 /* Line 1806 of yacc.c */ 7919 #line 201 6"parser.yy"7856 case 533: 7857 7858 /* Line 1806 of yacc.c */ 7859 #line 2013 "parser.yy" 7920 7860 { 7921 7861 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7925 7865 break; 7926 7866 7927 case 53 5:7928 7929 /* Line 1806 of yacc.c */ 7930 #line 20 22"parser.yy"7867 case 534: 7868 7869 /* Line 1806 of yacc.c */ 7870 #line 2019 "parser.yy" 7931 7871 { 7932 7872 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7936 7876 break; 7937 7877 7938 case 53 6:7939 7940 /* Line 1806 of yacc.c */ 7941 #line 202 8"parser.yy"7878 case 535: 7879 7880 /* Line 1806 of yacc.c */ 7881 #line 2025 "parser.yy" 7942 7882 { 7943 7883 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7947 7887 break; 7948 7888 7949 case 53 7:7950 7951 /* Line 1806 of yacc.c */ 7952 #line 203 6"parser.yy"7889 case 536: 7890 7891 /* Line 1806 of yacc.c */ 7892 #line 2033 "parser.yy" 7953 7893 { 7954 7894 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7958 7898 break; 7959 7899 7960 case 53 8:7961 7962 /* Line 1806 of yacc.c */ 7963 #line 20 42"parser.yy"7900 case 537: 7901 7902 /* Line 1806 of yacc.c */ 7903 #line 2039 "parser.yy" 7964 7904 { 7965 7905 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7969 7909 break; 7970 7910 7971 case 53 9:7972 7973 /* Line 1806 of yacc.c */ 7974 #line 20 50"parser.yy"7911 case 538: 7912 7913 /* Line 1806 of yacc.c */ 7914 #line 2047 "parser.yy" 7975 7915 { 7976 7916 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7980 7920 break; 7981 7921 7982 case 5 40:7983 7984 /* Line 1806 of yacc.c */ 7985 #line 205 6"parser.yy"7922 case 539: 7923 7924 /* Line 1806 of yacc.c */ 7925 #line 2053 "parser.yy" 7986 7926 { 7987 7927 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7991 7931 break; 7992 7932 7993 case 54 4:7994 7995 /* Line 1806 of yacc.c */ 7996 #line 20 71"parser.yy"7933 case 543: 7934 7935 /* Line 1806 of yacc.c */ 7936 #line 2068 "parser.yy" 7997 7937 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7998 7938 break; 7999 7939 8000 case 54 7:8001 8002 /* Line 1806 of yacc.c */ 8003 #line 20 81"parser.yy"7940 case 546: 7941 7942 /* Line 1806 of yacc.c */ 7943 #line 2078 "parser.yy" 8004 7944 { (yyval.decl) = 0; } 8005 7945 break; 8006 7946 7947 case 549: 7948 7949 /* Line 1806 of yacc.c */ 7950 #line 2085 "parser.yy" 7951 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7952 break; 7953 8007 7954 case 550: 8008 7955 8009 7956 /* Line 1806 of yacc.c */ 8010 #line 2088 "parser.yy" 8011 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8012 break; 8013 8014 case 551: 8015 8016 /* Line 1806 of yacc.c */ 8017 #line 2094 "parser.yy" 7957 #line 2091 "parser.yy" 8018 7958 { (yyval.decl) = 0; } 8019 7959 break; 8020 7960 7961 case 556: 7962 7963 /* Line 1806 of yacc.c */ 7964 #line 2106 "parser.yy" 7965 {} 7966 break; 7967 8021 7968 case 557: 7969 7970 /* Line 1806 of yacc.c */ 7971 #line 2107 "parser.yy" 7972 {} 7973 break; 7974 7975 case 558: 7976 7977 /* Line 1806 of yacc.c */ 7978 #line 2108 "parser.yy" 7979 {} 7980 break; 7981 7982 case 559: 8022 7983 8023 7984 /* Line 1806 of yacc.c */ … … 8026 7987 break; 8027 7988 8028 case 558:8029 8030 /* Line 1806 of yacc.c */8031 #line 2110 "parser.yy"8032 {}8033 break;8034 8035 case 559:8036 8037 /* Line 1806 of yacc.c */8038 #line 2111 "parser.yy"8039 {}8040 break;8041 8042 7989 case 560: 8043 7990 8044 7991 /* Line 1806 of yacc.c */ 8045 #line 21 12"parser.yy"8046 { }8047 break; 8048 8049 case 56 1:7992 #line 2144 "parser.yy" 7993 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7994 break; 7995 7996 case 562: 8050 7997 8051 7998 /* Line 1806 of yacc.c */ … … 8057 8004 8058 8005 /* Line 1806 of yacc.c */ 8059 #line 21 50"parser.yy"8006 #line 2149 "parser.yy" 8060 8007 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8061 8008 break; … … 8064 8011 8065 8012 /* Line 1806 of yacc.c */ 8066 #line 2152 "parser.yy" 8067 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8068 break; 8069 8070 case 565: 8071 8072 /* Line 1806 of yacc.c */ 8073 #line 2157 "parser.yy" 8013 #line 2154 "parser.yy" 8074 8014 { 8075 8015 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8078 8018 break; 8079 8019 8020 case 565: 8021 8022 /* Line 1806 of yacc.c */ 8023 #line 2159 "parser.yy" 8024 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8025 break; 8026 8080 8027 case 566: 8081 8028 8082 8029 /* Line 1806 of yacc.c */ 8083 #line 2162 "parser.yy" 8030 #line 2164 "parser.yy" 8031 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8032 break; 8033 8034 case 567: 8035 8036 /* Line 1806 of yacc.c */ 8037 #line 2166 "parser.yy" 8038 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8039 break; 8040 8041 case 568: 8042 8043 /* Line 1806 of yacc.c */ 8044 #line 2168 "parser.yy" 8084 8045 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8085 8046 break; 8086 8047 8087 case 567:8088 8089 /* Line 1806 of yacc.c */8090 #line 2167 "parser.yy"8091 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8092 break;8093 8094 case 568:8095 8096 /* Line 1806 of yacc.c */8097 #line 2169 "parser.yy"8098 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8099 break;8100 8101 8048 case 569: 8102 8049 8103 8050 /* Line 1806 of yacc.c */ 8104 #line 2171 "parser.yy" 8051 #line 2173 "parser.yy" 8052 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8053 break; 8054 8055 case 570: 8056 8057 /* Line 1806 of yacc.c */ 8058 #line 2175 "parser.yy" 8059 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8060 break; 8061 8062 case 571: 8063 8064 /* Line 1806 of yacc.c */ 8065 #line 2177 "parser.yy" 8066 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8067 break; 8068 8069 case 572: 8070 8071 /* Line 1806 of yacc.c */ 8072 #line 2179 "parser.yy" 8105 8073 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8106 8074 break; 8107 8075 8108 case 570:8109 8110 /* Line 1806 of yacc.c */8111 #line 2176 "parser.yy"8112 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8113 break;8114 8115 case 571:8116 8117 /* Line 1806 of yacc.c */8118 #line 2178 "parser.yy"8119 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8120 break;8121 8122 case 572:8123 8124 /* Line 1806 of yacc.c */8125 #line 2180 "parser.yy"8126 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8127 break;8128 8129 8076 case 573: 8130 8077 8131 8078 /* Line 1806 of yacc.c */ 8132 #line 2182 "parser.yy" 8079 #line 2184 "parser.yy" 8080 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8081 break; 8082 8083 case 574: 8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2186 "parser.yy" 8133 8087 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8134 8088 break; 8135 8089 8136 case 574:8137 8138 /* Line 1806 of yacc.c */8139 #line 2187 "parser.yy"8140 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8141 break;8142 8143 8090 case 575: 8144 8091 8145 8092 /* Line 1806 of yacc.c */ 8146 #line 21 89"parser.yy"8147 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8148 break; 8149 8150 case 57 6:8093 #line 2196 "parser.yy" 8094 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8095 break; 8096 8097 case 577: 8151 8098 8152 8099 /* Line 1806 of yacc.c */ … … 8158 8105 8159 8106 /* Line 1806 of yacc.c */ 8160 #line 2202 "parser.yy" 8107 #line 2204 "parser.yy" 8108 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8109 break; 8110 8111 case 579: 8112 8113 /* Line 1806 of yacc.c */ 8114 #line 2206 "parser.yy" 8115 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8116 break; 8117 8118 case 580: 8119 8120 /* Line 1806 of yacc.c */ 8121 #line 2208 "parser.yy" 8122 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8123 break; 8124 8125 case 581: 8126 8127 /* Line 1806 of yacc.c */ 8128 #line 2213 "parser.yy" 8129 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8130 break; 8131 8132 case 582: 8133 8134 /* Line 1806 of yacc.c */ 8135 #line 2215 "parser.yy" 8136 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8137 break; 8138 8139 case 583: 8140 8141 /* Line 1806 of yacc.c */ 8142 #line 2217 "parser.yy" 8143 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8144 break; 8145 8146 case 584: 8147 8148 /* Line 1806 of yacc.c */ 8149 #line 2222 "parser.yy" 8150 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8151 break; 8152 8153 case 585: 8154 8155 /* Line 1806 of yacc.c */ 8156 #line 2224 "parser.yy" 8157 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8158 break; 8159 8160 case 586: 8161 8162 /* Line 1806 of yacc.c */ 8163 #line 2226 "parser.yy" 8164 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8165 break; 8166 8167 case 590: 8168 8169 /* Line 1806 of yacc.c */ 8170 #line 2241 "parser.yy" 8171 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8172 break; 8173 8174 case 591: 8175 8176 /* Line 1806 of yacc.c */ 8177 #line 2243 "parser.yy" 8178 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8179 break; 8180 8181 case 592: 8182 8183 /* Line 1806 of yacc.c */ 8184 #line 2245 "parser.yy" 8185 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8186 break; 8187 8188 case 593: 8189 8190 /* Line 1806 of yacc.c */ 8191 #line 2250 "parser.yy" 8192 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8193 break; 8194 8195 case 594: 8196 8197 /* Line 1806 of yacc.c */ 8198 #line 2252 "parser.yy" 8199 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8200 break; 8201 8202 case 595: 8203 8204 /* Line 1806 of yacc.c */ 8205 #line 2254 "parser.yy" 8206 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8207 break; 8208 8209 case 596: 8210 8211 /* Line 1806 of yacc.c */ 8212 #line 2259 "parser.yy" 8213 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8214 break; 8215 8216 case 597: 8217 8218 /* Line 1806 of yacc.c */ 8219 #line 2261 "parser.yy" 8220 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8221 break; 8222 8223 case 598: 8224 8225 /* Line 1806 of yacc.c */ 8226 #line 2263 "parser.yy" 8227 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8228 break; 8229 8230 case 599: 8231 8232 /* Line 1806 of yacc.c */ 8233 #line 2278 "parser.yy" 8161 8234 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8162 8235 break; 8163 8236 8164 case 579: 8165 8166 /* Line 1806 of yacc.c */ 8167 #line 2207 "parser.yy" 8168 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8169 break; 8170 8171 case 580: 8172 8173 /* Line 1806 of yacc.c */ 8174 #line 2209 "parser.yy" 8175 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8176 break; 8177 8178 case 581: 8179 8180 /* Line 1806 of yacc.c */ 8181 #line 2211 "parser.yy" 8182 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8183 break; 8184 8185 case 582: 8186 8187 /* Line 1806 of yacc.c */ 8188 #line 2216 "parser.yy" 8189 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8190 break; 8191 8192 case 583: 8193 8194 /* Line 1806 of yacc.c */ 8195 #line 2218 "parser.yy" 8196 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8197 break; 8198 8199 case 584: 8200 8201 /* Line 1806 of yacc.c */ 8202 #line 2220 "parser.yy" 8203 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8204 break; 8205 8206 case 585: 8207 8208 /* Line 1806 of yacc.c */ 8209 #line 2225 "parser.yy" 8210 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8211 break; 8212 8213 case 586: 8214 8215 /* Line 1806 of yacc.c */ 8216 #line 2227 "parser.yy" 8217 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8218 break; 8219 8220 case 587: 8221 8222 /* Line 1806 of yacc.c */ 8223 #line 2229 "parser.yy" 8224 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8225 break; 8226 8227 case 591: 8228 8229 /* Line 1806 of yacc.c */ 8230 #line 2244 "parser.yy" 8231 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8232 break; 8233 8234 case 592: 8235 8236 /* Line 1806 of yacc.c */ 8237 #line 2246 "parser.yy" 8238 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8239 break; 8240 8241 case 593: 8242 8243 /* Line 1806 of yacc.c */ 8244 #line 2248 "parser.yy" 8245 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8246 break; 8247 8248 case 594: 8249 8250 /* Line 1806 of yacc.c */ 8251 #line 2253 "parser.yy" 8252 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8253 break; 8254 8255 case 595: 8256 8257 /* Line 1806 of yacc.c */ 8258 #line 2255 "parser.yy" 8259 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8260 break; 8261 8262 case 596: 8263 8264 /* Line 1806 of yacc.c */ 8265 #line 2257 "parser.yy" 8266 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8267 break; 8268 8269 case 597: 8270 8271 /* Line 1806 of yacc.c */ 8272 #line 2262 "parser.yy" 8273 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8274 break; 8275 8276 case 598: 8277 8278 /* Line 1806 of yacc.c */ 8279 #line 2264 "parser.yy" 8280 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8281 break; 8282 8283 case 599: 8284 8285 /* Line 1806 of yacc.c */ 8286 #line 2266 "parser.yy" 8287 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8288 break; 8289 8290 case 600: 8237 case 601: 8291 8238 8292 8239 /* Line 1806 of yacc.c */ … … 8298 8245 8299 8246 /* Line 1806 of yacc.c */ 8300 #line 228 4"parser.yy"8247 #line 2283 "parser.yy" 8301 8248 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8302 8249 break; 8303 8250 8304 case 603: 8305 8306 /* Line 1806 of yacc.c */ 8307 #line 2286 "parser.yy" 8251 case 604: 8252 8253 /* Line 1806 of yacc.c */ 8254 #line 2289 "parser.yy" 8255 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8256 break; 8257 8258 case 605: 8259 8260 /* Line 1806 of yacc.c */ 8261 #line 2294 "parser.yy" 8262 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8263 break; 8264 8265 case 606: 8266 8267 /* Line 1806 of yacc.c */ 8268 #line 2296 "parser.yy" 8269 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8270 break; 8271 8272 case 607: 8273 8274 /* Line 1806 of yacc.c */ 8275 #line 2298 "parser.yy" 8276 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8277 break; 8278 8279 case 608: 8280 8281 /* Line 1806 of yacc.c */ 8282 #line 2303 "parser.yy" 8283 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8284 break; 8285 8286 case 609: 8287 8288 /* Line 1806 of yacc.c */ 8289 #line 2305 "parser.yy" 8290 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8291 break; 8292 8293 case 610: 8294 8295 /* Line 1806 of yacc.c */ 8296 #line 2307 "parser.yy" 8297 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8298 break; 8299 8300 case 611: 8301 8302 /* Line 1806 of yacc.c */ 8303 #line 2309 "parser.yy" 8304 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8305 break; 8306 8307 case 612: 8308 8309 /* Line 1806 of yacc.c */ 8310 #line 2314 "parser.yy" 8311 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8312 break; 8313 8314 case 613: 8315 8316 /* Line 1806 of yacc.c */ 8317 #line 2316 "parser.yy" 8318 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8319 break; 8320 8321 case 614: 8322 8323 /* Line 1806 of yacc.c */ 8324 #line 2318 "parser.yy" 8325 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8326 break; 8327 8328 case 615: 8329 8330 /* Line 1806 of yacc.c */ 8331 #line 2328 "parser.yy" 8308 8332 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8309 8333 break; 8310 8334 8311 case 605: 8312 8313 /* Line 1806 of yacc.c */ 8314 #line 2292 "parser.yy" 8315 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8316 break; 8317 8318 case 606: 8319 8320 /* Line 1806 of yacc.c */ 8321 #line 2297 "parser.yy" 8322 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8323 break; 8324 8325 case 607: 8326 8327 /* Line 1806 of yacc.c */ 8328 #line 2299 "parser.yy" 8329 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8330 break; 8331 8332 case 608: 8333 8334 /* Line 1806 of yacc.c */ 8335 #line 2301 "parser.yy" 8336 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8337 break; 8338 8339 case 609: 8340 8341 /* Line 1806 of yacc.c */ 8342 #line 2306 "parser.yy" 8343 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8344 break; 8345 8346 case 610: 8347 8348 /* Line 1806 of yacc.c */ 8349 #line 2308 "parser.yy" 8350 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8351 break; 8352 8353 case 611: 8354 8355 /* Line 1806 of yacc.c */ 8356 #line 2310 "parser.yy" 8357 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8358 break; 8359 8360 case 612: 8361 8362 /* Line 1806 of yacc.c */ 8363 #line 2312 "parser.yy" 8364 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8365 break; 8366 8367 case 613: 8368 8369 /* Line 1806 of yacc.c */ 8370 #line 2317 "parser.yy" 8371 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8372 break; 8373 8374 case 614: 8375 8376 /* Line 1806 of yacc.c */ 8377 #line 2319 "parser.yy" 8378 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8379 break; 8380 8381 case 615: 8382 8383 /* Line 1806 of yacc.c */ 8384 #line 2321 "parser.yy" 8385 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8386 break; 8387 8388 case 616: 8335 case 617: 8389 8336 8390 8337 /* Line 1806 of yacc.c */ … … 8396 8343 8397 8344 /* Line 1806 of yacc.c */ 8398 #line 233 4"parser.yy"8345 #line 2333 "parser.yy" 8399 8346 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8400 8347 break; … … 8403 8350 8404 8351 /* Line 1806 of yacc.c */ 8405 #line 2336 "parser.yy" 8352 #line 2338 "parser.yy" 8353 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8354 break; 8355 8356 case 620: 8357 8358 /* Line 1806 of yacc.c */ 8359 #line 2340 "parser.yy" 8360 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8361 break; 8362 8363 case 621: 8364 8365 /* Line 1806 of yacc.c */ 8366 #line 2342 "parser.yy" 8367 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8368 break; 8369 8370 case 622: 8371 8372 /* Line 1806 of yacc.c */ 8373 #line 2347 "parser.yy" 8374 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8375 break; 8376 8377 case 623: 8378 8379 /* Line 1806 of yacc.c */ 8380 #line 2349 "parser.yy" 8381 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8382 break; 8383 8384 case 624: 8385 8386 /* Line 1806 of yacc.c */ 8387 #line 2351 "parser.yy" 8388 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8389 break; 8390 8391 case 625: 8392 8393 /* Line 1806 of yacc.c */ 8394 #line 2353 "parser.yy" 8395 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8396 break; 8397 8398 case 626: 8399 8400 /* Line 1806 of yacc.c */ 8401 #line 2358 "parser.yy" 8402 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8403 break; 8404 8405 case 627: 8406 8407 /* Line 1806 of yacc.c */ 8408 #line 2360 "parser.yy" 8409 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8410 break; 8411 8412 case 628: 8413 8414 /* Line 1806 of yacc.c */ 8415 #line 2362 "parser.yy" 8416 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8417 break; 8418 8419 case 629: 8420 8421 /* Line 1806 of yacc.c */ 8422 #line 2393 "parser.yy" 8406 8423 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8407 8424 break; 8408 8425 8409 case 620: 8410 8411 /* Line 1806 of yacc.c */ 8412 #line 2341 "parser.yy" 8413 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8414 break; 8415 8416 case 621: 8417 8418 /* Line 1806 of yacc.c */ 8419 #line 2343 "parser.yy" 8420 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8421 break; 8422 8423 case 622: 8424 8425 /* Line 1806 of yacc.c */ 8426 #line 2345 "parser.yy" 8427 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8428 break; 8429 8430 case 623: 8431 8432 /* Line 1806 of yacc.c */ 8433 #line 2350 "parser.yy" 8434 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8435 break; 8436 8437 case 624: 8438 8439 /* Line 1806 of yacc.c */ 8440 #line 2352 "parser.yy" 8441 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8442 break; 8443 8444 case 625: 8445 8446 /* Line 1806 of yacc.c */ 8447 #line 2354 "parser.yy" 8448 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8449 break; 8450 8451 case 626: 8452 8453 /* Line 1806 of yacc.c */ 8454 #line 2356 "parser.yy" 8455 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8456 break; 8457 8458 case 627: 8459 8460 /* Line 1806 of yacc.c */ 8461 #line 2361 "parser.yy" 8462 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8463 break; 8464 8465 case 628: 8466 8467 /* Line 1806 of yacc.c */ 8468 #line 2363 "parser.yy" 8469 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8470 break; 8471 8472 case 629: 8473 8474 /* Line 1806 of yacc.c */ 8475 #line 2365 "parser.yy" 8476 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8477 break; 8478 8479 case 630: 8426 case 631: 8480 8427 8481 8428 /* Line 1806 of yacc.c */ … … 8487 8434 8488 8435 /* Line 1806 of yacc.c */ 8489 #line 239 9"parser.yy"8436 #line 2398 "parser.yy" 8490 8437 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8491 8438 break; … … 8494 8441 8495 8442 /* Line 1806 of yacc.c */ 8496 #line 2401 "parser.yy" 8497 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8498 break; 8499 8500 case 634: 8501 8502 /* Line 1806 of yacc.c */ 8503 #line 2406 "parser.yy" 8443 #line 2403 "parser.yy" 8504 8444 { 8505 8445 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8508 8448 break; 8509 8449 8510 case 63 5:8511 8512 /* Line 1806 of yacc.c */ 8513 #line 24 11"parser.yy"8450 case 634: 8451 8452 /* Line 1806 of yacc.c */ 8453 #line 2408 "parser.yy" 8514 8454 { 8515 8455 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8518 8458 break; 8519 8459 8460 case 635: 8461 8462 /* Line 1806 of yacc.c */ 8463 #line 2416 "parser.yy" 8464 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8465 break; 8466 8520 8467 case 636: 8521 8468 8522 8469 /* Line 1806 of yacc.c */ 8523 #line 2419 "parser.yy" 8470 #line 2418 "parser.yy" 8471 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8472 break; 8473 8474 case 637: 8475 8476 /* Line 1806 of yacc.c */ 8477 #line 2420 "parser.yy" 8478 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8479 break; 8480 8481 case 638: 8482 8483 /* Line 1806 of yacc.c */ 8484 #line 2425 "parser.yy" 8485 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8486 break; 8487 8488 case 639: 8489 8490 /* Line 1806 of yacc.c */ 8491 #line 2427 "parser.yy" 8492 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8493 break; 8494 8495 case 640: 8496 8497 /* Line 1806 of yacc.c */ 8498 #line 2432 "parser.yy" 8499 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8500 break; 8501 8502 case 641: 8503 8504 /* Line 1806 of yacc.c */ 8505 #line 2434 "parser.yy" 8506 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8507 break; 8508 8509 case 643: 8510 8511 /* Line 1806 of yacc.c */ 8512 #line 2449 "parser.yy" 8513 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8514 break; 8515 8516 case 644: 8517 8518 /* Line 1806 of yacc.c */ 8519 #line 2451 "parser.yy" 8520 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8521 break; 8522 8523 case 645: 8524 8525 /* Line 1806 of yacc.c */ 8526 #line 2456 "parser.yy" 8527 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8528 break; 8529 8530 case 646: 8531 8532 /* Line 1806 of yacc.c */ 8533 #line 2458 "parser.yy" 8534 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8535 break; 8536 8537 case 647: 8538 8539 /* Line 1806 of yacc.c */ 8540 #line 2460 "parser.yy" 8524 8541 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8525 8542 break; 8526 8543 8527 case 6 37:8528 8529 /* Line 1806 of yacc.c */ 8530 #line 24 21"parser.yy"8544 case 648: 8545 8546 /* Line 1806 of yacc.c */ 8547 #line 2462 "parser.yy" 8531 8548 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8532 8549 break; 8533 8550 8534 case 6 38:8535 8536 /* Line 1806 of yacc.c */ 8537 #line 24 23"parser.yy"8551 case 649: 8552 8553 /* Line 1806 of yacc.c */ 8554 #line 2464 "parser.yy" 8538 8555 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8539 8556 break; 8540 8557 8541 case 639: 8542 8543 /* Line 1806 of yacc.c */ 8544 #line 2428 "parser.yy" 8558 case 651: 8559 8560 /* Line 1806 of yacc.c */ 8561 #line 2470 "parser.yy" 8562 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8563 break; 8564 8565 case 652: 8566 8567 /* Line 1806 of yacc.c */ 8568 #line 2472 "parser.yy" 8569 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8570 break; 8571 8572 case 653: 8573 8574 /* Line 1806 of yacc.c */ 8575 #line 2474 "parser.yy" 8576 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8577 break; 8578 8579 case 654: 8580 8581 /* Line 1806 of yacc.c */ 8582 #line 2479 "parser.yy" 8583 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8584 break; 8585 8586 case 655: 8587 8588 /* Line 1806 of yacc.c */ 8589 #line 2481 "parser.yy" 8590 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8591 break; 8592 8593 case 656: 8594 8595 /* Line 1806 of yacc.c */ 8596 #line 2483 "parser.yy" 8597 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8598 break; 8599 8600 case 657: 8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2489 "parser.yy" 8604 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8605 break; 8606 8607 case 658: 8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2491 "parser.yy" 8611 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8612 break; 8613 8614 case 660: 8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2497 "parser.yy" 8618 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8619 break; 8620 8621 case 661: 8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2499 "parser.yy" 8625 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8626 break; 8627 8628 case 662: 8629 8630 /* Line 1806 of yacc.c */ 8631 #line 2501 "parser.yy" 8632 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8633 break; 8634 8635 case 663: 8636 8637 /* Line 1806 of yacc.c */ 8638 #line 2503 "parser.yy" 8639 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8640 break; 8641 8642 case 665: 8643 8644 /* Line 1806 of yacc.c */ 8645 #line 2518 "parser.yy" 8646 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8647 break; 8648 8649 case 666: 8650 8651 /* Line 1806 of yacc.c */ 8652 #line 2520 "parser.yy" 8653 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8654 break; 8655 8656 case 667: 8657 8658 /* Line 1806 of yacc.c */ 8659 #line 2525 "parser.yy" 8660 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8661 break; 8662 8663 case 668: 8664 8665 /* Line 1806 of yacc.c */ 8666 #line 2527 "parser.yy" 8667 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8668 break; 8669 8670 case 669: 8671 8672 /* Line 1806 of yacc.c */ 8673 #line 2529 "parser.yy" 8674 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8675 break; 8676 8677 case 670: 8678 8679 /* Line 1806 of yacc.c */ 8680 #line 2531 "parser.yy" 8681 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8682 break; 8683 8684 case 671: 8685 8686 /* Line 1806 of yacc.c */ 8687 #line 2533 "parser.yy" 8688 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8689 break; 8690 8691 case 673: 8692 8693 /* Line 1806 of yacc.c */ 8694 #line 2539 "parser.yy" 8695 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8696 break; 8697 8698 case 674: 8699 8700 /* Line 1806 of yacc.c */ 8701 #line 2541 "parser.yy" 8702 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8703 break; 8704 8705 case 675: 8706 8707 /* Line 1806 of yacc.c */ 8708 #line 2543 "parser.yy" 8709 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8710 break; 8711 8712 case 676: 8713 8714 /* Line 1806 of yacc.c */ 8715 #line 2548 "parser.yy" 8716 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8717 break; 8718 8719 case 677: 8720 8721 /* Line 1806 of yacc.c */ 8722 #line 2550 "parser.yy" 8723 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8724 break; 8725 8726 case 678: 8727 8728 /* Line 1806 of yacc.c */ 8729 #line 2552 "parser.yy" 8730 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8731 break; 8732 8733 case 680: 8734 8735 /* Line 1806 of yacc.c */ 8736 #line 2559 "parser.yy" 8545 8737 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8546 8738 break; 8547 8739 8548 case 640: 8549 8550 /* Line 1806 of yacc.c */ 8551 #line 2430 "parser.yy" 8740 case 682: 8741 8742 /* Line 1806 of yacc.c */ 8743 #line 2570 "parser.yy" 8744 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8745 break; 8746 8747 case 683: 8748 8749 /* Line 1806 of yacc.c */ 8750 #line 2573 "parser.yy" 8751 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8752 break; 8753 8754 case 684: 8755 8756 /* Line 1806 of yacc.c */ 8757 #line 2575 "parser.yy" 8758 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8759 break; 8760 8761 case 685: 8762 8763 /* Line 1806 of yacc.c */ 8764 #line 2578 "parser.yy" 8765 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8766 break; 8767 8768 case 686: 8769 8770 /* Line 1806 of yacc.c */ 8771 #line 2580 "parser.yy" 8772 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8773 break; 8774 8775 case 687: 8776 8777 /* Line 1806 of yacc.c */ 8778 #line 2582 "parser.yy" 8779 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8780 break; 8781 8782 case 689: 8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2596 "parser.yy" 8786 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8787 break; 8788 8789 case 690: 8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2598 "parser.yy" 8793 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8794 break; 8795 8796 case 691: 8797 8798 /* Line 1806 of yacc.c */ 8799 #line 2603 "parser.yy" 8800 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8801 break; 8802 8803 case 692: 8804 8805 /* Line 1806 of yacc.c */ 8806 #line 2605 "parser.yy" 8807 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8808 break; 8809 8810 case 693: 8811 8812 /* Line 1806 of yacc.c */ 8813 #line 2607 "parser.yy" 8814 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8815 break; 8816 8817 case 694: 8818 8819 /* Line 1806 of yacc.c */ 8820 #line 2609 "parser.yy" 8821 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8822 break; 8823 8824 case 695: 8825 8826 /* Line 1806 of yacc.c */ 8827 #line 2611 "parser.yy" 8828 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8829 break; 8830 8831 case 697: 8832 8833 /* Line 1806 of yacc.c */ 8834 #line 2617 "parser.yy" 8552 8835 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8553 8836 break; 8554 8837 8555 case 641: 8556 8557 /* Line 1806 of yacc.c */ 8558 #line 2435 "parser.yy" 8559 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8560 break; 8561 8562 case 642: 8563 8564 /* Line 1806 of yacc.c */ 8565 #line 2437 "parser.yy" 8838 case 698: 8839 8840 /* Line 1806 of yacc.c */ 8841 #line 2619 "parser.yy" 8842 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8843 break; 8844 8845 case 699: 8846 8847 /* Line 1806 of yacc.c */ 8848 #line 2621 "parser.yy" 8849 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8850 break; 8851 8852 case 700: 8853 8854 /* Line 1806 of yacc.c */ 8855 #line 2626 "parser.yy" 8566 8856 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8567 8857 break; 8568 8858 8569 case 644: 8570 8571 /* Line 1806 of yacc.c */ 8572 #line 2452 "parser.yy" 8573 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8574 break; 8575 8576 case 645: 8577 8578 /* Line 1806 of yacc.c */ 8579 #line 2454 "parser.yy" 8580 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8581 break; 8582 8583 case 646: 8584 8585 /* Line 1806 of yacc.c */ 8586 #line 2459 "parser.yy" 8587 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8588 break; 8589 8590 case 647: 8591 8592 /* Line 1806 of yacc.c */ 8593 #line 2461 "parser.yy" 8594 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8595 break; 8596 8597 case 648: 8598 8599 /* Line 1806 of yacc.c */ 8600 #line 2463 "parser.yy" 8601 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8602 break; 8603 8604 case 649: 8605 8606 /* Line 1806 of yacc.c */ 8607 #line 2465 "parser.yy" 8608 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8609 break; 8610 8611 case 650: 8612 8613 /* Line 1806 of yacc.c */ 8614 #line 2467 "parser.yy" 8859 case 701: 8860 8861 /* Line 1806 of yacc.c */ 8862 #line 2628 "parser.yy" 8615 8863 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8616 8864 break; 8617 8865 8618 case 652: 8619 8620 /* Line 1806 of yacc.c */ 8621 #line 2473 "parser.yy" 8622 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8623 break; 8624 8625 case 653: 8626 8627 /* Line 1806 of yacc.c */ 8628 #line 2475 "parser.yy" 8629 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8630 break; 8631 8632 case 654: 8633 8634 /* Line 1806 of yacc.c */ 8635 #line 2477 "parser.yy" 8636 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8637 break; 8638 8639 case 655: 8640 8641 /* Line 1806 of yacc.c */ 8642 #line 2482 "parser.yy" 8643 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8644 break; 8645 8646 case 656: 8647 8648 /* Line 1806 of yacc.c */ 8649 #line 2484 "parser.yy" 8650 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8651 break; 8652 8653 case 657: 8654 8655 /* Line 1806 of yacc.c */ 8656 #line 2486 "parser.yy" 8657 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8658 break; 8659 8660 case 658: 8661 8662 /* Line 1806 of yacc.c */ 8663 #line 2492 "parser.yy" 8664 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8665 break; 8666 8667 case 659: 8668 8669 /* Line 1806 of yacc.c */ 8670 #line 2494 "parser.yy" 8671 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8672 break; 8673 8674 case 661: 8675 8676 /* Line 1806 of yacc.c */ 8677 #line 2500 "parser.yy" 8678 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8679 break; 8680 8681 case 662: 8682 8683 /* Line 1806 of yacc.c */ 8684 #line 2502 "parser.yy" 8685 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8686 break; 8687 8688 case 663: 8689 8690 /* Line 1806 of yacc.c */ 8691 #line 2504 "parser.yy" 8692 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8693 break; 8694 8695 case 664: 8696 8697 /* Line 1806 of yacc.c */ 8698 #line 2506 "parser.yy" 8699 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8700 break; 8701 8702 case 666: 8703 8704 /* Line 1806 of yacc.c */ 8705 #line 2521 "parser.yy" 8706 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8707 break; 8708 8709 case 667: 8710 8711 /* Line 1806 of yacc.c */ 8712 #line 2523 "parser.yy" 8713 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8714 break; 8715 8716 case 668: 8717 8718 /* Line 1806 of yacc.c */ 8719 #line 2528 "parser.yy" 8720 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8721 break; 8722 8723 case 669: 8724 8725 /* Line 1806 of yacc.c */ 8726 #line 2530 "parser.yy" 8727 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8728 break; 8729 8730 case 670: 8731 8732 /* Line 1806 of yacc.c */ 8733 #line 2532 "parser.yy" 8734 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8735 break; 8736 8737 case 671: 8738 8739 /* Line 1806 of yacc.c */ 8740 #line 2534 "parser.yy" 8741 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8742 break; 8743 8744 case 672: 8745 8746 /* Line 1806 of yacc.c */ 8747 #line 2536 "parser.yy" 8748 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8749 break; 8750 8751 case 674: 8752 8753 /* Line 1806 of yacc.c */ 8754 #line 2542 "parser.yy" 8755 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8756 break; 8757 8758 case 675: 8759 8760 /* Line 1806 of yacc.c */ 8761 #line 2544 "parser.yy" 8762 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8763 break; 8764 8765 case 676: 8766 8767 /* Line 1806 of yacc.c */ 8768 #line 2546 "parser.yy" 8769 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8770 break; 8771 8772 case 677: 8773 8774 /* Line 1806 of yacc.c */ 8775 #line 2551 "parser.yy" 8776 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8777 break; 8778 8779 case 678: 8780 8781 /* Line 1806 of yacc.c */ 8782 #line 2553 "parser.yy" 8783 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8784 break; 8785 8786 case 679: 8787 8788 /* Line 1806 of yacc.c */ 8789 #line 2555 "parser.yy" 8790 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8791 break; 8792 8793 case 681: 8794 8795 /* Line 1806 of yacc.c */ 8796 #line 2562 "parser.yy" 8797 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8798 break; 8799 8800 case 683: 8801 8802 /* Line 1806 of yacc.c */ 8803 #line 2573 "parser.yy" 8804 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8805 break; 8806 8807 case 684: 8808 8809 /* Line 1806 of yacc.c */ 8810 #line 2576 "parser.yy" 8866 case 704: 8867 8868 /* Line 1806 of yacc.c */ 8869 #line 2638 "parser.yy" 8870 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8871 break; 8872 8873 case 707: 8874 8875 /* Line 1806 of yacc.c */ 8876 #line 2648 "parser.yy" 8877 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8878 break; 8879 8880 case 708: 8881 8882 /* Line 1806 of yacc.c */ 8883 #line 2650 "parser.yy" 8884 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8885 break; 8886 8887 case 709: 8888 8889 /* Line 1806 of yacc.c */ 8890 #line 2652 "parser.yy" 8891 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8892 break; 8893 8894 case 710: 8895 8896 /* Line 1806 of yacc.c */ 8897 #line 2654 "parser.yy" 8898 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8899 break; 8900 8901 case 711: 8902 8903 /* Line 1806 of yacc.c */ 8904 #line 2656 "parser.yy" 8905 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8906 break; 8907 8908 case 712: 8909 8910 /* Line 1806 of yacc.c */ 8911 #line 2658 "parser.yy" 8912 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8913 break; 8914 8915 case 713: 8916 8917 /* Line 1806 of yacc.c */ 8918 #line 2665 "parser.yy" 8919 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8920 break; 8921 8922 case 714: 8923 8924 /* Line 1806 of yacc.c */ 8925 #line 2667 "parser.yy" 8926 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8927 break; 8928 8929 case 715: 8930 8931 /* Line 1806 of yacc.c */ 8932 #line 2669 "parser.yy" 8933 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8934 break; 8935 8936 case 716: 8937 8938 /* Line 1806 of yacc.c */ 8939 #line 2671 "parser.yy" 8940 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8941 break; 8942 8943 case 717: 8944 8945 /* Line 1806 of yacc.c */ 8946 #line 2673 "parser.yy" 8947 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8948 break; 8949 8950 case 718: 8951 8952 /* Line 1806 of yacc.c */ 8953 #line 2675 "parser.yy" 8954 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8955 break; 8956 8957 case 719: 8958 8959 /* Line 1806 of yacc.c */ 8960 #line 2677 "parser.yy" 8961 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8962 break; 8963 8964 case 720: 8965 8966 /* Line 1806 of yacc.c */ 8967 #line 2679 "parser.yy" 8968 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8969 break; 8970 8971 case 721: 8972 8973 /* Line 1806 of yacc.c */ 8974 #line 2681 "parser.yy" 8975 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8976 break; 8977 8978 case 722: 8979 8980 /* Line 1806 of yacc.c */ 8981 #line 2683 "parser.yy" 8982 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8983 break; 8984 8985 case 723: 8986 8987 /* Line 1806 of yacc.c */ 8988 #line 2688 "parser.yy" 8811 8989 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8812 8990 break; 8813 8991 8814 case 685: 8815 8816 /* Line 1806 of yacc.c */ 8817 #line 2578 "parser.yy" 8818 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8819 break; 8820 8821 case 686: 8822 8823 /* Line 1806 of yacc.c */ 8824 #line 2581 "parser.yy" 8992 case 724: 8993 8994 /* Line 1806 of yacc.c */ 8995 #line 2690 "parser.yy" 8825 8996 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8826 8997 break; 8827 8998 8828 case 687: 8829 8830 /* Line 1806 of yacc.c */ 8831 #line 2583 "parser.yy" 8832 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8833 break; 8834 8835 case 688: 8836 8837 /* Line 1806 of yacc.c */ 8838 #line 2585 "parser.yy" 8839 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8840 break; 8841 8842 case 690: 8843 8844 /* Line 1806 of yacc.c */ 8845 #line 2599 "parser.yy" 8846 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8847 break; 8848 8849 case 691: 8850 8851 /* Line 1806 of yacc.c */ 8852 #line 2601 "parser.yy" 8853 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8854 break; 8855 8856 case 692: 8857 8858 /* Line 1806 of yacc.c */ 8859 #line 2606 "parser.yy" 8860 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8861 break; 8862 8863 case 693: 8864 8865 /* Line 1806 of yacc.c */ 8866 #line 2608 "parser.yy" 8867 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8868 break; 8869 8870 case 694: 8871 8872 /* Line 1806 of yacc.c */ 8873 #line 2610 "parser.yy" 8874 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8875 break; 8876 8877 case 695: 8878 8879 /* Line 1806 of yacc.c */ 8880 #line 2612 "parser.yy" 8881 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8882 break; 8883 8884 case 696: 8885 8886 /* Line 1806 of yacc.c */ 8887 #line 2614 "parser.yy" 8888 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8889 break; 8890 8891 case 698: 8892 8893 /* Line 1806 of yacc.c */ 8894 #line 2620 "parser.yy" 8895 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8896 break; 8897 8898 case 699: 8899 8900 /* Line 1806 of yacc.c */ 8901 #line 2622 "parser.yy" 8902 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8903 break; 8904 8905 case 700: 8906 8907 /* Line 1806 of yacc.c */ 8908 #line 2624 "parser.yy" 8909 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8910 break; 8911 8912 case 701: 8913 8914 /* Line 1806 of yacc.c */ 8915 #line 2629 "parser.yy" 8916 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8917 break; 8918 8919 case 702: 8920 8921 /* Line 1806 of yacc.c */ 8922 #line 2631 "parser.yy" 8923 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8924 break; 8925 8926 case 705: 8927 8928 /* Line 1806 of yacc.c */ 8929 #line 2641 "parser.yy" 8999 case 725: 9000 9001 /* Line 1806 of yacc.c */ 9002 #line 2695 "parser.yy" 9003 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9004 break; 9005 9006 case 726: 9007 9008 /* Line 1806 of yacc.c */ 9009 #line 2697 "parser.yy" 9010 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9011 break; 9012 9013 case 728: 9014 9015 /* Line 1806 of yacc.c */ 9016 #line 2724 "parser.yy" 8930 9017 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8931 9018 break; 8932 9019 8933 case 7 08:8934 8935 /* Line 1806 of yacc.c */ 8936 #line 2 651"parser.yy"9020 case 732: 9021 9022 /* Line 1806 of yacc.c */ 9023 #line 2735 "parser.yy" 8937 9024 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8938 9025 break; 8939 9026 8940 case 7 09:8941 8942 /* Line 1806 of yacc.c */ 8943 #line 2 653"parser.yy"9027 case 733: 9028 9029 /* Line 1806 of yacc.c */ 9030 #line 2737 "parser.yy" 8944 9031 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8945 9032 break; 8946 9033 8947 case 7 10:8948 8949 /* Line 1806 of yacc.c */ 8950 #line 2 655"parser.yy"9034 case 734: 9035 9036 /* Line 1806 of yacc.c */ 9037 #line 2739 "parser.yy" 8951 9038 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8952 9039 break; 8953 9040 8954 case 7 11:8955 8956 /* Line 1806 of yacc.c */ 8957 #line 2 657"parser.yy"9041 case 735: 9042 9043 /* Line 1806 of yacc.c */ 9044 #line 2741 "parser.yy" 8958 9045 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8959 9046 break; 8960 9047 8961 case 7 12:8962 8963 /* Line 1806 of yacc.c */ 8964 #line 2 659"parser.yy"9048 case 736: 9049 9050 /* Line 1806 of yacc.c */ 9051 #line 2743 "parser.yy" 8965 9052 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8966 9053 break; 8967 9054 8968 case 7 13:8969 8970 /* Line 1806 of yacc.c */ 8971 #line 2 661"parser.yy"9055 case 737: 9056 9057 /* Line 1806 of yacc.c */ 9058 #line 2745 "parser.yy" 8972 9059 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8973 9060 break; 8974 9061 8975 case 7 14:8976 8977 /* Line 1806 of yacc.c */ 8978 #line 2 668"parser.yy"9062 case 738: 9063 9064 /* Line 1806 of yacc.c */ 9065 #line 2752 "parser.yy" 8979 9066 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8980 9067 break; 8981 9068 8982 case 715: 8983 8984 /* Line 1806 of yacc.c */ 8985 #line 2670 "parser.yy" 9069 case 739: 9070 9071 /* Line 1806 of yacc.c */ 9072 #line 2754 "parser.yy" 9073 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9074 break; 9075 9076 case 740: 9077 9078 /* Line 1806 of yacc.c */ 9079 #line 2756 "parser.yy" 8986 9080 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8987 9081 break; 8988 9082 8989 case 716: 8990 8991 /* Line 1806 of yacc.c */ 8992 #line 2672 "parser.yy" 9083 case 741: 9084 9085 /* Line 1806 of yacc.c */ 9086 #line 2758 "parser.yy" 9087 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9088 break; 9089 9090 case 742: 9091 9092 /* Line 1806 of yacc.c */ 9093 #line 2760 "parser.yy" 8993 9094 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8994 9095 break; 8995 9096 8996 case 717: 8997 8998 /* Line 1806 of yacc.c */ 8999 #line 2674 "parser.yy" 9000 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 9001 break; 9002 9003 case 718: 9004 9005 /* Line 1806 of yacc.c */ 9006 #line 2676 "parser.yy" 9097 case 743: 9098 9099 /* Line 1806 of yacc.c */ 9100 #line 2762 "parser.yy" 9007 9101 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9008 9102 break; 9009 9103 9010 case 719:9011 9012 /* Line 1806 of yacc.c */9013 #line 2678 "parser.yy"9014 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9015 break;9016 9017 case 720:9018 9019 /* Line 1806 of yacc.c */9020 #line 2680 "parser.yy"9021 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9022 break;9023 9024 case 721:9025 9026 /* Line 1806 of yacc.c */9027 #line 2682 "parser.yy"9028 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9029 break;9030 9031 case 722:9032 9033 /* Line 1806 of yacc.c */9034 #line 2684 "parser.yy"9035 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }9036 break;9037 9038 case 723:9039 9040 /* Line 1806 of yacc.c */9041 #line 2686 "parser.yy"9042 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9043 break;9044 9045 case 724:9046 9047 /* Line 1806 of yacc.c */9048 #line 2691 "parser.yy"9049 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }9050 break;9051 9052 case 725:9053 9054 /* Line 1806 of yacc.c */9055 #line 2693 "parser.yy"9056 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }9057 break;9058 9059 case 726:9060 9061 /* Line 1806 of yacc.c */9062 #line 2698 "parser.yy"9063 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }9064 break;9065 9066 case 727:9067 9068 /* Line 1806 of yacc.c */9069 #line 2700 "parser.yy"9070 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }9071 break;9072 9073 case 729:9074 9075 /* Line 1806 of yacc.c */9076 #line 2727 "parser.yy"9077 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }9078 break;9079 9080 case 733:9081 9082 /* Line 1806 of yacc.c */9083 #line 2738 "parser.yy"9084 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9085 break;9086 9087 case 734:9088 9089 /* Line 1806 of yacc.c */9090 #line 2740 "parser.yy"9091 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9092 break;9093 9094 case 735:9095 9096 /* Line 1806 of yacc.c */9097 #line 2742 "parser.yy"9098 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9099 break;9100 9101 case 736:9102 9103 /* Line 1806 of yacc.c */9104 #line 2744 "parser.yy"9105 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9106 break;9107 9108 case 737:9109 9110 /* Line 1806 of yacc.c */9111 #line 2746 "parser.yy"9112 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9113 break;9114 9115 case 738:9116 9117 /* Line 1806 of yacc.c */9118 #line 2748 "parser.yy"9119 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9120 break;9121 9122 case 739:9123 9124 /* Line 1806 of yacc.c */9125 #line 2755 "parser.yy"9126 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9127 break;9128 9129 case 740:9130 9131 /* Line 1806 of yacc.c */9132 #line 2757 "parser.yy"9133 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9134 break;9135 9136 case 741:9137 9138 /* Line 1806 of yacc.c */9139 #line 2759 "parser.yy"9140 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9141 break;9142 9143 case 742:9144 9145 /* Line 1806 of yacc.c */9146 #line 2761 "parser.yy"9147 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9148 break;9149 9150 case 743:9151 9152 /* Line 1806 of yacc.c */9153 #line 2763 "parser.yy"9154 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9155 break;9156 9157 9104 case 744: 9158 9105 9159 9106 /* Line 1806 of yacc.c */ 9160 #line 276 5"parser.yy"9161 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9107 #line 2767 "parser.yy" 9108 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9162 9109 break; 9163 9110 … … 9165 9112 9166 9113 /* Line 1806 of yacc.c */ 9167 #line 277 0"parser.yy"9168 { (yyval.decl) = DeclarationNode::new Tuple( (yyvsp[(3) - (5)].decl)); }9114 #line 2772 "parser.yy" 9115 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9169 9116 break; 9170 9117 … … 9172 9119 9173 9120 /* Line 1806 of yacc.c */ 9174 #line 277 5"parser.yy"9175 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }9121 #line 2774 "parser.yy" 9122 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9176 9123 break; 9177 9124 … … 9179 9126 9180 9127 /* Line 1806 of yacc.c */ 9181 #line 277 7"parser.yy"9128 #line 2776 "parser.yy" 9182 9129 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9183 9130 break; 9184 9131 9185 case 7 48:9186 9187 /* Line 1806 of yacc.c */ 9188 #line 2 779"parser.yy"9189 { (yyval. decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }9132 case 750: 9133 9134 /* Line 1806 of yacc.c */ 9135 #line 2800 "parser.yy" 9136 { (yyval.en) = 0; } 9190 9137 break; 9191 9138 … … 9193 9140 9194 9141 /* Line 1806 of yacc.c */ 9195 #line 2803 "parser.yy" 9196 { (yyval.en) = 0; } 9197 break; 9198 9199 case 752: 9200 9201 /* Line 1806 of yacc.c */ 9202 #line 2805 "parser.yy" 9142 #line 2802 "parser.yy" 9203 9143 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9204 9144 break; … … 9207 9147 9208 9148 /* Line 1806 of yacc.c */ 9209 #line 9 210 "Parser/parser.cc"9149 #line 9150 "Parser/parser.cc" 9210 9150 default: break; 9211 9151 } … … 9438 9378 9439 9379 /* Line 2067 of yacc.c */ 9440 #line 280 8"parser.yy"9380 #line 2805 "parser.yy" 9441 9381 9442 9382 // ----end of grammar---- -
src/Parser/parser.h
rbdad1679 r540ddb7d 59 59 SIGNED = 277, 60 60 UNSIGNED = 278, 61 VALIST = 279, 62 BOOL = 280, 63 COMPLEX = 281, 64 IMAGINARY = 282, 65 TYPEOF = 283, 66 LABEL = 284, 67 ENUM = 285, 68 STRUCT = 286, 69 UNION = 287, 70 TYPE = 288, 71 FTYPE = 289, 72 DTYPE = 290, 73 CONTEXT = 291, 74 SIZEOF = 292, 75 OFFSETOF = 293, 76 ATTRIBUTE = 294, 77 EXTENSION = 295, 78 IF = 296, 79 ELSE = 297, 80 SWITCH = 298, 81 CASE = 299, 82 DEFAULT = 300, 83 DO = 301, 84 WHILE = 302, 85 FOR = 303, 86 BREAK = 304, 87 CONTINUE = 305, 88 GOTO = 306, 89 RETURN = 307, 90 CHOOSE = 308, 91 DISABLE = 309, 92 ENABLE = 310, 93 FALLTHRU = 311, 94 TRY = 312, 95 CATCH = 313, 96 CATCHRESUME = 314, 97 FINALLY = 315, 98 THROW = 316, 99 THROWRESUME = 317, 100 AT = 318, 101 ASM = 319, 102 ALIGNAS = 320, 103 ALIGNOF = 321, 104 ATOMIC = 322, 105 GENERIC = 323, 106 NORETURN = 324, 107 STATICASSERT = 325, 108 THREADLOCAL = 326, 109 IDENTIFIER = 327, 110 QUOTED_IDENTIFIER = 328, 111 TYPEDEFname = 329, 112 TYPEGENname = 330, 113 ATTR_IDENTIFIER = 331, 114 ATTR_TYPEDEFname = 332, 115 ATTR_TYPEGENname = 333, 116 INTEGERconstant = 334, 117 FLOATINGconstant = 335, 118 CHARACTERconstant = 336, 119 STRINGliteral = 337, 120 ZERO = 338, 121 ONE = 339, 122 ARROW = 340, 123 ICR = 341, 124 DECR = 342, 125 LS = 343, 126 RS = 344, 127 LE = 345, 128 GE = 346, 129 EQ = 347, 130 NE = 348, 131 ANDAND = 349, 132 OROR = 350, 133 ELLIPSIS = 351, 134 MULTassign = 352, 135 DIVassign = 353, 136 MODassign = 354, 137 PLUSassign = 355, 138 MINUSassign = 356, 139 LSassign = 357, 140 RSassign = 358, 141 ANDassign = 359, 142 ERassign = 360, 143 ORassign = 361, 144 ATassign = 362, 145 THEN = 363 61 BOOL = 279, 62 COMPLEX = 280, 63 IMAGINARY = 281, 64 TYPEOF = 282, 65 LABEL = 283, 66 ENUM = 284, 67 STRUCT = 285, 68 UNION = 286, 69 TYPE = 287, 70 FTYPE = 288, 71 DTYPE = 289, 72 CONTEXT = 290, 73 SIZEOF = 291, 74 OFFSETOF = 292, 75 ATTRIBUTE = 293, 76 EXTENSION = 294, 77 IF = 295, 78 ELSE = 296, 79 SWITCH = 297, 80 CASE = 298, 81 DEFAULT = 299, 82 DO = 300, 83 WHILE = 301, 84 FOR = 302, 85 BREAK = 303, 86 CONTINUE = 304, 87 GOTO = 305, 88 RETURN = 306, 89 CHOOSE = 307, 90 DISABLE = 308, 91 ENABLE = 309, 92 FALLTHRU = 310, 93 TRY = 311, 94 CATCH = 312, 95 CATCHRESUME = 313, 96 FINALLY = 314, 97 THROW = 315, 98 THROWRESUME = 316, 99 AT = 317, 100 ASM = 318, 101 ALIGNAS = 319, 102 ALIGNOF = 320, 103 ATOMIC = 321, 104 GENERIC = 322, 105 NORETURN = 323, 106 STATICASSERT = 324, 107 THREADLOCAL = 325, 108 IDENTIFIER = 326, 109 QUOTED_IDENTIFIER = 327, 110 TYPEDEFname = 328, 111 TYPEGENname = 329, 112 ATTR_IDENTIFIER = 330, 113 ATTR_TYPEDEFname = 331, 114 ATTR_TYPEGENname = 332, 115 INTEGERconstant = 333, 116 FLOATINGconstant = 334, 117 CHARACTERconstant = 335, 118 STRINGliteral = 336, 119 ZERO = 337, 120 ONE = 338, 121 ARROW = 339, 122 ICR = 340, 123 DECR = 341, 124 LS = 342, 125 RS = 343, 126 LE = 344, 127 GE = 345, 128 EQ = 346, 129 NE = 347, 130 ANDAND = 348, 131 OROR = 349, 132 ELLIPSIS = 350, 133 MULTassign = 351, 134 DIVassign = 352, 135 MODassign = 353, 136 PLUSassign = 354, 137 MINUSassign = 355, 138 LSassign = 356, 139 RSassign = 357, 140 ANDassign = 358, 141 ERassign = 359, 142 ORassign = 360, 143 ATassign = 361, 144 THEN = 362 146 145 }; 147 146 #endif … … 168 167 #define SIGNED 277 169 168 #define UNSIGNED 278 170 #define VALIST 279 171 #define BOOL 280 172 #define COMPLEX 281 173 #define IMAGINARY 282 174 #define TYPEOF 283 175 #define LABEL 284 176 #define ENUM 285 177 #define STRUCT 286 178 #define UNION 287 179 #define TYPE 288 180 #define FTYPE 289 181 #define DTYPE 290 182 #define CONTEXT 291 183 #define SIZEOF 292 184 #define OFFSETOF 293 185 #define ATTRIBUTE 294 186 #define EXTENSION 295 187 #define IF 296 188 #define ELSE 297 189 #define SWITCH 298 190 #define CASE 299 191 #define DEFAULT 300 192 #define DO 301 193 #define WHILE 302 194 #define FOR 303 195 #define BREAK 304 196 #define CONTINUE 305 197 #define GOTO 306 198 #define RETURN 307 199 #define CHOOSE 308 200 #define DISABLE 309 201 #define ENABLE 310 202 #define FALLTHRU 311 203 #define TRY 312 204 #define CATCH 313 205 #define CATCHRESUME 314 206 #define FINALLY 315 207 #define THROW 316 208 #define THROWRESUME 317 209 #define AT 318 210 #define ASM 319 211 #define ALIGNAS 320 212 #define ALIGNOF 321 213 #define ATOMIC 322 214 #define GENERIC 323 215 #define NORETURN 324 216 #define STATICASSERT 325 217 #define THREADLOCAL 326 218 #define IDENTIFIER 327 219 #define QUOTED_IDENTIFIER 328 220 #define TYPEDEFname 329 221 #define TYPEGENname 330 222 #define ATTR_IDENTIFIER 331 223 #define ATTR_TYPEDEFname 332 224 #define ATTR_TYPEGENname 333 225 #define INTEGERconstant 334 226 #define FLOATINGconstant 335 227 #define CHARACTERconstant 336 228 #define STRINGliteral 337 229 #define ZERO 338 230 #define ONE 339 231 #define ARROW 340 232 #define ICR 341 233 #define DECR 342 234 #define LS 343 235 #define RS 344 236 #define LE 345 237 #define GE 346 238 #define EQ 347 239 #define NE 348 240 #define ANDAND 349 241 #define OROR 350 242 #define ELLIPSIS 351 243 #define MULTassign 352 244 #define DIVassign 353 245 #define MODassign 354 246 #define PLUSassign 355 247 #define MINUSassign 356 248 #define LSassign 357 249 #define RSassign 358 250 #define ANDassign 359 251 #define ERassign 360 252 #define ORassign 361 253 #define ATassign 362 254 #define THEN 363 169 #define BOOL 279 170 #define COMPLEX 280 171 #define IMAGINARY 281 172 #define TYPEOF 282 173 #define LABEL 283 174 #define ENUM 284 175 #define STRUCT 285 176 #define UNION 286 177 #define TYPE 287 178 #define FTYPE 288 179 #define DTYPE 289 180 #define CONTEXT 290 181 #define SIZEOF 291 182 #define OFFSETOF 292 183 #define ATTRIBUTE 293 184 #define EXTENSION 294 185 #define IF 295 186 #define ELSE 296 187 #define SWITCH 297 188 #define CASE 298 189 #define DEFAULT 299 190 #define DO 300 191 #define WHILE 301 192 #define FOR 302 193 #define BREAK 303 194 #define CONTINUE 304 195 #define GOTO 305 196 #define RETURN 306 197 #define CHOOSE 307 198 #define DISABLE 308 199 #define ENABLE 309 200 #define FALLTHRU 310 201 #define TRY 311 202 #define CATCH 312 203 #define CATCHRESUME 313 204 #define FINALLY 314 205 #define THROW 315 206 #define THROWRESUME 316 207 #define AT 317 208 #define ASM 318 209 #define ALIGNAS 319 210 #define ALIGNOF 320 211 #define ATOMIC 321 212 #define GENERIC 322 213 #define NORETURN 323 214 #define STATICASSERT 324 215 #define THREADLOCAL 325 216 #define IDENTIFIER 326 217 #define QUOTED_IDENTIFIER 327 218 #define TYPEDEFname 328 219 #define TYPEGENname 329 220 #define ATTR_IDENTIFIER 330 221 #define ATTR_TYPEDEFname 331 222 #define ATTR_TYPEGENname 332 223 #define INTEGERconstant 333 224 #define FLOATINGconstant 334 225 #define CHARACTERconstant 335 226 #define STRINGliteral 336 227 #define ZERO 337 228 #define ONE 338 229 #define ARROW 339 230 #define ICR 340 231 #define DECR 341 232 #define LS 342 233 #define RS 343 234 #define LE 344 235 #define GE 345 236 #define EQ 346 237 #define NE 347 238 #define ANDAND 348 239 #define OROR 349 240 #define ELLIPSIS 350 241 #define MULTassign 351 242 #define DIVassign 352 243 #define MODassign 353 244 #define PLUSassign 354 245 #define MINUSassign 355 246 #define LSassign 356 247 #define RSassign 357 248 #define ANDassign 358 249 #define ERassign 359 250 #define ORassign 360 251 #define ATassign 361 252 #define THEN 362 255 253 256 254 … … 262 260 263 261 /* Line 2068 of yacc.c */ 264 #line 11 1"parser.yy"262 #line 110 "parser.yy" 265 263 266 264 Token tok; … … 279 277 280 278 /* Line 2068 of yacc.c */ 281 #line 28 2"Parser/parser.h"279 #line 280 "Parser/parser.h" 282 280 } YYSTYPE; 283 281 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
rbdad1679 r540ddb7d 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Feb 28 11:49:18201613 // Update Count : 14 9212 // Last Modified On : Mon Feb 1 18:22:42 2016 13 // Update Count : 1483 14 14 // 15 15 … … 74 74 %token FORALL LVALUE // CFA 75 75 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED 76 %token VALIST // GCC77 76 %token BOOL COMPLEX IMAGINARY // C99 78 77 %token TYPEOF LABEL // GCC … … 449 448 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); } 450 449 | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')' 451 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); }450 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); } 452 451 | ATTR_IDENTIFIER 453 452 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); } … … 1346 1345 | IMAGINARY // C99 1347 1346 { $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 1348 | VALIST // GCC, __builtin_va_list1349 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }1350 1347 ; 1351 1348 -
src/ResolvExpr/ConversionCost.cc
rbdad1679 r540ddb7d 10 10 // Created On : Sun May 17 07:06:19 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Feb 26 14:35:59 201613 // Update Count : 512 // Last Modified On : Sun May 17 07:22:19 2015 13 // Update Count : 4 14 14 // 15 15 … … 249 249 250 250 void ConversionCost::visit(VarArgsType *varArgsType) { 251 if ( dynamic_cast< VarArgsType* >( dest ) ) {251 if ( VarArgsType *destAsVarArgs = dynamic_cast< VarArgsType* >( dest ) ) { 252 252 cost = Cost::zero; 253 253 } -
src/SynTree/Type.h
rbdad1679 r540ddb7d 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 Feb 26 14:34:08 201613 // Update Count : 1 911 // Last Modified By : Rob Schluntz 12 // Last Modified On : Fri Dec 18 14:46:18 2015 13 // Update Count : 18 14 14 // 15 15 … … 402 402 /// Represents the GCC built-in varargs type 403 403 class VarArgsType : public Type { 404 public:405 404 VarArgsType(); 406 405 VarArgsType( Type::Qualifiers &tq ); -
src/driver/Makefile.in
rbdad1679 r540ddb7d 196 196 esac; \ 197 197 done; \ 198 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/driver/Makefile'; \198 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/driver/Makefile'; \ 199 199 $(am__cd) $(top_srcdir) && \ 200 $(AUTOMAKE) -- foreignsrc/driver/Makefile200 $(AUTOMAKE) --gnu src/driver/Makefile 201 201 .PRECIOUS: Makefile 202 202 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -
src/examples/Makefile.in
rbdad1679 r540ddb7d 189 189 esac; \ 190 190 done; \ 191 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/examples/Makefile'; \191 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/examples/Makefile'; \ 192 192 $(am__cd) $(top_srcdir) && \ 193 $(AUTOMAKE) -- foreignsrc/examples/Makefile193 $(AUTOMAKE) --gnu src/examples/Makefile 194 194 .PRECIOUS: Makefile 195 195 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -
src/examples/abs.c
rbdad1679 r540ddb7d 10 10 // Created On : Thu Jan 28 18:26:16 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 15:07:26201613 // Update Count : 5112 // Last Modified On : Wed Feb 17 09:32:04 2016 13 // Update Count : 44 14 14 // 15 15 … … 20 20 char ch = -65; 21 21 sout | "char\t\t\t" | ch | "\tabs " | abs( ch ) | endl; 22 sout | "signed int\t\t" | -65 | "\tabs " | abs( -65 ) | endl;23 sout | "signed long int\t\t" | -65l | "\tabs " | abs( -65l ) | endl;24 sout | "signed long long int\t" | -65ll | "\tabs " | abs( -65ll ) | endl;25 sout | "float\t\t\t" | -65.0f | "\tabs " | abs( -65.0f ) | endl;26 sout | "double\t\t\t" | -65.0 | "\tabs " | abs( -65.0 ) | endl;27 sout | "long double\t\t" | -65.0l | "\tabs " | abs( -65.0l ) | endl;28 sout | "float _Complex\t\t" | -65.0F-2.0iF | "\tabs " | abs( -65.0F-2.0iF ) | endl;29 sout | "double _Complex\t\t" | -65.0D-2.0iD | "\tabs " | abs( -65.0D-2.0iD ) | endl;30 sout | "long double _Complex\t" | -65.0L-2.0iL | "\tabs " | abs( -65.0L-2.0iL ) | endl;22 sout | "signed int\t\t" | -65 | "\tabs " | abs( -65 ) | endl; 23 sout | "signed long int\t\t" | -65l | "\tabs " | abs( -65l ) | endl; 24 sout | "signed long long int\t" | -65ll | "\tabs " | abs( -65ll ) | endl; 25 sout | "float\t\t\t" | -65.0f | "\tabs " | abs( -65.0f ) | endl; 26 sout | "double\t\t\t" | -65.0 | "\tabs " | abs( -65.0 ) | endl; 27 sout | "long double\t\t" | -65.0l | "\tabs " | abs( -65.0l ) | endl; 28 sout | "float _Complex\t\t" | -65.0F-2.0iF | "\tabs " | abs( -65.0F-2.0iF ) | endl; 29 sout | "double _Complex\t\t" | -65.0D-2.0iD | "\tabs " | abs( -65.0D-2.0iD ) | endl; 30 sout | "long double _Complex\t" | -65.0L-2.0iL | "\tabs " | abs( -65.0L-2.0iL ) | endl; 31 31 } // main 32 32 -
src/examples/ato.c
rbdad1679 r540ddb7d 11 11 // Created On : Thu Feb 4 08:10:57 2016 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Mon Feb 29 17:57:35201614 // Update Count : 4 413 // Last Modified On : Wed Feb 17 11:44:03 2016 14 // Update Count : 42 15 15 // 16 16 … … 24 24 int main( void ) { 25 25 int i = ato( "-123" ); 26 sout | i | "-123" | endl;26 sout | i | ' ' | "-123" | endl; 27 27 unsigned int ui = ato( "123" ); 28 sout | ui | "123" | endl;28 sout | ui | ' ' | "123" | endl; 29 29 long int li = ato( "-123" ); 30 sout | li | "-123" | endl;30 sout | li | ' ' | "-123" | endl; 31 31 unsigned long int uli = ato( "123" ); 32 sout | uli | "123" | endl;32 sout | uli | ' ' | "123" | endl; 33 33 long long int lli = ato( "-123" ); 34 sout | lli | "-123" | endl;34 sout | lli | ' ' | "-123" | endl; 35 35 unsigned long long int ulli = ato( "123" ); 36 sout | ulli | "123" | endl;36 sout | ulli | ' ' | "123" | endl; 37 37 float f = ato( "-123.456" ); 38 sout | f | "-123.456" | endl;38 sout | f | ' ' | "-123.456" | endl; 39 39 double d = ato( "-123.4567890123456" ); 40 sout | d | "-123.4567890123456" | endl;40 sout | d | ' ' | "-123.4567890123456" | endl; 41 41 long double ld = ato( "-123.45678901234567890123456789" ); 42 sout | ld | "-123.45678901234567890123456789" | endl;42 sout | ld | ' ' | "-123.45678901234567890123456789" | endl; 43 43 float _Complex fc = ato( "-123.456-123.456i" ); 44 sout | fc | "-123.456-123.456i" | endl;44 sout | fc | ' ' | "-123.456-123.456i" | endl; 45 45 double _Complex dc = ato( "-123.4567890123456+123.4567890123456i" ); 46 sout | dc | "-123.4567890123456+123.4567890123456i" | endl;46 sout | dc | ' ' | "-123.4567890123456+123.4567890123456i" | endl; 47 47 long double _Complex ldc = ato( "123.45678901234567890123456789-123.45678901234567890123456789i" ); 48 sout | ldc | "123.45678901234567890123456789-123.45678901234567890123456789i" | endl;48 sout | ldc | ' ' | "123.45678901234567890123456789-123.45678901234567890123456789i" | endl; 49 49 long double _Complex ldc2 = ato( "123.45678901234-123.4567890i" ); 50 sout | ldc2 | "123.45678901234-123.4567890i" | endl;50 sout | ldc2 | ' ' | "123.45678901234567890123456789-123.45678901234567890123456789i" | endl; 51 51 } // main 52 52 -
src/examples/fstream_test.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 15:12:21201613 // Update Count : 5112 // Last Modified On : Wed Feb 17 11:45:43 2016 13 // Update Count : 43 14 14 // 15 15 … … 18 18 int main( void ) { 19 19 int nombre; 20 sout | "Entrez un nombre, s'il vous plaît: " | endl;20 sout | "Entrez un nombre, s'il vous plaît:\n"; 21 21 sin | &nombre; 22 sout | "Vous avez entré" | nombre | "stocké à l'adresse" | &nombre | endl; 23 sout | "nombre" | nombre | "est" 24 | (nombre > 0 ? "plus grand que" : nombre == 0 ? "égal à" : "moins de") 25 | "zéro" | endl; 22 sout | "Vous avez entré " | nombre | " stocké à l'adresse " | &nombre | endl; 23 sout | "nombre " | nombre | " est " 24 | (nombre > 0 ? "plus grand que" : 25 nombre == 0 ? "égal à" : "moins de") 26 | " zéro" | endl; 26 27 27 sout | "Entrez trois nombres, s'il vous plaît: " | endl;28 sout | "Entrez trois nombres, s'il vous plaît:\n"; 28 29 int i, j, k; 29 30 sin | &i | &j | &k; 30 sout | "Vous avez entré" | "i:" | i | "j:" | j | "k:" | k | endl; 31 sout | "Vous avez entré " | "i:" | i | " j:" | j | " k:" | k | endl; 32 33 sout | 3 | ' ' | 3.5 | ' ' | 'a' | ' ' | "abc" | endl; 31 34 } 32 35 -
src/examples/hello.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 29 18:06:17201613 // Update Count : 1012 // Last Modified On : Wed Feb 17 12:11:45 2016 13 // Update Count : 8 14 14 // 15 15 … … 17 17 18 18 int main() { 19 sout | "Bonjour au monde! " | endl;19 sout | "Bonjour au monde!\n"; 20 20 } 21 21 -
src/examples/identity.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 29 23:40:45201613 // Update Count : 1 212 // Last Modified On : Wed Feb 17 12:17:32 2016 13 // Update Count : 10 14 14 // 15 15 -
src/examples/minmax.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 29 23:45:16201613 // Update Count : 4 912 // Last Modified On : Wed Feb 17 12:17:53 2016 13 // Update Count : 47 14 14 // 15 15 … … 23 23 24 24 sout | "char\t\t\t" | 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' ) | endl; 25 sout | "signed int\t\t" | 4 | 3 | "\tmin" | min( 4, 3 ) | endl;26 sout | "unsigned int\t\t" | 4u | 3u | "\tmin" | min( 4u, 3u ) | endl;27 sout | "signed long int\t\t" | 4l | 3l | "\tmin" | min( 4l, 3l ) | endl;28 sout | "unsigned long int\t" | 4ul | 3ul | "\tmin" | min( 4ul, 3ul ) | endl;29 sout | "signed long long int\t" | 4ll | 3ll | "\tmin" | min( 4ll, 3ll ) | endl;30 sout | "unsigned long long int\t" | 4ull | 3ull | "\tmin" | min( 4ull, 3ull ) | endl;31 sout | "float\t\t\t" | 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl;32 sout | "double\t\t\t" | 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl;33 sout | "long double\t\t" | 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl;25 sout | "signed int\t\t" | 4 | ' ' | 3 | "\tmin " | min( 4, 3 ) | endl; 26 sout | "unsigned int\t\t" | 4u | ' ' | 3u | "\tmin " | min( 4u, 3u ) | endl; 27 sout | "signed long int\t\t" | 4l | ' ' | 3l | "\tmin " | min( 4l, 3l ) | endl; 28 sout | "unsigned long int\t" | 4ul | ' ' | 3ul | "\tmin " | min( 4ul, 3ul ) | endl; 29 sout | "signed long long int\t" | 4ll | ' ' | 3ll | "\tmin " | min( 4ll, 3ll ) | endl; 30 sout | "unsigned long long int\t" | 4ull | ' ' | 3ull | "\tmin " | min( 4ull, 3ull ) | endl; 31 sout | "float\t\t\t" | 4.0f | ' ' | 3.1f | "\tmin " | min( 4.0f, 3.1f ) | endl; 32 sout | "double\t\t\t" | 4.0 | ' ' | 3.1 | "\tmin " | min( 4.0, 3.1 ) | endl; 33 sout | "long double\t\t" | 4.0l | ' ' | 3.1l | "\tmin " | min( 4.0l, 3.1l ) | endl; 34 34 35 35 sout | endl; 36 36 37 37 sout | "char\t\t\t" | 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl; 38 sout | "signed int\t\t" | 4 | 3 | "\tmax" | max( 4, 3 ) | endl;39 sout | "unsigned int\t\t" | 4u | 3u | "\tmax" | max( 4u, 3u ) | endl;40 sout | "signed long int\t\t" | 4l | 3l | "\tmax" | max( 4l, 3l ) | endl;41 sout | "unsigned long int\t" | 4ul | 3ul | "\tmax" | max( 4ul, 3ul ) | endl;42 sout | "signed long long int\t" | 4ll | 3ll | "\tmax" | max( 4ll, 3ll ) | endl;43 sout | "unsigned long long int\t" | 4ull | 3ull | "\tmax" | max( 4ull, 3ull ) | endl;44 sout | "float\t\t\t" | 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl;45 sout | "double\t\t\t" | 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl;46 sout | "long double\t\t" | 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl;38 sout | "signed int\t\t" | 4 | ' ' | 3 | "\tmax " | max( 4, 3 ) | endl; 39 sout | "unsigned int\t\t" | 4u | ' ' | 3u | "\tmax " | max( 4u, 3u ) | endl; 40 sout | "signed long int\t\t" | 4l | ' ' | 3l | "\tmax " | max( 4l, 3l ) | endl; 41 sout | "unsigned long int\t" | 4ul | ' ' | 3ul | "\tmax " | max( 4ul, 3ul ) | endl; 42 sout | "signed long long int\t" | 4ll | ' ' | 3ll | "\tmax " | max( 4ll, 3ll ) | endl; 43 sout | "unsigned long long int\t" | 4ull | ' ' | 3ull | "\tmax " | max( 4ull, 3ull ) | endl; 44 sout | "float\t\t\t" | 4.0f | ' ' | 3.1f | "\tmax " | max( 4.0f, 3.1f ) | endl; 45 sout | "double\t\t\t" | 4.0 | ' ' | 3.1 | "\tmax " | max( 4.0, 3.1 ) | endl; 46 sout | "long double\t\t" | 4.0l | ' ' | 3.1l | "\tmax " | max( 4.0l, 3.1l ) | endl; 47 47 } // main 48 48 -
src/examples/quad.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Mar 1 08:24:56201613 // Update Count : 712 // Last Modified On : Wed Feb 17 12:19:24 2016 13 // Update Count : 6 14 14 // 15 15 … … 28 28 int main() { 29 29 int N = 2; 30 sout | "result of quad of " | N | "is" | quad( N ) | endl;30 sout | "result of quad of " | N | " is " | quad( N ) | endl; 31 31 } 32 32 -
src/examples/sum.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 14:31:45201613 // Update Count : 1 9312 // Last Modified On : Tue Feb 16 23:49:31 2016 13 // Update Count : 189 14 14 // 15 15 … … 47 47 a[i] = v; 48 48 } // for 49 sout | "sum from " | low | "to" | High | "is"50 | (int)sum( size, a ) | " " | ", check" | (int)s | endl;49 sout | "sum from " | low | " to " | High | " is " 50 | (int)sum( size, a ) | ", check " | (int)s | endl; 51 51 52 52 int s = 0, a[size], v = low; … … 55 55 a[i] = (int)v; 56 56 } // for 57 sout | "sum from " | low | "to" | High | "is"58 | sum( size, (int *)a ) | " " | ", check" | (int)s | endl;57 sout | "sum from " | low | " to " | High | " is " 58 | sum( size, (int *)a ) | ", check " | (int)s | endl; 59 59 60 60 float s = 0.0, a[size], v = low / 10.0; … … 63 63 a[i] = (float)v; 64 64 } // for 65 sout | "sum from " | low / 10.0 | "to" | High / 10.0 | "is"66 | sum( size, (float *)a ) | " " | ", check" | (float)s | endl;65 sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is " 66 | sum( size, (float *)a ) | ", check " | (float)s | endl; 67 67 68 68 double s = 0, a[size], v = low / 10.0; … … 71 71 a[i] = (double)v; 72 72 } // for 73 sout | "sum from " | low / 10.0 | "to" | High / 10.0 | "is"74 | sum( size, (double *)a ) | " " | ", check" | (double)s | endl;73 sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is " 74 | sum( size, (double *)a ) | ", check " | (double)s | endl; 75 75 76 76 struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 }; … … 79 79 S ++?( S *t ) { *t += 1; return *t; } 80 80 S ?++( S *t ) { S temp = *t; *t += 1; return temp; } 81 ofstream * ?|?( ofstream * os, S v ) { return os | v.i | v.j; }81 ofstream * ?|?( ofstream * os, S v ) { return os | v.i | ' ' | v.j; } 82 82 83 83 S s = 0, a[size], v = { low, low }; … … 86 86 a[i] = (S)v; 87 87 } // for 88 sout | "sum from " | low | "to" | High | "is"89 | sum( size, (S *)a ) | " " | ", check" | (S)s | endl;88 sout | "sum from " | low | " to " | High | " is " 89 | sum( size, (S *)a ) | ", check " | (S)s | endl; 90 90 } // main 91 91 -
src/examples/swap.c
rbdad1679 r540ddb7d 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 16:15:11201613 // Update Count : 6 512 // Last Modified On : Wed Feb 17 12:22:12 2016 13 // Update Count : 64 14 14 // 15 15 … … 54 54 55 55 float f1 = 1.5, f2 = 2.5; 56 sout | "float\t\t\t" | f1 | ' ' | f2 | "\t\t swap ";56 sout | "float\t\t\t" | f1 | ' ' | f2 | "\t\t\tswap "; 57 57 swap( &f1, &f2 ); 58 58 sout | '\t' | f1 | ' ' | f2 | endl; 59 59 60 60 double d1 = 1.5, d2 = 2.5; 61 sout | "double\t\t\t" | d1 | ' ' | d2 | "\t\t swap ";61 sout | "double\t\t\t" | d1 | ' ' | d2 | "\t\t\tswap "; 62 62 swap( &d1, &d2 ); 63 63 sout | '\t' | d1 | ' ' | d2 | endl; 64 64 65 65 long double ld1 = 1.5, ld2 = 2.5; 66 sout | "long double\t\t" | ld1 | ' ' | ld2 | "\t\t swap ";66 sout | "long double\t\t" | ld1 | ' ' | ld2 | "\t\t\tswap "; 67 67 swap( &ld1, &ld2 ); 68 68 sout | '\t' | ld1 | ' ' | ld2 | endl; -
src/examples/tests/vector_test.out.txt
rbdad1679 r540ddb7d 1 1 enter N elements and C-d on a separate line: 2 2 Array elements: 3 1 2 3 4 5 3 1 2 3 4 5 4 4 Array elements reversed: 5 5 4 3 2 1 5 5 4 3 2 1 -
src/libcfa/Makefile.in
rbdad1679 r540ddb7d 231 231 esac; \ 232 232 done; \ 233 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- foreignsrc/libcfa/Makefile'; \233 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libcfa/Makefile'; \ 234 234 $(am__cd) $(top_srcdir) && \ 235 $(AUTOMAKE) -- foreignsrc/libcfa/Makefile235 $(AUTOMAKE) --gnu src/libcfa/Makefile 236 236 .PRECIOUS: Makefile 237 237 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -
src/libcfa/builtins.cf
rbdad1679 r540ddb7d 390 390 int __builtin_sprintf(char *, const char *, ...); 391 391 int __builtin_sscanf(const char *, const char *, ...); 392 int __builtin_vfprintf(struct _IO_FILE *, const char *, __builtin_va_list);393 int __builtin_vfscanf(struct _IO_FILE *, const char *, __builtin_va_list);394 int __builtin_vprintf(const char *, __builtin_va_list);395 int __builtin_vscanf(const char *, __builtin_va_list);396 int __builtin_vsnprintf(char *, unsigned long, const char *, __builtin_va_list);397 int __builtin_vsprintf(char *, const char *, __builtin_va_list);398 int __builtin_vsscanf(const char *, const char *, __builtin_va_list);392 int __builtin_vfprintf(struct _IO_FILE *, const char *, void **); 393 int __builtin_vfscanf(struct _IO_FILE *, const char *, void **); 394 int __builtin_vprintf(const char *, void **); 395 int __builtin_vscanf(const char *, void **); 396 int __builtin_vsnprintf(char *, unsigned long, const char *, void **); 397 int __builtin_vsprintf(char *, const char *, void **); 398 int __builtin_vsscanf(const char *, const char *, void **); 399 399 int __builtin_isalnum(int); 400 400 int __builtin_isalpha(int); … … 534 534 void __builtin_unwind_init(); 535 535 void __builtin_update_setjmp_buf(void *, int); 536 void __builtin_va_copy( __builtin_va_list, __builtin_va_list);537 void __builtin_va_end( __builtin_va_list);538 void __builtin_va_start( __builtin_va_list, ...);536 void __builtin_va_copy(void **, void **); 537 void __builtin_va_end(void **); 538 void __builtin_va_start(void **, ...); 539 539 int __builtin_va_arg_pack(); 540 540 int __builtin_va_arg_pack_len(); … … 563 563 int __builtin___snprintf_chk(char *, unsigned long, int, unsigned long, const char *, ...); 564 564 int __builtin___sprintf_chk(char *, int, unsigned long, const char *, ...); 565 int __builtin___vsnprintf_chk(char *, unsigned long, int, unsigned long, const char *, __builtin_va_list);566 int __builtin___vsprintf_chk(char *, int, unsigned long, const char *, __builtin_va_list);565 int __builtin___vsnprintf_chk(char *, unsigned long, int, unsigned long, const char *, void **); 566 int __builtin___vsprintf_chk(char *, int, unsigned long, const char *, void **); 567 567 int __builtin___fprintf_chk(struct _IO_FILE *, int, const char *, ...); 568 568 int __builtin___printf_chk(int, const char *, ...); 569 int __builtin___vfprintf_chk(struct _IO_FILE *, int, const char *, __builtin_va_list);570 int __builtin___vprintf_chk(int, const char *, __builtin_va_list);569 int __builtin___vfprintf_chk(struct _IO_FILE *, int, const char *, void **); 570 int __builtin___vprintf_chk(int, const char *, void **); 571 571 void __cyg_profile_func_enter(void *, void *); 572 572 void __cyg_profile_func_exit(void *, void *); … … 583 583 const char * __builtin_FUNCTION(); 584 584 int __builtin_LINE(); 585 typedef void ** __builtin_va_list; 585 586 extern const char *__PRETTY_FUNCTION__; 586 587 typedef int wchar_t; -
src/libcfa/fstream
rbdad1679 r540ddb7d 7 7 // fstream -- 8 8 // 9 // Author : Peter A. Buhr9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 15:08:14201613 // Update Count : 7812 // Last Modified On : Wed Feb 17 14:02:01 2016 13 // Update Count : 22 14 14 // 15 15 … … 19 19 #include "iostream" 20 20 21 enum { separateSize = 16 }; 22 struct ofstream { void *file; int separate; char separator[separateSize]; };21 // implement context ostream 22 struct ofstream; 23 23 24 _Bool sepPrt( ofstream * ); 25 void sepOn( ofstream * ); 26 void sepOff( ofstream * ); 27 void sepSet( ofstream *, const char * ); 28 const char * sepGet( ofstream * ); 29 void sepDisable( ofstream * ); 30 void sepEnable( ofstream * ); 31 int fail( ofstream * ); 32 int flush( ofstream * ); 33 void open( ofstream *, const char * name, const char * mode ); 34 void close( ofstream * ); 35 ofstream * write( ofstream *, const char * data, unsigned long int size ); 36 int prtfmt( ofstream *, const char fmt[], ... ); 24 int fail( ofstream * os ); 25 int flush( ofstream * os ); 26 void open( ofstream ** os, const char * name, const char * mode ); 27 void close( ofstream * os ); 28 ofstream * write( ofstream * os, const char * data, streamsize_type size ); 37 29 38 30 extern ofstream * sout, * serr; 39 31 40 32 // implement context istream 41 struct ifstream { void *file; };33 struct ifstream; 42 34 43 35 int fail( ifstream * is ); 44 36 int eof( ifstream * is ); 45 void open( ifstream * is, const char * name, const char * mode );37 void open( ifstream ** is, const char * name, const char * mode ); 46 38 void close( ifstream * is ); 47 ifstream * read( ifstream * is, char * data, unsigned long int size ); 39 ifstream * get( ifstream * is, int * data ); 40 ifstream * read( ifstream * is, char * data, streamsize_type size ); 48 41 ifstream * ungetc( ifstream * is, char c ); 49 int scanfmt( ifstream *, const char fmt[], ... );50 42 51 43 extern ifstream *sin; … … 57 49 // tab-width: 4 // 58 50 // End: // 59 -
src/libcfa/fstream.c
rbdad1679 r540ddb7d 7 7 // fstream.c -- 8 8 // 9 // Author : Peter A. Buhr9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 29 18:41:10201613 // Update Count : 16212 // Last Modified On : Wed Feb 17 14:03:05 2016 13 // Update Count : 76 14 14 // 15 15 … … 17 17 18 18 extern "C" { 19 #include <stdio.h> // vfprintf, vfscanf 20 #include <stdlib.h> // exit 21 #include <stdarg.h> // varargs 22 #include <string.h> // strlen 23 #include <float.h> // DBL_DIG, LDBL_DIG 24 #include <complex.h> // creal, cimag 19 #include <stdio.h> 20 #include <stdlib.h> 25 21 } 22 23 struct ofstream { 24 FILE *file; 25 }; 26 26 27 27 #define IO_MSG "I/O error " 28 28 29 _Bool sepPrt( ofstream * os ) { return os->separate == 1; }30 void sepOn( ofstream * os ) { if ( os->separate != 2 ) os->separate = 1; }31 void sepOff( ofstream * os ) { if ( os->separate != 2 ) os->separate = 0; }32 void sepSet( ofstream * os, const char * s ) {33 strncpy( &(os->separator[0]), s, separateSize - 1 );34 os->separator[separateSize - 1] = '\0';35 } // sepSet36 const char * sepGet( ofstream * os ) { return &(os->separator[0]); }37 void sepDisable( ofstream *os ) { os->separate = 2; }38 void sepEnable( ofstream *os ) { os->separate = 0; }39 40 29 int fail( ofstream * os ) { 41 return ferror( (FILE *)(os->file));30 return ferror( os->file ); 42 31 } // fail 43 32 44 33 int flush( ofstream * os ) { 45 return fflush( (FILE *)(os->file));34 return fflush( os->file ); 46 35 } // flush 47 36 48 void open( ofstream * os, const char * name, const char * mode ) {49 FILE * file= fopen( name, mode );50 if ( file == 0 ) {// do not change unless successful37 void open( ofstream ** os, const char * name, const char * mode ) { 38 FILE *t = fopen( name, mode ); 39 if ( t == 0 ) { // do not change unless successful 51 40 perror( IO_MSG "open output" ); 52 41 exit( EXIT_FAILURE ); 53 42 } // if 54 os->file = file; 55 sepOff( os ); 56 sepSet( os, " " ); 43 (*os)->file = t; 57 44 } // open 58 45 59 46 void close( ofstream * os ) { 60 if ( (FILE *)(os->file) == stdout || (FILE *)(os->file)== stderr ) return;47 if ( os->file == stdout || os->file == stderr ) return; 61 48 62 if ( fclose( (FILE *)(os->file)) == EOF ) {49 if ( fclose( os->file ) == EOF ) { 63 50 perror( IO_MSG "close output" ); 64 51 } // if 65 52 } // close 66 53 67 ofstream * write( ofstream * os, const char * data, unsigned long intsize ) {54 ofstream * write( ofstream * os, const char * data, streamsize_type size ) { 68 55 if ( fail( os ) ) { 69 56 fprintf( stderr, "attempt write I/O on failed stream\n" ); … … 71 58 } // if 72 59 73 if ( fwrite( data, 1, size, (FILE *)(os->file)) != size ) {60 if ( fwrite( data, 1, size, os->file ) != size ) { 74 61 perror( IO_MSG "write" ); 75 62 exit( EXIT_FAILURE ); … … 78 65 } // write 79 66 80 int prtfmt( ofstream * os, const char fmt[], ... ) { 81 va_list args; 67 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_) }; 68 ofstream *sout = &soutFile; 69 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_) }; 70 ofstream *serr = &serrFile; 82 71 83 va_start( args, fmt ); 84 int len = vfprintf( (FILE *)(os->file), fmt, args ); 85 if ( len == EOF ) { 86 if ( ferror( (FILE *)(os->file) ) ) { 87 fprintf( stderr, "invalid write\n" ); 72 //--------------------------------------- 73 74 struct ifstream { 75 FILE *file; 76 }; 77 78 int fail( ifstream * is ) { 79 return ferror( is->file ); 80 } // fail 81 82 int eof( ifstream * is ) { 83 return feof( is->file ); 84 } // eof 85 86 ifstream * get( ifstream * is, int * data ) { 87 if ( fscanf( is->file, "%d", data ) == EOF ) { 88 if ( ferror( is->file ) ) { 89 fprintf( stderr, "invalid int read\n" ); 88 90 exit( EXIT_FAILURE ); 89 91 } // if 90 92 } // if 91 va_end( args ); 92 return len; 93 } // prtfmt 93 return is; 94 } // read 94 95 95 96 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 0, { ' ', '\0' } }; 97 ofstream *sout = &soutFile; 98 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 0, { ' ', '\0' } }; 99 ofstream *serr = &serrFile; 100 101 102 //--------------------------------------- 103 104 105 int fail( ifstream * is ) { 106 return ferror( (FILE *)(is->file) ); 107 } // fail 108 109 int eof( ifstream * is ) { 110 return feof( (FILE *)(is->file) ); 111 } // eof 112 113 void open( ifstream * is, const char * name, const char * mode ) { 114 FILE *t = fopen( name, mode ); 115 if ( t == 0 ) { // do not change unless successful 116 perror( IO_MSG "open input" ); 117 exit( EXIT_FAILURE ); 118 } // if 119 is->file = t; 120 } // open 121 122 void close( ifstream * is ) { 123 if ( (FILE *)(is->file) == stdin ) return; 124 125 if ( fclose( (FILE *)(is->file) ) == EOF ) { 126 perror( IO_MSG "close input" ); 127 } // if 128 } // close 129 130 ifstream * read( ifstream * is, char * data, unsigned long int size ) { 96 ifstream * read( ifstream * is, char * data, streamsize_type size ) { 131 97 if ( fail( is ) ) { 132 98 fprintf( stderr, "attempt read I/O on failed stream\n" ); … … 134 100 } // if 135 101 136 if ( fread( data, size, 1, (FILE *)(is->file)) == 0 ) {102 if ( fread( data, size, 1, is->file ) == 0 ) { 137 103 perror( IO_MSG "read" ); 138 104 exit( EXIT_FAILURE ); … … 147 113 } // if 148 114 149 if ( ungetc( c, (FILE *)(is->file)) == EOF ) {115 if ( ungetc( c, is->file ) == EOF ) { 150 116 perror( IO_MSG "ungetc" ); 151 117 exit( EXIT_FAILURE ); … … 154 120 } // ungetc 155 121 156 int scanfmt( ifstream * is, const char fmt[], ... ) { 157 va_list args; 122 void open( ifstream ** is, const char * name, const char * mode ) { 123 FILE *t = fopen( name, mode ); 124 if ( t == 0 ) { // do not change unless successful 125 perror( IO_MSG "open input" ); 126 exit( EXIT_FAILURE ); 127 } // if 128 (*is)->file = t; 129 } // open 158 130 159 va_start( args, fmt ); 160 int len = vfscanf( (FILE *)(is->file), fmt, args ); 161 if ( len == EOF ) { 162 if ( ferror( (FILE *)(is->file) ) ) { 163 fprintf( stderr, "invalid read\n" ); 164 exit( EXIT_FAILURE ); 165 } // if 166 } // if 167 va_end( args ); 168 return len; 169 } // prtfmt 131 void close( ifstream * is ) { 132 if ( is->file == stdin ) return; 170 133 134 if ( fclose( is->file ) == EOF ) { 135 perror( IO_MSG "close input" ); 136 } // if 137 } // close 171 138 172 139 static ifstream sinFile = { (FILE *)(&_IO_2_1_stdin_) }; -
src/libcfa/iostream
rbdad1679 r540ddb7d 7 7 // iostream -- 8 8 // 9 // Author : Peter A. Buhr9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 16:44:32201613 // Update Count : 8112 // Last Modified On : Wed Feb 17 14:04:24 2016 13 // Update Count : 32 14 14 // 15 15 16 #ifndef __IOSTREAM_H__17 #define __IOSTREAM_H__16 #ifndef IOSTREAM_H 17 #define IOSTREAM_H 18 18 19 19 #include "iterator" 20 20 21 typedef unsigned long streamsize_type; 22 21 23 context ostream( dtype ostype ) { 22 _Bool sepPrt( ostype * );23 void sepOn( ostype * );24 void sepOff( ostype * );25 void sepSet( ostype *, const char * );26 const char * sepGet( ostype * );27 void sepDisable( ostype * );28 void sepEnable( ostype * );29 24 int fail( ostype * ); 30 25 int flush( ostype * ); 31 void open( ostype * os, const char * name, const char * mode ); 32 void close( ostype * os ); 33 ostype * write( ostype *, const char *, unsigned long int ); 34 int prtfmt( ostype *, const char fmt[], ... ); 26 ostype * write( ostype *, const char *, streamsize_type ); 35 27 }; 36 37 28 context writeable( type T ) { 38 29 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); … … 42 33 43 34 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, char ); 44 45 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, short int );46 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned short int );47 35 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, int ); 48 36 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned int ); … … 51 39 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long int ); 52 40 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long long int ); 53 54 41 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float ); // FIX ME: should not be required 55 42 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double ); 56 43 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double ); 57 58 44 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float _Complex ); 59 45 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double _Complex ); 60 46 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double _Complex ); 61 62 47 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const char * ); 63 48 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const void * ); 64 49 65 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype *) );50 forall( dtype ostype, dtype retostype | ostream( ostype ) | ostream( retostype ) ) retostype * ?|?( ostype *os, retostype * (* manip)(ostype*) ); 66 51 forall( dtype ostype | ostream( ostype ) ) ostype * endl( ostype * ); 67 forall( dtype ostype | ostream( ostype ) ) ostype * sepOn( ostype * );68 forall( dtype ostype | ostream( ostype ) ) ostype * sepOff( ostype * );69 52 70 53 // writes the range [begin, end) to the given stream … … 80 63 int fail( istype * ); 81 64 int eof( istype * ); 82 void open( istype * is, const char * name, const char * mode ); 83 void close( istype * is ); 84 istype * read( istype *, char *, unsigned long int ); 65 istype * get( istype *, int * ); 66 istype * read( istype *, char *, streamsize_type ); 85 67 istype * ungetc( istype *, char ); 86 int scanfmt( istype *, const char fmt[], ... );87 68 }; 88 69 … … 91 72 }; 92 73 93 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * ); 74 forall( dtype istype | istream( istype ) ) 75 istype * ?|?( istype *, char * ); 94 76 95 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, short int * ); 96 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned short int * ); 97 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, int * ); 98 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned int * ); 99 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long int * ); 100 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long long int * ); 101 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long int * ); 102 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long long int * ); 77 forall( dtype istype | istream( istype ) ) 78 istype * ?|?( istype *, int * ); 103 79 104 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float * ); 105 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double * ); 106 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double * ); 107 108 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float _Complex * ); 109 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double _Complex * ); 110 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double _Complex * ); 111 112 struct _Istream_str1 { char * s; }; 113 _Istream_str1 str( char * ); 114 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_str1 ); 115 116 struct _Istream_str2 { char * s; int size; }; 117 _Istream_str2 str( char *, int size ); 118 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_str2 ); 119 120 #endif // __IOSTREAM_H__ 80 #endif // IOSTREAM_H 121 81 122 82 // Local Variables: // -
src/libcfa/iostream.c
rbdad1679 r540ddb7d 7 7 // iostream.c -- 8 8 // 9 // Author : Peter A. Buhr9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 16:20:57201613 // Update Count : 20712 // Last Modified On : Wed Feb 17 14:19:56 2016 13 // Update Count : 76 14 14 // 15 15 … … 21 21 #include <float.h> // DBL_DIG, LDBL_DIG 22 22 #include <complex.h> // creal, cimag 23 #include <ctype.h> // isspace, ispunct24 23 } 25 24 26 25 forall( dtype ostype | ostream( ostype ) ) 27 26 ostype * ?|?( ostype *os, char c ) { 28 prtfmt( os, "%c", c ); 29 return os; 30 } // ?|? 31 32 forall( dtype ostype | ostream( ostype ) ) 33 ostype * ?|?( ostype *os, short int si ) { 34 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 35 prtfmt( os, "%hd", si ); 36 return os; 37 } // ?|? 38 39 forall( dtype ostype | ostream( ostype ) ) 40 ostype * ?|?( ostype *os, unsigned short int usi ) { 41 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 42 prtfmt( os, "%hu", usi ); 43 return os; 27 return write( os, &c, 1 ); 44 28 } // ?|? 45 29 46 30 forall( dtype ostype | ostream( ostype ) ) 47 31 ostype * ?|?( ostype *os, int i ) { 48 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 49 prtfmt( os, "%d", i ); 50 return os; 32 char buffer[32]; 33 return write( os, buffer, sprintf( buffer, "%d", i ) ); 51 34 } // ?|? 52 35 53 36 forall( dtype ostype | ostream( ostype ) ) 54 ostype * ?|?( ostype *os, unsigned int ui ) { 55 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 56 prtfmt( os, "%u", ui ); 57 return os; 37 ostype * ?|?( ostype *os, unsigned int i ) { 38 char buffer[32]; 39 return write( os, buffer, sprintf( buffer, "%u", i ) ); 58 40 } // ?|? 59 41 60 42 forall( dtype ostype | ostream( ostype ) ) 61 ostype * ?|?( ostype *os, long int li ) { 62 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 63 prtfmt( os, "%ld", li ); 64 return os; 43 ostype * ?|?( ostype *os, long int i ) { 44 char buffer[32]; 45 return write( os, buffer, sprintf( buffer, "%ld", i ) ); 65 46 } // ?|? 66 47 67 48 forall( dtype ostype | ostream( ostype ) ) 68 ostype * ?|?( ostype *os, unsigned long int uli ) { 69 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 70 prtfmt( os, "%lu", uli ); 71 return os; 49 ostype * ?|?( ostype *os, long long int i ) { 50 char buffer[32]; 51 return write( os, buffer, sprintf( buffer, "%lld", i ) ); 72 52 } // ?|? 73 53 74 54 forall( dtype ostype | ostream( ostype ) ) 75 ostype * ?|?( ostype *os, long long int lli ) { 76 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 77 prtfmt( os, "%lld", lli ); 78 return os; 55 ostype * ?|?( ostype *os, unsigned long int i ) { 56 char buffer[32]; 57 return write( os, buffer, sprintf( buffer, "%lu", i ) ); 79 58 } // ?|? 80 59 81 60 forall( dtype ostype | ostream( ostype ) ) 82 ostype * ?|?( ostype *os, unsigned long long int ulli ) { 83 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 84 prtfmt( os, "%llu", ulli ); 85 return os; 61 ostype * ?|?( ostype *os, unsigned long long int i ) { 62 char buffer[32]; 63 return write( os, buffer, sprintf( buffer, "%llu", i ) ); 86 64 } // ?|? 87 65 88 66 forall( dtype ostype | ostream( ostype ) ) 89 67 ostype * ?|?( ostype *os, float f ) { 90 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 91 prtfmt( os, "%g", f ); 92 return os; 68 char buffer[32]; 69 return write( os, buffer, sprintf( buffer, "%g", f ) ); 93 70 } // ?|? 94 71 95 72 forall( dtype ostype | ostream( ostype ) ) 96 73 ostype * ?|?( ostype *os, double d ) { 97 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 98 prtfmt( os, "%.*lg", DBL_DIG, d ); 99 return os; 74 char buffer[32]; 75 return write( os, buffer, sprintf( buffer, "%.*lg", DBL_DIG, d ) ); 100 76 } // ?|? 101 77 102 78 forall( dtype ostype | ostream( ostype ) ) 103 ostype * ?|?( ostype *os, long double ld ) { 104 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 105 prtfmt( os, "%.*Lg", LDBL_DIG, ld ); 106 return os; 79 ostype * ?|?( ostype *os, long double d ) { 80 char buffer[32]; 81 return write( os, buffer, sprintf( buffer, "%.*Lg", LDBL_DIG, d ) ); 107 82 } // ?|? 108 83 109 84 forall( dtype ostype | ostream( ostype ) ) 110 ostype * ?|?( ostype *os, float _Complex fc ) { 111 os | crealf( fc ); 112 if ( cimagf( fc ) >= 0 ) os | '+'; 113 os | "" | cimagf( fc ) | 'i'; 114 return os; 85 ostype * ?|?( ostype *os, float _Complex c ) { 86 return os | crealf( c ) | (cimagf( c ) < 0 ? "" : "+") | cimagf( c ) | 'i'; 115 87 } // ?|? 116 88 117 89 forall( dtype ostype | ostream( ostype ) ) 118 ostype * ?|?( ostype *os, double _Complex dc ) { 119 os | creal( dc ); 120 if ( cimag( dc ) >= 0 ) os | '+'; 121 os | "" | cimag( dc ) | 'i'; 122 return os; 90 ostype * ?|?( ostype *os, double _Complex c ) { 91 return os | creal( c ) | (cimag( c ) < 0 ? "" : "+") | cimag( c ) | 'i'; 123 92 } // ?|? 124 93 125 94 forall( dtype ostype | ostream( ostype ) ) 126 ostype * ?|?( ostype *os, long double _Complex ldc ) { 127 os | creall( ldc ); 128 if ( cimagl( ldc ) >= 0 ) os | '+'; 129 os | "" | cimagl( ldc ) | 'i'; 130 return os; 95 ostype * ?|?( ostype *os, long double _Complex c ) { 96 return os | creall( c ) | (cimagl( c ) < 0 ? "" : "+") | cimagl( c ) | 'i'; 97 } // ?|? 98 99 forall( dtype ostype | ostream( ostype ) ) 100 ostype * ?|?( ostype *os, const void *p ) { 101 char buffer[32]; 102 return write( os, buffer, sprintf( buffer, "%p", p ) ); 131 103 } // ?|? 132 104 133 105 forall( dtype ostype | ostream( ostype ) ) 134 106 ostype * ?|?( ostype *os, const char *cp ) { 135 int len = strlen( cp ); 136 // null string => no separator 137 if ( len == 0 ) { sepOff( os ); return os; } 138 // first character NOT spacing or special punctuation => add left separator 139 if ( sepPrt( os ) && isspace( cp[0] ) == 0 && cp[0] != '.' && cp[0] != ',' ) { 140 prtfmt( os, "%s", sepGet( os ) ); 141 } // if 142 // last character is spacing or special punctuation => turn off separator for next item 143 unsigned int posn = len - 1; 144 if ( isspace( cp[posn] ) || cp[posn] == ':' || cp[posn] == '$' ) { 145 sepOff( os ); 146 } else { 147 sepOn( os ); 148 } // if 149 return write( os, cp, len ); 150 } // ?|? 151 152 forall( dtype ostype | ostream( ostype ) ) 153 ostype * ?|?( ostype *os, const void *p ) { 154 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); else sepOn( os ); 155 prtfmt( os, "%p", p ); 156 return os; 107 return write( os, cp, strlen( cp ) ); 157 108 } // ?|? 158 109 159 110 160 forall( dtype ostype | ostream(ostype ) )161 ostype * ?|?( ostype *os, ostype * (* manip)( ostype *) ) {162 return manip( os );163 } // ?|?111 forall( dtype ostype, dtype retostype | ostream( ostype ) | ostream( retostype ) ) 112 retostype * ?|?( ostype *os, retostype * (*manip)(ostype*) ) { 113 return manip( os ); 114 } 164 115 165 116 forall( dtype ostype | ostream( ostype ) ) 166 117 ostype * endl( ostype * os ) { 167 os | '\n';118 os | "\n"; 168 119 flush( os ); 169 sepOff( os );170 120 return os; 171 121 } // endl 172 122 173 forall( dtype ostype | ostream( ostype ) )174 ostype * sepOn( ostype * os ) {175 sepOn( os );176 return os;177 } // sepOn178 179 forall( dtype ostype | ostream( ostype ) )180 ostype * sepOff( ostype * os ) {181 sepOff( os );182 return os;183 } // sepOff184 185 123 //--------------------------------------- 186 124 187 forall( type elttype | writeable( elttype ), type iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) ) 188 void write( iteratortype begin, iteratortype end, ostype *os ) { 189 void print( elttype i ) { os | i; } 125 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), 126 dtype os_type | ostream( os_type ) ) 127 void write( iterator_type begin, iterator_type end, os_type *os ) { 128 void print( elt_type i ) { os | i | ' '; } 190 129 for_each( begin, end, print ); 191 130 } // ?|? 192 131 193 forall( type elttype | writeable( elttype ), type iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) ) 194 void write_reverse( iteratortype begin, iteratortype end, ostype *os ) { 195 void print( elttype i ) { os | i; } 132 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), 133 dtype os_type | ostream( os_type ) ) 134 void write_reverse( iterator_type begin, iterator_type end, os_type *os ) { 135 void print( elt_type i ) { os | i | ' '; } 196 136 for_each_reverse( begin, end, print ); 197 137 } // ?|? … … 200 140 201 141 forall( dtype istype | istream( istype ) ) 202 istype * ?|?( istype * is, char * c ) { 203 scanfmt( is, "%c", c ); 204 return is; 142 istype * ?|?( istype *is, char *cp ) { 143 return read( is, cp, 1 ); 205 144 } // ?|? 206 145 207 146 forall( dtype istype | istream( istype ) ) 208 istype * ?|?( istype * is, short int * si ) { 209 scanfmt( is, "%hd", si ); 210 return is; 147 istype * ?|?( istype *is, int *ip ) { 148 return get( is, ip ); 211 149 } // ?|? 212 213 forall( dtype istype | istream( istype ) )214 istype * ?|?( istype * is, unsigned short int * usi ) {215 scanfmt( is, "%hu", usi );216 return is;217 } // ?|?218 219 forall( dtype istype | istream( istype ) )220 istype * ?|?( istype * is, int * i ) {221 scanfmt( is, "%d", i );222 return is;223 } // ?|?224 225 forall( dtype istype | istream( istype ) )226 istype * ?|?( istype * is, unsigned int * ui ) {227 scanfmt( is, "%u", ui );228 return is;229 } // ?|?230 231 forall( dtype istype | istream( istype ) )232 istype * ?|?( istype * is, long int * li ) {233 scanfmt( is, "%ld", li );234 return is;235 } // ?|?236 237 forall( dtype istype | istream( istype ) )238 istype * ?|?( istype * is, unsigned long int * ulli ) {239 scanfmt( is, "%lu", ulli );240 return is;241 } // ?|?242 243 forall( dtype istype | istream( istype ) )244 istype * ?|?( istype * is, long long int * lli ) {245 scanfmt( is, "%lld", lli );246 return is;247 } // ?|?248 249 forall( dtype istype | istream( istype ) )250 istype * ?|?( istype * is, unsigned long long int * ulli ) {251 scanfmt( is, "%llu", ulli );252 return is;253 } // ?|?254 255 256 forall( dtype istype | istream( istype ) )257 istype * ?|?( istype * is, float * f ) {258 scanfmt( is, "%f", f );259 return is;260 } // ?|?261 262 forall( dtype istype | istream( istype ) )263 istype * ?|?( istype * is, double * d ) {264 scanfmt( is, "%lf", d );265 return is;266 } // ?|?267 268 forall( dtype istype | istream( istype ) )269 istype * ?|?( istype * is, long double * ld ) {270 scanfmt( is, "%Lf", ld );271 return is;272 } // ?|?273 274 275 forall( dtype istype | istream( istype ) )276 istype * ?|?( istype * is, float _Complex * fc ) {277 float re, im;278 scanfmt( is, "%g%gi", &re, &im );279 *fc = re + im * _Complex_I;280 return is;281 } // ?|?282 283 forall( dtype istype | istream( istype ) )284 istype * ?|?( istype * is, double _Complex * dc ) {285 double re, im;286 scanfmt( is, "%lf%lfi", &re, &im );287 *dc = re + im * _Complex_I;288 return is;289 } // ?|?290 291 forall( dtype istype | istream( istype ) )292 istype * ?|?( istype * is, long double _Complex * ldc ) {293 long double re, im;294 scanfmt( is, "%Lf%Lfi", &re, &im );295 *ldc = re + im * _Complex_I;296 return is;297 } // ?|?298 299 _Istream_str1 str( char * s ) { _Istream_str1 s = { s }; return s; }300 forall( dtype istype | istream( istype ) )301 istype * ?|?( istype * is, _Istream_str1 str ) {302 scanfmt( is, "%s", str.s );303 return is;304 } // str305 306 _Istream_str2 str( char * s, int size ) { _Istream_str2 s = { s, size }; return s; }307 forall( dtype istype | istream( istype ) )308 istype * ?|?( istype * is, _Istream_str2 str ) {309 char buf[16];310 sprintf( buf, "%%%ds", str.size );311 scanfmt( is, buf, str.s );312 return is;313 } // str314 150 315 151 // Local Variables: // -
src/libcfa/stdlib
rbdad1679 r540ddb7d 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 16:52:25201613 // Update Count : 6 312 // Last Modified On : Fri Feb 5 15:21:18 2016 13 // Update Count : 61 14 14 // 15 15 … … 25 25 forall( type T ) T * malloc( void ); 26 26 forall( type T ) T * malloc( char fill ); 27 forall( type T ) T * malloc( size_t size ); 27 28 forall( type T ) T * malloc( T * ptr, size_t size ); 28 29 forall( type T ) T * malloc( T * ptr, size_t size, unsigned char fill ); -
src/libcfa/stdlib.c
rbdad1679 r540ddb7d 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Feb 23 21:02:54201613 // Update Count : 14 212 // Last Modified On : Wed Feb 10 15:45:56 2016 13 // Update Count : 140 14 14 // 15 15 … … 123 123 return ulli; 124 124 } 125 126 125 float ato( const char * ptr ) { 127 126 float f; … … 139 138 return ld; 140 139 } 141 142 140 float _Complex ato( const char * ptr ) { 143 141 float re, im; … … 174 172 return strtoull( sptr, eptr, base ); 175 173 } 176 177 174 float strto( const char * sptr, char ** eptr ) { 178 175 return strtof( sptr, eptr ); … … 184 181 return strtold( sptr, eptr ); 185 182 } 186 187 183 float _Complex strto( const char * sptr, char ** eptr ) { 188 184 float re, im;
Note:
See TracChangeset
for help on using the changeset viewer.