Changes in / [b3f9a0cb:89173242]
- Files:
-
- 11 added
- 4 deleted
- 40 edited
-
.gitignore (modified) (1 diff)
-
doc/refrat/refrat.tex (modified) (76 diffs)
-
doc/user/Makefile (deleted)
-
doc/user/indexstyle (deleted)
-
doc/user/user.bib (deleted)
-
doc/user/user.tex (deleted)
-
src/Parser/DeclarationNode.cc (modified) (25 diffs)
-
src/Parser/ExpressionNode.cc (modified) (2 diffs)
-
src/Parser/Parser.cc (modified) (1 diff)
-
src/Parser/TypedefTable.cc (modified) (2 diffs)
-
src/Parser/TypedefTable.h (modified) (3 diffs)
-
src/Parser/lex.cc (modified) (44 diffs)
-
src/Parser/lex.h (modified) (2 diffs)
-
src/Parser/lex.ll (modified) (4 diffs)
-
src/Parser/parser.cc (modified) (547 diffs)
-
src/Parser/parser.h (modified) (1 diff)
-
src/Parser/parser.yy (modified) (4 diffs)
-
src/ResolvExpr/Resolver.cc (modified) (2 diffs)
-
src/SymTab/Indexer.cc (modified) (6 diffs)
-
src/SymTab/Indexer.h (modified) (1 diff)
-
src/examples/constants.c (modified) (3 diffs)
-
src/examples/fstream_test.c (modified) (2 diffs)
-
src/examples/huge.c (modified) (1 diff)
-
src/examples/identity.c (modified) (1 diff)
-
src/examples/includes.c (modified) (6 diffs)
-
src/examples/it_out.c (modified) (5 diffs)
-
src/examples/limits.c (modified) (1 diff)
-
src/examples/new.c (modified) (1 diff)
-
src/examples/prolog.c (modified) (2 diffs)
-
src/examples/quad.c (modified) (1 diff)
-
src/examples/random.c (modified) (1 diff)
-
src/examples/searchsort.c (modified) (2 diffs)
-
src/examples/simplePoly.c (modified) (1 diff)
-
src/examples/simpler.c (modified) (1 diff)
-
src/examples/specialize.c (modified) (2 diffs)
-
src/examples/square.c (modified) (1 diff)
-
src/examples/sum.c (modified) (2 diffs)
-
src/examples/twice.c (modified) (2 diffs)
-
src/libcfa/Makefile.am (modified) (2 diffs)
-
src/libcfa/Makefile.in (modified) (1 diff)
-
src/libcfa/bfd.h (added)
-
src/libcfa/bfdlink.h (added)
-
src/libcfa/builtins.cf (modified) (1 diff)
-
src/libcfa/demangle.h (added)
-
src/libcfa/dialog.h (added)
-
src/libcfa/evdns.h (added)
-
src/libcfa/evhttp.h (added)
-
src/libcfa/evrpc.h (added)
-
src/libcfa/fcntl.h (added)
-
src/libcfa/form.h (added)
-
src/libcfa/gcrypt.h (added)
-
src/libcfa/iostream.c (modified) (2 diffs)
-
src/libcfa/math.h (added)
-
src/libcfa/stdlib (modified) (4 diffs)
-
src/libcfa/stdlib.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
rb3f9a0cb r89173242 30 30 31 31 # generated by latex 32 *.aux33 *.bbl34 *.blg35 *.brf36 *.dvi37 *.idx38 *.ilg39 *.ind40 *.log41 *.out42 *.pdf43 *.ps44 *.toc32 doc/refrat/refrat.aux 33 doc/refrat/refrat.bbl 34 doc/refrat/refrat.blg 35 doc/refrat/refrat.brf 36 doc/refrat/refrat.dvi 37 doc/refrat/refrat.idx 38 doc/refrat/refrat.ilg 39 doc/refrat/refrat.ind 40 doc/refrat/refrat.log 41 doc/refrat/refrat.out 42 doc/refrat/refrat.pdf 43 doc/refrat/refrat.ps 44 doc/refrat/refrat.toc -
doc/refrat/refrat.tex
rb3f9a0cb r89173242 17 17 \usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref} 18 18 \usepackage{breakurl} 19 \ renewcommand{\UrlFont}{\small\sf}19 \urlstyle{sf} 20 20 21 21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 23 23 % Names used in the document. 24 24 25 \newcommand{\CFA}{C $\forall$\xspace} % set language symbolicname26 \newcommand{\CF L}{Cforall\xspace} % set language textname25 \newcommand{\CFA}{Cforall\xspace} % set language text name 26 \newcommand{\CFAA}{C$\forall$\xspace} % set language symbolic name 27 27 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name 28 28 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name) … … 33 33 34 34 \makeatletter 35 % allow escape sequence in lstinline36 %\usepackage{etoolbox}37 %\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}38 39 \renewcommand\small{%40 \@setfontsize\small{8.5}{11}%41 \abovedisplayskip 8.5pt \@plus 3pt \@minus 4pt42 \abovedisplayshortskip \z@ \@plus 2pt43 \belowdisplayshortskip 4pt \@plus 2pt \@minus 2pt44 \def\@listi{\leftmargin\leftmargini45 \topsep 4pt \@plus 2pt \@minus 2pt46 \parsep 2pt \@pluspt \@minuspt47 \itemsep \parsep}%48 \belowdisplayskip \abovedisplayskip49 }50 \usepackage{relsize} % must be after change to small51 52 35 \renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}} 53 36 \renewenvironment{itemize}{\begin{list}{\labelitemi}{\topsep=5pt\itemsep=5pt\parsep=0pt}}{\end{list}} … … 76 59 \renewcommand\section{\@startsection{section}{1}{\z@}{-3.0ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\large\bfseries}} 77 60 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}} 78 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\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}} 79 62 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-2.0ex \@plus -1ex \@minus -.2ex}{-1em}{\normalfont\normalsize\bfseries}} 80 63 81 % index macros82 64 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}} 83 65 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}} … … 115 97 116 98 % blocks and titles 99 \newcommand{\define}[1]{\emph{#1\/}\index{#1}} 117 100 \newenvironment{rationale}{% 118 101 \begin{quotation}\noindent$\Box$\enspace … … 120 103 \hfill\enspace$\Box$\end{quotation} 121 104 }% 122 \newcommand{\define}[1]{\emph{#1\/}\index{#1}}123 105 \newcommand{\rewrite}{\(\Rightarrow\)} 124 106 \newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent} … … 149 131 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}} 150 132 151 % CFA based on ANSI C133 % adjust listings macros 152 134 \lstdefinelanguage{CFA}[ANSI]{C}% 153 {morekeywords={asm,_Alignas,_Alignof,_At,_Atomic,_Bool,catch,catchResume,choose,_Complex, trait,disable,dtype,enable,154 fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,lvalue,_Noreturn, otype,restrict,_Static_assert,155 _Thread_local,throw,throwResume,try, },135 {morekeywords={asm,_Alignas,_Alignof,_At,_Atomic,_Bool,catch,catchResume,choose,_Complex,context,disable,dtype,enable, 136 fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,lvalue,_Noreturn,restrict,_Static_assert, 137 _Thread_local,throw,throwResume,try,type,}, 156 138 }% 157 139 … … 159 141 language=CFA, 160 142 columns=flexible, 161 basicstyle=\sf\ relsize{-1},143 basicstyle=\sf\small, 162 144 tabsize=4, 163 145 xleftmargin=\parindent, 164 146 escapechar=@, 165 147 keepspaces=true, 166 showstringspaces=false,167 showlines=true,148 %showtabs=true, 149 %tab=\rightarrowfill, 168 150 }% 169 151 … … 192 174 193 175 \title{\Huge 194 \CFA (\CF L) Reference Manual and Rationale176 \CFA (\CFAA) Reference Manual and Rationale 195 177 }% title 196 178 \author{\huge … … 298 280 An instantiation of the generic type is written by specifying the type parameters in parentheses after the name of the generic type generator: 299 281 \begin{lstlisting} 300 forall( otype T | sumable( T ) ) struct pair {282 forall( type T | sumable( T ) ) struct pair { 301 283 T x; 302 284 T y; … … 310 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: 311 293 \begin{lstlisting} 312 forall( otype T ) void swap( pair(T) *p ) {294 forall( type T ) void swap( pair(T) *p ) { 313 295 T z = p->x; 314 296 p->x = p->y; … … 320 302 \subsubsection{Constraints} 321 303 322 To avoid unduly constraining implementors, the generic type generator definition must be visible at any point where it is instantiated. 323 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. 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. 324 305 325 306 \examples 326 307 \begin{lstlisting} 327 forall( otype T ) struct A;328 329 forall( otype T ) struct B {308 forall( type T ) struct A; 309 310 forall( type T ) struct B { 330 311 A(T) *a; // legal, but cannot instantiate B(T) 331 312 }; … … 333 314 B(T) x; // illegal, *x.a is of an incomplete generic type 334 315 335 forall( otype T ) struct A {316 forall( type T ) struct A { 336 317 B( T ) *b; 337 318 }; … … 340 321 341 322 // box.h: 342 forall( otype T ) struct box;343 forall( otype T ) box( T ) *make_box( T );344 forall( otype T ) void use_box( box( T ) *b );323 forall( type T ) struct box; 324 forall( type T ) box( T ) *make_box( T ); 325 forall( type T ) void use_box( box( T ) *b ); 345 326 346 327 // main.c: … … 429 410 430 411 \subsubsection{Specialization} 431 A function or value whose type is polymorphic may be implicitly converted to one whose type is \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. 412 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}. 432 414 Any value that is legal for the inferred parameter may be used, including other inferred parameters. 433 415 434 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 type} with or can be specialized to the type of the assertion parameter.435 The assertion parameter is bound to that object or function.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. 436 418 437 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. … … 440 422 The type 441 423 \begin{lstlisting} 442 forall( otype T, otype U ) void (*)( T, U );424 forall( type T, type U ) void (*)( T, U ); 443 425 \end{lstlisting} 444 426 can be specialized to (among other things) 445 427 \begin{lstlisting} 446 forall( otype T ) void (*)( T, T ); // U bound to T447 forall( otype T ) void (*)( T, real ); // U bound to real448 forall( otype U ) void (*)( real, U ); // T bound to real428 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 449 431 void f( real, real ); // both bound to real 450 432 \end{lstlisting} … … 452 434 The type 453 435 \begin{lstlisting} 454 forall( otype T | T ?+?( T, T ) ) T (*)( T );436 forall( type T | T ?+?( T, T ) ) T (*)( T ); 455 437 \end{lstlisting} 456 438 can be specialized to (among other things) … … 512 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: 513 495 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. 514 Otherwise, \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1. 496 Otherwise, 497 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1. 515 498 516 499 \item … … 525 508 \rhs \lstinline$forall$ 526 509 \rhs \lstinline$lvalue$ 527 \rhs \lstinline$ trait$510 \rhs \lstinline$context$ 528 511 \rhs \lstinline$dtype$ 529 512 \rhs \lstinline$ftype$ … … 556 539 A \nonterm{constant-expression} that evaluates to 0 is effectively compatible with every pointer type. 557 540 558 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 0 as a special case. 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. 559 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. 560 544 Defining special constants for a user-defined type is more efficient than defining a conversion to the type from \lstinline$_Bool$. … … 852 836 \predefined 853 837 \begin{lstlisting} 854 forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@855 forall( otype T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );856 forall( otype T ) lvalue const T ?[?]( const T *, ptrdiff_t );857 forall( otype T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );858 forall( otype T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );859 forall( otype T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );860 forall( otype T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );861 forall( otype T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );862 forall( otype T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );863 forall( otype T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );864 forall( otype T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );865 forall( otype T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );866 forall( otype T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );867 forall( otype T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );868 forall( otype T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );869 forall( otype T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );838 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@ 839 forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t ); 840 forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t ); 841 forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t ); 842 forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t ); 843 forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t ); 844 forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t ); 845 forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t ); 846 forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t ); 847 forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t ); 848 forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t ); 849 forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t ); 850 forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t ); 851 forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t ); 852 forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t ); 853 forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t ); 870 854 \end{lstlisting} 871 855 \semantics … … 930 914 \begin{rationale} 931 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}. 932 For instance, it should be possible to replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( otype T ) T f( T );$'' without affecting any calls of \lstinline$f$.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$. 933 917 934 918 \CFA\index{deficiencies!generalizability} does not fully possess this property, because … … 944 928 f = g( d, f ); // (3) (unsafe conversion to float) 945 929 \end{lstlisting} 946 If \lstinline$g$ was replaced by ``\lstinline$forall( otype T ) T g( T, T );$'', the first and second calls would be unaffected, but the third would change: \lstinline$f$ would be converted to930 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 947 931 \lstinline$double$, and the result would be a \lstinline$double$. 948 932 949 933 Another example is the function ``\lstinline$void h( int *);$''. 950 934 This function can be passed a 951 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( otype T ) void h( T *);$'' can not.935 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$'' can not. 952 936 In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an object type. 953 937 If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any} object type, which is undesirable. … … 957 941 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package. 958 942 \begin{lstlisting} 959 extern otype Derivative;943 extern type Derivative; 960 944 extern double ?()( Derivative, double ); 961 945 extern Derivative derivative_of( double (*f)( double ) ); … … 978 962 979 963 \begin{lstlisting} 980 forall( otype T ) T h( T );964 forall( type T ) T h( T ); 981 965 double d = h( 1.5 ); 982 966 \end{lstlisting} … … 985 969 986 970 \begin{lstlisting} 987 forall( otype T, otype U ) void g( T, U ); // (4)988 forall( otype T ) void g( T, T ); // (5)989 forall( otype T ) void g( T, long ); // (6)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) 990 974 void g( long, long ); // (7) 991 975 double d; … … 1007 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. 1008 992 \begin{lstlisting} 1009 forall( otype T ) T min( T, T );993 forall( type T ) T min( T, T ); 1010 994 double max( double, double ); 1011 trait min_max( T ) {@\impl{min_max}@995 context min_max( T ) {@\impl{min_max}@ 1012 996 T min( T, T ); 1013 997 T max( T, T ); 1014 998 } 1015 forall( otype U | min_max( U ) ) void shuffle( U, U );999 forall( type U | min_max( U ) ) void shuffle( U, U ); 1016 1000 shuffle( 9, 10 ); 1017 1001 \end{lstlisting} … … 1063 1047 long double ?++( volatile long double * ), ?++( _Atomic volatile long double * ); 1064 1048 1065 forall( otype T ) T * ?++( T * restrict volatile * ), * ?++( T * _Atomic restrict volatile * );1066 forall( otype T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), * ?++( _Atomic T * _Atomic restrict volatile * );1067 forall( otype T ) const T * ?++( const T * restrict volatile * ), * ?++( const T * _Atomic restrict volatile * );1068 forall( otype T ) volatile T * ?++( volatile T * restrict volatile * ), * ?++( volatile T * _Atomic restrict volatile * );1069 forall( otype T ) restrict T * ?++( restrict T * restrict volatile * ), * ?++( restrict T * _Atomic restrict volatile * );1070 forall( otype T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),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 * ); 1054 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ), 1071 1055 * ?++( _Atomic const T * _Atomic restrict volatile * ); 1072 forall( otype T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),1056 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ), 1073 1057 * ?++( _Atomic restrict T * _Atomic restrict volatile * ); 1074 forall( otype T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),1058 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ), 1075 1059 * ?++( _Atomic volatile T * _Atomic restrict volatile * ); 1076 forall( otype T ) const restrict T * ?++( const restrict T * restrict volatile * ),1060 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ), 1077 1061 * ?++( const restrict T * _Atomic restrict volatile * ); 1078 forall( otype T ) const volatile T * ?++( const volatile T * restrict volatile * ),1062 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ), 1079 1063 * ?++( const volatile T * _Atomic restrict volatile * ); 1080 forall( otype T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),1064 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ), 1081 1065 * ?++( restrict volatile T * _Atomic restrict volatile * ); 1082 forall( otype T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),1066 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ), 1083 1067 * ?++( _Atomic const restrict T * _Atomic restrict volatile * ); 1084 forall( otype T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),1068 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ), 1085 1069 * ?++( _Atomic const volatile T * _Atomic restrict volatile * ); 1086 forall( otype T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),1070 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ), 1087 1071 * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1088 forall( otype T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),1072 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ), 1089 1073 * ?++( const restrict volatile T * _Atomic restrict volatile * ); 1090 forall( otype T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),1074 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ), 1091 1075 * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1092 1076 … … 1107 1091 long double ?--( volatile long double * ), ?--( _Atomic volatile long double * ); 1108 1092 1109 forall( otype T ) T * ?--( T * restrict volatile * ), * ?--( T * _Atomic restrict volatile * );1110 forall( otype T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), * ?--( _Atomic T * _Atomic restrict volatile * );1111 forall( otype T ) const T * ?--( const T * restrict volatile * ), * ?--( const T * _Atomic restrict volatile * );1112 forall( otype T ) volatile T * ?--( volatile T * restrict volatile * ), * ?--( volatile T * _Atomic restrict volatile * );1113 forall( otype T ) restrict T * ?--( restrict T * restrict volatile * ), * ?--( restrict T * _Atomic restrict volatile * );1114 forall( otype T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),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 * ); 1098 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ), 1115 1099 * ?--( _Atomic const T * _Atomic restrict volatile * ); 1116 forall( otype T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),1100 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ), 1117 1101 * ?--( _Atomic restrict T * _Atomic restrict volatile * ); 1118 forall( otype T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),1102 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ), 1119 1103 * ?--( _Atomic volatile T * _Atomic restrict volatile * ); 1120 forall( otype T ) const restrict T * ?--( const restrict T * restrict volatile * ),1104 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ), 1121 1105 * ?--( const restrict T * _Atomic restrict volatile * ); 1122 forall( otype T ) const volatile T * ?--( const volatile T * restrict volatile * ),1106 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ), 1123 1107 * ?--( const volatile T * _Atomic restrict volatile * ); 1124 forall( otype T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),1108 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ), 1125 1109 * ?--( restrict volatile T * _Atomic restrict volatile * ); 1126 forall( otype T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),1110 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ), 1127 1111 * ?--( _Atomic const restrict T * _Atomic restrict volatile * ); 1128 forall( otype T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),1112 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ), 1129 1113 * ?--( _Atomic const volatile T * _Atomic restrict volatile * ); 1130 forall( otype T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),1114 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ), 1131 1115 * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1132 forall( otype T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),1116 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ), 1133 1117 * ?--( const restrict volatile T * _Atomic restrict volatile * ); 1134 forall( otype T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),1118 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ), 1135 1119 * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1136 1120 \end{lstlisting} … … 1211 1195 The expression would be valid if \lstinline$?++$ were declared by 1212 1196 \begin{lstlisting} 1213 forall( otype T ) T * ?++( T * * );1197 forall( type T ) T * ?++( T * * ); 1214 1198 \end{lstlisting} with \lstinline$T$ inferred to be \lstinline$char$. 1215 1199 … … 1219 1203 Hence the actual predefined function is 1220 1204 \begin{lstlisting} 1221 forall( otype T ) T * ?++( T * restrict volatile * );1205 forall( type T ) T * ?++( T * restrict volatile * ); 1222 1206 \end{lstlisting} which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add 1223 1207 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so constant pointers cannot be incremented.) … … 1233 1217 \lstinline$char const volatile *$, so a new overloading is needed: 1234 1218 \begin{lstlisting} 1235 forall( otype T ) T const volatile * ?++( T const volatile *restrict volatile * );1219 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * ); 1236 1220 \end{lstlisting} 1237 1221 One overloading is needed for each combination of qualifiers in the pointed-at type\index{deficiencies!pointers to qualified types}. … … 1241 1225 The \lstinline$restrict$ qualifier is handled just like \lstinline$const$ and \lstinline$volatile$ in the previous case: 1242 1226 \begin{lstlisting} 1243 forall( otype T ) T restrict * ?++( T restrict *restrict volatile * );1227 forall( type T ) T restrict * ?++( T restrict *restrict volatile * ); 1244 1228 \end{lstlisting} with \lstinline$T$ inferred to be \lstinline$float *$. 1245 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. … … 1299 1283 long double ++?( volatile long double * ), ++?( _Atomic volatile long double * ); 1300 1284 1301 forall( otype T ) T * ++?( T * restrict volatile * ), * ++?( T * _Atomic restrict volatile * );1302 forall( otype T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), * ++?( _Atomic T * _Atomic restrict volatile * );1303 forall( otype T ) const T * ++?( const T * restrict volatile * ), * ++?( const T * _Atomic restrict volatile * );1304 forall( otype T ) volatile T * ++?( volatile T * restrict volatile * ), * ++?( volatile T * _Atomic restrict volatile * );1305 forall( otype T ) restrict T * ++?( restrict T * restrict volatile * ), * ++?( restrict T * _Atomic restrict volatile * );1306 forall( otype T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),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 * ); 1290 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ), 1307 1291 * ++?( _Atomic const T * _Atomic restrict volatile * ); 1308 forall( otype T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),1292 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ), 1309 1293 * ++?( _Atomic volatile T * _Atomic restrict volatile * ); 1310 forall( otype T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),1294 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ), 1311 1295 * ++?( _Atomic restrict T * _Atomic restrict volatile * ); 1312 forall( otype T ) const volatile T * ++?( const volatile T * restrict volatile * ),1296 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ), 1313 1297 * ++?( const volatile T * _Atomic restrict volatile * ); 1314 forall( otype T ) const restrict T * ++?( const restrict T * restrict volatile * ),1298 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ), 1315 1299 * ++?( const restrict T * _Atomic restrict volatile * ); 1316 forall( otype T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),1300 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ), 1317 1301 * ++?( restrict volatile T * _Atomic restrict volatile * ); 1318 forall( otype T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),1302 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ), 1319 1303 * ++?( _Atomic const volatile T * _Atomic restrict volatile * ); 1320 forall( otype T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),1304 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ), 1321 1305 * ++?( _Atomic const restrict T * _Atomic restrict volatile * ); 1322 forall( otype T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),1306 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ), 1323 1307 * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1324 forall( otype T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),1308 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ), 1325 1309 * ++?( const restrict volatile T * _Atomic restrict volatile * ); 1326 forall( otype T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),1310 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ), 1327 1311 * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1328 1312 … … 1343 1327 long double --?( volatile long double * ), --?( _Atomic volatile long double * ); 1344 1328 1345 forall( otype T ) T * --?( T * restrict volatile * ), * --?( T * _Atomic restrict volatile * );1346 forall( otype T ) _Atomic T * --?( _Atomic T * restrict volatile * ), * --?( _Atomic T * _Atomic restrict volatile * );1347 forall( otype T ) const T * --?( const T * restrict volatile * ), * --?( const T * _Atomic restrict volatile * );1348 forall( otype T ) volatile T * --?( volatile T * restrict volatile * ), * --?( volatile T * _Atomic restrict volatile * );1349 forall( otype T ) restrict T * --?( restrict T * restrict volatile * ), * --?( restrict T * _Atomic restrict volatile * );1350 forall( otype T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),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 * ); 1334 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ), 1351 1335 * --?( _Atomic const T * _Atomic restrict volatile * ); 1352 forall( otype T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),1336 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ), 1353 1337 * --?( _Atomic volatile T * _Atomic restrict volatile * ); 1354 forall( otype T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),1338 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ), 1355 1339 * --?( _Atomic restrict T * _Atomic restrict volatile * ); 1356 forall( otype T ) const volatile T * --?( const volatile T * restrict volatile * ),1340 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ), 1357 1341 * --?( const volatile T * _Atomic restrict volatile * ); 1358 forall( otype T ) const restrict T * --?( const restrict T * restrict volatile * ),1342 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ), 1359 1343 * --?( const restrict T * _Atomic restrict volatile * ); 1360 forall( otype T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),1344 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ), 1361 1345 * --?( restrict volatile T * _Atomic restrict volatile * ); 1362 forall( otype T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),1346 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ), 1363 1347 * --?( _Atomic const volatile T * _Atomic restrict volatile * ); 1364 forall( otype T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),1348 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ), 1365 1349 * --?( _Atomic const restrict T * _Atomic restrict volatile * ); 1366 forall( otype T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),1350 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ), 1367 1351 * --?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1368 forall( otype T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),1352 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ), 1369 1353 * --?( const restrict volatile T * _Atomic restrict volatile * ); 1370 forall( otype T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),1354 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ), 1371 1355 * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1372 1356 \end{lstlisting} … … 1396 1380 \predefined 1397 1381 \begin{lstlisting} 1398 forall( otype T ) lvalue T *?( T * );1399 forall( otype T ) _Atomic lvalue T *?( _Atomic T * );1400 forall( otype T ) const lvalue T *?( const T * );1401 forall( otype T ) volatile lvalue T *?( volatile T * );1402 forall( otype T ) restrict lvalue T *?( restrict T * );1403 forall( otype T ) _Atomic const lvalue T *?( _Atomic const T * );1404 forall( otype T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );1405 forall( otype T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );1406 forall( otype T ) const volatile lvalue T *?( const volatile T * );1407 forall( otype T ) const restrict lvalue T *?( const restrict T * );1408 forall( otype T ) restrict volatile lvalue T *?( restrict volatile T * );1409 forall( otype T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );1410 forall( otype T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );1411 forall( otype T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );1412 forall( otype T ) const restrict volatile lvalue T *?( const restrict volatile T * );1413 forall( otype T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );1382 forall( type T ) lvalue T *?( T * ); 1383 forall( type T ) _Atomic lvalue T *?( _Atomic T * ); 1384 forall( type T ) const lvalue T *?( const T * ); 1385 forall( type T ) volatile lvalue T *?( volatile T * ); 1386 forall( type T ) restrict lvalue T *?( restrict T * ); 1387 forall( type T ) _Atomic const lvalue T *?( _Atomic const T * ); 1388 forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * ); 1389 forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * ); 1390 forall( type T ) const volatile lvalue T *?( const volatile T * ); 1391 forall( type T ) const restrict lvalue T *?( const restrict T * ); 1392 forall( type T ) restrict volatile lvalue T *?( restrict volatile T * ); 1393 forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * ); 1394 forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * ); 1395 forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * ); 1396 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * ); 1397 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * ); 1414 1398 forall( ftype FT ) FT *?( FT * ); 1415 1399 \end{lstlisting} … … 1526 1510 \begin{rationale} 1527 1511 \begin{lstlisting} 1528 otype Pair = struct { int first, second; };1512 type Pair = struct { int first, second; }; 1529 1513 size_t p_size = sizeof(Pair); // constant expression 1530 extern otype Rational;@\use{Rational}@1514 extern type Rational;@\use{Rational}@ 1531 1515 size_t c_size = sizeof(Rational); // non-constant expression 1532 1516 forall(type T) T f(T p1, T p2) { … … 1652 1636 Consider 1653 1637 \begin{lstlisting} 1654 forall( otype T | T ?*?( T, T ) ) T square( T );1638 forall( type T | T ?*?( T, T ) ) T square( T ); 1655 1639 short s; 1656 1640 square( s ); … … 1663 1647 A more troubling example is 1664 1648 \begin{lstlisting} 1665 forall( otype T | ?*?( T, T ) ) T product( T[], int n );1649 forall( type T | ?*?( T, T ) ) T product( T[], int n ); 1666 1650 short sa[5]; 1667 1651 product( sa, 5); … … 1720 1704 ?+?( _Complex long double, _Complex long double ), ?-?( _Complex long double, _Complex long double ); 1721 1705 1722 forall( otype T ) T * ?+?( T *, ptrdiff_t ), * ?+?( ptrdiff_t, T * ), * ?-?( T *, ptrdiff_t );1723 forall( otype T ) _Atomic T * ?+?( _Atomic T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic T * ),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 * ), 1724 1708 * ?-?( _Atomic T *, ptrdiff_t ); 1725 forall( otype T ) const T * ?+?( const T *, ptrdiff_t ), * ?+?( ptrdiff_t, const T * ),1709 forall( type T ) const T * ?+?( const T *, ptrdiff_t ), * ?+?( ptrdiff_t, const T * ), 1726 1710 * ?-?( const T *, ptrdiff_t ); 1727 forall( otype T ) restrict T * ?+?( restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict T * ),1711 forall( type T ) restrict T * ?+?( restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict T * ), 1728 1712 * ?-?( restrict T *, ptrdiff_t ); 1729 forall( otype T ) volatile T * ?+?( volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, volatile T * ),1713 forall( type T ) volatile T * ?+?( volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, volatile T * ), 1730 1714 * ?-?( volatile T *, ptrdiff_t ); 1731 forall( otype T ) _Atomic const T * ?+?( _Atomic const T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic const T * ),1715 forall( type T ) _Atomic const T * ?+?( _Atomic const T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic const T * ), 1732 1716 * ?-?( _Atomic const T *, ptrdiff_t ); 1733 forall( otype T ) _Atomic restrict T * ?+?( _Atomic restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic restrict T * ),1717 forall( type T ) _Atomic restrict T * ?+?( _Atomic restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic restrict T * ), 1734 1718 * ?-?( _Atomic restrict T *, ptrdiff_t ); 1735 forall( otype T ) _Atomic volatile T * ?+?( _Atomic volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic volatile T * ),1719 forall( type T ) _Atomic volatile T * ?+?( _Atomic volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic volatile T * ), 1736 1720 * ?-?( _Atomic volatile T *, ptrdiff_t ); 1737 forall( otype T ) const restrict T * ?+?( const restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, const restrict T * ),1721 forall( type T ) const restrict T * ?+?( const restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, const restrict T * ), 1738 1722 * ?-?( const restrict T *, ptrdiff_t ); 1739 forall( otype T ) const volatile T * ?+?( const volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, const volatile T * ),1723 forall( type T ) const volatile T * ?+?( const volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, const volatile T * ), 1740 1724 * ?-?( const volatile T *, ptrdiff_t ); 1741 forall( otype T ) restrict volatile T * ?+?( restrict volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict volatile T * ),1725 forall( type T ) restrict volatile T * ?+?( restrict volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict volatile T * ), 1742 1726 * ?-?( restrict volatile T *, ptrdiff_t ); 1743 forall( otype T ) _Atomic const restrict T * ?+?( _Atomic const restrict T *, ptrdiff_t ),1727 forall( type T ) _Atomic const restrict T * ?+?( _Atomic const restrict T *, ptrdiff_t ), 1744 1728 * ?+?( ptrdiff_t, _Atomic const restrict T * ), 1745 1729 * ?-?( _Atomic const restrict T *, ptrdiff_t ); 1746 forall( otype T ) ptrdiff_t1730 forall( type T ) ptrdiff_t 1747 1731 * ?-?( const restrict volatile T *, const restrict volatile T * ), 1748 1732 * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * ); … … 2068 2052 2069 2053 \begin{lstlisting} 2070 extern otype Rational;@\use{Rational}@2054 extern type Rational;@\use{Rational}@ 2071 2055 extern const Rational 0;@\use{0}@ 2072 2056 extern int ?!=?( Rational, Rational ); … … 2111 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 2112 2096 \begin{lstlisting} 2113 forall( otype T ) T cond( int, T, T );2097 forall( type T ) T cond( int, T, T ); 2114 2098 forall( dtype D ) void * cond( int, D *, void * ), * cond( int, void *, D * ); 2115 2099 forall( dtype D ) _atomic void * cond( … … 2471 2455 \predefined 2472 2456 \begin{lstlisting} 2473 forall( otype T ) T2457 forall( type T ) T 2474 2458 * ?+=?( T * restrict volatile *, ptrdiff_t ), 2475 2459 * ?-=?( T * restrict volatile *, ptrdiff_t ), 2476 2460 * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ), 2477 2461 * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t ); 2478 forall( otype T ) T _Atomic2462 forall( type T ) T _Atomic 2479 2463 * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ), 2480 2464 * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ), 2481 2465 * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ), 2482 2466 * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ); 2483 forall( otype T ) T const2467 forall( type T ) T const 2484 2468 * ?+=?( T const * restrict volatile *, ptrdiff_t ), 2485 2469 * ?-=?( T const * restrict volatile *, ptrdiff_t ), 2486 2470 * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ), 2487 2471 * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t ); 2488 forall( otype T ) T restrict2472 forall( type T ) T restrict 2489 2473 * ?+=?( T restrict * restrict volatile *, ptrdiff_t ), 2490 2474 * ?-=?( T restrict * restrict volatile *, ptrdiff_t ), 2491 2475 * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ), 2492 2476 * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ); 2493 forall( otype T ) T volatile2477 forall( type T ) T volatile 2494 2478 * ?+=?( T volatile * restrict volatile *, ptrdiff_t ), 2495 2479 * ?-=?( T volatile * restrict volatile *, ptrdiff_t ), 2496 2480 * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ), 2497 2481 * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ); 2498 forall( otype T ) T _Atomic const2482 forall( type T ) T _Atomic const 2499 2483 * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ), 2500 2484 * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ), 2501 2485 * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ), 2502 2486 * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ); 2503 forall( otype T ) T _Atomic restrict2487 forall( type T ) T _Atomic restrict 2504 2488 * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), 2505 2489 * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), 2506 2490 * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ), 2507 2491 * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ); 2508 forall( otype T ) T _Atomic volatile2492 forall( type T ) T _Atomic volatile 2509 2493 * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), 2510 2494 * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), 2511 2495 * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ), 2512 2496 * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ); 2513 forall( otype T ) T const restrict2497 forall( type T ) T const restrict 2514 2498 * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ), 2515 2499 * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ), 2516 2500 * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ), 2517 2501 * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ); 2518 forall( otype T ) T const volatile2502 forall( type T ) T const volatile 2519 2503 * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ), 2520 2504 * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ), 2521 2505 * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ), 2522 2506 * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ); 2523 forall( otype T ) T restrict volatile2507 forall( type T ) T restrict volatile 2524 2508 * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ), 2525 2509 * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ), 2526 2510 * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 2527 2511 * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 2528 forall( otype T ) T _Atomic const restrict2512 forall( type T ) T _Atomic const restrict 2529 2513 * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), 2530 2514 * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), 2531 2515 * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ), 2532 2516 * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ); 2533 forall( otype T ) T _Atomic const volatile2517 forall( type T ) T _Atomic const volatile 2534 2518 * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), 2535 2519 * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), 2536 2520 * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ), 2537 2521 * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ); 2538 forall( otype T ) T _Atomic restrict volatile2522 forall( type T ) T _Atomic restrict volatile 2539 2523 * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), 2540 2524 * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), 2541 2525 * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 2542 2526 * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 2543 forall( otype T ) T const restrict volatile2527 forall( type T ) T const restrict volatile 2544 2528 * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), 2545 2529 * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), 2546 2530 * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 2547 2531 * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 2548 forall( otype T ) T _Atomic const restrict volatile2532 forall( type T ) T _Atomic const restrict volatile 2549 2533 * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), 2550 2534 * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), … … 2858 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. 2859 2843 \begin{lstlisting} 2860 forall( otype T ) struct Pair { T a, b;2844 forall( type T ) struct Pair { T a, b; 2861 2845 } mkPair( T, T ); // illegal 2862 2846 \end{lstlisting} … … 2883 2867 If this restriction were lifted, it would be possible to write 2884 2868 \begin{lstlisting} 2885 forall( otype T ) T * alloc( void );@\use{alloc}@ int *p = alloc();2869 forall( type T ) T * alloc( void );@\use{alloc}@ int *p = alloc(); 2886 2870 \end{lstlisting} 2887 2871 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an … … 2892 2876 \lstinline$T$: 2893 2877 \begin{lstlisting} 2894 forall( otype T ) T * alloc( T initial_value );@\use{alloc}@2878 forall( type T ) T * alloc( T initial_value );@\use{alloc}@ 2895 2879 \end{lstlisting} 2896 2880 \end{rationale} … … 2915 2899 \begin{lstlisting} 2916 2900 int fi( int ); 2917 forall( otype T ) T fT( T );2901 forall( type T ) T fT( T ); 2918 2902 \end{lstlisting} 2919 2903 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a … … 2921 2905 \begin{lstlisting} 2922 2906 int (*pfi )( int ) = fi; 2923 forall( otype T ) T (*pfT )( T ) = fT;2907 forall( type T ) T (*pfT )( T ) = fT; 2924 2908 \end{lstlisting} 2925 2909 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not polymorphic, but the function it points at is. … … 2928 2912 return pfi; 2929 2913 } 2930 forall( otype T ) T (*fvpfT( void ))( T ) {2914 forall( type T ) T (*fvpfT( void ))( T ) { 2931 2915 return pfT; 2932 2916 } … … 2934 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. 2935 2919 \begin{lstlisting} 2936 forall( otype T ) int ( *fTpfi( T ) )( int );2937 forall( otype T ) T ( *fTpfT( T ) )( T );2938 forall( otype T, otype U ) U ( *fTpfU( T ) )( U );2920 forall( type T ) int ( *fTpfi( T ) )( int ); 2921 forall( type T ) T ( *fTpfT( T ) )( T ); 2922 forall( type T, type U ) U ( *fTpfU( T ) )( U ); 2939 2923 \end{lstlisting} 2940 2924 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer. … … 2946 2930 \lstinline$char *$. 2947 2931 \begin{lstlisting} 2948 forall( otype T, otype U, otype V ) U * f( T *, U, V * const );2949 forall( otype U, otype V, otype W ) U * g( V *, U, W * const );2932 forall( type T, type U, type V ) U * f( T *, U, V * const ); 2933 forall( type U, type V, type W ) U * g( V *, U, W * const ); 2950 2934 \end{lstlisting} 2951 2935 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. … … 2955 2939 Replacing every \(f_i\) by \(g_i\) in \(f\) gives 2956 2940 \begin{lstlisting} 2957 forall( otype V, otype U, otype W ) U * f( V *, U, W * const );2941 forall( type V, type U, type W ) U * f( V *, U, W * const ); 2958 2942 \end{lstlisting} which has a return type and parameter list that is compatible with \(g\). 2959 2943 \begin{rationale} … … 3143 3127 \examples 3144 3128 \begin{lstlisting} 3145 forall( otype T | T ?*?( T, T ))@\use{?*?}@3129 forall( type T | T ?*?( T, T ))@\use{?*?}@ 3146 3130 T square( T val ) {@\impl{square}@ 3147 3131 return val + val; 3148 3132 } 3149 trait summable( otype T ) {@\impl{summable}@3133 context summable( type T ) {@\impl{summable}@ 3150 3134 T ?+=?( T *, T );@\use{?+=?}@ 3151 3135 const T 0;@\use{0}@ 3152 3136 }; 3153 trait list_of( otype List, otype Element ) {@\impl{list_of}@3137 context list_of( type List, type Element ) {@\impl{list_of}@ 3154 3138 Element car( List ); 3155 3139 List cdr( List ); … … 3158 3142 int is_nil( List ); 3159 3143 }; 3160 trait sum_list( otype List, otype Element | summable( Element ) | list_of( List, Element ) ) {};3144 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {}; 3161 3145 \end{lstlisting} 3162 3146 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added up. … … 3220 3204 Incomplete type declarations allow compact mutually-recursive types. 3221 3205 \begin{lstlisting} 3222 otype t1; // incomplete type declaration3223 otype t2 = struct { t1 * p; ... };3224 otype t1 = struct { t2 * p; ... };3206 type t1; // incomplete type declaration 3207 type t2 = struct { t1 * p; ... }; 3208 type t1 = struct { t2 * p; ... }; 3225 3209 \end{lstlisting} 3226 3210 Without them, mutual recursion could be handled by declaring mutually recursive structures, then initializing the types to those structures. 3227 3211 \begin{lstlisting} 3228 3212 struct s1; 3229 otype t2 = struct s2 { struct s1 * p; ... };3230 otype t1 = struct s1 { struct s2 * p; ... };3213 type t2 = struct s2 { struct s1 * p; ... }; 3214 type t1 = struct s1 { struct s2 * p; ... }; 3231 3215 \end{lstlisting} 3232 3216 This introduces extra names, and may force the programmer to cast between the types and their implementations. … … 3283 3267 This prevents the declaration of types that contain each other. 3284 3268 \begin{lstlisting} 3285 otype t1;3286 otype t2 = t1; // illegal: incomplete type t13287 otype t1 = t2;3269 type t1; 3270 type t2 = t1; // illegal: incomplete type t1 3271 type t1 = t2; 3288 3272 \end{lstlisting} 3289 3273 … … 3292 3276 types}. 3293 3277 \begin{lstlisting} 3294 extern otype Huge; // extended-precision integer type3295 otype Rational = struct {3278 extern type Huge; // extended-precision integer type 3279 type Rational = struct { 3296 3280 Huge numerator, denominator; // illegal 3297 3281 }; … … 3332 3316 \begin{lstlisting} 3333 3317 #include <stdlib.h> 3334 T * new( otype T ) { return ( T * )malloc( sizeof( T) ); };3318 T * new( type T ) { return ( T * )malloc( sizeof( T) ); }; 3335 3319 @\ldots@ int * ip = new( int ); 3336 3320 \end{lstlisting} … … 3343 3327 Since type declarations create new types, instances of types are always passed by value. 3344 3328 \begin{lstlisting} 3345 otype A1 = int[2];3329 type A1 = int[2]; 3346 3330 void f1( A1 a ) { a[0] = 0; }; 3347 otypedef int A2[2];3331 typedef int A2[2]; 3348 3332 void f2( A2 a ) { a[0] = 0; }; 3349 3333 A1 v1; … … 3362 3346 That unit might contain the declarations 3363 3347 \begin{lstlisting} 3364 otype Complex = struct { float re, im; };@\impl{Complex}@3348 type Complex = struct { float re, im; };@\impl{Complex}@ 3365 3349 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@ 3366 3350 float abs( Complex c ) {@\impl{abs( Complex )}@ … … 3371 3355 3372 3356 \begin{lstlisting} 3373 otype Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.3357 type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight. 3374 3358 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@ 3375 3359 return (( int)t1 + seconds ) % 86400; … … 3445 3429 \examples 3446 3430 \begin{lstlisting} 3447 trait s( otype T ) {3431 context s( type T ) { 3448 3432 T a, b; 3449 3433 } struct impl { int left, right; } a = { 0, 0 }; 3450 otype Pair | s( Pair ) = struct impl;3434 type Pair | s( Pair ) = struct impl; 3451 3435 Pair b = { 1, 1 }; 3452 3436 \end{lstlisting} … … 3456 3440 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value from. 3457 3441 \begin{lstlisting} 3458 trait ss( otype T ) {3442 context ss( type T ) { 3459 3443 T clone( T ); 3460 3444 void munge( T * ); 3461 3445 } 3462 otype Whatsit | ss( Whatsit );@\use{Whatsit}@3463 otype Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@3446 type Whatsit | ss( Whatsit );@\use{Whatsit}@ 3447 type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@ 3464 3448 Whatsit; // anonymous member 3465 3449 int extra; … … 3482 3466 Default functions and objects are subject to the normal scope rules. 3483 3467 \begin{lstlisting} 3484 otype T = @\ldots@;3468 type T = @\ldots@; 3485 3469 T a_T = @\ldots@; // Default assignment used. 3486 3470 T ?=?( T *, T ); … … 3751 3735 The assertion ``\lstinline$scalar( Complex )$'' should be read as ``type \lstinline$Complex$ is scalar''. 3752 3736 \begin{lstlisting} 3753 trait scalar( otype T ) {@\impl{scalar}@3737 context scalar( type T ) {@\impl{scalar}@ 3754 3738 int !?( T ); 3755 3739 int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T ); … … 3761 3745 This is equivalent to inheritance of specifications. 3762 3746 \begin{lstlisting} 3763 trait arithmetic( otype T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@3747 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@ 3764 3748 T +?( T ), -?( T ); 3765 3749 T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T ); … … 3770 3754 \define{integral types}. 3771 3755 \begin{lstlisting} 3772 trait integral( otype T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@3756 context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@ 3773 3757 T ~?( T ); 3774 3758 T ?&?( T, T ), ?|?( T, T ), ?^?( T, T ); … … 3784 3768 The only operation that can be applied to all modifiable lvalues is simple assignment. 3785 3769 \begin{lstlisting} 3786 trait m_lvalue( otype T ) {@\impl{m_lvalue}@3770 context m_lvalue( type T ) {@\impl{m_lvalue}@ 3787 3771 T ?=?( T *, T ); 3788 3772 }; … … 3794 3778 Scalars can also be incremented and decremented. 3795 3779 \begin{lstlisting} 3796 trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@3780 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@ 3797 3781 T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@ 3798 3782 T ++?( T * ), --?( T * ); … … 3803 3787 Note that this results in the ``inheritance'' of \lstinline$scalar$ along both paths. 3804 3788 \begin{lstlisting} 3805 trait m_l_arithmetic( otype T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@3789 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@ 3806 3790 T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@ 3807 3791 T ?+=?( T *, T ), ?-=?( T *, T ); 3808 3792 }; 3809 trait m_l_integral( otype T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@3793 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@ 3810 3794 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@ 3811 3795 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@ … … 3827 3811 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$. 3828 3812 \begin{lstlisting} 3829 trait pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@3813 context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@ 3830 3814 P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int ); 3831 3815 ptrdiff_t ?-?( P, P ); 3832 3816 }; 3833 trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@3817 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@ 3834 3818 P ?+=?( P *, long int ), ?-=?( P *, long int ); 3835 3819 P ?=?( P *, void * ); … … 3843 3827 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''. 3844 3828 \begin{lstlisting} 3845 trait ptr_to( type P | pointer( P ), otype T ) {@\impl{ptr_to}@@\use{pointer}@3829 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@ 3846 3830 lvalue T *?( P ); 3847 3831 lvalue T ?[?]( P, long int ); 3848 3832 }; 3849 trait ptr_to_const( type P | pointer( P ), otype T ) {@\impl{ptr_to_const}@3833 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@ 3850 3834 const lvalue T *?( P ); 3851 3835 const lvalue T ?[?]( P, long int );@\use{pointer}@ 3852 3836 }; 3853 trait ptr_to_volatile( type P | pointer( P ), otype T ) }@\impl{ptr_to_volatile}@3837 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@ 3854 3838 volatile lvalue T *?( P ); 3855 3839 volatile lvalue T ?[?]( P, long int );@\use{pointer}@ 3856 3840 }; 3857 trait ptr_to_const_volatile( type P | pointer( P ), otype T ) }@\impl{ptr_to_const_volatile}@3841 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@ 3858 3842 const volatile lvalue T *?( P );@\use{pointer}@ 3859 3843 const volatile lvalue T ?[?]( P, long int ); … … 3865 3849 ``\lstinline$ptr_to$'' specifications. 3866 3850 \begin{lstlisting} 3867 trait m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ otype T | ptr_to( P, T )@\use{ptr_to}@ {3851 context m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ type T | ptr_to( P, T )@\use{ptr_to}@ { 3868 3852 P ?=?( P *, T * ); 3869 3853 T * ?=?( T **, P ); 3870 3854 }; 3871 trait m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ otype T | ptr_to_const( P, T )@\use{ptr_to_const}@) {3855 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}@) { 3872 3856 P ?=?( P *, const T * ); 3873 3857 const T * ?=?( const T **, P ); 3874 3858 }; 3875 trait m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ otype T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@3859 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}@ 3876 3860 P ?=?( P *, volatile T * ); 3877 3861 volatile T * ?=?( volatile T **, P ); 3878 3862 }; 3879 trait 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}@3863 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}@ 3880 3864 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}@ 3881 3865 P ?=?( P *, const volatile T * ); … … 3887 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. 3888 3872 \begin{lstlisting} 3889 trait 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 ) ) {3873 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 ) ) { 3890 3874 MyP ?=?( MyP *, CP ); 3891 3875 CP ?=?( CP *, MyP ); … … 3920 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. 3921 3905 \begin{lstlisting} 3922 trait comparable( otype T ) {3906 context comparable( type T ) { 3923 3907 const T 0; 3924 3908 int compare( T, T ); 3925 3909 } 3926 forall( otype T | comparable( T ) ) int ?<?( T l, T r ) {3910 forall( type T | comparable( T ) ) int ?<?( T l, T r ) { 3927 3911 return compare( l, r ) < 0; 3928 3912 } 3929 3913 // ... similarly for <=, ==, >=, >, and !=. 3930 forall( otype T | comparable( T ) ) int !?( T operand ) {3914 forall( type T | comparable( T ) ) int !?( T operand ) { 3931 3915 return !compare( operand, 0 ); 3932 3916 } … … 3940 3924 Similarly, a complete integral type would provide integral operations based on integral assignment operations. 3941 3925 \begin{lstlisting} 3942 trait arith_base( otype T ) {3926 context arith_base( type T ) { 3943 3927 const T 1; 3944 3928 T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T ); 3945 3929 } 3946 forall( otype T | arith_base( T ) ) T ?+?( T l, T r ) {3930 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) { 3947 3931 return l += r; 3948 3932 } 3949 forall( otype T | arith_base( T ) ) T ?++( T * operand ) {3933 forall( type T | arith_base( T ) ) T ?++( T * operand ) { 3950 3934 T temporary = *operand; 3951 3935 *operand += 1; 3952 3936 return temporary; 3953 3937 } 3954 forall( otype T | arith_base( T ) ) T ++?( T * operand ) {3938 forall( type T | arith_base( T ) ) T ++?( T * operand ) { 3955 3939 return *operand += 1; 3956 3940 } 3957 3941 // ... similarly for -, --, *, and /. 3958 trait int_base( otype T ) {3942 context int_base( type T ) { 3959 3943 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T ); 3960 3944 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T ); 3961 3945 } 3962 forall( otype T | int_base( T ) ) T ?&?( T l, T r ) {3946 forall( type T | int_base( T ) ) T ?&?( T l, T r ) { 3963 3947 return l &= r; 3964 3948 } -
src/Parser/DeclarationNode.cc
rb3f9a0cb r89173242 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 21 21:04:23201613 // Update Count : 1 4212 // Last Modified On : Wed Mar 2 17:26:24 2016 13 // Update Count : 134 14 14 // 15 15 … … 42 42 UniqueName DeclarationNode::anonymous( "__anonymous" ); 43 43 44 extern LinkageSpec::Type linkage; // defined in parser.yy44 extern LinkageSpec::Type linkage; /* defined in cfa.y */ 45 45 46 46 DeclarationNode *DeclarationNode::clone() const { … … 55 55 newnode->linkage = linkage; 56 56 return newnode; 57 } // DeclarationNode::clone57 } 58 58 59 59 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) { … … 117 117 newnode->type->function->newStyle = newStyle; 118 118 newnode->type->function->body = body; 119 typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );120 119 121 120 if ( body ) { … … 130 129 131 130 return newnode; 132 } // DeclarationNode::newFunction131 } 133 132 134 133 DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) { … … 137 136 newnode->type->qualifiers.push_back( q ); 138 137 return newnode; 139 } // DeclarationNode::newQualifier138 } 140 139 141 140 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) { … … 143 142 newnode->storageClasses.push_back( sc ); 144 143 return newnode; 145 } // DeclarationNode::newStorageClass144 } 146 145 147 146 DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) { … … 150 149 newnode->type->basic->typeSpec.push_back( bt ); 151 150 return newnode; 152 } // DeclarationNode::newBasicType151 } 153 152 154 153 DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) { … … 157 156 newnode->type->builtin->type = bt; 158 157 return newnode; 159 } // DeclarationNode::newBuiltinType158 } 160 159 161 160 DeclarationNode *DeclarationNode::newModifier( Modifier mod ) { … … 164 163 newnode->type->basic->modifiers.push_back( mod ); 165 164 return newnode; 166 } // DeclarationNode::newModifier165 } 167 166 168 167 DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) { … … 171 170 newnode->type->forall = forall; 172 171 return newnode; 173 } // DeclarationNode::newForall172 } 174 173 175 174 DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) { … … 180 179 newnode->type->symbolic->params = 0; 181 180 return newnode; 182 } // DeclarationNode::newFromTypedef181 } 183 182 184 183 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) { … … 189 188 if ( newnode->type->aggregate->name == "" ) { // anonymous aggregate ? 190 189 newnode->type->aggregate->name = DeclarationNode::anonymous.newName(); 191 } else if ( ! typedefTable.exists( newnode->type->aggregate->name ) ) { 192 // SKULLDUGGERY: Generate a typedef for the aggregate name so the aggregate does not have to be qualified by 193 // "struct". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed 194 // if the name is explicitly used. 190 } else { 191 // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified 192 // by "struct" 195 193 typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD ); 196 194 DeclarationNode *typedf = new DeclarationNode; … … 201 199 newnode->type->aggregate->fields = fields; 202 200 return newnode; 203 } // DeclarationNode::newAggregate201 } 204 202 205 203 DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) { … … 210 208 if ( newnode->type->enumeration->name == "" ) { // anonymous enumeration ? 211 209 newnode->type->enumeration->name = DeclarationNode::anonymous.newName(); 212 } else if ( ! typedefTable.exists( newnode->type->enumeration->name ) ) { 213 // SKULLDUGGERY: Generate a typedef for the enumeration name so the enumeration does not have to be qualified by 214 // "enum". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed if 215 // the name is explicitly used. 210 } else { 211 // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be 212 // qualified by "enum" 216 213 typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD ); 217 214 DeclarationNode *typedf = new DeclarationNode; … … 221 218 newnode->type->enumeration->constants = constants; 222 219 return newnode; 223 } // DeclarationNode::newEnum220 } 224 221 225 222 DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) { … … 227 224 newnode->name = assign_strptr( name ); 228 225 newnode->enumeratorValue = constant; 229 typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID ); 230 return newnode; 231 } // DeclarationNode::newEnumConstant 226 return newnode; 227 } 232 228 233 229 DeclarationNode *DeclarationNode::newName( std::string *name ) { … … 235 231 newnode->name = assign_strptr( name ); 236 232 return newnode; 237 } // DeclarationNode::newName233 } 238 234 239 235 DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) { … … 244 240 newnode->type->symbolic->actuals = params; 245 241 return newnode; 246 } // DeclarationNode::newFromTypeGen242 } 247 243 248 244 DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) { … … 253 249 newnode->type->variable->name = newnode->name; 254 250 return newnode; 255 } // DeclarationNode::newTypeParam251 } 256 252 257 253 DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) { … … 263 259 newnode->type->aggregate->name = assign_strptr( name ); 264 260 return newnode; 265 } // DeclarationNode::newTrait261 } 266 262 267 263 DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) { … … 273 269 newnode->type->aggInst->params = params; 274 270 return newnode; 275 } // DeclarationNode::newTraitUse271 } 276 272 277 273 DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) { … … 283 279 newnode->type->symbolic->name = newnode->name; 284 280 return newnode; 285 } // DeclarationNode::newTypeDecl281 } 286 282 287 283 DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) { … … 289 285 newnode->type = new TypeData( TypeData::Pointer ); 290 286 return newnode->addQualifiers( qualifiers ); 291 } // DeclarationNode::newPointer287 } 292 288 293 289 DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) { … … 302 298 } // if 303 299 return newnode->addQualifiers( qualifiers ); 304 } // DeclarationNode::newArray300 } 305 301 306 302 DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) { -
src/Parser/ExpressionNode.cc
rb3f9a0cb r89173242 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Mar 13 12:34:38201613 // Update Count : 27 212 // Last Modified On : Mon Feb 1 13:32:30 2016 13 // Update Count : 271 14 14 // 15 15 … … 487 487 args.front() = new AddressExpr( args.front() ); 488 488 break; 489 default: // do nothing 489 default: 490 /* do nothing */ 490 491 ; 491 } // switch492 } 492 493 493 494 switch ( op->get_type() ) { -
src/Parser/Parser.cc
rb3f9a0cb r89173242 10 10 // Created On : Sat May 16 14:54:28 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 21 18:04:47 201613 // Update Count : 512 // Last Modified On : Sun May 31 23:45:19 2015 13 // Update Count : 4 14 14 // 15 15 16 16 #include "Parser.h" 17 #include "TypedefTable.h" 17 18 #include "lex.h" 18 19 #include "parser.h" 19 #include "TypedefTable.h"20 20 21 21 // global variables in cfa.y -
src/Parser/TypedefTable.cc
rb3f9a0cb r89173242 10 10 // Created On : Sat May 16 15:20:13 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 21 18:18:58201613 // Update Count : 2 312 // Last Modified On : Wed Mar 2 17:25:55 2016 13 // Update Count : 20 14 14 // 15 15 16 16 #include <map> 17 17 #include <list> 18 #include "TypedefTable.h" 18 19 #include <cassert> 19 #include "TypedefTable.h"20 20 using namespace std; 21 21 … … 29 29 TypedefTable::TypedefTable() : currentScope( 0 ) {} 30 30 31 bool TypedefTable::exists( const string &identifier ) { 32 return table.count( identifier ) > 0; 31 void TypedefTable::changeKind( const string &identifier, kind_t kind ) { 32 tableType::iterator id_pos = table.find( identifier ); 33 if ( id_pos == table.end() ) { 34 return; 35 } else { 36 (*((*id_pos ).second.begin())).kind = kind; 37 return; 38 } // if 33 39 } 34 40 35 void TypedefTable::changeKind( const string &identifier, kind_t kind ) { 36 tableType::iterator id_pos = table.find( identifier ); 37 if ( id_pos == table.end() ) return; 38 id_pos->second.begin()->kind = kind; 41 bool TypedefTable::isKind( const string &identifier, kind_t kind ) const { 42 tableType::const_iterator id_pos = table.find( identifier ); 43 if ( id_pos == table.end() ) { 44 return true; 45 } else { 46 return (*((*id_pos ).second.begin())).kind == kind; 47 } // if 39 48 } 40 49 41 int TypedefTable::isKind( const string &identifier ) const { 42 tableType::const_iterator id_pos = table.find( identifier ); 43 // Name lookup defaults to identifier, and then the identifier's kind is set by the parser. 44 if ( id_pos == table.end() ) return IDENTIFIER; 45 return id_pos->second.begin()->kind; 50 bool TypedefTable::isIdentifier( const string &identifier ) const { 51 return isKind( identifier, ID ); 52 } 53 54 bool TypedefTable::isTypedef( const string &identifier ) const { 55 return isKind( identifier, TD ); 56 } 57 58 bool TypedefTable::isTypegen( const string &identifier ) const { 59 return isKind( identifier, TG ); 46 60 } 47 61 -
src/Parser/TypedefTable.h
rb3f9a0cb r89173242 10 10 // Created On : Sat May 16 15:24:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 21 18:17:36201613 // Update Count : 2412 // Last Modified On : Wed Mar 2 17:26:54 2016 13 // Update Count : 12 14 14 // 15 15 … … 22 22 #include <stack> 23 23 24 #include "lex.h"25 #include "parser.h"26 27 24 class TypedefTable { 28 25 public: 29 enum kind_t { ID = IDENTIFIER, TD = TYPEDEFname, TG = TYPEGENname};26 enum kind_t { ID, TD, TG }; 30 27 private: 31 28 struct Entry { … … 52 49 std::stack< std::string > nextIdentifiers; 53 50 51 bool isKind( const std::string &identifier, kind_t kind ) const; 54 52 void addToScope( const std::string &identifier, kind_t kind, int scope ); 55 53 public: 56 54 TypedefTable(); 57 55 58 bool exists( const std::string &identifier ); 59 int isKind( const std::string &identifier ) const; 56 bool isIdentifier( const std::string &identifier ) const; 57 bool isTypedef( const std::string &identifier ) const; 58 bool isTypegen( const std::string &identifier ) const; 59 60 60 void changeKind( const std::string &identifier, kind_t kind ); 61 61 -
src/Parser/lex.cc
rb3f9a0cb r89173242 418 418 120, 120, 0, 0, 0, 118, 0, 0, 0, 0, 419 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420 0, 133, 112, 112, 0, 112, 112, 0, 0, 6,421 0, 110, 0, 0, 0, 112, 0, 110, 110, 110,420 0, 133, 112, 112, 0, 112, 112, 112, 0, 6, 421 112, 110, 0, 0, 0, 112, 0, 110, 110, 110, 422 422 110, 0, 111, 0, 0, 109, 109, 109, 109, 0, 423 423 171, 172, 0, 177, 175, 0, 0, 0, 103, 0, … … 433 433 0, 120, 0, 0, 0, 0, 0, 120, 0, 0, 434 434 178, 0, 0, 0, 0, 0, 0, 0, 112, 0, 435 112, 0, 112, 0, 0, 112, 0, 110, 110, 0,435 112, 0, 112, 0, 0, 112, 112, 110, 110, 0, 436 436 0, 111, 111, 0, 111, 0, 111, 109, 109, 0, 437 437 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, … … 445 445 102, 102, 102, 102, 97, 102, 102, 0, 0, 0, 446 446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447 0, 120, 0, 0, 0, 0, 0, 112, 0, 0,447 0, 120, 0, 0, 0, 0, 0, 112, 112, 0, 448 448 0, 0, 0, 0, 111, 111, 0, 113, 0, 111, 449 449 … … 459 459 0, 0, 0, 0, 0, 113, 0, 0, 111, 113, 460 460 461 113, 113, 113, 0, 111, 0, 0, 0, 0, 0,461 113, 113, 113, 113, 111, 0, 0, 0, 0, 0, 462 462 0, 0, 0, 0, 0, 102, 0, 102, 102, 102, 463 463 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, … … 467 467 81, 83, 84, 102, 102, 91, 102, 102, 0, 1, 468 468 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 469 120, 0, 0, 0, 0, 113, 0, 113, 113, 0,469 120, 0, 0, 0, 0, 113, 113, 113, 113, 0, 470 470 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 471 471 … … 500 500 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 501 501 26, 26, 26, 26, 26, 27, 28, 29, 30, 31, 502 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,503 4 2, 11, 43, 11, 11, 44, 11, 45, 11, 46,504 11, 4 7, 48, 49, 50, 11, 11, 51, 11, 11,505 5 2, 53, 54, 55, 56, 57, 58, 59, 60, 61,506 507 6 2, 63, 64, 65, 66, 11, 67, 68, 69, 70,508 7 1, 72, 11, 73, 74, 75, 76, 77, 78, 79,509 80, 81, 82, 83, 84, 85, 1, 1, 1, 1,502 32, 33, 34, 35, 36, 37, 38, 39, 40, 39, 503 41, 11, 42, 11, 11, 43, 11, 44, 11, 45, 504 11, 46, 47, 48, 49, 11, 11, 50, 11, 11, 505 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 506 507 61, 62, 63, 64, 65, 11, 66, 67, 68, 69, 508 70, 71, 11, 72, 73, 74, 75, 76, 77, 78, 509 79, 80, 81, 82, 83, 84, 1, 1, 1, 1, 510 510 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 511 511 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 524 524 } ; 525 525 526 static yyconst flex_int32_t yy_meta[8 6] =526 static yyconst flex_int32_t yy_meta[85] = 527 527 { 0, 528 528 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, … … 530 530 6, 1, 7, 7, 7, 7, 7, 7, 1, 1, 531 531 1, 8, 1, 1, 1, 9, 9, 9, 9, 9, 532 9, 4, 4, 10, 4, 11, 4, 4, 4, 10,533 4, 1, 12, 1, 1, 13, 1, 9, 9, 9,534 9, 9, 9, 4, 4, 4, 4, 10, 4, 4,535 4, 11, 4, 4, 4, 10, 4, 4, 4, 4,536 4,1, 1, 1, 1532 4, 4, 10, 4, 11, 4, 4, 4, 10, 4, 533 1, 12, 1, 1, 13, 1, 9, 9, 9, 9, 534 9, 9, 4, 4, 4, 4, 10, 4, 4, 4, 535 11, 4, 4, 4, 10, 4, 4, 4, 4, 4, 536 1, 1, 1, 1 537 537 } ; 538 538 539 539 static yyconst flex_int16_t yy_base[1062] = 540 540 { 0, 541 0, 8 4, 2272, 2269, 94, 0, 177, 178, 179, 180,542 22 85, 2822, 191, 2822, 197, 55, 2822, 2231, 60, 173,543 2 822, 2822, 2822, 56, 188, 2822, 191, 189, 204, 216,544 27 5, 0, 2249, 2822, 216, 2247, 152, 344, 155, 220,545 2 822, 159, 2822, 217, 226, 2822, 185, 154, 212, 251,546 23 7, 270, 235, 257, 241, 205, 193, 305, 314, 333,547 2 38, 228, 2822, 225, 2822, 2242, 402, 390, 2822, 2253,548 2 822, 2221, 235, 2822, 0, 2822, 426, 0, 2822, 417,549 2 822, 439, 451, 2822, 498, 2219, 264, 2822, 2822, 2822,550 2 822, 2822, 2235, 2822, 2232, 2822, 2822, 2244, 559, 2822,551 552 22 61, 2822, 438, 444, 511, 534, 289, 253, 197, 380,553 3 05, 0, 319, 280, 198, 322, 2822, 2822, 2822, 2230,554 2 822, 2822, 2822, 2227, 2224, 218, 255, 2239, 298, 350,555 368, 312, 440, 398, 405, 2220, 441, 2168, 446, 2196,556 2 822, 335, 2822, 2822, 468, 2190, 2189, 2822, 2162, 439,557 282, 433, 372, 281, 437, 434, 428, 570, 444, 466,558 4 64, 469, 475, 321, 492, 438, 471, 445, 474, 512,559 4 89, 503, 496, 521, 276, 515, 516, 2189, 526, 510,560 5 19, 525, 543, 522, 560, 553, 523, 561, 551, 544,561 599, 5 82, 593, 584, 2822, 2822, 660, 651, 2236, 666,562 563 2 822, 678, 2822, 2183, 607, 2179, 2178, 0, 693, 2822,564 2 822, 684, 2176, 2156, 2154, 0, 2177, 578, 608, 617,565 6 54, 679, 650, 683, 684, 687, 2172, 690, 691, 2147,566 21 46, 2822, 0, 683, 710, 686, 700, 2145, 2196, 2822,567 71 4, 0, 427, 746, 764, 786, 808, 621, 2822, 2152,568 21 25, 0, 794, 2171, 795, 709, 2822, 2147, 2121, 832,569 2 822, 2822, 2152, 2822, 2822, 711, 714, 2129, 2129, 717,570 212 5, 2123, 2120, 0, 2117, 0, 2088, 694, 679, 712,571 709, 711, 698, 566, 726, 743, 771, 741, 790, 784,572 800, 795, 742, 744, 814, 816, 818, 2118, 819, 745,573 574 8 20, 821, 822, 823, 824, 746, 825, 748, 659, 831,575 8 26, 833, 838, 839, 848, 850, 851, 844, 834, 857,576 211 6, 858, 859, 860, 862, 861, 864, 865, 867, 868,577 86 6, 871, 876, 872, 878, 2113, 880, 689, 881, 882,578 8 92, 896, 893, 953, 954, 2109, 2108, 2106, 0, 2103,579 0, 9 41, 945, 2102, 0, 2101, 0, 2099, 0, 2118,580 2 822, 940, 941, 2094, 2088, 0, 2086, 0, 2822, 953,581 9 75, 964, 2822, 981, 997, 1021, 2084, 2822, 2822, 939,582 9 40, 1006, 982, 1041, 310, 1039, 1004, 2822, 2822, 2081,583 20 79, 2077, 0, 2074, 0, 2071, 0, 2070, 0, 2822,584 585 886, 941, 960, 962, 977, 976, 980, 982, 1017, 1010,586 10 02, 998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,587 10 38, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061,588 10 63, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074,589 107 5, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089,590 10 91, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108, 905,591 110 9, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051, 0,592 20 50, 0, 2049, 0, 2047, 0, 1166, 2044, 0, 2041,593 0, 20 40, 2039, 2037, 0, 2034, 0, 1173, 2031, 1179,594 1137, 119 5, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042,595 596 201 7, 2027, 2024, 0, 2021, 0, 2020, 0, 2019, 0,597 201 7, 0, 2014, 0, 1141, 1172, 2014, 1180, 1155, 1196,598 11 57, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,599 12 35, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013,600 12 61, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268,601 126 9, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276,602 12 86, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000,603 1 305, 1308, 1999, 1307, 1300, 1998, 2046, 1960, 0, 1958,604 0, 19 57, 0, 1954, 0, 1951, 0, 1950, 0, 1949,605 0, 19 47, 0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,606 607 13 25, 1365, 1379, 1941, 2822, 1940, 0, 1939, 0, 1937,608 0, 193 4, 0, 0, 0, 1936, 0, 1366, 1312, 1311,609 13 41, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,610 13 93, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,611 1 413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422,612 14 24, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,613 1 895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,614 1 884, 0, 1883, 0, 0, 0, 1884, 0, 0, 0,615 2 822, 0, 0, 0, 0, 1486, 1878, 2822, 2822, 1492,616 18 77, 0, 1876, 0, 0, 0, 0, 1874, 1447, 1444,617 618 187 4, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,619 14 90, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,620 1 508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866,621 1 518, 1520, 1523, 1865, 1521, 1525, 0, 0, 0, 1860,622 185 7, 1856, 1575, 0, 1855, 1853, 1850, 1849, 1848, 1849,623 184 6, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,624 15 39, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,625 15 72, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,626 1819, 1818, 181 7, 1815, 1798, 1789, 1788, 1785, 1778, 1775,627 17 68, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,628 629 17 47, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,630 1 606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,631 1 682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,632 1 616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,633 1 438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,634 1 178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126, 964,635 937, 903, 1651, 1652, 1654, 1655, 1656, 1658, 788, 752,636 16 60, 607, 487, 1662, 1663, 394, 357, 1664, 1666, 1668,637 16 70, 1669, 1672, 1674, 233, 137, 2822, 1747, 1760, 1773,638 17 83, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880,639 640 18 87, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,641 19 60, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,642 20 34, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,643 20 92, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,644 21 47, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,645 2 204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,646 22 64, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,647 2 318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,648 23 72, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,649 24 35, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,650 651 24 85, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,652 25 35, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,653 25 90, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,654 26 31, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,655 26 76, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,656 27 38, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,657 2 808541 0, 83, 2268, 2265, 93, 0, 175, 176, 177, 178, 542 2279, 2798, 189, 2798, 195, 54, 2798, 2226, 59, 171, 543 2798, 2798, 2798, 55, 186, 2798, 189, 187, 202, 214, 544 272, 0, 2244, 2798, 214, 2243, 150, 340, 153, 222, 545 2798, 157, 2798, 215, 224, 2798, 207, 181, 221, 249, 546 235, 289, 155, 255, 218, 231, 206, 266, 256, 323, 547 259, 192, 2798, 252, 2798, 2238, 377, 342, 2798, 2249, 548 2798, 2218, 241, 2798, 0, 2798, 421, 0, 2798, 393, 549 2798, 399, 405, 2798, 492, 2216, 276, 2798, 2798, 2798, 550 2798, 2798, 2231, 2798, 2228, 2798, 2798, 2240, 552, 2798, 551 552 2257, 2798, 413, 393, 437, 493, 377, 318, 195, 430, 553 382, 0, 384, 321, 196, 427, 2798, 2798, 2798, 2226, 554 2798, 2798, 2798, 2223, 2220, 304, 342, 2235, 381, 435, 555 422, 400, 455, 440, 494, 2216, 469, 2165, 497, 2193, 556 2798, 432, 2798, 2798, 521, 2187, 2186, 2798, 2159, 470, 557 414, 436, 325, 254, 463, 480, 486, 563, 274, 482, 558 484, 487, 495, 234, 489, 341, 488, 490, 377, 507, 559 497, 501, 503, 514, 515, 506, 529, 2186, 531, 537, 560 505, 518, 536, 534, 538, 559, 575, 571, 577, 574, 561 599, 590, 581, 592, 2798, 2798, 662, 668, 2232, 674, 562 563 2798, 680, 2798, 2180, 583, 2176, 2175, 0, 671, 2798, 564 2798, 686, 2173, 2170, 2167, 0, 2189, 568, 615, 618, 565 695, 694, 627, 654, 628, 683, 2186, 686, 687, 2163, 566 2160, 2798, 0, 680, 712, 703, 682, 2157, 2208, 2798, 567 711, 0, 702, 756, 762, 795, 774, 604, 2798, 2167, 568 2141, 0, 803, 2167, 780, 684, 2798, 2143, 2118, 804, 569 2798, 2798, 2148, 2798, 2798, 724, 728, 2126, 2126, 694, 570 2122, 2120, 2117, 0, 2114, 0, 2085, 679, 682, 696, 571 423, 722, 757, 703, 758, 741, 799, 764, 725, 789, 572 697, 774, 788, 792, 760, 784, 795, 2115, 809, 797, 573 574 816, 196, 804, 812, 817, 823, 829, 632, 831, 832, 575 836, 819, 837, 833, 840, 844, 847, 843, 853, 851, 576 2113, 854, 855, 856, 859, 857, 858, 860, 861, 867, 577 863, 866, 868, 873, 874, 2110, 877, 716, 882, 883, 578 884, 888, 894, 947, 944, 2104, 2103, 2102, 0, 2100, 579 0, 934, 939, 2097, 0, 2094, 0, 2093, 0, 2113, 580 2798, 934, 935, 2092, 2087, 0, 2086, 0, 2798, 947, 581 967, 958, 2798, 973, 988, 1012, 2085, 2798, 2798, 932, 582 962, 999, 975, 1033, 912, 1020, 956, 2798, 2798, 2083, 583 2080, 2079, 0, 2078, 0, 2076, 0, 2073, 0, 2798, 584 585 956, 936, 978, 950, 994, 1010, 1016, 973, 1019, 1020, 586 1024, 1012, 1029, 1030, 1026, 1027, 1032, 1038, 1044, 1031, 587 1051, 1049, 1041, 2072, 1055, 2068, 1054, 2066, 1057, 1058, 588 1059, 974, 1061, 1064, 1065, 2064, 1070, 2061, 1063, 1071, 589 1073, 1075, 1076, 1081, 1077, 2059, 1082, 2057, 1084, 1087, 590 1089, 1092, 1094, 1095, 1100, 1090, 1098, 1106, 1115, 1102, 591 1103, 1116, 1104, 1118, 2054, 1119, 1123, 1169, 2048, 0, 592 2047, 0, 2046, 0, 2044, 0, 1164, 2041, 0, 2038, 593 0, 2037, 2036, 2034, 0, 2031, 0, 1171, 2028, 1177, 594 1137, 1197, 1164, 1112, 1131, 2798, 1216, 1230, 1256, 2039, 595 596 2014, 2024, 2021, 0, 2018, 0, 2017, 0, 2016, 0, 597 2014, 0, 2011, 0, 1159, 1164, 2011, 1160, 1178, 1182, 598 1133, 1194, 1208, 1185, 541, 1199, 1197, 1215, 1193, 1209, 599 1211, 1225, 1210, 1254, 1235, 1237, 1239, 1241, 1242, 2010, 600 1252, 1248, 2009, 1249, 1253, 1255, 1251, 2007, 1258, 1261, 601 1262, 1264, 2004, 1265, 1271, 2001, 1263, 1273, 2000, 1269, 602 1275, 1277, 1999, 1281, 1283, 1285, 1284, 1286, 1296, 1997, 603 1295, 1287, 1994, 1299, 1300, 1991, 2039, 1986, 0, 1984, 604 0, 1981, 0, 1980, 0, 1979, 0, 1977, 0, 1974, 605 0, 1973, 0, 1336, 1346, 1369, 1357, 1972, 2798, 1375, 606 607 1311, 1347, 1313, 1970, 2798, 1937, 0, 1935, 0, 1934, 608 0, 1931, 0, 0, 0, 1931, 0, 1353, 1354, 1305, 609 1302, 1335, 1363, 1366, 1367, 1364, 586, 1370, 1365, 1374, 610 1368, 1376, 1369, 1385, 1380, 1166, 1392, 1394, 1327, 1395, 611 1396, 1399, 1930, 1398, 1400, 1401, 1929, 1927, 1924, 1403, 612 1402, 1921, 1409, 1920, 1919, 1406, 1404, 1917, 1914, 1913, 613 1912, 1910, 1907, 1416, 1417, 1906, 1419, 1405, 1954, 2798, 614 1900, 0, 1897, 0, 0, 0, 1896, 0, 0, 0, 615 2798, 0, 0, 0, 0, 1459, 1889, 2798, 2798, 1465, 616 1885, 0, 1869, 0, 0, 0, 0, 1868, 1424, 1442, 617 618 1870, 1444, 1447, 1443, 1451, 1453, 1455, 1457, 1868, 1459, 619 1460, 1476, 1461, 1463, 1494, 1477, 1478, 1504, 1483, 1482, 620 1481, 1488, 1490, 1491, 1492, 1865, 1864, 1493, 1863, 1861, 621 1497, 1496, 1499, 1858, 1500, 1502, 0, 0, 0, 1854, 622 1853, 1851, 1550, 0, 1848, 1847, 1846, 1844, 1841, 1843, 623 1842, 1840, 1837, 1507, 1513, 1505, 1514, 1509, 1515, 1528, 624 1506, 1531, 1533, 1562, 1836, 1536, 1835, 1537, 1541, 1544, 625 1549, 1542, 1543, 1833, 1830, 1829, 1828, 1550, 1826, 1823, 626 1819, 1818, 1816, 1813, 1812, 1811, 1809, 1802, 1800, 1799, 627 1796, 1795, 1551, 1797, 1554, 1556, 1555, 1559, 1560, 1561, 628 629 1795, 1565, 1592, 1568, 1778, 1569, 1576, 1577, 1584, 1570, 630 1572, 1766, 1765, 1762, 1755, 1752, 1745, 1743, 1742, 1721, 631 1720, 1719, 1712, 1710, 1712, 1582, 1587, 1595, 1590, 1589, 632 1597, 1585, 1670, 1669, 1601, 1666, 1665, 1605, 1606, 1609, 633 1660, 1659, 1655, 1654, 1651, 1650, 1649, 1593, 1610, 1611, 634 1412, 1614, 1612, 1620, 1337, 1621, 1623, 1627, 1000, 928, 635 896, 778, 1628, 1629, 1631, 1632, 1633, 1635, 709, 628, 636 1637, 373, 338, 1639, 1640, 337, 257, 1641, 1643, 1645, 637 1647, 1646, 1649, 1651, 200, 136, 2798, 1723, 1736, 1749, 638 1759, 1769, 1782, 1792, 1805, 1818, 1831, 1839, 1849, 1856, 639 640 1863, 1870, 1877, 1884, 1891, 1898, 1905, 1912, 1925, 1932, 641 1936, 1944, 1947, 1954, 1961, 1968, 1971, 1978, 1984, 1997, 642 2010, 2017, 2024, 2031, 2038, 2041, 2048, 2051, 2058, 2061, 643 2068, 2071, 2078, 2081, 2088, 2091, 2098, 2101, 2108, 2116, 644 2123, 2130, 2137, 2144, 2147, 2154, 2157, 2164, 2167, 2174, 645 2180, 2193, 2200, 2207, 2210, 2217, 2220, 2227, 2230, 2237, 646 2240, 2247, 2250, 2257, 2260, 2267, 2274, 2277, 2284, 2287, 647 2294, 2301, 2308, 2311, 2318, 2321, 2328, 2331, 2338, 2341, 648 2348, 2351, 2358, 2364, 2377, 2384, 2391, 2394, 2401, 2404, 649 2411, 2414, 2421, 2424, 2431, 2434, 2441, 2444, 2451, 2454, 650 651 2461, 2464, 2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508, 652 2511, 2514, 2520, 2527, 2536, 2543, 2550, 2553, 2560, 2563, 653 2566, 2572, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600, 654 2607, 2610, 2617, 2620, 2623, 2626, 2629, 2639, 2646, 2649, 655 2652, 2655, 2662, 2669, 2676, 2679, 2686, 2693, 2700, 2707, 656 2714, 2721, 2728, 2735, 2742, 2749, 2756, 2763, 2770, 2777, 657 2784 658 658 } ; 659 659 … … 779 779 } ; 780 780 781 static yyconst flex_int16_t yy_nxt[2 908] =781 static yyconst flex_int16_t yy_nxt[2883] = 782 782 { 0, 783 783 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 785 785 28, 29, 30, 31, 32, 32, 32, 32, 33, 34, 786 786 35, 36, 37, 38, 39, 18, 18, 18, 18, 18, 787 18, 18, 18, 40, 18, 18, 18, 18, 18, 40,788 18, 41, 42, 43, 44, 45, 46, 47, 48, 49,789 5 0, 51, 52, 53, 18, 54, 18, 55, 18, 18,790 56, 18, 57, 58, 59, 60, 61, 62, 18, 18,791 18, 63, 64, 65, 66, 67, 84, 92, 85, 85,792 67, 88, 89, 68, 71, 71, 71, 71, 71, 71,793 794 71, 71, 71, 7 1, 72, 71, 71, 71, 71, 71,787 18, 18, 40, 18, 18, 18, 18, 18, 40, 18, 788 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 789 51, 52, 53, 18, 54, 18, 55, 18, 18, 56, 790 18, 57, 58, 59, 60, 61, 62, 18, 18, 18, 791 63, 64, 65, 66, 67, 84, 92, 85, 85, 67, 792 88, 89, 68, 71, 71, 71, 71, 71, 71, 71, 793 794 71, 71, 71, 72, 71, 71, 71, 71, 71, 71, 795 795 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 796 71, 71, 71, 71, 71, 71, 71, 71, 7 1, 72,796 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, 797 797 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 798 72, 72, 72, 72, 72, 71, 73, 71, 71, 72, 799 74, 72, 72, 72, 72, 72, 72, 72, 72, 72, 798 72, 72, 72, 71, 73, 71, 71, 72, 74, 72, 800 799 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 801 72, 72, 72, 72, 72, 71, 71, 71, 71, 76, 802 76, 79, 79, 123, 124, 90, 141, 79, 79, 87, 803 76, 76, 80, 81, 82, 82, 82, 80, 82, 81, 804 805 83, 83, 83, 82, 91, 93, 87, 142, 146, 98, 806 95, 99, 99, 99, 99, 99, 99, 252, 887, 94, 807 100, 85, 96, 97, 85, 101, 161, 118, 143, 77, 808 77, 77, 77, 144, 147, 102, 103, 87, 104, 104, 809 104, 104, 105, 105, 119, 87, 120, 121, 148, 263, 810 149, 264, 254, 260, 183, 106, 195, 87, 159, 107, 811 160, 150, 151, 152, 87, 108, 109, 153, 154, 162, 812 155, 110, 87, 156, 157, 145, 163, 106, 87, 182, 813 87, 158, 164, 111, 206, 87, 263, 87, 264, 87, 814 87, 108, 194, 87, 109, 103, 250, 112, 112, 112, 815 816 112, 112, 112, 87, 169, 177, 170, 196, 193, 87, 817 207, 180, 165, 230, 106, 171, 166, 181, 113, 178, 818 251, 167, 87, 258, 114, 168, 179, 172, 87, 263, 819 115, 264, 248, 87, 87, 173, 106, 174, 249, 231, 820 175, 143, 116, 263, 176, 264, 144, 259, 317, 283, 821 114, 125, 280, 500, 249, 126, 127, 87, 128, 191, 822 129, 130, 256, 131, 249, 132, 87, 265, 257, 184, 823 185, 257, 248, 87, 133, 134, 135, 501, 188, 186, 824 249, 263, 187, 264, 271, 87, 189, 265, 145, 256, 825 305, 200, 201, 190, 257, 136, 200, 257, 137, 263, 826 827 887, 264, 192, 197, 81, 82, 82, 82, 197, 87, 828 272, 198, 202, 202, 202, 202, 202, 202, 80, 81, 829 82, 82, 82, 80, 87, 138, 139, 209, 210, 263, 830 887, 264, 209, 282, 211, 255, 263, 267, 264, 211, 831 82, 81, 82, 82, 82, 82, 87, 887, 212, 212, 832 212, 212, 82, 81, 83, 83, 83, 82, 887, 211, 833 99, 99, 99, 99, 99, 99, 242, 242, 242, 242, 834 266, 263, 263, 264, 264, 213, 143, 263, 211, 264, 835 87, 144, 375, 211, 211, 87, 87, 211, 211, 87, 836 87, 87, 286, 241, 887, 211, 87, 87, 211, 243, 837 838 211, 214, 211, 281, 215, 217, 278, 284, 285, 218, 839 219, 307, 298, 279, 220, 221, 87, 222, 87, 223, 840 87, 87, 887, 87, 309, 300, 87, 87, 224, 225, 841 226, 103, 303, 105, 105, 105, 105, 105, 105, 87, 842 299, 87, 301, 302, 87, 304, 308, 310, 87, 227, 843 106, 245, 228, 245, 306, 87, 246, 246, 246, 246, 844 246, 246, 87, 313, 87, 315, 244, 87, 87, 311, 845 314, 87, 106, 87, 87, 87, 323, 87, 87, 322, 846 229, 233, 233, 233, 233, 233, 233, 312, 333, 247, 847 319, 316, 328, 320, 318, 87, 87, 234, 235, 236, 848 849 321, 237, 236, 87, 324, 87, 325, 143, 335, 360, 850 331, 361, 87, 87, 238, 337, 326, 327, 87, 236, 851 235, 236, 87, 329, 237, 332, 236, 287, 288, 289, 852 336, 290, 291, 334, 87, 292, 87, 293, 407, 360, 853 330, 361, 294, 295, 296, 87, 297, 339, 360, 343, 854 361, 87, 200, 201, 338, 340, 346, 200, 341, 87, 855 342, 197, 81, 82, 82, 82, 197, 200, 201, 198, 856 378, 361, 200, 202, 202, 202, 202, 202, 202, 344, 857 201, 360, 347, 361, 344, 360, 345, 361, 202, 202, 858 202, 202, 202, 202, 209, 210, 378, 143, 361, 209, 859 860 202, 202, 202, 202, 202, 202, 352, 352, 352, 352, 861 360, 87, 361, 362, 360, 360, 361, 361, 360, 363, 862 361, 360, 360, 361, 361, 369, 369, 370, 369, 370, 863 435, 87, 371, 371, 371, 371, 371, 371, 373, 353, 864 373, 87, 263, 373, 264, 263, 87, 264, 369, 402, 865 87, 369, 234, 235, 236, 406, 237, 236, 388, 401, 866 373, 87, 373, 87, 87, 372, 390, 373, 105, 105, 867 105, 105, 105, 105, 236, 235, 236, 404, 87, 237, 868 405, 236, 403, 408, 388, 106, 246, 246, 246, 246, 869 246, 246, 391, 87, 87, 87, 87, 87, 87, 419, 870 871 87, 255, 425, 432, 87, 420, 434, 106, 376, 376, 872 376, 376, 376, 376, 381, 409, 413, 105, 105, 105, 873 105, 105, 105, 87, 234, 245, 236, 245, 237, 236, 874 246, 246, 246, 246, 246, 246, 87, 383, 410, 384, 875 87, 377, 87, 385, 411, 412, 236, 87, 236, 386, 876 255, 237, 87, 236, 112, 112, 112, 112, 112, 112, 877 414, 387, 415, 417, 418, 384, 87, 416, 87, 385, 878 87, 87, 87, 87, 87, 87, 87, 87, 87, 421, 879 427, 426, 433, 87, 437, 87, 87, 260, 423, 424, 880 87, 87, 436, 429, 428, 422, 87, 430, 431, 439, 881 882 87, 438, 87, 87, 446, 441, 440, 442, 443, 87, 883 87, 87, 87, 87, 87, 445, 87, 87, 87, 87, 884 87, 448, 447, 87, 87, 444, 449, 451, 87, 456, 885 87, 450, 87, 87, 87, 452, 455, 454, 87, 453, 886 457, 462, 460, 461, 87, 87, 458, 464, 87, 515, 887 459, 463, 465, 466, 344, 201, 201, 87, 887, 344, 888 467, 345, 199, 211, 211, 211, 211, 352, 352, 352, 889 352, 360, 360, 361, 361, 371, 371, 371, 371, 371, 890 371, 370, 569, 370, 492, 492, 371, 371, 371, 371, 891 371, 371, 887, 87, 493, 494, 477, 488, 488, 488, 892 893 488, 488, 488, 233, 233, 233, 233, 233, 233, 516, 894 492, 492, 87, 234, 87, 236, 87, 237, 236, 242, 895 242, 242, 242, 105, 105, 495, 381, 517, 87, 87, 896 489, 496, 87, 518, 87, 236, 374, 236, 519, 520, 897 237, 521, 236, 376, 376, 376, 376, 376, 376, 383, 898 87, 384, 375, 496, 87, 385, 522, 496, 497, 887, 899 497, 386, 87, 498, 498, 498, 498, 498, 498, 87, 900 525, 495, 526, 387, 87, 524, 377, 384, 523, 496, 901 87, 385, 383, 87, 384, 87, 87, 527, 385, 87, 902 87, 532, 87, 87, 502, 87, 499, 87, 535, 528, 903 904 529, 537, 530, 531, 533, 87, 387, 87, 87, 541, 905 384, 534, 538, 87, 385, 87, 536, 87, 87, 87, 906 539, 540, 87, 87, 546, 87, 87, 87, 544, 542, 907 87, 548, 87, 87, 547, 543, 87, 87, 549, 87, 908 545, 87, 552, 87, 87, 550, 556, 554, 551, 87, 909 559, 87, 553, 555, 87, 87, 557, 87, 87, 558, 910 87, 87, 87, 564, 560, 567, 563, 568, 87, 561, 911 566, 562, 87, 565, 87, 87, 571, 87, 87, 573, 912 627, 201, 492, 570, 576, 574, 572, 577, 211, 211, 913 211, 211, 493, 87, 575, 488, 488, 488, 488, 488, 914 915 488, 376, 376, 376, 376, 376, 376, 87, 492, 87, 916 618, 234, 595, 236, 595, 237, 236, 596, 596, 596, 917 596, 596, 596, 492, 87, 599, 492, 621, 489, 87, 918 87, 623, 87, 236, 490, 236, 598, 619, 237, 87, 919 236, 498, 498, 498, 498, 498, 498, 620, 87, 492, 920 597, 599, 492, 600, 600, 600, 600, 600, 600, 87, 921 631, 622, 87, 887, 625, 887, 87, 862, 87, 601, 922 497, 602, 497, 603, 602, 498, 498, 498, 498, 498, 923 498, 624, 628, 87, 87, 630, 604, 87, 87, 87, 924 87, 602, 633, 602, 626, 636, 603, 632, 602, 629, 925 926 634, 87, 87, 635, 87, 87, 87, 642, 87, 87, 927 637, 641, 87, 87, 640, 87, 87, 643, 647, 639, 928 87, 87, 887, 87, 87, 87, 638, 87, 87, 644, 929 645, 646, 648, 650, 87, 87, 87, 649, 87, 653, 930 651, 87, 652, 87, 654, 655, 87, 87, 87, 87, 931 656, 657, 87, 660, 659, 661, 664, 87, 658, 87, 932 87, 663, 87, 87, 87, 668, 665, 688, 688, 662, 933 666, 701, 702, 887, 887, 87, 667, 488, 488, 488, 934 488, 488, 488, 596, 596, 596, 596, 596, 596, 595, 935 688, 595, 704, 87, 596, 596, 596, 596, 596, 596, 936 937 600, 600, 600, 600, 600, 600, 703, 688, 87, 887, 938 594, 686, 686, 686, 686, 686, 686, 689, 87, 689, 939 87, 87, 689, 699, 87, 708, 87, 601, 706, 602, 940 688, 603, 602, 604, 707, 87, 700, 710, 709, 689, 941 87, 689, 87, 705, 687, 87, 689, 87, 87, 602, 942 87, 602, 87, 716, 603, 718, 602, 712, 87, 87, 943 87, 87, 711, 87, 714, 87, 87, 713, 87, 717, 944 715, 87, 721, 719, 87, 724, 87, 87, 722, 720, 945 727, 87, 87, 87, 725, 87, 731, 723, 87, 732, 946 726, 87, 87, 861, 728, 734, 87, 733, 730, 87, 947 948 735, 87, 87, 729, 87, 87, 751, 736, 686, 686, 949 686, 686, 686, 686, 600, 600, 600, 600, 600, 600, 950 750, 87, 755, 87, 601, 763, 602, 752, 603, 602, 951 753, 87, 87, 764, 87, 756, 754, 757, 87, 758, 952 87, 687, 87, 87, 759, 767, 602, 690, 602, 761, 953 87, 603, 766, 602, 87, 760, 87, 762, 87, 765, 954 87, 768, 87, 769, 87, 87, 87, 87, 770, 87, 955 87, 87, 87, 87, 771, 87, 774, 87, 772, 87, 956 87, 779, 87, 87, 795, 87, 780, 773, 87, 87, 957 776, 87, 775, 803, 777, 796, 778, 686, 686, 686, 958 959 686, 686, 686, 793, 87, 794, 799, 87, 798, 87, 960 801, 87, 87, 87, 797, 804, 805, 800, 806, 87, 961 87, 87, 802, 807, 87, 87, 87, 808, 87, 87, 962 743, 87, 87, 87, 809, 828, 87, 87, 87, 830, 963 831, 833, 87, 87, 87, 834, 87, 836, 810, 811, 964 826, 827, 87, 829, 87, 825, 832, 837, 87, 87, 965 87, 838, 839, 87, 87, 835, 87, 87, 87, 851, 966 850, 855, 87, 852, 840, 87, 87, 87, 853, 857, 967 849, 87, 87, 87, 854, 858, 859, 87, 87, 856, 968 860, 87, 863, 864, 865, 87, 87, 866, 87, 868, 969 970 867, 869, 87, 87, 87, 870, 87, 87, 87, 873, 971 87, 875, 87, 876, 87, 87, 87, 874, 87, 872, 972 87, 87, 87, 871, 87, 880, 87, 87, 87, 887, 973 879, 881, 887, 848, 877, 878, 886, 887, 847, 884, 974 887, 845, 882, 883, 887, 844, 885, 69, 69, 69, 975 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 976 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 977 75, 75, 75, 78, 78, 78, 78, 78, 78, 78, 978 78, 78, 78, 78, 78, 78, 86, 887, 843, 86, 979 887, 86, 86, 86, 86, 86, 140, 842, 87, 87, 980 981 140, 140, 140, 140, 140, 140, 199, 199, 199, 199, 982 199, 199, 199, 199, 199, 199, 199, 199, 199, 204, 983 87, 887, 204, 824, 204, 204, 204, 204, 204, 208, 984 887, 208, 208, 823, 208, 208, 208, 208, 208, 208, 985 821, 208, 216, 887, 819, 216, 216, 216, 216, 216, 986 216, 216, 216, 887, 216, 239, 239, 239, 239, 239, 987 239, 239, 239, 239, 239, 239, 239, 239, 253, 253, 988 817, 253, 887, 815, 813, 253, 269, 87, 87, 269, 989 87, 269, 269, 269, 269, 269, 273, 87, 273, 87, 990 87, 87, 273, 275, 87, 275, 87, 87, 87, 275, 991 992 348, 87, 348, 887, 792, 790, 348, 350, 887, 350, 993 887, 787, 785, 350, 354, 783, 354, 87, 87, 87, 994 354, 356, 87, 356, 87, 87, 87, 356, 358, 749, 995 358, 746, 745, 743, 358, 365, 205, 365, 739, 738, 996 670, 365, 367, 87, 367, 87, 87, 87, 367, 239, 997 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 998 239, 239, 380, 87, 380, 382, 382, 87, 382, 382, 999 382, 87, 382, 253, 253, 87, 253, 392, 87, 392, 1000 87, 87, 87, 392, 394, 87, 394, 87, 87, 697, 1001 394, 396, 696, 396, 694, 692, 690, 396, 273, 598, 1002 1003 273, 398, 685, 398, 684, 682, 680, 398, 275, 678, 1004 275, 86, 676, 674, 86, 672, 86, 86, 86, 86, 1005 86, 199, 199, 199, 199, 199, 199, 199, 199, 199, 1006 199, 199, 199, 199, 468, 468, 468, 468, 468, 468, 1007 468, 468, 468, 468, 468, 468, 468, 469, 670, 469, 1008 87, 87, 87, 469, 471, 87, 471, 87, 87, 87, 1009 471, 473, 87, 473, 87, 87, 87, 473, 348, 617, 1010 348, 475, 615, 475, 613, 611, 609, 475, 350, 607, 1011 350, 478, 502, 478, 605, 605, 594, 478, 354, 593, 1012 354, 480, 591, 480, 483, 483, 589, 480, 356, 587, 1013 1014 356, 482, 585, 482, 583, 581, 579, 482, 358, 87, 1015 358, 484, 87, 484, 87, 87, 87, 484, 365, 87, 1016 365, 486, 87, 486, 87, 514, 512, 486, 367, 510, 1017 367, 491, 508, 491, 506, 491, 504, 491, 380, 490, 1018 380, 487, 380, 485, 380, 382, 382, 361, 382, 382, 1019 382, 361, 382, 503, 483, 503, 481, 479, 476, 503, 1020 505, 474, 505, 472, 470, 87, 505, 507, 87, 507, 1021 87, 400, 399, 507, 392, 397, 392, 509, 395, 509, 1022 393, 270, 265, 509, 394, 264, 394, 511, 389, 511, 1023 389, 252, 379, 511, 396, 379, 396, 513, 240, 513, 1024 1025 374, 368, 366, 513, 398, 364, 398, 86, 360, 359, 1026 86, 357, 86, 86, 86, 86, 86, 468, 468, 468, 800 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 801 72, 72, 72, 71, 71, 71, 71, 76, 76, 79, 802 79, 123, 124, 90, 141, 79, 79, 87, 76, 76, 803 80, 81, 82, 82, 82, 80, 82, 81, 83, 83, 804 805 83, 82, 91, 93, 142, 146, 87, 98, 95, 99, 806 99, 99, 99, 99, 99, 252, 887, 94, 100, 85, 807 96, 97, 85, 101, 177, 118, 77, 77, 77, 77, 808 143, 147, 87, 102, 103, 144, 104, 104, 104, 104, 809 105, 105, 119, 87, 120, 121, 148, 87, 149, 254, 810 260, 87, 161, 106, 427, 194, 107, 87, 87, 150, 811 151, 152, 108, 109, 153, 154, 183, 155, 110, 87, 812 156, 157, 87, 87, 106, 87, 145, 162, 158, 159, 813 111, 160, 87, 195, 163, 87, 87, 180, 108, 206, 814 164, 109, 103, 181, 112, 112, 112, 112, 112, 112, 815 816 87, 169, 305, 170, 182, 87, 87, 87, 87, 165, 817 87, 106, 171, 166, 113, 207, 178, 87, 167, 188, 818 114, 283, 168, 179, 230, 87, 115, 189, 193, 184, 819 185, 143, 106, 196, 190, 263, 144, 264, 116, 186, 820 87, 298, 187, 200, 201, 172, 114, 125, 200, 191, 821 231, 126, 127, 173, 128, 174, 129, 130, 175, 131, 822 250, 132, 176, 258, 202, 202, 202, 202, 202, 202, 823 133, 134, 135, 263, 87, 264, 87, 145, 197, 81, 824 82, 82, 82, 197, 251, 282, 198, 259, 87, 87, 825 136, 192, 87, 137, 80, 81, 82, 82, 82, 80, 826 827 82, 81, 82, 82, 82, 82, 82, 81, 83, 83, 828 83, 82, 263, 307, 264, 242, 242, 242, 242, 248, 829 138, 139, 209, 210, 87, 249, 256, 209, 87, 211, 830 249, 263, 257, 264, 211, 99, 99, 99, 99, 99, 831 99, 265, 887, 212, 212, 212, 212, 243, 248, 310, 832 887, 249, 265, 263, 211, 264, 249, 103, 257, 105, 833 105, 105, 105, 105, 105, 87, 263, 241, 264, 213, 834 887, 263, 211, 264, 87, 257, 106, 211, 211, 887, 835 271, 211, 211, 280, 255, 266, 263, 87, 264, 211, 836 404, 244, 211, 256, 211, 214, 211, 106, 215, 217, 837 838 263, 257, 264, 218, 219, 281, 272, 887, 220, 221, 839 245, 222, 245, 223, 87, 246, 246, 246, 246, 246, 840 246, 87, 224, 225, 226, 263, 267, 264, 263, 143, 841 264, 87, 284, 87, 144, 87, 278, 87, 87, 87, 842 87, 87, 227, 279, 300, 228, 87, 247, 87, 286, 843 306, 303, 87, 285, 87, 299, 87, 87, 87, 301, 844 302, 323, 308, 311, 304, 87, 87, 314, 309, 87, 845 313, 315, 87, 229, 233, 233, 233, 233, 233, 233, 846 87, 312, 87, 316, 318, 87, 317, 87, 87, 87, 847 234, 235, 87, 236, 237, 627, 324, 320, 325, 360, 848 849 329, 361, 319, 328, 321, 322, 238, 143, 326, 327, 850 87, 234, 235, 234, 87, 331, 236, 330, 237, 287, 851 288, 289, 87, 290, 291, 87, 87, 292, 87, 293, 852 332, 346, 87, 335, 294, 295, 296, 87, 297, 333, 853 709, 87, 334, 87, 337, 341, 360, 342, 361, 360, 854 87, 361, 378, 338, 339, 336, 343, 347, 360, 360, 855 361, 361, 340, 197, 81, 82, 82, 82, 197, 200, 856 201, 198, 209, 210, 200, 200, 201, 209, 378, 87, 857 200, 344, 201, 87, 362, 360, 344, 361, 345, 434, 858 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 859 860 202, 202, 202, 202, 202, 202, 202, 202, 352, 352, 861 352, 352, 361, 361, 360, 363, 361, 360, 360, 361, 862 361, 369, 887, 369, 143, 360, 360, 361, 361, 370, 863 87, 370, 388, 87, 371, 371, 371, 371, 371, 371, 864 353, 373, 390, 401, 369, 373, 369, 87, 87, 234, 865 235, 402, 236, 237, 87, 263, 375, 264, 388, 263, 866 87, 264, 373, 416, 373, 403, 372, 87, 391, 373, 867 234, 235, 234, 87, 407, 236, 87, 237, 105, 105, 868 105, 105, 105, 105, 246, 246, 246, 246, 246, 246, 869 405, 245, 87, 245, 414, 106, 246, 246, 246, 246, 870 871 246, 246, 105, 105, 105, 105, 105, 105, 87, 87, 872 255, 87, 409, 406, 408, 87, 106, 376, 376, 376, 873 376, 376, 376, 381, 421, 87, 112, 112, 112, 112, 874 112, 112, 887, 234, 255, 87, 236, 237, 413, 87, 875 87, 417, 418, 87, 419, 383, 87, 384, 87, 377, 876 87, 385, 420, 425, 234, 87, 234, 386, 260, 236, 877 87, 237, 422, 87, 423, 410, 415, 87, 87, 387, 878 87, 411, 412, 384, 87, 428, 426, 385, 424, 432, 879 87, 429, 87, 87, 87, 433, 438, 87, 87, 430, 880 431, 87, 436, 437, 87, 87, 441, 439, 87, 440, 881 882 442, 435, 87, 443, 87, 87, 87, 87, 87, 87, 883 87, 87, 87, 445, 87, 447, 448, 87, 87, 87, 884 444, 449, 446, 451, 87, 87, 450, 456, 87, 455, 885 452, 454, 453, 87, 87, 87, 457, 462, 461, 87, 886 458, 459, 460, 465, 466, 87, 201, 464, 344, 201, 887 887, 463, 199, 344, 500, 345, 211, 211, 211, 211, 888 467, 352, 352, 352, 352, 360, 360, 361, 361, 371, 889 371, 371, 371, 371, 371, 370, 492, 370, 501, 87, 890 371, 371, 371, 371, 371, 371, 493, 87, 477, 488, 891 488, 488, 488, 488, 488, 233, 233, 233, 233, 233, 892 893 233, 87, 492, 516, 496, 234, 492, 87, 236, 237, 894 242, 242, 242, 242, 105, 105, 494, 495, 515, 381, 895 518, 489, 495, 496, 87, 87, 234, 374, 234, 87, 896 496, 236, 492, 237, 376, 376, 376, 376, 376, 376, 897 887, 383, 375, 384, 517, 87, 522, 385, 545, 496, 898 497, 87, 497, 386, 519, 498, 498, 498, 498, 498, 899 498, 87, 383, 87, 384, 387, 377, 87, 385, 384, 900 87, 87, 520, 385, 502, 87, 521, 87, 87, 523, 901 87, 87, 87, 87, 524, 526, 387, 499, 532, 87, 902 384, 525, 87, 527, 385, 87, 531, 528, 529, 530, 903 904 87, 535, 87, 536, 533, 87, 87, 539, 87, 87, 905 87, 534, 87, 537, 87, 87, 87, 541, 546, 538, 906 540, 87, 87, 544, 87, 548, 87, 87, 87, 542, 907 547, 543, 87, 87, 550, 87, 549, 556, 87, 552, 908 87, 87, 554, 87, 551, 87, 87, 559, 553, 87, 909 557, 87, 555, 87, 87, 87, 492, 87, 558, 565, 910 564, 560, 566, 561, 567, 562, 87, 87, 563, 87, 911 87, 201, 573, 568, 87, 571, 570, 577, 569, 599, 912 574, 492, 492, 576, 87, 572, 211, 211, 211, 211, 913 718, 493, 575, 488, 488, 488, 488, 488, 488, 376, 914 915 376, 376, 376, 376, 376, 599, 623, 492, 492, 234, 916 87, 87, 236, 237, 595, 87, 595, 87, 598, 596, 917 596, 596, 596, 596, 596, 489, 620, 618, 619, 87, 918 234, 490, 234, 87, 492, 236, 87, 237, 498, 498, 919 498, 498, 498, 498, 87, 87, 622, 626, 87, 621, 920 87, 597, 600, 600, 600, 600, 600, 600, 624, 87, 921 87, 87, 87, 629, 625, 631, 87, 633, 601, 632, 922 628, 602, 603, 497, 635, 497, 87, 636, 498, 498, 923 498, 498, 498, 498, 604, 630, 87, 634, 87, 601, 924 87, 601, 87, 87, 602, 637, 603, 642, 641, 87, 925 926 87, 640, 87, 87, 87, 87, 87, 639, 643, 87, 927 638, 647, 87, 87, 87, 87, 87, 644, 648, 645, 928 87, 646, 87, 654, 87, 650, 87, 653, 87, 649, 929 651, 652, 87, 655, 87, 87, 87, 87, 87, 657, 930 659, 664, 656, 661, 660, 658, 87, 87, 666, 663, 931 87, 87, 688, 87, 688, 665, 87, 662, 488, 488, 932 488, 488, 488, 488, 668, 702, 703, 667, 596, 596, 933 596, 596, 596, 596, 595, 688, 595, 688, 87, 596, 934 596, 596, 596, 596, 596, 689, 87, 721, 87, 689, 935 594, 686, 686, 686, 686, 686, 686, 600, 600, 600, 936 937 600, 600, 600, 704, 87, 87, 689, 601, 689, 699, 938 602, 603, 701, 689, 87, 87, 87, 87, 87, 87, 939 87, 87, 700, 687, 706, 87, 707, 87, 601, 604, 940 601, 87, 708, 602, 710, 603, 87, 705, 711, 716, 941 712, 713, 715, 87, 714, 87, 87, 87, 717, 87, 942 87, 87, 87, 87, 87, 87, 87, 87, 719, 724, 943 87, 727, 732, 87, 722, 720, 731, 87, 87, 723, 944 87, 736, 725, 726, 728, 87, 733, 730, 734, 735, 945 729, 686, 686, 686, 686, 686, 686, 600, 600, 600, 946 600, 600, 600, 87, 87, 87, 750, 601, 87, 754, 947 948 602, 603, 87, 751, 87, 753, 87, 756, 87, 757, 949 87, 87, 87, 687, 87, 762, 759, 764, 601, 690, 950 601, 752, 755, 602, 760, 603, 758, 87, 87, 87, 951 767, 765, 87, 87, 87, 763, 761, 768, 766, 87, 952 770, 87, 87, 87, 87, 87, 769, 87, 87, 771, 953 87, 87, 774, 87, 772, 87, 87, 87, 87, 779, 954 87, 795, 780, 773, 87, 87, 87, 775, 776, 777, 955 797, 778, 686, 686, 686, 686, 686, 686, 793, 87, 956 796, 794, 87, 800, 87, 801, 803, 87, 87, 798, 957 804, 805, 87, 87, 87, 87, 799, 802, 807, 806, 958 959 87, 87, 87, 808, 743, 87, 87, 87, 809, 828, 960 87, 87, 87, 87, 830, 831, 87, 810, 833, 87, 961 87, 87, 834, 87, 811, 827, 826, 87, 87, 825, 962 836, 837, 829, 87, 832, 87, 87, 839, 87, 840, 963 87, 87, 835, 87, 838, 850, 87, 887, 87, 851, 964 852, 855, 87, 856, 849, 857, 87, 87, 853, 858, 965 87, 87, 87, 87, 854, 87, 859, 864, 865, 860, 966 863, 87, 87, 866, 87, 868, 867, 869, 87, 87, 967 87, 870, 87, 87, 87, 873, 87, 875, 87, 876, 968 87, 87, 87, 874, 87, 872, 87, 87, 87, 871, 969 970 87, 880, 87, 887, 862, 887, 879, 881, 887, 887, 971 877, 878, 886, 887, 861, 884, 87, 87, 882, 883, 972 87, 87, 885, 69, 69, 69, 69, 69, 69, 69, 973 69, 69, 69, 69, 69, 69, 75, 75, 75, 75, 974 75, 75, 75, 75, 75, 75, 75, 75, 75, 78, 975 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 976 78, 78, 86, 87, 887, 86, 887, 86, 86, 86, 977 86, 86, 140, 848, 887, 847, 140, 140, 140, 140, 978 140, 140, 199, 199, 199, 199, 199, 199, 199, 199, 979 199, 199, 199, 199, 199, 204, 887, 845, 204, 887, 980 981 204, 204, 204, 204, 204, 208, 844, 208, 208, 887, 982 208, 208, 208, 208, 208, 208, 843, 208, 216, 887, 983 842, 216, 216, 216, 216, 216, 216, 216, 216, 87, 984 216, 239, 239, 239, 239, 239, 239, 239, 239, 239, 985 239, 239, 239, 239, 253, 253, 87, 253, 87, 887, 986 824, 253, 269, 887, 823, 269, 821, 269, 269, 269, 987 269, 269, 273, 887, 273, 819, 887, 817, 273, 275, 988 887, 275, 815, 813, 87, 275, 348, 87, 348, 87, 989 87, 87, 348, 350, 87, 350, 87, 87, 87, 350, 990 354, 87, 354, 87, 87, 887, 354, 356, 792, 356, 991 992 790, 887, 887, 356, 358, 787, 358, 785, 783, 87, 993 358, 365, 87, 365, 87, 87, 87, 365, 367, 87, 994 367, 87, 749, 746, 367, 239, 239, 239, 239, 239, 995 239, 239, 239, 239, 239, 239, 239, 239, 380, 745, 996 380, 382, 382, 743, 382, 382, 382, 205, 382, 253, 997 253, 739, 253, 392, 738, 392, 670, 87, 87, 392, 998 394, 87, 394, 87, 87, 87, 394, 396, 87, 396, 999 87, 87, 87, 396, 273, 87, 273, 398, 87, 398, 1000 87, 87, 87, 398, 275, 697, 275, 86, 696, 694, 1001 86, 692, 86, 86, 86, 86, 86, 199, 199, 199, 1002 1003 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 1027 1004 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 1028 578, 355, 578, 351, 349, 205, 578, 469, 201, 469, 1029 580, 87, 580, 277, 276, 274, 580, 471, 270, 471, 1030 582, 265, 582, 268, 265, 263, 582, 473, 262, 473, 1031 584, 261, 584, 240, 232, 85, 584, 475, 85, 475, 1032 586, 87, 586, 205, 203, 85, 586, 478, 122, 478, 1033 588, 117, 588, 87, 887, 70, 588, 480, 70, 480, 1034 482, 887, 482, 887, 887, 887, 482, 590, 887, 590, 1035 1036 887, 887, 887, 590, 484, 887, 484, 592, 887, 592, 1037 887, 887, 887, 592, 486, 887, 486, 491, 887, 491, 1038 887, 491, 887, 491, 382, 887, 382, 887, 887, 887, 1039 382, 606, 887, 606, 887, 887, 887, 606, 503, 887, 1040 503, 608, 887, 608, 887, 887, 887, 608, 505, 887, 1041 505, 610, 887, 610, 887, 887, 887, 610, 507, 887, 1042 507, 612, 887, 612, 887, 887, 887, 612, 509, 887, 1043 509, 614, 887, 614, 887, 887, 887, 614, 511, 887, 1044 511, 616, 887, 616, 887, 887, 887, 616, 513, 887, 1045 513, 86, 887, 887, 86, 887, 86, 86, 86, 86, 1046 1047 86, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1048 669, 669, 669, 669, 671, 887, 671, 887, 887, 887, 1049 671, 578, 887, 578, 673, 887, 673, 887, 887, 887, 1050 673, 580, 887, 580, 675, 887, 675, 887, 887, 887, 1051 675, 582, 887, 582, 677, 887, 677, 887, 887, 887, 1052 677, 584, 887, 584, 679, 887, 679, 887, 887, 887, 1053 679, 586, 887, 586, 681, 887, 681, 887, 887, 887, 1054 681, 588, 887, 588, 683, 887, 683, 887, 887, 887, 1055 683, 590, 887, 590, 86, 887, 86, 887, 887, 887, 1056 86, 592, 887, 592, 491, 887, 491, 887, 887, 887, 1057 1058 491, 691, 887, 691, 887, 887, 887, 691, 606, 887, 1059 606, 693, 887, 693, 887, 887, 887, 693, 608, 887, 1060 608, 695, 887, 695, 887, 887, 887, 695, 610, 887, 1061 610, 140, 887, 140, 887, 887, 887, 140, 612, 887, 1062 612, 698, 887, 698, 614, 887, 614, 86, 887, 887, 1063 86, 887, 86, 86, 86, 86, 86, 616, 887, 616, 1005 468, 468, 468, 469, 690, 469, 598, 685, 684, 469, 1006 471, 682, 471, 680, 678, 676, 471, 473, 674, 473, 1007 672, 670, 87, 473, 348, 87, 348, 475, 87, 475, 1008 87, 87, 87, 475, 350, 87, 350, 478, 87, 478, 1009 87, 87, 87, 478, 354, 617, 354, 480, 615, 480, 1010 613, 611, 609, 480, 356, 607, 356, 482, 502, 482, 1011 605, 605, 594, 482, 358, 593, 358, 484, 591, 484, 1012 483, 483, 589, 484, 365, 587, 365, 486, 585, 486, 1013 1014 583, 581, 579, 486, 367, 87, 367, 491, 87, 491, 1015 87, 491, 87, 491, 380, 87, 380, 87, 380, 87, 1016 380, 382, 382, 87, 382, 382, 382, 514, 382, 503, 1017 512, 503, 510, 508, 506, 503, 505, 504, 505, 490, 1018 487, 485, 505, 507, 361, 507, 361, 483, 481, 507, 1019 392, 479, 392, 509, 476, 509, 474, 472, 470, 509, 1020 394, 87, 394, 511, 87, 511, 87, 400, 399, 511, 1021 396, 397, 396, 513, 395, 513, 393, 270, 265, 513, 1022 398, 264, 398, 86, 389, 389, 86, 252, 86, 86, 1023 86, 86, 86, 468, 468, 468, 468, 468, 468, 468, 1024 1025 468, 468, 468, 468, 468, 468, 578, 379, 578, 379, 1026 240, 374, 578, 469, 368, 469, 580, 366, 580, 364, 1027 360, 359, 580, 471, 357, 471, 582, 355, 582, 351, 1028 349, 205, 582, 473, 201, 473, 584, 87, 584, 277, 1029 276, 274, 584, 475, 270, 475, 586, 265, 586, 268, 1030 265, 263, 586, 478, 262, 478, 588, 261, 588, 240, 1031 232, 85, 588, 480, 85, 480, 482, 87, 482, 205, 1032 203, 85, 482, 590, 122, 590, 117, 87, 887, 590, 1033 484, 70, 484, 592, 70, 592, 887, 887, 887, 592, 1034 486, 887, 486, 491, 887, 491, 887, 491, 887, 491, 1035 1036 382, 887, 382, 887, 887, 887, 382, 606, 887, 606, 1037 887, 887, 887, 606, 503, 887, 503, 608, 887, 608, 1038 887, 887, 887, 608, 505, 887, 505, 610, 887, 610, 1039 887, 887, 887, 610, 507, 887, 507, 612, 887, 612, 1040 887, 887, 887, 612, 509, 887, 509, 614, 887, 614, 1041 887, 887, 887, 614, 511, 887, 511, 616, 887, 616, 1042 887, 887, 887, 616, 513, 887, 513, 86, 887, 887, 1043 86, 887, 86, 86, 86, 86, 86, 669, 669, 669, 1064 1044 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1065 669, 669, 669, 737, 887, 737, 887, 887, 887, 737, 1066 671, 887, 671, 204, 887, 204, 887, 887, 887, 204, 1067 673, 887, 673, 740, 887, 740, 675, 887, 675, 204, 1068 1069 887, 887, 204, 887, 204, 204, 204, 204, 204, 677, 1070 887, 677, 741, 887, 741, 679, 887, 679, 681, 887, 1071 681, 742, 887, 742, 683, 887, 683, 86, 887, 86, 1072 744, 887, 744, 887, 887, 887, 744, 691, 887, 691, 1073 269, 887, 269, 887, 887, 887, 269, 693, 887, 693, 1074 747, 887, 747, 695, 887, 695, 140, 887, 140, 748, 1075 887, 748, 887, 887, 887, 748, 86, 887, 887, 86, 1076 887, 86, 86, 86, 86, 86, 781, 887, 781, 737, 1077 887, 737, 204, 887, 204, 782, 887, 782, 887, 887, 1078 887, 782, 784, 887, 784, 887, 887, 887, 784, 786, 1079 1080 887, 786, 887, 887, 887, 786, 788, 887, 788, 789, 1081 887, 789, 887, 887, 887, 789, 791, 887, 791, 887, 1082 887, 887, 791, 812, 887, 812, 887, 887, 887, 812, 1083 814, 887, 814, 887, 887, 887, 814, 816, 887, 816, 1084 887, 887, 887, 816, 818, 887, 818, 887, 887, 887, 1085 818, 820, 887, 820, 887, 887, 887, 820, 822, 887, 1086 822, 887, 887, 887, 822, 616, 887, 616, 887, 887, 1087 887, 616, 841, 887, 841, 887, 887, 887, 841, 677, 1088 887, 677, 887, 887, 887, 677, 681, 887, 681, 887, 1089 887, 887, 681, 86, 887, 86, 887, 887, 887, 86, 1090 1091 846, 887, 846, 887, 887, 887, 846, 140, 887, 140, 1092 887, 887, 887, 140, 204, 887, 204, 887, 887, 887, 1093 204, 11, 887, 887, 887, 887, 887, 887, 887, 887, 1045 671, 887, 671, 887, 887, 887, 671, 578, 887, 578, 1046 1047 673, 887, 673, 887, 887, 887, 673, 580, 887, 580, 1048 675, 887, 675, 887, 887, 887, 675, 582, 887, 582, 1049 677, 887, 677, 887, 887, 887, 677, 584, 887, 584, 1050 679, 887, 679, 887, 887, 887, 679, 586, 887, 586, 1051 681, 887, 681, 887, 887, 887, 681, 588, 887, 588, 1052 683, 887, 683, 887, 887, 887, 683, 590, 887, 590, 1053 86, 887, 86, 887, 887, 887, 86, 592, 887, 592, 1054 491, 887, 491, 887, 887, 887, 491, 691, 887, 691, 1055 887, 887, 887, 691, 606, 887, 606, 693, 887, 693, 1056 887, 887, 887, 693, 608, 887, 608, 695, 887, 695, 1057 1058 887, 887, 887, 695, 610, 887, 610, 140, 887, 140, 1059 887, 887, 887, 140, 612, 887, 612, 698, 887, 698, 1060 614, 887, 614, 86, 887, 887, 86, 887, 86, 86, 1061 86, 86, 86, 616, 887, 616, 669, 669, 669, 669, 1062 669, 669, 669, 669, 669, 669, 669, 669, 669, 737, 1063 887, 737, 887, 887, 887, 737, 671, 887, 671, 204, 1064 887, 204, 887, 887, 887, 204, 673, 887, 673, 740, 1065 887, 740, 675, 887, 675, 204, 887, 887, 204, 887, 1066 204, 204, 204, 204, 204, 677, 887, 677, 741, 887, 1067 741, 679, 887, 679, 681, 887, 681, 742, 887, 742, 1068 1069 683, 887, 683, 86, 887, 86, 744, 887, 744, 887, 1070 887, 887, 744, 691, 887, 691, 269, 887, 269, 887, 1071 887, 887, 269, 693, 887, 693, 747, 887, 747, 695, 1072 887, 695, 140, 887, 140, 748, 887, 748, 887, 887, 1073 887, 748, 86, 887, 887, 86, 887, 86, 86, 86, 1074 86, 86, 781, 887, 781, 737, 887, 737, 204, 887, 1075 204, 782, 887, 782, 887, 887, 887, 782, 784, 887, 1076 784, 887, 887, 887, 784, 786, 887, 786, 887, 887, 1077 887, 786, 788, 887, 788, 789, 887, 789, 887, 887, 1078 887, 789, 791, 887, 791, 887, 887, 887, 791, 812, 1079 1080 887, 812, 887, 887, 887, 812, 814, 887, 814, 887, 1081 887, 887, 814, 816, 887, 816, 887, 887, 887, 816, 1082 818, 887, 818, 887, 887, 887, 818, 820, 887, 820, 1083 887, 887, 887, 820, 822, 887, 822, 887, 887, 887, 1084 822, 616, 887, 616, 887, 887, 887, 616, 841, 887, 1085 841, 887, 887, 887, 841, 677, 887, 677, 887, 887, 1086 887, 677, 681, 887, 681, 887, 887, 887, 681, 86, 1087 887, 86, 887, 887, 887, 86, 846, 887, 846, 887, 1088 887, 887, 846, 140, 887, 140, 887, 887, 887, 140, 1089 204, 887, 204, 887, 887, 887, 204, 11, 887, 887, 1090 1094 1091 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1095 1092 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, … … 1099 1096 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1100 1097 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1101 1102 887, 887 , 887, 887, 887, 887, 8871098 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1099 887, 887 1103 1100 } ; 1104 1101 1105 static yyconst flex_int16_t yy_chk[2 908] =1102 static yyconst flex_int16_t yy_chk[2883] = 1106 1103 { 0, 1107 1104 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1113 1110 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1114 1111 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1115 1, 1, 1, 1, 1, 2, 16, 24, 16, 24,1116 2, 19, 19, 2, 5, 5, 5, 5, 5, 5,1112 1, 1, 1, 1, 2, 16, 24, 16, 24, 2, 1113 19, 19, 2, 5, 5, 5, 5, 5, 5, 5, 1117 1114 1118 1115 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, … … 1123 1120 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1124 1121 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1125 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1126 8, 9, 10, 37, 37, 20, 39, 9, 10, 886, 1127 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1128 1129 15, 15, 15, 15, 20, 25, 48, 39, 42, 28, 1130 27, 28, 28, 28, 28, 28, 28, 109, 115, 25, 1131 29, 25, 27, 27, 27, 29, 48, 35, 40, 7, 1132 8, 9, 10, 40, 42, 29, 30, 47, 30, 30, 1133 30, 30, 30, 30, 35, 57, 35, 35, 44, 126, 1134 44, 126, 109, 115, 57, 30, 64, 56, 47, 30, 1135 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1136 45, 30, 40, 45, 45, 40, 49, 30, 45, 56, 1137 62, 45, 49, 30, 73, 885, 127, 53, 127, 51, 1138 61, 30, 62, 55, 30, 31, 108, 31, 31, 31, 1139 1140 31, 31, 31, 50, 51, 53, 51, 64, 61, 54, 1141 73, 55, 50, 87, 31, 51, 50, 55, 31, 54, 1142 108, 50, 52, 114, 31, 50, 54, 52, 175, 129, 1143 31, 129, 107, 154, 151, 52, 31, 52, 107, 87, 1144 52, 60, 31, 132, 52, 132, 60, 114, 175, 154, 1145 31, 38, 151, 385, 111, 38, 38, 58, 38, 60, 1146 38, 38, 113, 38, 107, 38, 59, 130, 113, 58, 1147 58, 116, 111, 164, 38, 38, 38, 385, 59, 58, 1148 111, 130, 58, 130, 142, 60, 59, 131, 60, 116, 1149 164, 68, 68, 59, 113, 38, 68, 116, 38, 131, 1150 1151 110, 131, 60, 67, 67, 67, 67, 67, 67, 877, 1152 142, 67, 68, 68, 68, 68, 68, 68, 80, 80, 1153 80, 80, 80, 80, 153, 38, 38, 77, 77, 134, 1154 110, 134, 77, 153, 77, 110, 135, 135, 135, 77, 1155 82, 82, 82, 82, 82, 82, 876, 243, 77, 77, 1156 77, 77, 83, 83, 83, 83, 83, 83, 110, 77, 1157 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 1158 133, 133, 137, 133, 137, 77, 145, 139, 77, 139, 1159 157, 145, 243, 77, 77, 152, 156, 77, 77, 155, 1160 166, 150, 157, 103, 104, 77, 159, 168, 77, 104, 1161 1162 77, 77, 77, 152, 77, 85, 150, 155, 156, 85, 1163 85, 166, 159, 150, 85, 85, 161, 85, 160, 85, 1164 145, 162, 104, 167, 168, 161, 169, 163, 85, 85, 1165 85, 105, 163, 105, 105, 105, 105, 105, 105, 873, 1166 160, 171, 162, 162, 165, 163, 167, 169, 173, 85, 1167 105, 106, 85, 106, 165, 172, 106, 106, 106, 106, 1168 106, 106, 180, 171, 170, 173, 105, 176, 177, 170, 1169 172, 181, 105, 174, 184, 187, 181, 182, 179, 180, 1170 85, 99, 99, 99, 99, 99, 99, 170, 187, 106, 1171 177, 174, 184, 179, 176, 183, 190, 99, 99, 99, 1172 1173 179, 99, 99, 189, 182, 186, 183, 191, 189, 218, 1174 186, 218, 185, 188, 99, 190, 183, 183, 284, 99, 1175 99, 99, 158, 185, 99, 186, 99, 158, 158, 158, 1176 189, 158, 158, 188, 192, 158, 194, 158, 284, 219, 1177 185, 219, 158, 158, 158, 193, 158, 192, 220, 194, 1178 220, 191, 198, 198, 191, 192, 205, 198, 193, 872, 1179 193, 197, 197, 197, 197, 197, 197, 200, 200, 197, 1180 248, 221, 200, 198, 198, 198, 198, 198, 198, 202, 1181 202, 223, 205, 223, 202, 221, 202, 221, 200, 200, 1182 200, 200, 200, 200, 209, 209, 248, 338, 222, 209, 1183 1184 202, 202, 202, 202, 202, 202, 212, 212, 212, 212, 1185 222, 309, 222, 224, 224, 225, 224, 225, 226, 226, 1186 226, 228, 229, 228, 229, 234, 234, 235, 236, 235, 1187 309, 279, 235, 235, 235, 235, 235, 235, 237, 212, 1188 237, 338, 266, 237, 266, 267, 278, 267, 234, 279, 1189 283, 236, 241, 241, 241, 283, 241, 241, 256, 278, 1190 237, 281, 237, 282, 280, 235, 270, 237, 244, 244, 1191 244, 244, 244, 244, 241, 241, 241, 281, 285, 241, 1192 282, 241, 280, 285, 256, 244, 245, 245, 245, 245, 1193 245, 245, 270, 288, 293, 286, 294, 300, 306, 293, 1194 1195 308, 244, 300, 306, 870, 294, 308, 244, 246, 246, 1196 246, 246, 246, 246, 253, 286, 288, 255, 255, 255, 1197 255, 255, 255, 287, 246, 247, 246, 247, 246, 246, 1198 247, 247, 247, 247, 247, 247, 290, 253, 287, 253, 1199 869, 246, 289, 253, 287, 287, 246, 292, 246, 253, 1200 255, 246, 291, 246, 260, 260, 260, 260, 260, 260, 1201 289, 253, 290, 292, 292, 253, 295, 291, 296, 253, 1202 297, 299, 301, 302, 303, 304, 305, 307, 311, 295, 1203 302, 301, 307, 310, 311, 312, 319, 260, 297, 299, 1204 313, 314, 310, 304, 303, 296, 318, 305, 305, 313, 1205 1206 315, 312, 316, 317, 319, 315, 314, 316, 317, 320, 1207 322, 323, 324, 326, 325, 318, 327, 328, 331, 329, 1208 330, 322, 320, 332, 334, 317, 323, 325, 333, 330, 1209 335, 324, 337, 339, 340, 326, 329, 328, 401, 327, 1210 331, 337, 334, 335, 341, 343, 332, 340, 342, 401, 1211 333, 339, 341, 342, 344, 344, 345, 460, 862, 344, 1212 343, 344, 345, 352, 352, 352, 352, 353, 353, 353, 1213 353, 362, 363, 362, 363, 370, 370, 370, 370, 370, 1214 370, 372, 460, 372, 380, 381, 372, 372, 372, 372, 1215 372, 372, 861, 402, 380, 381, 352, 371, 371, 371, 1216 1217 371, 371, 371, 374, 374, 374, 374, 374, 374, 402, 1218 380, 381, 403, 371, 404, 371, 860, 371, 371, 375, 1219 375, 375, 375, 375, 375, 383, 382, 403, 406, 405, 1220 371, 383, 407, 404, 408, 371, 374, 371, 405, 406, 1221 371, 407, 371, 376, 376, 376, 376, 376, 376, 382, 1222 412, 382, 375, 387, 411, 382, 408, 383, 384, 386, 1223 384, 382, 410, 384, 384, 384, 384, 384, 384, 409, 1224 411, 387, 412, 382, 413, 410, 376, 382, 409, 387, 1225 415, 382, 386, 414, 386, 416, 417, 413, 386, 418, 1226 421, 417, 419, 422, 386, 420, 384, 427, 419, 414, 1227 1228 414, 421, 415, 416, 418, 423, 386, 425, 429, 427, 1229 386, 418, 422, 430, 386, 431, 420, 432, 433, 434, 1230 423, 425, 435, 437, 433, 439, 440, 441, 431, 429, 1231 442, 435, 443, 444, 434, 430, 449, 445, 437, 447, 1232 432, 450, 441, 451, 454, 439, 445, 443, 440, 452, 1233 450, 453, 442, 444, 455, 456, 447, 457, 458, 449, 1234 459, 461, 463, 455, 451, 458, 454, 459, 462, 452, 1235 457, 453, 466, 456, 464, 467, 462, 525, 859, 463, 1236 525, 468, 491, 461, 467, 464, 462, 468, 477, 477, 1237 477, 477, 491, 515, 466, 488, 488, 488, 488, 488, 1238 1239 488, 490, 490, 490, 490, 490, 490, 519, 491, 521, 1240 515, 488, 492, 488, 492, 488, 488, 492, 492, 492, 1241 492, 492, 492, 494, 516, 495, 493, 519, 488, 855, 1242 851, 521, 518, 488, 490, 488, 493, 516, 488, 529, 1243 488, 497, 497, 497, 497, 497, 497, 518, 520, 494, 1244 492, 495, 493, 498, 498, 498, 498, 498, 498, 523, 1245 529, 520, 526, 848, 523, 847, 528, 846, 522, 498, 1246 499, 498, 499, 498, 498, 499, 499, 499, 499, 499, 1247 499, 522, 526, 524, 527, 528, 498, 531, 530, 532, 1248 533, 498, 531, 498, 524, 534, 498, 530, 498, 527, 1249 1250 532, 535, 537, 533, 536, 538, 539, 541, 542, 547, 1251 535, 539, 544, 541, 538, 545, 546, 542, 547, 537, 1252 550, 551, 845, 549, 534, 552, 536, 554, 560, 544, 1253 545, 546, 549, 551, 555, 557, 558, 550, 561, 555, 1254 552, 562, 554, 565, 557, 558, 564, 567, 566, 568, 1255 560, 561, 575, 565, 564, 566, 569, 571, 562, 574, 1256 572, 568, 569, 620, 619, 575, 571, 601, 601, 567, 1257 572, 619, 620, 844, 843, 622, 574, 594, 594, 594, 1258 594, 594, 594, 595, 595, 595, 595, 595, 595, 597, 1259 601, 597, 622, 621, 597, 597, 597, 597, 597, 597, 1260 1261 600, 600, 600, 600, 600, 600, 621, 602, 626, 842, 1262 594, 596, 596, 596, 596, 596, 596, 603, 618, 603, 1263 623, 624, 603, 618, 628, 626, 625, 596, 624, 596, 1264 602, 596, 596, 600, 625, 627, 618, 628, 627, 603, 1265 629, 603, 630, 623, 596, 631, 603, 632, 633, 596, 1266 634, 596, 635, 634, 596, 636, 596, 630, 637, 638, 1267 640, 644, 629, 639, 632, 641, 642, 631, 645, 635, 1268 633, 646, 639, 637, 650, 642, 651, 656, 640, 638, 1269 646, 653, 657, 636, 644, 665, 656, 641, 664, 657, 1270 645, 667, 668, 841, 650, 665, 700, 664, 653, 699, 1271 1272 667, 702, 705, 651, 714, 837, 700, 668, 686, 686, 1273 686, 686, 686, 686, 690, 690, 690, 690, 690, 690, 1274 699, 708, 705, 703, 686, 714, 686, 702, 686, 686, 1275 703, 704, 706, 715, 707, 706, 704, 707, 710, 708, 1276 712, 686, 711, 717, 710, 718, 686, 690, 686, 712, 1277 720, 686, 717, 686, 713, 711, 716, 713, 719, 716, 1278 721, 719, 715, 720, 722, 723, 724, 725, 721, 728, 1279 731, 718, 732, 735, 722, 733, 725, 736, 723, 756, 1280 757, 735, 836, 754, 756, 759, 736, 724, 755, 760, 1281 731, 761, 728, 764, 732, 757, 733, 743, 743, 743, 1282 1283 743, 743, 743, 754, 758, 755, 760, 762, 759, 763, 1284 762, 769, 766, 768, 758, 766, 768, 761, 769, 772, 1285 770, 764, 763, 770, 771, 773, 778, 771, 793, 795, 1286 743, 798, 797, 796, 772, 797, 799, 800, 802, 799, 1287 800, 803, 804, 806, 807, 804, 810, 807, 773, 778, 1288 795, 796, 809, 798, 808, 793, 802, 808, 811, 826, 1289 830, 809, 810, 827, 829, 806, 828, 803, 831, 828, 1290 827, 831, 832, 829, 811, 834, 835, 839, 830, 835, 1291 826, 840, 838, 849, 830, 838, 839, 853, 850, 832, 1292 840, 852, 849, 850, 852, 854, 856, 853, 857, 856, 1293 1294 854, 857, 858, 863, 864, 858, 865, 866, 867, 865, 1295 868, 867, 871, 868, 874, 875, 878, 866, 879, 864, 1296 880, 882, 881, 863, 883, 878, 884, 833, 825, 824, 1297 875, 879, 823, 822, 871, 874, 884, 821, 820, 882, 1298 819, 818, 880, 881, 817, 816, 883, 888, 888, 888, 1299 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 1300 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 1301 889, 889, 889, 890, 890, 890, 890, 890, 890, 890, 1302 890, 890, 890, 890, 890, 890, 891, 815, 814, 891, 1303 813, 891, 891, 891, 891, 891, 892, 812, 805, 801, 1304 1305 892, 892, 892, 892, 892, 892, 893, 893, 893, 893, 1306 893, 893, 893, 893, 893, 893, 893, 893, 893, 894, 1307 794, 792, 894, 791, 894, 894, 894, 894, 894, 895, 1308 790, 895, 895, 789, 895, 895, 895, 895, 895, 895, 1309 788, 895, 896, 787, 786, 896, 896, 896, 896, 896, 1310 896, 896, 896, 785, 896, 897, 897, 897, 897, 897, 1311 897, 897, 897, 897, 897, 897, 897, 897, 898, 898, 1312 784, 898, 783, 782, 781, 898, 899, 780, 779, 899, 1313 777, 899, 899, 899, 899, 899, 900, 776, 900, 775, 1314 774, 767, 900, 901, 765, 901, 753, 752, 751, 901, 1315 1316 902, 750, 902, 749, 748, 747, 902, 903, 746, 903, 1317 745, 742, 741, 903, 904, 740, 904, 734, 730, 729, 1318 904, 905, 727, 905, 726, 709, 701, 905, 906, 698, 1319 906, 693, 691, 687, 906, 907, 677, 907, 673, 671, 1320 669, 907, 908, 666, 908, 663, 662, 661, 908, 909, 1321 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 1322 909, 909, 910, 660, 910, 911, 911, 659, 911, 911, 1323 911, 658, 911, 912, 912, 655, 912, 913, 654, 913, 1324 652, 649, 648, 913, 914, 647, 914, 643, 616, 612, 1325 914, 915, 610, 915, 608, 606, 604, 915, 916, 598, 1326 1327 916, 917, 592, 917, 590, 588, 586, 917, 918, 584, 1328 918, 919, 582, 580, 919, 578, 919, 919, 919, 919, 1329 919, 920, 920, 920, 920, 920, 920, 920, 920, 920, 1330 920, 920, 920, 920, 921, 921, 921, 921, 921, 921, 1331 921, 921, 921, 921, 921, 921, 921, 922, 577, 922, 1332 576, 573, 570, 922, 923, 563, 923, 559, 556, 553, 1333 923, 924, 548, 924, 543, 540, 517, 924, 925, 513, 1334 925, 926, 511, 926, 509, 507, 505, 926, 927, 503, 1335 927, 928, 502, 928, 501, 500, 489, 928, 929, 486, 1336 929, 930, 484, 930, 483, 482, 480, 930, 931, 478, 1337 1338 931, 932, 475, 932, 473, 471, 469, 932, 933, 465, 1339 933, 934, 448, 934, 446, 438, 436, 934, 935, 428, 1340 935, 936, 426, 936, 424, 398, 396, 936, 937, 394, 1341 937, 938, 392, 938, 391, 938, 390, 938, 939, 377, 1342 939, 367, 939, 365, 939, 940, 940, 364, 940, 940, 1343 940, 360, 940, 941, 358, 941, 356, 354, 350, 941, 1344 942, 348, 942, 347, 346, 336, 942, 943, 321, 943, 1345 298, 277, 275, 943, 944, 273, 944, 945, 272, 945, 1346 271, 269, 268, 945, 946, 263, 946, 947, 259, 947, 1347 258, 254, 251, 947, 948, 250, 948, 949, 239, 949, 1348 1349 238, 231, 230, 949, 950, 227, 950, 951, 217, 215, 1350 951, 214, 951, 951, 951, 951, 951, 952, 952, 952, 1351 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 1352 953, 213, 953, 207, 206, 204, 953, 954, 199, 954, 1353 955, 178, 955, 149, 147, 146, 955, 956, 140, 956, 1354 957, 138, 957, 136, 128, 125, 957, 958, 124, 958, 1355 959, 120, 959, 101, 98, 95, 959, 960, 93, 960, 1356 961, 86, 961, 72, 70, 66, 961, 962, 36, 962, 1357 963, 33, 963, 18, 11, 4, 963, 964, 3, 964, 1358 965, 0, 965, 0, 0, 0, 965, 966, 0, 966, 1359 1360 0, 0, 0, 966, 967, 0, 967, 968, 0, 968, 1361 0, 0, 0, 968, 969, 0, 969, 970, 0, 970, 1362 0, 970, 0, 970, 971, 0, 971, 0, 0, 0, 1363 971, 972, 0, 972, 0, 0, 0, 972, 973, 0, 1364 973, 974, 0, 974, 0, 0, 0, 974, 975, 0, 1365 975, 976, 0, 976, 0, 0, 0, 976, 977, 0, 1366 977, 978, 0, 978, 0, 0, 0, 978, 979, 0, 1367 979, 980, 0, 980, 0, 0, 0, 980, 981, 0, 1368 981, 982, 0, 982, 0, 0, 0, 982, 983, 0, 1369 983, 984, 0, 0, 984, 0, 984, 984, 984, 984, 1370 1371 984, 985, 985, 985, 985, 985, 985, 985, 985, 985, 1372 985, 985, 985, 985, 986, 0, 986, 0, 0, 0, 1373 986, 987, 0, 987, 988, 0, 988, 0, 0, 0, 1374 988, 989, 0, 989, 990, 0, 990, 0, 0, 0, 1375 990, 991, 0, 991, 992, 0, 992, 0, 0, 0, 1376 992, 993, 0, 993, 994, 0, 994, 0, 0, 0, 1377 994, 995, 0, 995, 996, 0, 996, 0, 0, 0, 1378 996, 997, 0, 997, 998, 0, 998, 0, 0, 0, 1379 998, 999, 0, 999, 1000, 0, 1000, 0, 0, 0, 1380 1000, 1001, 0, 1001, 1002, 0, 1002, 0, 0, 0, 1381 1382 1002, 1003, 0, 1003, 0, 0, 0, 1003, 1004, 0, 1383 1004, 1005, 0, 1005, 0, 0, 0, 1005, 1006, 0, 1384 1006, 1007, 0, 1007, 0, 0, 0, 1007, 1008, 0, 1385 1008, 1009, 0, 1009, 0, 0, 0, 1009, 1010, 0, 1386 1010, 1011, 0, 1011, 1012, 0, 1012, 1013, 0, 0, 1387 1013, 0, 1013, 1013, 1013, 1013, 1013, 1014, 0, 1014, 1388 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1389 1015, 1015, 1015, 1016, 0, 1016, 0, 0, 0, 1016, 1390 1017, 0, 1017, 1018, 0, 1018, 0, 0, 0, 1018, 1391 1019, 0, 1019, 1020, 0, 1020, 1021, 0, 1021, 1022, 1392 1393 0, 0, 1022, 0, 1022, 1022, 1022, 1022, 1022, 1023, 1394 0, 1023, 1024, 0, 1024, 1025, 0, 1025, 1026, 0, 1395 1026, 1027, 0, 1027, 1028, 0, 1028, 1029, 0, 1029, 1396 1030, 0, 1030, 0, 0, 0, 1030, 1031, 0, 1031, 1397 1032, 0, 1032, 0, 0, 0, 1032, 1033, 0, 1033, 1398 1034, 0, 1034, 1035, 0, 1035, 1036, 0, 1036, 1037, 1399 0, 1037, 0, 0, 0, 1037, 1038, 0, 0, 1038, 1400 0, 1038, 1038, 1038, 1038, 1038, 1039, 0, 1039, 1040, 1401 0, 1040, 1041, 0, 1041, 1042, 0, 1042, 0, 0, 1402 0, 1042, 1043, 0, 1043, 0, 0, 0, 1043, 1044, 1403 1404 0, 1044, 0, 0, 0, 1044, 1045, 0, 1045, 1046, 1405 0, 1046, 0, 0, 0, 1046, 1047, 0, 1047, 0, 1406 0, 0, 1047, 1048, 0, 1048, 0, 0, 0, 1048, 1407 1049, 0, 1049, 0, 0, 0, 1049, 1050, 0, 1050, 1408 0, 0, 0, 1050, 1051, 0, 1051, 0, 0, 0, 1409 1051, 1052, 0, 1052, 0, 0, 0, 1052, 1053, 0, 1410 1053, 0, 0, 0, 1053, 1054, 0, 1054, 0, 0, 1411 0, 1054, 1055, 0, 1055, 0, 0, 0, 1055, 1056, 1412 0, 1056, 0, 0, 0, 1056, 1057, 0, 1057, 0, 1413 0, 0, 1057, 1058, 0, 1058, 0, 0, 0, 1058, 1414 1415 1059, 0, 1059, 0, 0, 0, 1059, 1060, 0, 1060, 1416 0, 0, 0, 1060, 1061, 0, 1061, 0, 0, 0, 1417 1061, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1122 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 1123 10, 37, 37, 20, 39, 9, 10, 886, 7, 8, 1124 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 1125 1126 15, 15, 20, 25, 39, 42, 53, 28, 27, 28, 1127 28, 28, 28, 28, 28, 109, 115, 25, 29, 25, 1128 27, 27, 27, 29, 53, 35, 7, 8, 9, 10, 1129 40, 42, 48, 29, 30, 40, 30, 30, 30, 30, 1130 30, 30, 35, 62, 35, 35, 44, 302, 44, 109, 1131 115, 885, 48, 30, 302, 62, 30, 57, 47, 45, 1132 45, 45, 30, 30, 45, 45, 57, 45, 30, 55, 1133 45, 45, 49, 40, 30, 45, 40, 49, 45, 47, 1134 30, 47, 56, 64, 49, 164, 51, 55, 30, 73, 1135 49, 30, 31, 55, 31, 31, 31, 31, 31, 31, 1136 1137 50, 51, 164, 51, 56, 154, 54, 59, 877, 50, 1138 61, 31, 51, 50, 31, 73, 54, 58, 50, 59, 1139 31, 154, 50, 54, 87, 159, 31, 59, 61, 58, 1140 58, 60, 31, 64, 59, 126, 60, 126, 31, 58, 1141 52, 159, 58, 68, 68, 52, 31, 38, 68, 60, 1142 87, 38, 38, 52, 38, 52, 38, 38, 52, 38, 1143 108, 38, 52, 114, 68, 68, 68, 68, 68, 68, 1144 38, 38, 38, 127, 60, 127, 153, 60, 67, 67, 1145 67, 67, 67, 67, 108, 153, 67, 114, 876, 873, 1146 38, 60, 166, 38, 80, 80, 80, 80, 80, 80, 1147 1148 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 1149 83, 83, 129, 166, 129, 104, 104, 104, 104, 107, 1150 38, 38, 77, 77, 872, 107, 113, 77, 169, 77, 1151 111, 132, 113, 132, 77, 103, 103, 103, 103, 103, 1152 103, 131, 104, 77, 77, 77, 77, 104, 111, 169, 1153 110, 107, 130, 131, 77, 131, 111, 105, 113, 105, 1154 105, 105, 105, 105, 105, 151, 130, 103, 130, 77, 1155 104, 134, 77, 134, 281, 116, 105, 77, 77, 110, 1156 142, 77, 77, 151, 110, 133, 133, 152, 133, 77, 1157 281, 105, 77, 116, 77, 77, 77, 105, 77, 85, 1158 1159 137, 116, 137, 85, 85, 152, 142, 110, 85, 85, 1160 106, 85, 106, 85, 155, 106, 106, 106, 106, 106, 1161 106, 150, 85, 85, 85, 135, 135, 135, 139, 145, 1162 139, 156, 155, 160, 145, 161, 150, 157, 162, 167, 1163 165, 168, 85, 150, 161, 85, 163, 106, 171, 157, 1164 165, 163, 172, 156, 173, 160, 181, 176, 170, 162, 1165 162, 181, 167, 170, 163, 174, 175, 172, 168, 182, 1166 171, 173, 145, 85, 99, 99, 99, 99, 99, 99, 1167 177, 170, 179, 174, 176, 184, 175, 183, 180, 185, 1168 99, 99, 525, 99, 99, 525, 182, 179, 183, 218, 1169 1170 185, 218, 177, 184, 179, 180, 99, 191, 183, 183, 1171 186, 99, 99, 99, 158, 186, 99, 185, 99, 158, 1172 158, 158, 188, 158, 158, 190, 187, 158, 189, 158, 1173 186, 205, 193, 189, 158, 158, 158, 627, 158, 187, 1174 627, 192, 188, 194, 190, 193, 219, 193, 219, 220, 1175 191, 220, 248, 191, 192, 189, 194, 205, 223, 225, 1176 223, 225, 192, 197, 197, 197, 197, 197, 197, 198, 1177 198, 197, 209, 209, 198, 200, 200, 209, 248, 870, 1178 200, 202, 202, 308, 224, 224, 202, 224, 202, 308, 1179 198, 198, 198, 198, 198, 198, 200, 200, 200, 200, 1180 1181 200, 200, 202, 202, 202, 202, 202, 202, 212, 212, 1182 212, 212, 221, 222, 226, 226, 226, 228, 229, 228, 1183 229, 234, 243, 237, 338, 222, 221, 222, 221, 235, 1184 278, 235, 256, 279, 235, 235, 235, 235, 235, 235, 1185 212, 236, 270, 278, 234, 236, 237, 280, 291, 241, 1186 241, 279, 241, 241, 284, 266, 243, 266, 256, 267, 1187 869, 267, 236, 291, 236, 280, 235, 338, 270, 236, 1188 241, 241, 241, 282, 284, 241, 289, 241, 244, 244, 1189 244, 244, 244, 244, 245, 245, 245, 245, 245, 245, 1190 282, 247, 286, 247, 289, 244, 247, 247, 247, 247, 1191 1192 247, 247, 255, 255, 255, 255, 255, 255, 283, 285, 1193 244, 295, 286, 283, 285, 288, 244, 246, 246, 246, 1194 246, 246, 246, 253, 295, 292, 260, 260, 260, 260, 1195 260, 260, 862, 246, 255, 296, 246, 246, 288, 293, 1196 290, 292, 292, 294, 293, 253, 297, 253, 300, 246, 1197 287, 253, 294, 300, 246, 303, 246, 253, 260, 246, 1198 299, 246, 296, 304, 297, 287, 290, 301, 305, 253, 1199 312, 287, 287, 253, 306, 303, 301, 253, 299, 306, 1200 307, 304, 309, 310, 314, 307, 312, 311, 313, 305, 1201 305, 315, 310, 311, 318, 316, 315, 313, 317, 314, 1202 1203 316, 309, 320, 317, 319, 322, 323, 324, 326, 327, 1204 325, 328, 329, 318, 331, 320, 322, 332, 330, 333, 1205 317, 323, 319, 325, 334, 335, 324, 330, 337, 329, 1206 326, 328, 327, 339, 340, 341, 331, 337, 335, 342, 1207 332, 333, 334, 341, 342, 343, 345, 340, 344, 344, 1208 861, 339, 345, 344, 385, 344, 352, 352, 352, 352, 1209 343, 353, 353, 353, 353, 362, 363, 362, 363, 370, 1210 370, 370, 370, 370, 370, 372, 380, 372, 385, 860, 1211 372, 372, 372, 372, 372, 372, 380, 402, 352, 371, 1212 371, 371, 371, 371, 371, 374, 374, 374, 374, 374, 1213 1214 374, 404, 380, 402, 387, 371, 381, 401, 371, 371, 1215 375, 375, 375, 375, 375, 375, 381, 383, 401, 382, 1216 404, 371, 387, 383, 408, 432, 371, 374, 371, 403, 1217 387, 371, 381, 371, 376, 376, 376, 376, 376, 376, 1218 386, 382, 375, 382, 403, 405, 408, 382, 432, 383, 1219 384, 859, 384, 382, 405, 384, 384, 384, 384, 384, 1220 384, 406, 386, 412, 386, 382, 376, 407, 386, 382, 1221 409, 410, 406, 382, 386, 411, 407, 415, 416, 409, 1222 413, 414, 420, 417, 410, 412, 386, 384, 417, 418, 1223 386, 411, 423, 413, 386, 419, 416, 414, 414, 415, 1224 1225 422, 419, 421, 420, 418, 427, 425, 423, 429, 430, 1226 431, 418, 433, 421, 439, 434, 435, 427, 433, 422, 1227 425, 437, 440, 431, 441, 435, 442, 443, 445, 429, 1228 434, 430, 444, 447, 439, 449, 437, 445, 450, 441, 1229 451, 456, 443, 452, 440, 453, 454, 450, 442, 457, 1230 447, 455, 444, 460, 461, 463, 494, 458, 449, 456, 1231 455, 451, 457, 452, 458, 453, 459, 462, 454, 464, 1232 466, 468, 463, 459, 467, 462, 461, 468, 460, 495, 1233 464, 491, 494, 467, 521, 462, 477, 477, 477, 477, 1234 636, 491, 466, 488, 488, 488, 488, 488, 488, 490, 1235 1236 490, 490, 490, 490, 490, 495, 521, 491, 493, 488, 1237 515, 518, 488, 488, 492, 516, 492, 636, 493, 492, 1238 492, 492, 492, 492, 492, 488, 518, 515, 516, 519, 1239 488, 490, 488, 520, 493, 488, 524, 488, 497, 497, 1240 497, 497, 497, 497, 529, 522, 520, 524, 527, 519, 1241 526, 492, 498, 498, 498, 498, 498, 498, 522, 523, 1242 530, 533, 531, 527, 523, 529, 528, 531, 498, 530, 1243 526, 498, 498, 499, 533, 499, 532, 534, 499, 499, 1244 499, 499, 499, 499, 498, 528, 535, 532, 536, 498, 1245 537, 498, 538, 539, 498, 535, 498, 541, 539, 542, 1246 1247 544, 538, 547, 541, 545, 534, 546, 537, 542, 549, 1248 536, 547, 550, 551, 557, 552, 554, 544, 549, 545, 1249 560, 546, 555, 557, 558, 551, 561, 555, 562, 550, 1250 552, 554, 564, 558, 565, 567, 566, 568, 572, 561, 1251 564, 569, 560, 566, 565, 562, 571, 569, 572, 568, 1252 574, 575, 601, 621, 603, 571, 620, 567, 594, 594, 1253 594, 594, 594, 594, 575, 620, 621, 574, 595, 595, 1254 595, 595, 595, 595, 597, 601, 597, 603, 639, 597, 1255 597, 597, 597, 597, 597, 602, 622, 639, 855, 602, 1256 594, 596, 596, 596, 596, 596, 596, 600, 600, 600, 1257 1258 600, 600, 600, 622, 618, 619, 602, 596, 602, 618, 1259 596, 596, 619, 602, 623, 626, 629, 624, 625, 631, 1260 633, 628, 618, 596, 624, 630, 625, 632, 596, 600, 1261 596, 635, 626, 596, 628, 596, 634, 623, 629, 634, 1262 630, 631, 633, 637, 632, 638, 640, 641, 635, 644, 1263 642, 645, 646, 651, 650, 657, 668, 656, 637, 642, 1264 653, 646, 657, 851, 640, 638, 656, 664, 665, 641, 1265 667, 668, 644, 645, 650, 699, 664, 653, 665, 667, 1266 651, 686, 686, 686, 686, 686, 686, 690, 690, 690, 1267 690, 690, 690, 700, 704, 702, 699, 686, 703, 704, 1268 1269 686, 686, 705, 700, 706, 703, 707, 706, 708, 707, 1270 710, 711, 713, 686, 714, 713, 710, 715, 686, 690, 1271 686, 702, 705, 686, 711, 686, 708, 712, 716, 717, 1272 718, 716, 721, 720, 719, 714, 712, 719, 717, 722, 1273 721, 723, 724, 725, 728, 715, 720, 732, 731, 722, 1274 733, 735, 725, 736, 723, 718, 756, 761, 754, 735, 1275 758, 756, 736, 724, 755, 757, 759, 728, 731, 732, 1276 758, 733, 743, 743, 743, 743, 743, 743, 754, 760, 1277 757, 755, 762, 761, 763, 762, 764, 766, 768, 759, 1278 766, 768, 769, 772, 773, 770, 760, 763, 770, 769, 1279 1280 771, 778, 793, 771, 743, 795, 797, 796, 772, 797, 1281 798, 799, 800, 764, 799, 800, 802, 773, 803, 804, 1282 806, 810, 804, 811, 778, 796, 795, 807, 808, 793, 1283 807, 808, 798, 826, 802, 809, 832, 810, 827, 811, 1284 830, 829, 806, 803, 809, 827, 828, 848, 831, 828, 1285 829, 831, 835, 832, 826, 835, 838, 839, 830, 838, 1286 840, 849, 850, 853, 830, 852, 839, 850, 852, 840, 1287 849, 854, 856, 853, 857, 856, 854, 857, 858, 863, 1288 864, 858, 865, 866, 867, 865, 868, 867, 871, 868, 1289 874, 875, 878, 866, 879, 864, 880, 882, 881, 863, 1290 1291 883, 878, 884, 847, 846, 845, 875, 879, 844, 843, 1292 871, 874, 884, 842, 841, 882, 837, 836, 880, 881, 1293 834, 833, 883, 888, 888, 888, 888, 888, 888, 888, 1294 888, 888, 888, 888, 888, 888, 889, 889, 889, 889, 1295 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 1296 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1297 890, 890, 891, 825, 824, 891, 823, 891, 891, 891, 1298 891, 891, 892, 822, 821, 820, 892, 892, 892, 892, 1299 892, 892, 893, 893, 893, 893, 893, 893, 893, 893, 1300 893, 893, 893, 893, 893, 894, 819, 818, 894, 817, 1301 1302 894, 894, 894, 894, 894, 895, 816, 895, 895, 815, 1303 895, 895, 895, 895, 895, 895, 814, 895, 896, 813, 1304 812, 896, 896, 896, 896, 896, 896, 896, 896, 805, 1305 896, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1306 897, 897, 897, 897, 898, 898, 801, 898, 794, 792, 1307 791, 898, 899, 790, 789, 899, 788, 899, 899, 899, 1308 899, 899, 900, 787, 900, 786, 785, 784, 900, 901, 1309 783, 901, 782, 781, 780, 901, 902, 779, 902, 777, 1310 776, 775, 902, 903, 774, 903, 767, 765, 753, 903, 1311 904, 752, 904, 751, 750, 749, 904, 905, 748, 905, 1312 1313 747, 746, 745, 905, 906, 742, 906, 741, 740, 734, 1314 906, 907, 730, 907, 729, 727, 726, 907, 908, 709, 1315 908, 701, 698, 693, 908, 909, 909, 909, 909, 909, 1316 909, 909, 909, 909, 909, 909, 909, 909, 910, 691, 1317 910, 911, 911, 687, 911, 911, 911, 677, 911, 912, 1318 912, 673, 912, 913, 671, 913, 669, 666, 663, 913, 1319 914, 662, 914, 661, 660, 659, 914, 915, 658, 915, 1320 655, 654, 652, 915, 916, 649, 916, 917, 648, 917, 1321 647, 643, 616, 917, 918, 612, 918, 919, 610, 608, 1322 919, 606, 919, 919, 919, 919, 919, 920, 920, 920, 1323 1324 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 1325 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 1326 921, 921, 921, 922, 604, 922, 598, 592, 590, 922, 1327 923, 588, 923, 586, 584, 582, 923, 924, 580, 924, 1328 578, 577, 576, 924, 925, 573, 925, 926, 570, 926, 1329 563, 559, 556, 926, 927, 553, 927, 928, 548, 928, 1330 543, 540, 517, 928, 929, 513, 929, 930, 511, 930, 1331 509, 507, 505, 930, 931, 503, 931, 932, 502, 932, 1332 501, 500, 489, 932, 933, 486, 933, 934, 484, 934, 1333 483, 482, 480, 934, 935, 478, 935, 936, 475, 936, 1334 1335 473, 471, 469, 936, 937, 465, 937, 938, 448, 938, 1336 446, 938, 438, 938, 939, 436, 939, 428, 939, 426, 1337 939, 940, 940, 424, 940, 940, 940, 398, 940, 941, 1338 396, 941, 394, 392, 391, 941, 942, 390, 942, 377, 1339 367, 365, 942, 943, 364, 943, 360, 358, 356, 943, 1340 944, 354, 944, 945, 350, 945, 348, 347, 346, 945, 1341 946, 336, 946, 947, 321, 947, 298, 277, 275, 947, 1342 948, 273, 948, 949, 272, 949, 271, 269, 268, 949, 1343 950, 263, 950, 951, 259, 258, 951, 254, 951, 951, 1344 951, 951, 951, 952, 952, 952, 952, 952, 952, 952, 1345 1346 952, 952, 952, 952, 952, 952, 953, 251, 953, 250, 1347 239, 238, 953, 954, 231, 954, 955, 230, 955, 227, 1348 217, 215, 955, 956, 214, 956, 957, 213, 957, 207, 1349 206, 204, 957, 958, 199, 958, 959, 178, 959, 149, 1350 147, 146, 959, 960, 140, 960, 961, 138, 961, 136, 1351 128, 125, 961, 962, 124, 962, 963, 120, 963, 101, 1352 98, 95, 963, 964, 93, 964, 965, 86, 965, 72, 1353 70, 66, 965, 966, 36, 966, 33, 18, 11, 966, 1354 967, 4, 967, 968, 3, 968, 0, 0, 0, 968, 1355 969, 0, 969, 970, 0, 970, 0, 970, 0, 970, 1356 1357 971, 0, 971, 0, 0, 0, 971, 972, 0, 972, 1358 0, 0, 0, 972, 973, 0, 973, 974, 0, 974, 1359 0, 0, 0, 974, 975, 0, 975, 976, 0, 976, 1360 0, 0, 0, 976, 977, 0, 977, 978, 0, 978, 1361 0, 0, 0, 978, 979, 0, 979, 980, 0, 980, 1362 0, 0, 0, 980, 981, 0, 981, 982, 0, 982, 1363 0, 0, 0, 982, 983, 0, 983, 984, 0, 0, 1364 984, 0, 984, 984, 984, 984, 984, 985, 985, 985, 1365 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 1366 986, 0, 986, 0, 0, 0, 986, 987, 0, 987, 1367 1368 988, 0, 988, 0, 0, 0, 988, 989, 0, 989, 1369 990, 0, 990, 0, 0, 0, 990, 991, 0, 991, 1370 992, 0, 992, 0, 0, 0, 992, 993, 0, 993, 1371 994, 0, 994, 0, 0, 0, 994, 995, 0, 995, 1372 996, 0, 996, 0, 0, 0, 996, 997, 0, 997, 1373 998, 0, 998, 0, 0, 0, 998, 999, 0, 999, 1374 1000, 0, 1000, 0, 0, 0, 1000, 1001, 0, 1001, 1375 1002, 0, 1002, 0, 0, 0, 1002, 1003, 0, 1003, 1376 0, 0, 0, 1003, 1004, 0, 1004, 1005, 0, 1005, 1377 0, 0, 0, 1005, 1006, 0, 1006, 1007, 0, 1007, 1378 1379 0, 0, 0, 1007, 1008, 0, 1008, 1009, 0, 1009, 1380 0, 0, 0, 1009, 1010, 0, 1010, 1011, 0, 1011, 1381 1012, 0, 1012, 1013, 0, 0, 1013, 0, 1013, 1013, 1382 1013, 1013, 1013, 1014, 0, 1014, 1015, 1015, 1015, 1015, 1383 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1016, 1384 0, 1016, 0, 0, 0, 1016, 1017, 0, 1017, 1018, 1385 0, 1018, 0, 0, 0, 1018, 1019, 0, 1019, 1020, 1386 0, 1020, 1021, 0, 1021, 1022, 0, 0, 1022, 0, 1387 1022, 1022, 1022, 1022, 1022, 1023, 0, 1023, 1024, 0, 1388 1024, 1025, 0, 1025, 1026, 0, 1026, 1027, 0, 1027, 1389 1390 1028, 0, 1028, 1029, 0, 1029, 1030, 0, 1030, 0, 1391 0, 0, 1030, 1031, 0, 1031, 1032, 0, 1032, 0, 1392 0, 0, 1032, 1033, 0, 1033, 1034, 0, 1034, 1035, 1393 0, 1035, 1036, 0, 1036, 1037, 0, 1037, 0, 0, 1394 0, 1037, 1038, 0, 0, 1038, 0, 1038, 1038, 1038, 1395 1038, 1038, 1039, 0, 1039, 1040, 0, 1040, 1041, 0, 1396 1041, 1042, 0, 1042, 0, 0, 0, 1042, 1043, 0, 1397 1043, 0, 0, 0, 1043, 1044, 0, 1044, 0, 0, 1398 0, 1044, 1045, 0, 1045, 1046, 0, 1046, 0, 0, 1399 0, 1046, 1047, 0, 1047, 0, 0, 0, 1047, 1048, 1400 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, 1057, 0, 1057, 0, 0, 0, 1057, 1058, 1408 0, 1058, 0, 0, 0, 1058, 1059, 0, 1059, 0, 1409 0, 0, 1059, 1060, 0, 1060, 0, 0, 0, 1060, 1410 1061, 0, 1061, 0, 0, 0, 1061, 887, 887, 887, 1411 1418 1412 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1419 1413 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, … … 1423 1417 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1424 1418 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1425 1426 887, 887 , 887, 887, 887, 887, 8871419 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1420 887, 887 1427 1421 } ; 1428 1422 … … 1467 1461 * Created On : Sat Sep 22 08:58:10 2001 1468 1462 * Last Modified By : Peter A. Buhr 1469 * Last Modified On : Mon Mar 21 23:33:4620161470 * Update Count : 4 501463 * Last Modified On : Wed Mar 2 18:07:20 2016 1464 * Update Count : 434 1471 1465 */ 1472 1466 #line 20 "lex.ll" … … 1480 1474 1481 1475 #include "lex.h" 1476 #include "ParseNode.h" 1482 1477 #include "parser.h" // YACC generated definitions based on C++ grammar 1483 #include "ParseNode.h"1484 #include "TypedefTable.h"1485 1478 1486 1479 char *yyfilename; … … 1498 1491 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 1499 1492 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword 1500 #define IDENTIFIER_RETURN() RETURN_VAL( typedefTable.isKind( yytext) )1493 #define IDENTIFIER_RETURN() RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) ) 1501 1494 #define ATTRIBUTE_RETURN() RETURN_VAL( ATTR_IDENTIFIER ) 1502 1495 … … 1518 1511 // attribute identifier, GCC: $ in identifier 1519 1512 // numeric constants, CFA: '_' in constant 1520 // GCC: D (double), DL (long double) and iI (imaginary) suffixes 1521 //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI])) 1513 // GCC: D (double), LD (long double) and iI (imaginary) suffixes 1522 1514 // character escape sequence, GCC: \e => esc character 1523 1515 // ' stop highlighting … … 1528 1520 1529 1521 1530 #line 15 31"Parser/lex.cc"1522 #line 1523 "Parser/lex.cc" 1531 1523 1532 1524 #define INITIAL 0 … … 1720 1712 register int yy_act; 1721 1713 1722 #line 13 9"lex.ll"1714 #line 137 "lex.ll" 1723 1715 1724 1716 /* line directives */ 1725 #line 17 26"Parser/lex.cc"1717 #line 1718 "Parser/lex.cc" 1726 1718 1727 1719 if ( !(yy_init) ) … … 1783 1775 ++yy_cp; 1784 1776 } 1785 while ( yy_base[yy_current_state] != 2 822);1777 while ( yy_base[yy_current_state] != 2798 ); 1786 1778 1787 1779 yy_find_action: … … 1820 1812 /* rule 1 can match eol */ 1821 1813 YY_RULE_SETUP 1822 #line 1 41"lex.ll"1814 #line 139 "lex.ll" 1823 1815 { 1824 1816 /* " stop highlighting */ … … 1847 1839 /* rule 2 can match eol */ 1848 1840 YY_RULE_SETUP 1849 #line 16 4"lex.ll"1841 #line 162 "lex.ll" 1850 1842 ; 1851 1843 YY_BREAK … … 1853 1845 case 3: 1854 1846 YY_RULE_SETUP 1855 #line 16 7"lex.ll"1847 #line 165 "lex.ll" 1856 1848 { BEGIN COMMENT; } 1857 1849 YY_BREAK … … 1859 1851 /* rule 4 can match eol */ 1860 1852 YY_RULE_SETUP 1861 #line 16 8"lex.ll"1853 #line 166 "lex.ll" 1862 1854 ; 1863 1855 YY_BREAK 1864 1856 case 5: 1865 1857 YY_RULE_SETUP 1866 #line 16 9"lex.ll"1858 #line 167 "lex.ll" 1867 1859 { BEGIN 0; } 1868 1860 YY_BREAK … … 1871 1863 /* rule 6 can match eol */ 1872 1864 YY_RULE_SETUP 1873 #line 17 2"lex.ll"1865 #line 170 "lex.ll" 1874 1866 ; 1875 1867 YY_BREAK … … 1877 1869 case 7: 1878 1870 YY_RULE_SETUP 1879 #line 17 5"lex.ll"1871 #line 173 "lex.ll" 1880 1872 { WHITE_RETURN(' '); } 1881 1873 YY_BREAK 1882 1874 case 8: 1883 1875 YY_RULE_SETUP 1884 #line 17 6"lex.ll"1876 #line 174 "lex.ll" 1885 1877 { WHITE_RETURN(' '); } 1886 1878 YY_BREAK … … 1888 1880 /* rule 9 can match eol */ 1889 1881 YY_RULE_SETUP 1890 #line 17 7"lex.ll"1882 #line 175 "lex.ll" 1891 1883 { NEWLINE_RETURN(); } 1892 1884 YY_BREAK … … 1894 1886 case 10: 1895 1887 YY_RULE_SETUP 1888 #line 178 "lex.ll" 1889 { KEYWORD_RETURN(ALIGNAS); } // C11 1890 YY_BREAK 1891 case 11: 1892 YY_RULE_SETUP 1893 #line 179 "lex.ll" 1894 { KEYWORD_RETURN(ALIGNOF); } // C11 1895 YY_BREAK 1896 case 12: 1897 YY_RULE_SETUP 1896 1898 #line 180 "lex.ll" 1897 { KEYWORD_RETURN(ALIGN AS); } // C111898 YY_BREAK 1899 case 1 1:1899 { KEYWORD_RETURN(ALIGNOF); } // GCC 1900 YY_BREAK 1901 case 13: 1900 1902 YY_RULE_SETUP 1901 1903 #line 181 "lex.ll" 1902 { KEYWORD_RETURN(ALIGNOF); } // C111903 YY_BREAK 1904 case 1 2:1904 { KEYWORD_RETURN(ALIGNOF); } // GCC 1905 YY_BREAK 1906 case 14: 1905 1907 YY_RULE_SETUP 1906 1908 #line 182 "lex.ll" 1907 { KEYWORD_RETURN(A LIGNOF); } // GCC1908 YY_BREAK 1909 case 1 3:1909 { KEYWORD_RETURN(ASM); } 1910 YY_BREAK 1911 case 15: 1910 1912 YY_RULE_SETUP 1911 1913 #line 183 "lex.ll" 1912 { KEYWORD_RETURN(A LIGNOF); }// GCC1913 YY_BREAK 1914 case 1 4:1914 { KEYWORD_RETURN(ASM); } // GCC 1915 YY_BREAK 1916 case 16: 1915 1917 YY_RULE_SETUP 1916 1918 #line 184 "lex.ll" 1917 { KEYWORD_RETURN(ASM); } 1918 YY_BREAK 1919 case 1 5:1919 { KEYWORD_RETURN(ASM); } // GCC 1920 YY_BREAK 1921 case 17: 1920 1922 YY_RULE_SETUP 1921 1923 #line 185 "lex.ll" 1922 { KEYWORD_RETURN(A SM); } // GCC1923 YY_BREAK 1924 case 1 6:1924 { KEYWORD_RETURN(AT); } // CFA 1925 YY_BREAK 1926 case 18: 1925 1927 YY_RULE_SETUP 1926 1928 #line 186 "lex.ll" 1927 { KEYWORD_RETURN(A SM); } // GCC1928 YY_BREAK 1929 case 1 7:1929 { KEYWORD_RETURN(ATOMIC); } // C11 1930 YY_BREAK 1931 case 19: 1930 1932 YY_RULE_SETUP 1931 1933 #line 187 "lex.ll" 1932 { KEYWORD_RETURN(AT ); } // CFA1933 YY_BREAK 1934 case 18:1934 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1935 YY_BREAK 1936 case 20: 1935 1937 YY_RULE_SETUP 1936 1938 #line 188 "lex.ll" 1937 { KEYWORD_RETURN(AT OMIC); } // C111938 YY_BREAK 1939 case 19:1939 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1940 YY_BREAK 1941 case 21: 1940 1942 YY_RULE_SETUP 1941 1943 #line 189 "lex.ll" 1942 { KEYWORD_RETURN(A TTRIBUTE); } // GCC1943 YY_BREAK 1944 case 2 0:1944 { KEYWORD_RETURN(AUTO); } 1945 YY_BREAK 1946 case 22: 1945 1947 YY_RULE_SETUP 1946 1948 #line 190 "lex.ll" 1947 { KEYWORD_RETURN( ATTRIBUTE); } // GCC1948 YY_BREAK 1949 case 2 1:1949 { KEYWORD_RETURN(BOOL); } // C99 1950 YY_BREAK 1951 case 23: 1950 1952 YY_RULE_SETUP 1951 1953 #line 191 "lex.ll" 1952 { KEYWORD_RETURN( AUTO); }1953 YY_BREAK 1954 case 2 2:1954 { KEYWORD_RETURN(BREAK); } 1955 YY_BREAK 1956 case 24: 1955 1957 YY_RULE_SETUP 1956 1958 #line 192 "lex.ll" 1957 { KEYWORD_RETURN( BOOL); } // C991958 YY_BREAK 1959 case 2 3:1959 { KEYWORD_RETURN(CASE); } 1960 YY_BREAK 1961 case 25: 1960 1962 YY_RULE_SETUP 1961 1963 #line 193 "lex.ll" 1962 { KEYWORD_RETURN( BREAK); }1963 YY_BREAK 1964 case 2 4:1964 { KEYWORD_RETURN(CATCH); } // CFA 1965 YY_BREAK 1966 case 26: 1965 1967 YY_RULE_SETUP 1966 1968 #line 194 "lex.ll" 1967 { KEYWORD_RETURN(CA SE); }1968 YY_BREAK 1969 case 2 5:1969 { KEYWORD_RETURN(CATCHRESUME); } // CFA 1970 YY_BREAK 1971 case 27: 1970 1972 YY_RULE_SETUP 1971 1973 #line 195 "lex.ll" 1972 { KEYWORD_RETURN(C ATCH); } // CFA1973 YY_BREAK 1974 case 2 6:1974 { KEYWORD_RETURN(CHAR); } 1975 YY_BREAK 1976 case 28: 1975 1977 YY_RULE_SETUP 1976 1978 #line 196 "lex.ll" 1977 { KEYWORD_RETURN(C ATCHRESUME); }// CFA1978 YY_BREAK 1979 case 2 7:1979 { KEYWORD_RETURN(CHOOSE); } // CFA 1980 YY_BREAK 1981 case 29: 1980 1982 YY_RULE_SETUP 1981 1983 #line 197 "lex.ll" 1982 { KEYWORD_RETURN(C HAR); }1983 YY_BREAK 1984 case 28:1984 { KEYWORD_RETURN(COMPLEX); } // C99 1985 YY_BREAK 1986 case 30: 1985 1987 YY_RULE_SETUP 1986 1988 #line 198 "lex.ll" 1987 { KEYWORD_RETURN(C HOOSE); } // CFA1988 YY_BREAK 1989 case 29:1989 { KEYWORD_RETURN(COMPLEX); } // GCC 1990 YY_BREAK 1991 case 31: 1990 1992 YY_RULE_SETUP 1991 1993 #line 199 "lex.ll" 1992 { KEYWORD_RETURN(COMPLEX); } // C991993 YY_BREAK 1994 case 3 0:1994 { KEYWORD_RETURN(COMPLEX); } // GCC 1995 YY_BREAK 1996 case 32: 1995 1997 YY_RULE_SETUP 1996 1998 #line 200 "lex.ll" 1997 { KEYWORD_RETURN(CO MPLEX); } // GCC1998 YY_BREAK 1999 case 3 1:1999 { KEYWORD_RETURN(CONST); } 2000 YY_BREAK 2001 case 33: 2000 2002 YY_RULE_SETUP 2001 2003 #line 201 "lex.ll" 2002 { KEYWORD_RETURN(CO MPLEX); }// GCC2003 YY_BREAK 2004 case 3 2:2004 { KEYWORD_RETURN(CONST); } // GCC 2005 YY_BREAK 2006 case 34: 2005 2007 YY_RULE_SETUP 2006 2008 #line 202 "lex.ll" 2007 { KEYWORD_RETURN(CONST); } 2008 YY_BREAK 2009 case 3 3:2009 { KEYWORD_RETURN(CONST); } // GCC 2010 YY_BREAK 2011 case 35: 2010 2012 YY_RULE_SETUP 2011 2013 #line 203 "lex.ll" 2012 { KEYWORD_RETURN(CON ST); } // GCC2013 YY_BREAK 2014 case 3 4:2014 { KEYWORD_RETURN(CONTINUE); } 2015 YY_BREAK 2016 case 36: 2015 2017 YY_RULE_SETUP 2016 2018 #line 204 "lex.ll" 2017 { KEYWORD_RETURN( CONST); } // GCC2018 YY_BREAK 2019 case 3 5:2019 { KEYWORD_RETURN(DEFAULT); } 2020 YY_BREAK 2021 case 37: 2020 2022 YY_RULE_SETUP 2021 2023 #line 205 "lex.ll" 2022 { KEYWORD_RETURN( CONTINUE); }2023 YY_BREAK 2024 case 3 6:2024 { KEYWORD_RETURN(DISABLE); } // CFA 2025 YY_BREAK 2026 case 38: 2025 2027 YY_RULE_SETUP 2026 2028 #line 206 "lex.ll" 2027 { KEYWORD_RETURN(D EFAULT); }2028 YY_BREAK 2029 case 3 7:2029 { KEYWORD_RETURN(DO); } 2030 YY_BREAK 2031 case 39: 2030 2032 YY_RULE_SETUP 2031 2033 #line 207 "lex.ll" 2032 { KEYWORD_RETURN(D ISABLE); } // CFA2033 YY_BREAK 2034 case 38:2034 { KEYWORD_RETURN(DOUBLE); } 2035 YY_BREAK 2036 case 40: 2035 2037 YY_RULE_SETUP 2036 2038 #line 208 "lex.ll" 2037 { KEYWORD_RETURN(D O); }2038 YY_BREAK 2039 case 39:2039 { KEYWORD_RETURN(DTYPE); } // CFA 2040 YY_BREAK 2041 case 41: 2040 2042 YY_RULE_SETUP 2041 2043 #line 209 "lex.ll" 2042 { KEYWORD_RETURN( DOUBLE); }2043 YY_BREAK 2044 case 4 0:2044 { KEYWORD_RETURN(ELSE); } 2045 YY_BREAK 2046 case 42: 2045 2047 YY_RULE_SETUP 2046 2048 #line 210 "lex.ll" 2047 { KEYWORD_RETURN( DTYPE); } // CFA2048 YY_BREAK 2049 case 4 1:2049 { KEYWORD_RETURN(ENABLE); } // CFA 2050 YY_BREAK 2051 case 43: 2050 2052 YY_RULE_SETUP 2051 2053 #line 211 "lex.ll" 2052 { KEYWORD_RETURN(E LSE); }2053 YY_BREAK 2054 case 4 2:2054 { KEYWORD_RETURN(ENUM); } 2055 YY_BREAK 2056 case 44: 2055 2057 YY_RULE_SETUP 2056 2058 #line 212 "lex.ll" 2057 { KEYWORD_RETURN(E NABLE); } // CFA2058 YY_BREAK 2059 case 4 3:2059 { KEYWORD_RETURN(EXTENSION); } // GCC 2060 YY_BREAK 2061 case 45: 2060 2062 YY_RULE_SETUP 2061 2063 #line 213 "lex.ll" 2062 { KEYWORD_RETURN(E NUM); }2063 YY_BREAK 2064 case 4 4:2064 { KEYWORD_RETURN(EXTERN); } 2065 YY_BREAK 2066 case 46: 2065 2067 YY_RULE_SETUP 2066 2068 #line 214 "lex.ll" 2067 { KEYWORD_RETURN( EXTENSION); } // GCC2068 YY_BREAK 2069 case 4 5:2069 { KEYWORD_RETURN(FALLTHRU); } // CFA 2070 YY_BREAK 2071 case 47: 2070 2072 YY_RULE_SETUP 2071 2073 #line 215 "lex.ll" 2072 { KEYWORD_RETURN( EXTERN); }2073 YY_BREAK 2074 case 4 6:2074 { KEYWORD_RETURN(FINALLY); } // CFA 2075 YY_BREAK 2076 case 48: 2075 2077 YY_RULE_SETUP 2076 2078 #line 216 "lex.ll" 2077 { KEYWORD_RETURN(F ALLTHRU); } // CFA2078 YY_BREAK 2079 case 4 7:2079 { KEYWORD_RETURN(FLOAT); } 2080 YY_BREAK 2081 case 49: 2080 2082 YY_RULE_SETUP 2081 2083 #line 217 "lex.ll" 2082 { KEYWORD_RETURN(F INALLY); } // CFA2083 YY_BREAK 2084 case 48:2084 { KEYWORD_RETURN(FLOAT); } // GCC 2085 YY_BREAK 2086 case 50: 2085 2087 YY_RULE_SETUP 2086 2088 #line 218 "lex.ll" 2087 { KEYWORD_RETURN(F LOAT); }2088 YY_BREAK 2089 case 49:2089 { KEYWORD_RETURN(FOR); } 2090 YY_BREAK 2091 case 51: 2090 2092 YY_RULE_SETUP 2091 2093 #line 219 "lex.ll" 2092 { KEYWORD_RETURN(F LOAT); } // GCC2093 YY_BREAK 2094 case 5 0:2094 { KEYWORD_RETURN(FORALL); } // CFA 2095 YY_BREAK 2096 case 52: 2095 2097 YY_RULE_SETUP 2096 2098 #line 220 "lex.ll" 2097 { KEYWORD_RETURN(FOR ); }2098 YY_BREAK 2099 case 5 1:2099 { KEYWORD_RETURN(FORTRAN); } 2100 YY_BREAK 2101 case 53: 2100 2102 YY_RULE_SETUP 2101 2103 #line 221 "lex.ll" 2102 { KEYWORD_RETURN(F ORALL); } // CFA2103 YY_BREAK 2104 case 5 2:2104 { KEYWORD_RETURN(FTYPE); } // CFA 2105 YY_BREAK 2106 case 54: 2105 2107 YY_RULE_SETUP 2106 2108 #line 222 "lex.ll" 2107 { KEYWORD_RETURN( FORTRAN); }2108 YY_BREAK 2109 case 5 3:2109 { KEYWORD_RETURN(GENERIC); } // C11 2110 YY_BREAK 2111 case 55: 2110 2112 YY_RULE_SETUP 2111 2113 #line 223 "lex.ll" 2112 { KEYWORD_RETURN( FTYPE); } // CFA2113 YY_BREAK 2114 case 5 4:2114 { KEYWORD_RETURN(GOTO); } 2115 YY_BREAK 2116 case 56: 2115 2117 YY_RULE_SETUP 2116 2118 #line 224 "lex.ll" 2117 { KEYWORD_RETURN( GENERIC); } // C112118 YY_BREAK 2119 case 5 5:2119 { KEYWORD_RETURN(IF); } 2120 YY_BREAK 2121 case 57: 2120 2122 YY_RULE_SETUP 2121 2123 #line 225 "lex.ll" 2122 { KEYWORD_RETURN( GOTO); }2123 YY_BREAK 2124 case 5 6:2124 { KEYWORD_RETURN(IMAGINARY); } // C99 2125 YY_BREAK 2126 case 58: 2125 2127 YY_RULE_SETUP 2126 2128 #line 226 "lex.ll" 2127 { KEYWORD_RETURN(I F); }2128 YY_BREAK 2129 case 5 7:2129 { KEYWORD_RETURN(IMAGINARY); } // GCC 2130 YY_BREAK 2131 case 59: 2130 2132 YY_RULE_SETUP 2131 2133 #line 227 "lex.ll" 2132 { KEYWORD_RETURN(IMAGINARY); } // C992133 YY_BREAK 2134 case 58:2134 { KEYWORD_RETURN(IMAGINARY); } // GCC 2135 YY_BREAK 2136 case 60: 2135 2137 YY_RULE_SETUP 2136 2138 #line 228 "lex.ll" 2137 { KEYWORD_RETURN(I MAGINARY); } // GCC2138 YY_BREAK 2139 case 59:2139 { KEYWORD_RETURN(INLINE); } // C99 2140 YY_BREAK 2141 case 61: 2140 2142 YY_RULE_SETUP 2141 2143 #line 229 "lex.ll" 2142 { KEYWORD_RETURN(I MAGINARY); }// GCC2143 YY_BREAK 2144 case 6 0:2144 { KEYWORD_RETURN(INLINE); } // GCC 2145 YY_BREAK 2146 case 62: 2145 2147 YY_RULE_SETUP 2146 2148 #line 230 "lex.ll" 2147 { KEYWORD_RETURN(INLINE); } // C992148 YY_BREAK 2149 case 6 1:2149 { KEYWORD_RETURN(INLINE); } // GCC 2150 YY_BREAK 2151 case 63: 2150 2152 YY_RULE_SETUP 2151 2153 #line 231 "lex.ll" 2152 { KEYWORD_RETURN(IN LINE); } // GCC2153 YY_BREAK 2154 case 6 2:2154 { KEYWORD_RETURN(INT); } 2155 YY_BREAK 2156 case 64: 2155 2157 YY_RULE_SETUP 2156 2158 #line 232 "lex.ll" 2157 { KEYWORD_RETURN(IN LINE); } // GCC2158 YY_BREAK 2159 case 6 3:2159 { KEYWORD_RETURN(INT); } // GCC 2160 YY_BREAK 2161 case 65: 2160 2162 YY_RULE_SETUP 2161 2163 #line 233 "lex.ll" 2162 { KEYWORD_RETURN( INT); }2163 YY_BREAK 2164 case 6 4:2164 { KEYWORD_RETURN(LABEL); } // GCC 2165 YY_BREAK 2166 case 66: 2165 2167 YY_RULE_SETUP 2166 2168 #line 234 "lex.ll" 2167 { KEYWORD_RETURN( INT); } // GCC2168 YY_BREAK 2169 case 6 5:2169 { KEYWORD_RETURN(LONG); } 2170 YY_BREAK 2171 case 67: 2170 2172 YY_RULE_SETUP 2171 2173 #line 235 "lex.ll" 2172 { KEYWORD_RETURN(L ABEL); } // GCC2173 YY_BREAK 2174 case 6 6:2174 { KEYWORD_RETURN(LVALUE); } // CFA 2175 YY_BREAK 2176 case 68: 2175 2177 YY_RULE_SETUP 2176 2178 #line 236 "lex.ll" 2177 { KEYWORD_RETURN( LONG); }2178 YY_BREAK 2179 case 6 7:2179 { KEYWORD_RETURN(NORETURN); } // C11 2180 YY_BREAK 2181 case 69: 2180 2182 YY_RULE_SETUP 2181 2183 #line 237 "lex.ll" 2182 { KEYWORD_RETURN( LVALUE); } // CFA2183 YY_BREAK 2184 case 68:2184 { KEYWORD_RETURN(OFFSETOF); } // GCC 2185 YY_BREAK 2186 case 70: 2185 2187 YY_RULE_SETUP 2186 2188 #line 238 "lex.ll" 2187 { KEYWORD_RETURN( NORETURN); } // C112188 YY_BREAK 2189 case 69:2189 { KEYWORD_RETURN(OTYPE); } // CFA 2190 YY_BREAK 2191 case 71: 2190 2192 YY_RULE_SETUP 2191 2193 #line 239 "lex.ll" 2192 { KEYWORD_RETURN( OFFSETOF); } // GCC2193 YY_BREAK 2194 case 7 0:2194 { KEYWORD_RETURN(REGISTER); } 2195 YY_BREAK 2196 case 72: 2195 2197 YY_RULE_SETUP 2196 2198 #line 240 "lex.ll" 2197 { KEYWORD_RETURN( OTYPE); } // CFA2198 YY_BREAK 2199 case 7 1:2199 { KEYWORD_RETURN(RESTRICT); } // C99 2200 YY_BREAK 2201 case 73: 2200 2202 YY_RULE_SETUP 2201 2203 #line 241 "lex.ll" 2202 { KEYWORD_RETURN(RE GISTER); }2203 YY_BREAK 2204 case 7 2:2204 { KEYWORD_RETURN(RESTRICT); } // GCC 2205 YY_BREAK 2206 case 74: 2205 2207 YY_RULE_SETUP 2206 2208 #line 242 "lex.ll" 2207 { KEYWORD_RETURN(RESTRICT); } // C992208 YY_BREAK 2209 case 7 3:2209 { KEYWORD_RETURN(RESTRICT); } // GCC 2210 YY_BREAK 2211 case 75: 2210 2212 YY_RULE_SETUP 2211 2213 #line 243 "lex.ll" 2212 { KEYWORD_RETURN(RE STRICT); } // GCC2213 YY_BREAK 2214 case 7 4:2214 { KEYWORD_RETURN(RETURN); } 2215 YY_BREAK 2216 case 76: 2215 2217 YY_RULE_SETUP 2216 2218 #line 244 "lex.ll" 2217 { KEYWORD_RETURN( RESTRICT); } // GCC2218 YY_BREAK 2219 case 7 5:2219 { KEYWORD_RETURN(SHORT); } 2220 YY_BREAK 2221 case 77: 2220 2222 YY_RULE_SETUP 2221 2223 #line 245 "lex.ll" 2222 { KEYWORD_RETURN( RETURN); }2223 YY_BREAK 2224 case 7 6:2224 { KEYWORD_RETURN(SIGNED); } 2225 YY_BREAK 2226 case 78: 2225 2227 YY_RULE_SETUP 2226 2228 #line 246 "lex.ll" 2227 { KEYWORD_RETURN(S HORT); }2228 YY_BREAK 2229 case 7 7:2229 { KEYWORD_RETURN(SIGNED); } // GCC 2230 YY_BREAK 2231 case 79: 2230 2232 YY_RULE_SETUP 2231 2233 #line 247 "lex.ll" 2232 { KEYWORD_RETURN(SIGNED); } 2233 YY_BREAK 2234 case 78:2234 { KEYWORD_RETURN(SIGNED); } // GCC 2235 YY_BREAK 2236 case 80: 2235 2237 YY_RULE_SETUP 2236 2238 #line 248 "lex.ll" 2237 { KEYWORD_RETURN(SI GNED); } // GCC2238 YY_BREAK 2239 case 79:2239 { KEYWORD_RETURN(SIZEOF); } 2240 YY_BREAK 2241 case 81: 2240 2242 YY_RULE_SETUP 2241 2243 #line 249 "lex.ll" 2242 { KEYWORD_RETURN(S IGNED); } // GCC2243 YY_BREAK 2244 case 8 0:2244 { KEYWORD_RETURN(STATIC); } 2245 YY_BREAK 2246 case 82: 2245 2247 YY_RULE_SETUP 2246 2248 #line 250 "lex.ll" 2247 { KEYWORD_RETURN(S IZEOF); }2248 YY_BREAK 2249 case 8 1:2249 { KEYWORD_RETURN(STATICASSERT); } // C11 2250 YY_BREAK 2251 case 83: 2250 2252 YY_RULE_SETUP 2251 2253 #line 251 "lex.ll" 2252 { KEYWORD_RETURN(ST ATIC); }2253 YY_BREAK 2254 case 8 2:2254 { KEYWORD_RETURN(STRUCT); } 2255 YY_BREAK 2256 case 84: 2255 2257 YY_RULE_SETUP 2256 2258 #line 252 "lex.ll" 2257 { KEYWORD_RETURN(S TATICASSERT); } // C112258 YY_BREAK 2259 case 8 3:2259 { KEYWORD_RETURN(SWITCH); } 2260 YY_BREAK 2261 case 85: 2260 2262 YY_RULE_SETUP 2261 2263 #line 253 "lex.ll" 2262 { KEYWORD_RETURN( STRUCT); }2263 YY_BREAK 2264 case 8 4:2264 { KEYWORD_RETURN(THREADLOCAL); } // C11 2265 YY_BREAK 2266 case 86: 2265 2267 YY_RULE_SETUP 2266 2268 #line 254 "lex.ll" 2267 { KEYWORD_RETURN( SWITCH); }2268 YY_BREAK 2269 case 8 5:2269 { KEYWORD_RETURN(THROW); } // CFA 2270 YY_BREAK 2271 case 87: 2270 2272 YY_RULE_SETUP 2271 2273 #line 255 "lex.ll" 2272 { KEYWORD_RETURN(THR EADLOCAL); } // C112273 YY_BREAK 2274 case 8 6:2274 { KEYWORD_RETURN(THROWRESUME); } // CFA 2275 YY_BREAK 2276 case 88: 2275 2277 YY_RULE_SETUP 2276 2278 #line 256 "lex.ll" 2277 { KEYWORD_RETURN(T HROW); } // CFA2278 YY_BREAK 2279 case 8 7:2279 { KEYWORD_RETURN(TRAIT); } // CFA 2280 YY_BREAK 2281 case 89: 2280 2282 YY_RULE_SETUP 2281 2283 #line 257 "lex.ll" 2282 { KEYWORD_RETURN(T HROWRESUME); }// CFA2283 YY_BREAK 2284 case 88:2284 { KEYWORD_RETURN(TRY); } // CFA 2285 YY_BREAK 2286 case 90: 2285 2287 YY_RULE_SETUP 2286 2288 #line 258 "lex.ll" 2287 { KEYWORD_RETURN(T RAIT); } // CFA2288 YY_BREAK 2289 case 89:2289 { KEYWORD_RETURN(TYPEDEF); } 2290 YY_BREAK 2291 case 91: 2290 2292 YY_RULE_SETUP 2291 2293 #line 259 "lex.ll" 2292 { KEYWORD_RETURN(T RY); } // CFA2293 YY_BREAK 2294 case 9 0:2294 { KEYWORD_RETURN(TYPEOF); } // GCC 2295 YY_BREAK 2296 case 92: 2295 2297 YY_RULE_SETUP 2296 2298 #line 260 "lex.ll" 2297 { KEYWORD_RETURN(TYPE DEF); }2298 YY_BREAK 2299 case 9 1:2299 { KEYWORD_RETURN(TYPEOF); } // GCC 2300 YY_BREAK 2301 case 93: 2300 2302 YY_RULE_SETUP 2301 2303 #line 261 "lex.ll" 2302 2304 { KEYWORD_RETURN(TYPEOF); } // GCC 2303 2305 YY_BREAK 2304 case 9 2:2306 case 94: 2305 2307 YY_RULE_SETUP 2306 2308 #line 262 "lex.ll" 2307 { KEYWORD_RETURN( TYPEOF); } // GCC2308 YY_BREAK 2309 case 9 3:2309 { KEYWORD_RETURN(UNION); } 2310 YY_BREAK 2311 case 95: 2310 2312 YY_RULE_SETUP 2311 2313 #line 263 "lex.ll" 2312 { KEYWORD_RETURN( TYPEOF); } // GCC2313 YY_BREAK 2314 case 9 4:2314 { KEYWORD_RETURN(UNSIGNED); } 2315 YY_BREAK 2316 case 96: 2315 2317 YY_RULE_SETUP 2316 2318 #line 264 "lex.ll" 2317 { KEYWORD_RETURN( UNION); }2318 YY_BREAK 2319 case 9 5:2319 { KEYWORD_RETURN(VALIST); } // GCC 2320 YY_BREAK 2321 case 97: 2320 2322 YY_RULE_SETUP 2321 2323 #line 265 "lex.ll" 2322 { KEYWORD_RETURN( UNSIGNED); }2323 YY_BREAK 2324 case 9 6:2324 { KEYWORD_RETURN(VOID); } 2325 YY_BREAK 2326 case 98: 2325 2327 YY_RULE_SETUP 2326 2328 #line 266 "lex.ll" 2327 { KEYWORD_RETURN(V ALIST); } // GCC2328 YY_BREAK 2329 case 9 7:2329 { KEYWORD_RETURN(VOLATILE); } 2330 YY_BREAK 2331 case 99: 2330 2332 YY_RULE_SETUP 2331 2333 #line 267 "lex.ll" 2332 { KEYWORD_RETURN(VO ID); }2333 YY_BREAK 2334 case 98:2334 { KEYWORD_RETURN(VOLATILE); } // GCC 2335 YY_BREAK 2336 case 100: 2335 2337 YY_RULE_SETUP 2336 2338 #line 268 "lex.ll" 2337 { KEYWORD_RETURN(VOLATILE); } 2338 YY_BREAK 2339 case 99:2339 { KEYWORD_RETURN(VOLATILE); } // GCC 2340 YY_BREAK 2341 case 101: 2340 2342 YY_RULE_SETUP 2341 2343 #line 269 "lex.ll" 2342 { KEYWORD_RETURN(VOLATILE); } // GCC2343 YY_BREAK2344 case 100:2345 YY_RULE_SETUP2346 #line 270 "lex.ll"2347 { KEYWORD_RETURN(VOLATILE); } // GCC2348 YY_BREAK2349 case 101:2350 YY_RULE_SETUP2351 #line 271 "lex.ll"2352 2344 { KEYWORD_RETURN(WHILE); } 2353 2345 YY_BREAK … … 2355 2347 case 102: 2356 2348 YY_RULE_SETUP 2349 #line 272 "lex.ll" 2350 { IDENTIFIER_RETURN(); } 2351 YY_BREAK 2352 case 103: 2353 YY_RULE_SETUP 2354 #line 273 "lex.ll" 2355 { ATTRIBUTE_RETURN(); } 2356 YY_BREAK 2357 case 104: 2358 YY_RULE_SETUP 2357 2359 #line 274 "lex.ll" 2360 { BEGIN BKQUOTE; } 2361 YY_BREAK 2362 case 105: 2363 YY_RULE_SETUP 2364 #line 275 "lex.ll" 2358 2365 { IDENTIFIER_RETURN(); } 2359 2366 YY_BREAK 2360 case 103: 2361 YY_RULE_SETUP 2362 #line 275 "lex.ll" 2363 { ATTRIBUTE_RETURN(); } 2364 YY_BREAK 2365 case 104: 2367 case 106: 2366 2368 YY_RULE_SETUP 2367 2369 #line 276 "lex.ll" 2368 { BEGIN BKQUOTE; }2369 YY_BREAK2370 case 105:2371 YY_RULE_SETUP2372 #line 277 "lex.ll"2373 { IDENTIFIER_RETURN(); }2374 YY_BREAK2375 case 106:2376 YY_RULE_SETUP2377 #line 278 "lex.ll"2378 2370 { BEGIN 0; } 2379 2371 YY_BREAK … … 2381 2373 case 107: 2382 2374 YY_RULE_SETUP 2375 #line 279 "lex.ll" 2376 { NUMERIC_RETURN(ZERO); } // CFA 2377 YY_BREAK 2378 case 108: 2379 YY_RULE_SETUP 2380 #line 280 "lex.ll" 2381 { NUMERIC_RETURN(ONE); } // CFA 2382 YY_BREAK 2383 case 109: 2384 YY_RULE_SETUP 2383 2385 #line 281 "lex.ll" 2384 { NUMERIC_RETURN( ZERO); } // CFA2385 YY_BREAK 2386 case 1 08:2386 { NUMERIC_RETURN(INTEGERconstant); } 2387 YY_BREAK 2388 case 110: 2387 2389 YY_RULE_SETUP 2388 2390 #line 282 "lex.ll" 2389 { NUMERIC_RETURN( ONE); } // CFA2390 YY_BREAK 2391 case 1 09:2391 { NUMERIC_RETURN(INTEGERconstant); } 2392 YY_BREAK 2393 case 111: 2392 2394 YY_RULE_SETUP 2393 2395 #line 283 "lex.ll" 2394 2396 { NUMERIC_RETURN(INTEGERconstant); } 2395 2397 YY_BREAK 2396 case 11 0:2398 case 112: 2397 2399 YY_RULE_SETUP 2398 2400 #line 284 "lex.ll" 2399 { NUMERIC_RETURN( INTEGERconstant); }2400 YY_BREAK 2401 case 11 1:2401 { NUMERIC_RETURN(FLOATINGconstant); } 2402 YY_BREAK 2403 case 113: 2402 2404 YY_RULE_SETUP 2403 2405 #line 285 "lex.ll" 2404 { NUMERIC_RETURN(INTEGERconstant); }2405 YY_BREAK2406 case 112:2407 YY_RULE_SETUP2408 #line 286 "lex.ll"2409 { NUMERIC_RETURN(FLOATINGconstant); }2410 YY_BREAK2411 case 113:2412 YY_RULE_SETUP2413 #line 287 "lex.ll"2414 2406 { NUMERIC_RETURN(FLOATINGconstant); } 2415 2407 YY_BREAK … … 2417 2409 case 114: 2418 2410 YY_RULE_SETUP 2419 #line 2 90"lex.ll"2411 #line 288 "lex.ll" 2420 2412 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2421 2413 YY_BREAK 2422 2414 case 115: 2423 2415 YY_RULE_SETUP 2424 #line 2 91"lex.ll"2416 #line 289 "lex.ll" 2425 2417 { *strtext += std::string( yytext ); } 2426 2418 YY_BREAK … … 2428 2420 /* rule 116 can match eol */ 2429 2421 YY_RULE_SETUP 2430 #line 29 2"lex.ll"2422 #line 290 "lex.ll" 2431 2423 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2432 2424 YY_BREAK … … 2435 2427 case 117: 2436 2428 YY_RULE_SETUP 2437 #line 29 6"lex.ll"2429 #line 294 "lex.ll" 2438 2430 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2439 2431 YY_BREAK 2440 2432 case 118: 2441 2433 YY_RULE_SETUP 2442 #line 29 7"lex.ll"2434 #line 295 "lex.ll" 2443 2435 { *strtext += std::string( yytext ); } 2444 2436 YY_BREAK … … 2446 2438 /* rule 119 can match eol */ 2447 2439 YY_RULE_SETUP 2448 #line 29 8"lex.ll"2440 #line 296 "lex.ll" 2449 2441 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2450 2442 YY_BREAK … … 2453 2445 case 120: 2454 2446 YY_RULE_SETUP 2455 #line 30 2"lex.ll"2447 #line 300 "lex.ll" 2456 2448 { rm_underscore(); *strtext += std::string( yytext ); } 2457 2449 YY_BREAK … … 2459 2451 /* rule 121 can match eol */ 2460 2452 YY_RULE_SETUP 2461 #line 30 3"lex.ll"2453 #line 301 "lex.ll" 2462 2454 {} // continuation (ALSO HANDLED BY CPP) 2463 2455 YY_BREAK 2464 2456 case 122: 2465 2457 YY_RULE_SETUP 2466 #line 30 4"lex.ll"2458 #line 302 "lex.ll" 2467 2459 { *strtext += std::string( yytext ); } // unknown escape character 2468 2460 YY_BREAK … … 2470 2462 case 123: 2471 2463 YY_RULE_SETUP 2464 #line 305 "lex.ll" 2465 { ASCIIOP_RETURN(); } 2466 YY_BREAK 2467 case 124: 2468 YY_RULE_SETUP 2469 #line 306 "lex.ll" 2470 { ASCIIOP_RETURN(); } 2471 YY_BREAK 2472 case 125: 2473 YY_RULE_SETUP 2472 2474 #line 307 "lex.ll" 2473 2475 { ASCIIOP_RETURN(); } 2474 2476 YY_BREAK 2475 case 12 4:2477 case 126: 2476 2478 YY_RULE_SETUP 2477 2479 #line 308 "lex.ll" 2478 2480 { ASCIIOP_RETURN(); } 2479 2481 YY_BREAK 2480 case 12 5:2482 case 127: 2481 2483 YY_RULE_SETUP 2482 2484 #line 309 "lex.ll" 2483 2485 { ASCIIOP_RETURN(); } 2484 2486 YY_BREAK 2485 case 12 6:2487 case 128: 2486 2488 YY_RULE_SETUP 2487 2489 #line 310 "lex.ll" 2488 2490 { ASCIIOP_RETURN(); } 2489 2491 YY_BREAK 2490 case 12 7:2492 case 129: 2491 2493 YY_RULE_SETUP 2492 2494 #line 311 "lex.ll" 2493 { ASCIIOP_RETURN(); } 2494 YY_BREAK 2495 case 1 28:2495 { ASCIIOP_RETURN(); } // also operator 2496 YY_BREAK 2497 case 130: 2496 2498 YY_RULE_SETUP 2497 2499 #line 312 "lex.ll" 2498 2500 { ASCIIOP_RETURN(); } 2499 2501 YY_BREAK 2500 case 1 29:2502 case 131: 2501 2503 YY_RULE_SETUP 2502 2504 #line 313 "lex.ll" 2505 { ASCIIOP_RETURN(); } 2506 YY_BREAK 2507 case 132: 2508 YY_RULE_SETUP 2509 #line 314 "lex.ll" 2503 2510 { ASCIIOP_RETURN(); } // also operator 2504 2511 YY_BREAK 2505 case 130: 2506 YY_RULE_SETUP 2507 #line 314 "lex.ll" 2508 { ASCIIOP_RETURN(); } 2509 YY_BREAK 2510 case 131: 2512 case 133: 2511 2513 YY_RULE_SETUP 2512 2514 #line 315 "lex.ll" 2513 { ASCIIOP_RETURN(); }2514 YY_BREAK2515 case 132:2516 YY_RULE_SETUP2517 #line 316 "lex.ll"2518 { ASCIIOP_RETURN(); } // also operator2519 YY_BREAK2520 case 133:2521 YY_RULE_SETUP2522 #line 317 "lex.ll"2523 2515 { NAMEDOP_RETURN(ELLIPSIS); } 2524 2516 YY_BREAK … … 2526 2518 case 134: 2527 2519 YY_RULE_SETUP 2520 #line 318 "lex.ll" 2521 { RETURN_VAL('['); } 2522 YY_BREAK 2523 case 135: 2524 YY_RULE_SETUP 2525 #line 319 "lex.ll" 2526 { RETURN_VAL(']'); } 2527 YY_BREAK 2528 case 136: 2529 YY_RULE_SETUP 2528 2530 #line 320 "lex.ll" 2529 { RETURN_VAL(' ['); }2530 YY_BREAK 2531 case 13 5:2531 { RETURN_VAL('{'); } 2532 YY_BREAK 2533 case 137: 2532 2534 YY_RULE_SETUP 2533 2535 #line 321 "lex.ll" 2534 { RETURN_VAL(']'); }2535 YY_BREAK2536 case 136:2537 YY_RULE_SETUP2538 #line 322 "lex.ll"2539 { RETURN_VAL('{'); }2540 YY_BREAK2541 case 137:2542 YY_RULE_SETUP2543 #line 323 "lex.ll"2544 2536 { RETURN_VAL('}'); } 2545 2537 YY_BREAK … … 2547 2539 case 138: 2548 2540 YY_RULE_SETUP 2541 #line 324 "lex.ll" 2542 { ASCIIOP_RETURN(); } 2543 YY_BREAK 2544 case 139: 2545 YY_RULE_SETUP 2546 #line 325 "lex.ll" 2547 { ASCIIOP_RETURN(); } 2548 YY_BREAK 2549 case 140: 2550 YY_RULE_SETUP 2549 2551 #line 326 "lex.ll" 2550 2552 { ASCIIOP_RETURN(); } 2551 2553 YY_BREAK 2552 case 1 39:2554 case 141: 2553 2555 YY_RULE_SETUP 2554 2556 #line 327 "lex.ll" 2555 2557 { ASCIIOP_RETURN(); } 2556 2558 YY_BREAK 2557 case 14 0:2559 case 142: 2558 2560 YY_RULE_SETUP 2559 2561 #line 328 "lex.ll" 2560 2562 { ASCIIOP_RETURN(); } 2561 2563 YY_BREAK 2562 case 14 1:2564 case 143: 2563 2565 YY_RULE_SETUP 2564 2566 #line 329 "lex.ll" 2565 2567 { ASCIIOP_RETURN(); } 2566 2568 YY_BREAK 2567 case 14 2:2569 case 144: 2568 2570 YY_RULE_SETUP 2569 2571 #line 330 "lex.ll" 2570 2572 { ASCIIOP_RETURN(); } 2571 2573 YY_BREAK 2572 case 14 3:2574 case 145: 2573 2575 YY_RULE_SETUP 2574 2576 #line 331 "lex.ll" 2575 2577 { ASCIIOP_RETURN(); } 2576 2578 YY_BREAK 2577 case 14 4:2579 case 146: 2578 2580 YY_RULE_SETUP 2579 2581 #line 332 "lex.ll" 2580 2582 { ASCIIOP_RETURN(); } 2581 2583 YY_BREAK 2582 case 14 5:2584 case 147: 2583 2585 YY_RULE_SETUP 2584 2586 #line 333 "lex.ll" 2585 2587 { ASCIIOP_RETURN(); } 2586 2588 YY_BREAK 2587 case 14 6:2589 case 148: 2588 2590 YY_RULE_SETUP 2589 2591 #line 334 "lex.ll" 2590 2592 { ASCIIOP_RETURN(); } 2591 2593 YY_BREAK 2592 case 14 7:2594 case 149: 2593 2595 YY_RULE_SETUP 2594 2596 #line 335 "lex.ll" 2595 2597 { ASCIIOP_RETURN(); } 2596 2598 YY_BREAK 2597 case 1 48:2599 case 150: 2598 2600 YY_RULE_SETUP 2599 2601 #line 336 "lex.ll" 2600 2602 { ASCIIOP_RETURN(); } 2601 2603 YY_BREAK 2602 case 1 49:2604 case 151: 2603 2605 YY_RULE_SETUP 2604 2606 #line 337 "lex.ll" 2605 2607 { ASCIIOP_RETURN(); } 2606 2608 YY_BREAK 2607 case 150: 2608 YY_RULE_SETUP 2609 #line 338 "lex.ll" 2610 { ASCIIOP_RETURN(); } 2611 YY_BREAK 2612 case 151: 2609 case 152: 2613 2610 YY_RULE_SETUP 2614 2611 #line 339 "lex.ll" 2615 { ASCIIOP_RETURN(); } 2616 YY_BREAK 2617 case 152: 2612 { NAMEDOP_RETURN(ICR); } 2613 YY_BREAK 2614 case 153: 2615 YY_RULE_SETUP 2616 #line 340 "lex.ll" 2617 { NAMEDOP_RETURN(DECR); } 2618 YY_BREAK 2619 case 154: 2618 2620 YY_RULE_SETUP 2619 2621 #line 341 "lex.ll" 2620 { NAMEDOP_RETURN( ICR); }2621 YY_BREAK 2622 case 15 3:2622 { NAMEDOP_RETURN(EQ); } 2623 YY_BREAK 2624 case 155: 2623 2625 YY_RULE_SETUP 2624 2626 #line 342 "lex.ll" 2625 { NAMEDOP_RETURN( DECR); }2626 YY_BREAK 2627 case 15 4:2627 { NAMEDOP_RETURN(NE); } 2628 YY_BREAK 2629 case 156: 2628 2630 YY_RULE_SETUP 2629 2631 #line 343 "lex.ll" 2630 { NAMEDOP_RETURN( EQ); }2631 YY_BREAK 2632 case 15 5:2632 { NAMEDOP_RETURN(LS); } 2633 YY_BREAK 2634 case 157: 2633 2635 YY_RULE_SETUP 2634 2636 #line 344 "lex.ll" 2635 { NAMEDOP_RETURN( NE); }2636 YY_BREAK 2637 case 15 6:2637 { NAMEDOP_RETURN(RS); } 2638 YY_BREAK 2639 case 158: 2638 2640 YY_RULE_SETUP 2639 2641 #line 345 "lex.ll" 2640 { NAMEDOP_RETURN(L S); }2641 YY_BREAK 2642 case 15 7:2642 { NAMEDOP_RETURN(LE); } 2643 YY_BREAK 2644 case 159: 2643 2645 YY_RULE_SETUP 2644 2646 #line 346 "lex.ll" 2645 { NAMEDOP_RETURN( RS); }2646 YY_BREAK 2647 case 1 58:2647 { NAMEDOP_RETURN(GE); } 2648 YY_BREAK 2649 case 160: 2648 2650 YY_RULE_SETUP 2649 2651 #line 347 "lex.ll" 2650 { NAMEDOP_RETURN( LE); }2651 YY_BREAK 2652 case 1 59:2652 { NAMEDOP_RETURN(ANDAND); } 2653 YY_BREAK 2654 case 161: 2653 2655 YY_RULE_SETUP 2654 2656 #line 348 "lex.ll" 2655 { NAMEDOP_RETURN( GE); }2656 YY_BREAK 2657 case 16 0:2657 { NAMEDOP_RETURN(OROR); } 2658 YY_BREAK 2659 case 162: 2658 2660 YY_RULE_SETUP 2659 2661 #line 349 "lex.ll" 2660 { NAMEDOP_RETURN(A NDAND); }2661 YY_BREAK 2662 case 16 1:2662 { NAMEDOP_RETURN(ARROW); } 2663 YY_BREAK 2664 case 163: 2663 2665 YY_RULE_SETUP 2664 2666 #line 350 "lex.ll" 2665 { NAMEDOP_RETURN( OROR); }2666 YY_BREAK 2667 case 16 2:2667 { NAMEDOP_RETURN(PLUSassign); } 2668 YY_BREAK 2669 case 164: 2668 2670 YY_RULE_SETUP 2669 2671 #line 351 "lex.ll" 2670 { NAMEDOP_RETURN( ARROW); }2671 YY_BREAK 2672 case 16 3:2672 { NAMEDOP_RETURN(MINUSassign); } 2673 YY_BREAK 2674 case 165: 2673 2675 YY_RULE_SETUP 2674 2676 #line 352 "lex.ll" 2675 { NAMEDOP_RETURN( PLUSassign); }2676 YY_BREAK 2677 case 16 4:2677 { NAMEDOP_RETURN(MULTassign); } 2678 YY_BREAK 2679 case 166: 2678 2680 YY_RULE_SETUP 2679 2681 #line 353 "lex.ll" 2680 { NAMEDOP_RETURN( MINUSassign); }2681 YY_BREAK 2682 case 16 5:2682 { NAMEDOP_RETURN(DIVassign); } 2683 YY_BREAK 2684 case 167: 2683 2685 YY_RULE_SETUP 2684 2686 #line 354 "lex.ll" 2685 { NAMEDOP_RETURN(M ULTassign); }2686 YY_BREAK 2687 case 16 6:2687 { NAMEDOP_RETURN(MODassign); } 2688 YY_BREAK 2689 case 168: 2688 2690 YY_RULE_SETUP 2689 2691 #line 355 "lex.ll" 2690 { NAMEDOP_RETURN( DIVassign); }2691 YY_BREAK 2692 case 16 7:2692 { NAMEDOP_RETURN(ANDassign); } 2693 YY_BREAK 2694 case 169: 2693 2695 YY_RULE_SETUP 2694 2696 #line 356 "lex.ll" 2695 { NAMEDOP_RETURN( MODassign); }2696 YY_BREAK 2697 case 1 68:2697 { NAMEDOP_RETURN(ORassign); } 2698 YY_BREAK 2699 case 170: 2698 2700 YY_RULE_SETUP 2699 2701 #line 357 "lex.ll" 2700 { NAMEDOP_RETURN( ANDassign); }2701 YY_BREAK 2702 case 1 69:2702 { NAMEDOP_RETURN(ERassign); } 2703 YY_BREAK 2704 case 171: 2703 2705 YY_RULE_SETUP 2704 2706 #line 358 "lex.ll" 2705 { NAMEDOP_RETURN( ORassign); }2706 YY_BREAK 2707 case 17 0:2707 { NAMEDOP_RETURN(LSassign); } 2708 YY_BREAK 2709 case 172: 2708 2710 YY_RULE_SETUP 2709 2711 #line 359 "lex.ll" 2710 { NAMEDOP_RETURN(ERassign); } 2711 YY_BREAK 2712 case 171: 2713 YY_RULE_SETUP 2714 #line 360 "lex.ll" 2715 { NAMEDOP_RETURN(LSassign); } 2716 YY_BREAK 2717 case 172: 2712 { NAMEDOP_RETURN(RSassign); } 2713 YY_BREAK 2714 case 173: 2718 2715 YY_RULE_SETUP 2719 2716 #line 361 "lex.ll" 2720 { NAMEDOP_RETURN(RSassign); }2721 YY_BREAK2722 case 173:2723 YY_RULE_SETUP2724 #line 363 "lex.ll"2725 2717 { NAMEDOP_RETURN(ATassign); } 2726 2718 YY_BREAK … … 2728 2720 case 174: 2729 2721 YY_RULE_SETUP 2722 #line 364 "lex.ll" 2723 { IDENTIFIER_RETURN(); } // unary 2724 YY_BREAK 2725 case 175: 2726 YY_RULE_SETUP 2727 #line 365 "lex.ll" 2728 { IDENTIFIER_RETURN(); } 2729 YY_BREAK 2730 case 176: 2731 YY_RULE_SETUP 2730 2732 #line 366 "lex.ll" 2731 { IDENTIFIER_RETURN(); } // unary2732 YY_BREAK 2733 case 17 5:2733 { IDENTIFIER_RETURN(); } 2734 YY_BREAK 2735 case 177: 2734 2736 YY_RULE_SETUP 2735 2737 #line 367 "lex.ll" 2736 { IDENTIFIER_RETURN(); }2737 YY_BREAK2738 case 176:2739 YY_RULE_SETUP2740 #line 368 "lex.ll"2741 { IDENTIFIER_RETURN(); }2742 YY_BREAK2743 case 177:2744 YY_RULE_SETUP2745 #line 369 "lex.ll"2746 2738 { IDENTIFIER_RETURN(); } // binary 2747 2739 YY_BREAK … … 2774 2766 case 178: 2775 2767 YY_RULE_SETUP 2776 #line 39 6"lex.ll"2768 #line 394 "lex.ll" 2777 2769 { 2778 2770 // 1 or 2 character unary operator ? … … 2789 2781 case 179: 2790 2782 YY_RULE_SETUP 2783 #line 406 "lex.ll" 2784 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2785 YY_BREAK 2786 case 180: 2787 YY_RULE_SETUP 2791 2788 #line 408 "lex.ll" 2792 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }2793 YY_BREAK2794 case 180:2795 YY_RULE_SETUP2796 #line 410 "lex.ll"2797 2789 ECHO; 2798 2790 YY_BREAK 2799 #line 2 800"Parser/lex.cc"2791 #line 2792 "Parser/lex.cc" 2800 2792 case YY_STATE_EOF(INITIAL): 2801 2793 case YY_STATE_EOF(COMMENT): … … 3772 3764 #define YYTABLES_NAME "yytables" 3773 3765 3774 #line 4 10"lex.ll"3766 #line 408 "lex.ll" 3775 3767 3776 3768 -
src/Parser/lex.h
rb3f9a0cb r89173242 10 10 // Created On : Sat Sep 22 08:58:10 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 21 18:18:06 201613 // Update Count : 34 612 // Last Modified On : Mon Jun 8 20:28:48 2015 13 // Update Count : 341 14 14 // 15 15 … … 20 20 void yyerror( const char * ); 21 21 22 #include <string>23 #include "ParseNode.h"24 22 // External declarations for information sharing between lexer and scanner 25 class TypedefTable; 23 #include "TypedefTable.h" 26 24 extern TypedefTable typedefTable; 27 25 -
src/Parser/lex.ll
rb3f9a0cb r89173242 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Mon Mar 21 23:33:46201613 * Update Count : 4 5012 * Last Modified On : Wed Mar 2 18:07:20 2016 13 * Update Count : 434 14 14 */ 15 15 … … 27 27 28 28 #include "lex.h" 29 #include "ParseNode.h" 29 30 #include "parser.h" // YACC generated definitions based on C++ grammar 30 #include "ParseNode.h"31 #include "TypedefTable.h"32 31 33 32 char *yyfilename; … … 45 44 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 46 45 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword 47 #define IDENTIFIER_RETURN() RETURN_VAL( typedefTable.isKind( yytext) )46 #define IDENTIFIER_RETURN() RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) ) 48 47 #define ATTRIBUTE_RETURN() RETURN_VAL( ATTR_IDENTIFIER ) 49 48 … … 96 95 fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".") 97 96 exponent "_"?[eE]"_"?[+-]?{decimal_digits} 98 // GCC: D (double), DL (long double) and iI (imaginary) suffixes 99 floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?) 100 //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI])) 97 // GCC: D (double), LD (long double) and iI (imaginary) suffixes 98 floating_suffix "_"?([fFdD]?|([lL]?)|([iI][lLfFdD]?)|([lLfFdD][iI])) 101 99 floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}? 102 100 -
src/Parser/parser.cc
rb3f9a0cb r89173242 77 77 #include <cstdio> 78 78 #include <stack> 79 #include "TypedefTable.h" 79 80 #include "lex.h" 80 #include "parser.h"81 81 #include "ParseNode.h" 82 #include "TypedefTable.h"83 82 #include "TypeData.h" 84 83 #include "LinkageSpec.h" … … 91 90 92 91 /* Line 268 of yacc.c */ 93 #line 9 4"Parser/parser.cc"92 #line 93 "Parser/parser.cc" 94 93 95 94 /* Enabling traces. */ … … 342 341 343 342 /* Line 293 of yacc.c */ 344 #line 11 2"parser.yy"343 #line 111 "parser.yy" 345 344 346 345 Token tok; … … 359 358 360 359 /* Line 293 of yacc.c */ 361 #line 36 2"Parser/parser.cc"360 #line 361 "Parser/parser.cc" 362 361 } YYSTYPE; 363 362 # define YYSTYPE_IS_TRIVIAL 1 … … 371 370 372 371 /* Line 343 of yacc.c */ 373 #line 37 4"Parser/parser.cc"372 #line 373 "Parser/parser.cc" 374 373 375 374 #ifdef short … … 1016 1015 static const yytype_uint16 yyrline[] = 1017 1016 { 1018 0, 29 2, 292, 298, 307, 308, 309, 313, 314, 315,1019 31 9, 320, 324, 325, 329, 330, 334, 335, 341, 343,1020 34 5, 347, 352, 353, 359, 363, 365, 366, 368, 369,1021 37 1, 373, 375, 383, 384, 390, 391, 392, 397, 399,1022 40 4, 405, 409, 413, 415, 417, 419, 424, 427, 429,1023 43 1, 433, 435, 437, 439, 441, 447, 449, 451, 453,1024 45 5, 457, 459, 461, 463, 468, 469, 470, 471, 475,1025 47 6, 478, 483, 484, 486, 488, 493, 494, 496, 501,1026 50 2, 504, 509, 510, 512, 514, 516, 521, 522, 524,1027 52 9, 530, 535, 536, 541, 542, 547, 548, 553, 554,1028 55 9, 560, 562, 564, 569, 574, 575, 577, 579, 585,1029 58 6, 592, 594, 596, 598, 603, 604, 609, 610, 611,1030 61 2, 613, 614, 615, 616, 617, 618, 622, 623, 629,1031 6 30, 636, 637, 638, 639, 640, 641, 642, 643, 644,1032 65 3, 660, 662, 672, 673, 678, 680, 682, 684, 688,1033 68 9, 694, 699, 702, 704, 706, 711, 713, 721, 722,1034 72 4, 728, 729, 734, 735, 740, 741, 745, 750, 751,1035 75 5, 757, 763, 764, 768, 770, 772, 774, 780, 781,1036 78 5, 786, 790, 792, 794, 799, 801, 806, 808, 812,1037 81 5, 819, 822, 826, 828, 832, 834, 841, 843, 845,1038 85 4, 856, 858, 860, 862, 867, 869, 871, 873, 878,1039 89 1, 892, 897, 899, 904, 908, 910, 912, 914, 916,1040 92 2, 923, 929, 930, 934, 935, 940, 942, 948, 949,1041 95 1, 956, 958, 965, 967, 971, 972, 977, 979, 983,1042 98 4, 988, 990, 994, 995, 999, 1000, 1004, 1005, 1020,1043 102 1, 1022, 1023, 1024, 1028, 1033, 1040, 1050, 1055, 1060,1044 106 8, 1073, 1078, 1083, 1088, 1096, 1118, 1123, 1130, 1132,1045 113 9, 1144, 1149, 1160, 1165, 1170, 1175, 1180, 1189, 1194,1046 120 2, 1203, 1204, 1205, 1211, 1216, 1224, 1225, 1226, 1227,1047 123 1, 1232, 1233, 1234, 1239, 1240, 1249, 1250, 1255, 1256,1048 126 1, 1263, 1265, 1267, 1269, 1272, 1271, 1283, 1284, 1286,1049 129 6, 1297, 1302, 1306, 1308, 1310, 1312, 1314, 1316, 1318,1050 13 20, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1339, 1341,1051 134 3, 1345, 1347, 1349, 1355, 1356, 1358, 1360, 1362, 1367,1052 136 8, 1374, 1375, 1377, 1379, 1384, 1386, 1388, 1390, 1395,1053 139 6, 1398, 1400, 1405, 1406, 1408, 1413, 1414, 1416, 1418,1054 142 3, 1425, 1427, 1432, 1433, 1437, 1439, 1441, 1443, 1445,1055 14 50, 1452, 1457, 1459, 1464, 1465, 1467, 1468, 1473, 1474,1056 147 6, 1478, 1483, 1485, 1491, 1492, 1494, 1497, 1500, 1505,1057 150 6, 1511, 1516, 1520, 1522, 1524, 1529, 1531, 1537, 1538,1058 154 6, 1547, 1551, 1552, 1553, 1555, 1557, 1564, 1565, 1567,1059 156 9, 1574, 1575, 1581, 1582, 1586, 1587, 1592, 1593, 1594,1060 159 6, 1604, 1605, 1607, 1610, 1612, 1616, 1617, 1618, 1620,1061 162 2, 1626, 1631, 1639, 1640, 1649, 1651, 1656, 1657, 1658,1062 166 2, 1663, 1664, 1668, 1669, 1670, 1674, 1675, 1676, 1681,1063 168 2, 1683, 1684, 1690, 1691, 1693, 1698, 1699, 1704, 1705,1064 170 6, 1707, 1708, 1723, 1724, 1729, 1730, 1738, 1740, 1742,1065 174 5, 1747, 1749, 1772, 1773, 1775, 1777, 1782, 1783, 1785,1066 17 90, 1795, 1796, 1802, 1801, 1805, 1809, 1811, 1813, 1819,1067 18 20, 1825, 1830, 1832, 1837, 1839, 1840, 1842, 1847, 1849,1068 185 1, 1856, 1858, 1863, 1868, 1876, 1882, 1881, 1895, 1896,1069 190 1, 1902, 1906, 1911, 1916, 1924, 1929, 1940, 1941, 1952,1070 195 3, 1959, 1960, 1964, 1965, 1966, 1969, 1968, 1979, 1984,1071 198 9, 1995, 2004, 2010, 2016, 2022, 2028, 2036, 2042, 2050,1072 205 6, 2065, 2066, 2067, 2071, 2075, 2077, 2082, 2083, 2087,1073 208 8, 2093, 2099, 2100, 2103, 2105, 2106, 2110, 2111, 2112,1074 211 3, 2147, 2149, 2150, 2152, 2157, 2162, 2167, 2169, 2171,1075 217 6, 2178, 2180, 2182, 2187, 2189, 2199, 2201, 2202, 2207,1076 220 9, 2211, 2216, 2218, 2220, 2225, 2227, 2229, 2238, 2239,1077 22 40, 2244, 2246, 2248, 2253, 2255, 2257, 2262, 2264, 2266,1078 228 1, 2283, 2284, 2286, 2291, 2292, 2297, 2299, 2301, 2306,1079 230 8, 2310, 2312, 2317, 2319, 2321, 2331, 2333, 2334, 2336,1080 234 1, 2343, 2345, 2350, 2352, 2354, 2356, 2361, 2363, 2365,1081 239 6, 2398, 2399, 2401, 2406, 2411, 2419, 2421, 2423, 2428,1082 24 30, 2435, 2437, 2451, 2452, 2454, 2459, 2461, 2463, 2465,1083 246 7, 2472, 2473, 2475, 2477, 2482, 2484, 2486, 2492, 2494,1084 249 6, 2500, 2502, 2504, 2506, 2520, 2521, 2523, 2528, 2530,1085 253 2, 2534, 2536, 2541, 2542, 2544, 2546, 2551, 2553, 2555,1086 256 1, 2562, 2564, 2573, 2576, 2578, 2581, 2583, 2585, 2598,1087 259 9, 2601, 2606, 2608, 2610, 2612, 2614, 2619, 2620, 2622,1088 262 4, 2629, 2631, 2639, 2640, 2641, 2646, 2647, 2651, 2653,1089 265 5, 2657, 2659, 2661, 2668, 2670, 2672, 2674, 2676, 2678,1090 26 80, 2682, 2684, 2686, 2691, 2693, 2695, 2700, 2726, 2727,1091 272 9, 2733, 2734, 2738, 2740, 2742, 2744, 2746, 2748, 2755,1092 275 7, 2759, 2761, 2763, 2765, 2770, 2775, 2777, 2779, 2797,1093 279 9, 2804, 28051017 0, 291, 291, 297, 306, 307, 308, 312, 313, 314, 1018 318, 319, 323, 324, 328, 329, 333, 334, 340, 342, 1019 344, 346, 351, 352, 358, 362, 364, 365, 367, 368, 1020 370, 372, 374, 382, 383, 389, 390, 391, 396, 398, 1021 403, 404, 408, 412, 414, 416, 418, 423, 426, 428, 1022 430, 432, 434, 436, 438, 440, 446, 448, 450, 452, 1023 454, 456, 458, 460, 462, 467, 468, 469, 470, 474, 1024 475, 477, 482, 483, 485, 487, 492, 493, 495, 500, 1025 501, 503, 508, 509, 511, 513, 515, 520, 521, 523, 1026 528, 529, 534, 535, 540, 541, 546, 547, 552, 553, 1027 558, 559, 561, 563, 568, 573, 574, 576, 578, 584, 1028 585, 591, 593, 595, 597, 602, 603, 608, 609, 610, 1029 611, 612, 613, 614, 615, 616, 617, 621, 622, 628, 1030 629, 635, 636, 637, 638, 639, 640, 641, 642, 643, 1031 652, 659, 661, 671, 672, 677, 679, 681, 683, 687, 1032 688, 693, 698, 701, 703, 705, 710, 712, 720, 721, 1033 723, 727, 728, 733, 734, 739, 740, 744, 749, 750, 1034 754, 756, 762, 763, 767, 769, 771, 773, 779, 780, 1035 784, 785, 789, 791, 793, 798, 800, 805, 807, 811, 1036 814, 818, 821, 825, 827, 831, 833, 840, 842, 844, 1037 853, 855, 857, 859, 861, 866, 868, 870, 872, 877, 1038 890, 891, 896, 898, 903, 907, 909, 911, 913, 915, 1039 921, 922, 928, 929, 933, 934, 939, 941, 947, 948, 1040 950, 955, 957, 964, 966, 970, 971, 976, 978, 982, 1041 983, 987, 989, 993, 994, 998, 999, 1003, 1004, 1019, 1042 1020, 1021, 1022, 1023, 1027, 1032, 1039, 1049, 1054, 1059, 1043 1067, 1072, 1077, 1082, 1087, 1095, 1117, 1122, 1129, 1131, 1044 1138, 1143, 1148, 1159, 1164, 1169, 1174, 1179, 1188, 1193, 1045 1201, 1202, 1203, 1204, 1210, 1215, 1223, 1224, 1225, 1226, 1046 1230, 1231, 1232, 1233, 1238, 1239, 1248, 1249, 1254, 1255, 1047 1260, 1262, 1264, 1266, 1268, 1271, 1270, 1282, 1283, 1285, 1048 1295, 1296, 1301, 1305, 1307, 1309, 1311, 1313, 1315, 1317, 1049 1319, 1324, 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1050 1342, 1344, 1346, 1348, 1354, 1355, 1357, 1359, 1361, 1366, 1051 1367, 1373, 1374, 1376, 1378, 1383, 1385, 1387, 1389, 1394, 1052 1395, 1397, 1399, 1404, 1405, 1407, 1412, 1413, 1415, 1417, 1053 1422, 1424, 1426, 1431, 1432, 1436, 1438, 1440, 1442, 1444, 1054 1449, 1451, 1456, 1458, 1463, 1464, 1466, 1467, 1472, 1473, 1055 1475, 1477, 1482, 1484, 1490, 1491, 1493, 1496, 1499, 1504, 1056 1505, 1510, 1515, 1519, 1521, 1523, 1528, 1530, 1536, 1537, 1057 1545, 1546, 1550, 1551, 1552, 1554, 1556, 1563, 1564, 1566, 1058 1568, 1573, 1574, 1580, 1581, 1585, 1586, 1591, 1592, 1593, 1059 1595, 1603, 1604, 1606, 1609, 1611, 1615, 1616, 1617, 1619, 1060 1621, 1625, 1630, 1638, 1639, 1648, 1650, 1655, 1656, 1657, 1061 1661, 1662, 1663, 1667, 1668, 1669, 1673, 1674, 1675, 1680, 1062 1681, 1682, 1683, 1689, 1690, 1692, 1697, 1698, 1703, 1704, 1063 1705, 1706, 1707, 1722, 1723, 1728, 1729, 1737, 1739, 1741, 1064 1744, 1746, 1748, 1771, 1772, 1774, 1776, 1781, 1782, 1784, 1065 1789, 1794, 1795, 1801, 1800, 1804, 1808, 1810, 1812, 1818, 1066 1819, 1824, 1829, 1831, 1836, 1838, 1839, 1841, 1846, 1848, 1067 1850, 1855, 1857, 1862, 1867, 1875, 1881, 1880, 1894, 1895, 1068 1900, 1901, 1905, 1910, 1915, 1923, 1928, 1939, 1940, 1951, 1069 1952, 1958, 1959, 1963, 1964, 1965, 1968, 1967, 1978, 1983, 1070 1988, 1994, 2003, 2009, 2015, 2021, 2027, 2035, 2041, 2049, 1071 2055, 2064, 2065, 2066, 2070, 2074, 2076, 2081, 2082, 2086, 1072 2087, 2092, 2098, 2099, 2102, 2104, 2105, 2109, 2110, 2111, 1073 2112, 2146, 2148, 2149, 2151, 2156, 2161, 2166, 2168, 2170, 1074 2175, 2177, 2179, 2181, 2186, 2188, 2198, 2200, 2201, 2206, 1075 2208, 2210, 2215, 2217, 2219, 2224, 2226, 2228, 2237, 2238, 1076 2239, 2243, 2245, 2247, 2252, 2254, 2256, 2261, 2263, 2265, 1077 2280, 2282, 2283, 2285, 2290, 2291, 2296, 2298, 2300, 2305, 1078 2307, 2309, 2311, 2316, 2318, 2320, 2330, 2332, 2333, 2335, 1079 2340, 2342, 2344, 2349, 2351, 2353, 2355, 2360, 2362, 2364, 1080 2395, 2397, 2398, 2400, 2405, 2410, 2418, 2420, 2422, 2427, 1081 2429, 2434, 2436, 2450, 2451, 2453, 2458, 2460, 2462, 2464, 1082 2466, 2471, 2472, 2474, 2476, 2481, 2483, 2485, 2491, 2493, 1083 2495, 2499, 2501, 2503, 2505, 2519, 2520, 2522, 2527, 2529, 1084 2531, 2533, 2535, 2540, 2541, 2543, 2545, 2550, 2552, 2554, 1085 2560, 2561, 2563, 2572, 2575, 2577, 2580, 2582, 2584, 2597, 1086 2598, 2600, 2605, 2607, 2609, 2611, 2613, 2618, 2619, 2621, 1087 2623, 2628, 2630, 2638, 2639, 2640, 2645, 2646, 2650, 2652, 1088 2654, 2656, 2658, 2660, 2667, 2669, 2671, 2673, 2675, 2677, 1089 2679, 2681, 2683, 2685, 2690, 2692, 2694, 2699, 2725, 2726, 1090 2728, 2732, 2733, 2737, 2739, 2741, 2743, 2745, 2747, 2754, 1091 2756, 2758, 2760, 2762, 2764, 2769, 2774, 2776, 2778, 2796, 1092 2798, 2803, 2804 1094 1093 }; 1095 1094 #endif … … 5056 5055 5057 5056 /* Line 1806 of yacc.c */ 5058 #line 29 2"parser.yy"5057 #line 291 "parser.yy" 5059 5058 { 5060 5059 typedefTable.enterScope(); … … 5065 5064 5066 5065 /* Line 1806 of yacc.c */ 5067 #line 29 8"parser.yy"5066 #line 297 "parser.yy" 5068 5067 { 5069 5068 typedefTable.leaveScope(); … … 5074 5073 5075 5074 /* Line 1806 of yacc.c */ 5075 #line 306 "parser.yy" 5076 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); } 5077 break; 5078 5079 case 5: 5080 5081 /* Line 1806 of yacc.c */ 5076 5082 #line 307 "parser.yy" 5077 { (yyval.constant) = new ConstantNode( ConstantNode:: Integer, (yyvsp[(1) - (1)].tok) ); }5078 break; 5079 5080 case 5:5083 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); } 5084 break; 5085 5086 case 6: 5081 5087 5082 5088 /* Line 1806 of yacc.c */ 5083 5089 #line 308 "parser.yy" 5084 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }5085 break;5086 5087 case 6:5088 5089 /* Line 1806 of yacc.c */5090 #line 309 "parser.yy"5091 5090 { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); } 5092 5091 break; … … 5095 5094 5096 5095 /* Line 1806 of yacc.c */ 5096 #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 */ 5097 5103 #line 334 "parser.yy" 5098 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }5099 break;5100 5101 case 17:5102 5103 /* Line 1806 of yacc.c */5104 #line 335 "parser.yy"5105 5104 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 5106 5105 break; … … 5109 5108 5110 5109 /* Line 1806 of yacc.c */ 5111 #line 34 2"parser.yy"5110 #line 341 "parser.yy" 5112 5111 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5113 5112 break; … … 5116 5115 5117 5116 /* Line 1806 of yacc.c */ 5118 #line 34 4"parser.yy"5117 #line 343 "parser.yy" 5119 5118 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5120 5119 break; … … 5123 5122 5124 5123 /* Line 1806 of yacc.c */ 5125 #line 34 6"parser.yy"5124 #line 345 "parser.yy" 5126 5125 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5127 5126 break; … … 5130 5129 5131 5130 /* Line 1806 of yacc.c */ 5132 #line 34 8"parser.yy"5131 #line 347 "parser.yy" 5133 5132 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5134 5133 break; … … 5137 5136 5138 5137 /* Line 1806 of yacc.c */ 5139 #line 35 8"parser.yy"5138 #line 357 "parser.yy" 5140 5139 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5141 5140 break; … … 5144 5143 5145 5144 /* Line 1806 of yacc.c */ 5146 #line 3 60"parser.yy"5145 #line 359 "parser.yy" 5147 5146 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5148 5147 break; … … 5151 5150 5152 5151 /* Line 1806 of yacc.c */ 5153 #line 36 4"parser.yy"5152 #line 363 "parser.yy" 5154 5153 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5155 5154 break; … … 5158 5157 5159 5158 /* Line 1806 of yacc.c */ 5160 #line 36 7"parser.yy"5159 #line 366 "parser.yy" 5161 5160 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5162 5161 break; … … 5165 5164 5166 5165 /* Line 1806 of yacc.c */ 5167 #line 3 70"parser.yy"5166 #line 369 "parser.yy" 5168 5167 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5169 5168 break; … … 5172 5171 5173 5172 /* Line 1806 of yacc.c */ 5174 #line 37 2"parser.yy"5173 #line 371 "parser.yy" 5175 5174 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5176 5175 break; … … 5179 5178 5180 5179 /* Line 1806 of yacc.c */ 5181 #line 37 4"parser.yy"5180 #line 373 "parser.yy" 5182 5181 { (yyval.en) = 0; } 5183 5182 break; … … 5186 5185 5187 5186 /* Line 1806 of yacc.c */ 5188 #line 37 6"parser.yy"5187 #line 375 "parser.yy" 5189 5188 { 5190 5189 Token fn; fn.str = new std::string( "?{}" ); // location undefined … … 5196 5195 5197 5196 /* Line 1806 of yacc.c */ 5198 #line 38 5"parser.yy"5197 #line 384 "parser.yy" 5199 5198 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5200 5199 break; … … 5203 5202 5204 5203 /* Line 1806 of yacc.c */ 5205 #line 3 90"parser.yy"5204 #line 389 "parser.yy" 5206 5205 { (yyval.en) = 0; } 5207 5206 break; … … 5210 5209 5211 5210 /* Line 1806 of yacc.c */ 5212 #line 39 3"parser.yy"5211 #line 392 "parser.yy" 5213 5212 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); } 5214 5213 break; … … 5217 5216 5218 5217 /* Line 1806 of yacc.c */ 5219 #line 39 8"parser.yy"5218 #line 397 "parser.yy" 5220 5219 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5221 5220 break; … … 5224 5223 5225 5224 /* Line 1806 of yacc.c */ 5226 #line 400"parser.yy"5225 #line 399 "parser.yy" 5227 5226 { (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) )))); } 5228 5227 break; … … 5231 5230 5232 5231 /* Line 1806 of yacc.c */ 5233 #line 40 5"parser.yy"5232 #line 404 "parser.yy" 5234 5233 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5235 5234 break; … … 5238 5237 5239 5238 /* Line 1806 of yacc.c */ 5240 #line 4 10"parser.yy"5239 #line 409 "parser.yy" 5241 5240 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5242 5241 break; … … 5245 5244 5246 5245 /* Line 1806 of yacc.c */ 5247 #line 41 4"parser.yy"5246 #line 413 "parser.yy" 5248 5247 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5249 5248 break; … … 5252 5251 5253 5252 /* Line 1806 of yacc.c */ 5254 #line 41 6"parser.yy"5253 #line 415 "parser.yy" 5255 5254 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5256 5255 break; … … 5259 5258 5260 5259 /* Line 1806 of yacc.c */ 5261 #line 41 8"parser.yy"5260 #line 417 "parser.yy" 5262 5261 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5263 5262 break; … … 5266 5265 5267 5266 /* Line 1806 of yacc.c */ 5268 #line 4 20"parser.yy"5267 #line 419 "parser.yy" 5269 5268 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5270 5269 break; … … 5273 5272 5274 5273 /* Line 1806 of yacc.c */ 5275 #line 42 8"parser.yy"5274 #line 427 "parser.yy" 5276 5275 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5277 5276 break; … … 5280 5279 5281 5280 /* Line 1806 of yacc.c */ 5282 #line 4 30"parser.yy"5281 #line 429 "parser.yy" 5283 5282 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5284 5283 break; … … 5287 5286 5288 5287 /* Line 1806 of yacc.c */ 5289 #line 43 2"parser.yy"5288 #line 431 "parser.yy" 5290 5289 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5291 5290 break; … … 5294 5293 5295 5294 /* Line 1806 of yacc.c */ 5296 #line 43 4"parser.yy"5295 #line 433 "parser.yy" 5297 5296 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5298 5297 break; … … 5301 5300 5302 5301 /* Line 1806 of yacc.c */ 5303 #line 43 6"parser.yy"5302 #line 435 "parser.yy" 5304 5303 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5305 5304 break; … … 5308 5307 5309 5308 /* Line 1806 of yacc.c */ 5310 #line 43 8"parser.yy"5309 #line 437 "parser.yy" 5311 5310 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5312 5311 break; … … 5315 5314 5316 5315 /* Line 1806 of yacc.c */ 5317 #line 4 40"parser.yy"5316 #line 439 "parser.yy" 5318 5317 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5319 5318 break; … … 5322 5321 5323 5322 /* Line 1806 of yacc.c */ 5324 #line 44 2"parser.yy"5323 #line 441 "parser.yy" 5325 5324 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5326 5325 break; … … 5329 5328 5330 5329 /* Line 1806 of yacc.c */ 5331 #line 44 8"parser.yy"5330 #line 447 "parser.yy" 5332 5331 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5333 5332 break; … … 5336 5335 5337 5336 /* Line 1806 of yacc.c */ 5338 #line 4 50"parser.yy"5337 #line 449 "parser.yy" 5339 5338 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5340 5339 break; … … 5343 5342 5344 5343 /* Line 1806 of yacc.c */ 5345 #line 45 2"parser.yy"5344 #line 451 "parser.yy" 5346 5345 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); } 5347 5346 break; … … 5350 5349 5351 5350 /* Line 1806 of yacc.c */ 5352 #line 45 4"parser.yy"5351 #line 453 "parser.yy" 5353 5352 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5354 5353 break; … … 5357 5356 5358 5357 /* Line 1806 of yacc.c */ 5359 #line 45 6"parser.yy"5358 #line 455 "parser.yy" 5360 5359 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5361 5360 break; … … 5364 5363 5365 5364 /* Line 1806 of yacc.c */ 5366 #line 45 8"parser.yy"5365 #line 457 "parser.yy" 5367 5366 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5368 5367 break; … … 5371 5370 5372 5371 /* Line 1806 of yacc.c */ 5373 #line 4 60"parser.yy"5372 #line 459 "parser.yy" 5374 5373 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5375 5374 break; … … 5378 5377 5379 5378 /* Line 1806 of yacc.c */ 5380 #line 46 2"parser.yy"5379 #line 461 "parser.yy" 5381 5380 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); } 5382 5381 break; … … 5385 5384 5386 5385 /* Line 1806 of yacc.c */ 5387 #line 46 4"parser.yy"5386 #line 463 "parser.yy" 5388 5387 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); } 5389 5388 break; … … 5392 5391 5393 5392 /* Line 1806 of yacc.c */ 5393 #line 467 "parser.yy" 5394 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5395 break; 5396 5397 case 66: 5398 5399 /* Line 1806 of yacc.c */ 5394 5400 #line 468 "parser.yy" 5395 { (yyval.en) = new OperatorNode( OperatorNode:: AddressOf); }5396 break; 5397 5398 case 6 6:5401 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5402 break; 5403 5404 case 67: 5399 5405 5400 5406 /* Line 1806 of yacc.c */ 5401 5407 #line 469 "parser.yy" 5402 { (yyval.en) = new OperatorNode( OperatorNode::Un Plus ); }5403 break; 5404 5405 case 6 7:5408 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5409 break; 5410 5411 case 68: 5406 5412 5407 5413 /* Line 1806 of yacc.c */ 5408 5414 #line 470 "parser.yy" 5409 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }5410 break;5411 5412 case 68:5413 5414 /* Line 1806 of yacc.c */5415 #line 471 "parser.yy"5416 5415 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5417 5416 break; … … 5420 5419 5421 5420 /* Line 1806 of yacc.c */ 5422 #line 47 7"parser.yy"5421 #line 476 "parser.yy" 5423 5422 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5424 5423 break; … … 5427 5426 5428 5427 /* Line 1806 of yacc.c */ 5429 #line 47 9"parser.yy"5428 #line 478 "parser.yy" 5430 5429 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5431 5430 break; … … 5434 5433 5435 5434 /* Line 1806 of yacc.c */ 5436 #line 48 5"parser.yy"5435 #line 484 "parser.yy" 5437 5436 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5438 5437 break; … … 5441 5440 5442 5441 /* Line 1806 of yacc.c */ 5443 #line 48 7"parser.yy"5442 #line 486 "parser.yy" 5444 5443 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5445 5444 break; … … 5448 5447 5449 5448 /* Line 1806 of yacc.c */ 5450 #line 48 9"parser.yy"5449 #line 488 "parser.yy" 5451 5450 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5452 5451 break; … … 5455 5454 5456 5455 /* Line 1806 of yacc.c */ 5457 #line 49 5"parser.yy"5456 #line 494 "parser.yy" 5458 5457 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5459 5458 break; … … 5462 5461 5463 5462 /* Line 1806 of yacc.c */ 5464 #line 49 7"parser.yy"5463 #line 496 "parser.yy" 5465 5464 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5466 5465 break; … … 5469 5468 5470 5469 /* Line 1806 of yacc.c */ 5471 #line 50 3"parser.yy"5470 #line 502 "parser.yy" 5472 5471 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5473 5472 break; … … 5476 5475 5477 5476 /* Line 1806 of yacc.c */ 5478 #line 50 5"parser.yy"5477 #line 504 "parser.yy" 5479 5478 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5480 5479 break; … … 5483 5482 5484 5483 /* Line 1806 of yacc.c */ 5485 #line 51 1"parser.yy"5484 #line 510 "parser.yy" 5486 5485 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5487 5486 break; … … 5490 5489 5491 5490 /* Line 1806 of yacc.c */ 5492 #line 51 3"parser.yy"5491 #line 512 "parser.yy" 5493 5492 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5494 5493 break; … … 5497 5496 5498 5497 /* Line 1806 of yacc.c */ 5499 #line 51 5"parser.yy"5498 #line 514 "parser.yy" 5500 5499 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5501 5500 break; … … 5504 5503 5505 5504 /* Line 1806 of yacc.c */ 5506 #line 51 7"parser.yy"5505 #line 516 "parser.yy" 5507 5506 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5508 5507 break; … … 5511 5510 5512 5511 /* Line 1806 of yacc.c */ 5513 #line 52 3"parser.yy"5512 #line 522 "parser.yy" 5514 5513 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5515 5514 break; … … 5518 5517 5519 5518 /* Line 1806 of yacc.c */ 5520 #line 52 5"parser.yy"5519 #line 524 "parser.yy" 5521 5520 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5522 5521 break; … … 5525 5524 5526 5525 /* Line 1806 of yacc.c */ 5527 #line 53 1"parser.yy"5526 #line 530 "parser.yy" 5528 5527 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5529 5528 break; … … 5532 5531 5533 5532 /* Line 1806 of yacc.c */ 5534 #line 53 7"parser.yy"5533 #line 536 "parser.yy" 5535 5534 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5536 5535 break; … … 5539 5538 5540 5539 /* Line 1806 of yacc.c */ 5541 #line 54 3"parser.yy"5540 #line 542 "parser.yy" 5542 5541 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5543 5542 break; … … 5546 5545 5547 5546 /* Line 1806 of yacc.c */ 5548 #line 54 9"parser.yy"5547 #line 548 "parser.yy" 5549 5548 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5550 5549 break; … … 5553 5552 5554 5553 /* Line 1806 of yacc.c */ 5555 #line 55 5"parser.yy"5554 #line 554 "parser.yy" 5556 5555 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5557 5556 break; … … 5560 5559 5561 5560 /* Line 1806 of yacc.c */ 5562 #line 56 1"parser.yy"5561 #line 560 "parser.yy" 5563 5562 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5564 5563 break; … … 5567 5566 5568 5567 /* Line 1806 of yacc.c */ 5569 #line 56 3"parser.yy"5568 #line 562 "parser.yy" 5570 5569 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5571 5570 break; … … 5574 5573 5575 5574 /* Line 1806 of yacc.c */ 5576 #line 56 5"parser.yy"5575 #line 564 "parser.yy" 5577 5576 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5578 5577 break; … … 5581 5580 5582 5581 /* Line 1806 of yacc.c */ 5583 #line 57 6"parser.yy"5582 #line 575 "parser.yy" 5584 5583 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5585 5584 break; … … 5588 5587 5589 5588 /* Line 1806 of yacc.c */ 5590 #line 57 8"parser.yy"5589 #line 577 "parser.yy" 5591 5590 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5592 5591 break; … … 5595 5594 5596 5595 /* Line 1806 of yacc.c */ 5597 #line 5 80"parser.yy"5596 #line 579 "parser.yy" 5598 5597 { (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) ); } 5599 5598 break; … … 5602 5601 5603 5602 /* Line 1806 of yacc.c */ 5604 #line 58 5"parser.yy"5603 #line 584 "parser.yy" 5605 5604 { (yyval.en) = new NullExprNode; } 5606 5605 break; … … 5609 5608 5610 5609 /* Line 1806 of yacc.c */ 5611 #line 59 3"parser.yy"5610 #line 592 "parser.yy" 5612 5611 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5613 5612 break; … … 5616 5615 5617 5616 /* Line 1806 of yacc.c */ 5618 #line 59 5"parser.yy"5617 #line 594 "parser.yy" 5619 5618 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5620 5619 break; … … 5623 5622 5624 5623 /* Line 1806 of yacc.c */ 5625 #line 59 7"parser.yy"5624 #line 596 "parser.yy" 5626 5625 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5627 5626 break; … … 5630 5629 5631 5630 /* Line 1806 of yacc.c */ 5632 #line 59 9"parser.yy"5631 #line 598 "parser.yy" 5633 5632 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5634 5633 break; … … 5637 5636 5638 5637 /* Line 1806 of yacc.c */ 5639 #line 60 5"parser.yy"5638 #line 604 "parser.yy" 5640 5639 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5641 5640 break; … … 5644 5643 5645 5644 /* Line 1806 of yacc.c */ 5645 #line 608 "parser.yy" 5646 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5647 break; 5648 5649 case 118: 5650 5651 /* Line 1806 of yacc.c */ 5646 5652 #line 609 "parser.yy" 5647 { (yyval.en) = new OperatorNode( OperatorNode:: MulAssn ); }5648 break; 5649 5650 case 11 8:5653 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5654 break; 5655 5656 case 119: 5651 5657 5652 5658 /* Line 1806 of yacc.c */ 5653 5659 #line 610 "parser.yy" 5654 { (yyval.en) = new OperatorNode( OperatorNode:: DivAssn ); }5655 break; 5656 5657 case 1 19:5660 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5661 break; 5662 5663 case 120: 5658 5664 5659 5665 /* Line 1806 of yacc.c */ 5660 5666 #line 611 "parser.yy" 5661 { (yyval.en) = new OperatorNode( OperatorNode:: ModAssn ); }5662 break; 5663 5664 case 12 0:5667 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5668 break; 5669 5670 case 121: 5665 5671 5666 5672 /* Line 1806 of yacc.c */ 5667 5673 #line 612 "parser.yy" 5668 { (yyval.en) = new OperatorNode( OperatorNode:: PlusAssn ); }5669 break; 5670 5671 case 12 1:5674 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5675 break; 5676 5677 case 122: 5672 5678 5673 5679 /* Line 1806 of yacc.c */ 5674 5680 #line 613 "parser.yy" 5675 { (yyval.en) = new OperatorNode( OperatorNode:: MinusAssn ); }5676 break; 5677 5678 case 12 2:5681 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5682 break; 5683 5684 case 123: 5679 5685 5680 5686 /* Line 1806 of yacc.c */ 5681 5687 #line 614 "parser.yy" 5682 { (yyval.en) = new OperatorNode( OperatorNode:: LSAssn ); }5683 break; 5684 5685 case 12 3:5688 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5689 break; 5690 5691 case 124: 5686 5692 5687 5693 /* Line 1806 of yacc.c */ 5688 5694 #line 615 "parser.yy" 5689 { (yyval.en) = new OperatorNode( OperatorNode:: RSAssn ); }5690 break; 5691 5692 case 12 4:5695 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5696 break; 5697 5698 case 125: 5693 5699 5694 5700 /* Line 1806 of yacc.c */ 5695 5701 #line 616 "parser.yy" 5696 { (yyval.en) = new OperatorNode( OperatorNode:: AndAssn ); }5697 break; 5698 5699 case 12 5:5702 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5703 break; 5704 5705 case 126: 5700 5706 5701 5707 /* Line 1806 of yacc.c */ 5702 5708 #line 617 "parser.yy" 5703 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }5704 break;5705 5706 case 126:5707 5708 /* Line 1806 of yacc.c */5709 #line 618 "parser.yy"5710 5709 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5711 5710 break; … … 5714 5713 5715 5714 /* Line 1806 of yacc.c */ 5716 #line 62 4"parser.yy"5715 #line 623 "parser.yy" 5717 5716 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5718 5717 break; … … 5721 5720 5722 5721 /* Line 1806 of yacc.c */ 5723 #line 62 9"parser.yy"5722 #line 628 "parser.yy" 5724 5723 { (yyval.en) = 0; } 5725 5724 break; … … 5728 5727 5729 5728 /* Line 1806 of yacc.c */ 5730 #line 63 8"parser.yy"5729 #line 637 "parser.yy" 5731 5730 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5732 5731 break; … … 5735 5734 5736 5735 /* Line 1806 of yacc.c */ 5737 #line 64 5"parser.yy"5736 #line 644 "parser.yy" 5738 5737 { 5739 5738 Token fn; fn.str = new std::string( "^?{}" ); // location undefined … … 5746 5745 5747 5746 /* Line 1806 of yacc.c */ 5748 #line 65 4"parser.yy"5747 #line 653 "parser.yy" 5749 5748 { 5750 5749 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5755 5754 5756 5755 /* Line 1806 of yacc.c */ 5757 #line 66 1"parser.yy"5756 #line 660 "parser.yy" 5758 5757 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5759 5758 break; … … 5762 5761 5763 5762 /* Line 1806 of yacc.c */ 5764 #line 66 8"parser.yy"5763 #line 667 "parser.yy" 5765 5764 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5766 5765 break; … … 5769 5768 5770 5769 /* Line 1806 of yacc.c */ 5771 #line 67 4"parser.yy"5770 #line 673 "parser.yy" 5772 5771 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5773 5772 break; … … 5776 5775 5777 5776 /* Line 1806 of yacc.c */ 5778 #line 67 9"parser.yy"5777 #line 678 "parser.yy" 5779 5778 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5780 5779 break; … … 5783 5782 5784 5783 /* Line 1806 of yacc.c */ 5785 #line 68 1"parser.yy"5784 #line 680 "parser.yy" 5786 5785 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5787 5786 break; … … 5790 5789 5791 5790 /* Line 1806 of yacc.c */ 5792 #line 68 3"parser.yy"5791 #line 682 "parser.yy" 5793 5792 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5794 5793 break; … … 5797 5796 5798 5797 /* Line 1806 of yacc.c */ 5799 #line 6 90"parser.yy"5798 #line 689 "parser.yy" 5800 5799 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5801 5800 break; … … 5804 5803 5805 5804 /* Line 1806 of yacc.c */ 5806 #line 69 5"parser.yy"5805 #line 694 "parser.yy" 5807 5806 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5808 5807 break; … … 5811 5810 5812 5811 /* Line 1806 of yacc.c */ 5813 #line 70 1"parser.yy"5812 #line 700 "parser.yy" 5814 5813 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5815 5814 break; … … 5818 5817 5819 5818 /* Line 1806 of yacc.c */ 5820 #line 70 3"parser.yy"5819 #line 702 "parser.yy" 5821 5820 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5822 5821 break; … … 5825 5824 5826 5825 /* Line 1806 of yacc.c */ 5827 #line 70 5"parser.yy"5826 #line 704 "parser.yy" 5828 5827 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5829 5828 break; … … 5832 5831 5833 5832 /* Line 1806 of yacc.c */ 5834 #line 70 7"parser.yy"5833 #line 706 "parser.yy" 5835 5834 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5836 5835 break; … … 5839 5838 5840 5839 /* Line 1806 of yacc.c */ 5841 #line 71 2"parser.yy"5840 #line 711 "parser.yy" 5842 5841 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5843 5842 break; … … 5846 5845 5847 5846 /* Line 1806 of yacc.c */ 5848 #line 71 4"parser.yy"5847 #line 713 "parser.yy" 5849 5848 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5850 5849 break; … … 5853 5852 5854 5853 /* Line 1806 of yacc.c */ 5855 #line 72 1"parser.yy"5854 #line 720 "parser.yy" 5856 5855 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5857 5856 break; … … 5860 5859 5861 5860 /* Line 1806 of yacc.c */ 5862 #line 72 3"parser.yy"5861 #line 722 "parser.yy" 5863 5862 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5864 5863 break; … … 5867 5866 5868 5867 /* Line 1806 of yacc.c */ 5869 #line 7 30"parser.yy"5868 #line 729 "parser.yy" 5870 5869 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5871 5870 break; … … 5874 5873 5875 5874 /* Line 1806 of yacc.c */ 5875 #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 */ 5876 5882 #line 734 "parser.yy" 5877 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }5878 break;5879 5880 case 164:5881 5882 /* Line 1806 of yacc.c */5883 #line 735 "parser.yy"5884 5883 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5885 5884 break; … … 5888 5887 5889 5888 /* Line 1806 of yacc.c */ 5890 #line 74 1"parser.yy"5889 #line 740 "parser.yy" 5891 5890 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5892 5891 break; … … 5895 5894 5896 5895 /* Line 1806 of yacc.c */ 5897 #line 74 5"parser.yy"5896 #line 744 "parser.yy" 5898 5897 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5899 5898 break; … … 5902 5901 5903 5902 /* Line 1806 of yacc.c */ 5904 #line 7 50"parser.yy"5903 #line 749 "parser.yy" 5905 5904 { (yyval.sn) = 0; } 5906 5905 break; … … 5909 5908 5910 5909 /* Line 1806 of yacc.c */ 5911 #line 75 6"parser.yy"5910 #line 755 "parser.yy" 5912 5911 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5913 5912 break; … … 5916 5915 5917 5916 /* Line 1806 of yacc.c */ 5918 #line 75 8"parser.yy"5917 #line 757 "parser.yy" 5919 5918 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5920 5919 break; … … 5923 5922 5924 5923 /* Line 1806 of yacc.c */ 5925 #line 76 3"parser.yy"5924 #line 762 "parser.yy" 5926 5925 { (yyval.sn) = 0; } 5927 5926 break; … … 5930 5929 5931 5930 /* Line 1806 of yacc.c */ 5932 #line 76 9"parser.yy"5931 #line 768 "parser.yy" 5933 5932 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5934 5933 break; … … 5937 5936 5938 5937 /* Line 1806 of yacc.c */ 5939 #line 77 1"parser.yy"5938 #line 770 "parser.yy" 5940 5939 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5941 5940 break; … … 5944 5943 5945 5944 /* Line 1806 of yacc.c */ 5946 #line 77 3"parser.yy"5945 #line 772 "parser.yy" 5947 5946 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5948 5947 break; … … 5951 5950 5952 5951 /* Line 1806 of yacc.c */ 5953 #line 77 5"parser.yy"5952 #line 774 "parser.yy" 5954 5953 { (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) ))))); } 5955 5954 break; … … 5958 5957 5959 5958 /* Line 1806 of yacc.c */ 5960 #line 7 80"parser.yy"5959 #line 779 "parser.yy" 5961 5960 { (yyval.sn) = 0; } 5962 5961 break; 5963 5962 5964 5963 case 180: 5964 5965 /* Line 1806 of yacc.c */ 5966 #line 784 "parser.yy" 5967 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5968 break; 5969 5970 case 181: 5965 5971 5966 5972 /* Line 1806 of yacc.c */ … … 5969 5975 break; 5970 5976 5971 case 181:5972 5973 /* Line 1806 of yacc.c */5974 #line 786 "parser.yy"5975 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }5976 break;5977 5978 5977 case 182: 5979 5978 5980 5979 /* Line 1806 of yacc.c */ 5981 #line 79 1"parser.yy"5980 #line 790 "parser.yy" 5982 5981 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5983 5982 break; … … 5986 5985 5987 5986 /* Line 1806 of yacc.c */ 5988 #line 79 3"parser.yy"5987 #line 792 "parser.yy" 5989 5988 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5990 5989 break; … … 5993 5992 5994 5993 /* Line 1806 of yacc.c */ 5995 #line 79 5"parser.yy"5994 #line 794 "parser.yy" 5996 5995 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5997 5996 break; … … 6000 5999 6001 6000 /* Line 1806 of yacc.c */ 6002 #line 800"parser.yy"6001 #line 799 "parser.yy" 6003 6002 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 6004 6003 break; … … 6007 6006 6008 6007 /* Line 1806 of yacc.c */ 6009 #line 80 2"parser.yy"6008 #line 801 "parser.yy" 6010 6009 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 6011 6010 break; … … 6014 6013 6015 6014 /* Line 1806 of yacc.c */ 6016 #line 80 7"parser.yy"6015 #line 806 "parser.yy" 6017 6016 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 6018 6017 break; … … 6021 6020 6022 6021 /* Line 1806 of yacc.c */ 6023 #line 81 1"parser.yy"6022 #line 810 "parser.yy" 6024 6023 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 6025 6024 break; … … 6028 6027 6029 6028 /* Line 1806 of yacc.c */ 6030 #line 81 4"parser.yy"6029 #line 813 "parser.yy" 6031 6030 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 6032 6031 break; … … 6035 6034 6036 6035 /* Line 1806 of yacc.c */ 6037 #line 81 8"parser.yy"6036 #line 817 "parser.yy" 6038 6037 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 6039 6038 break; … … 6042 6041 6043 6042 /* Line 1806 of yacc.c */ 6044 #line 82 1"parser.yy"6043 #line 820 "parser.yy" 6045 6044 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 6046 6045 break; … … 6049 6048 6050 6049 /* Line 1806 of yacc.c */ 6051 #line 82 5"parser.yy"6050 #line 824 "parser.yy" 6052 6051 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 6053 6052 break; … … 6056 6055 6057 6056 /* Line 1806 of yacc.c */ 6058 #line 82 7"parser.yy"6057 #line 826 "parser.yy" 6059 6058 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 6060 6059 break; … … 6063 6062 6064 6063 /* Line 1806 of yacc.c */ 6065 #line 82 9"parser.yy"6064 #line 828 "parser.yy" 6066 6065 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 6067 6066 break; … … 6070 6069 6071 6070 /* Line 1806 of yacc.c */ 6072 #line 83 3"parser.yy"6071 #line 832 "parser.yy" 6073 6072 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 6074 6073 break; … … 6077 6076 6078 6077 /* Line 1806 of yacc.c */ 6079 #line 83 5"parser.yy"6078 #line 834 "parser.yy" 6080 6079 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); } 6081 6080 break; … … 6084 6083 6085 6084 /* Line 1806 of yacc.c */ 6086 #line 84 2"parser.yy"6085 #line 841 "parser.yy" 6087 6086 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6088 6087 break; … … 6091 6090 6092 6091 /* Line 1806 of yacc.c */ 6093 #line 84 4"parser.yy"6092 #line 843 "parser.yy" 6094 6093 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6095 6094 break; … … 6098 6097 6099 6098 /* Line 1806 of yacc.c */ 6100 #line 84 6"parser.yy"6099 #line 845 "parser.yy" 6101 6100 { 6102 6101 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6108 6107 6109 6108 /* Line 1806 of yacc.c */ 6110 #line 85 7"parser.yy"6109 #line 856 "parser.yy" 6111 6110 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6112 6111 break; … … 6115 6114 6116 6115 /* Line 1806 of yacc.c */ 6117 #line 85 9"parser.yy"6116 #line 858 "parser.yy" 6118 6117 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6119 6118 break; … … 6122 6121 6123 6122 /* Line 1806 of yacc.c */ 6124 #line 86 1"parser.yy"6123 #line 860 "parser.yy" 6125 6124 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6126 6125 break; … … 6129 6128 6130 6129 /* Line 1806 of yacc.c */ 6131 #line 86 3"parser.yy"6130 #line 862 "parser.yy" 6132 6131 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6133 6132 break; … … 6136 6135 6137 6136 /* Line 1806 of yacc.c */ 6138 #line 86 8"parser.yy"6137 #line 867 "parser.yy" 6139 6138 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6140 6139 break; … … 6143 6142 6144 6143 /* Line 1806 of yacc.c */ 6145 #line 8 70"parser.yy"6144 #line 869 "parser.yy" 6146 6145 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6147 6146 break; … … 6150 6149 6151 6150 /* Line 1806 of yacc.c */ 6152 #line 87 2"parser.yy"6151 #line 871 "parser.yy" 6153 6152 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6154 6153 break; … … 6157 6156 6158 6157 /* Line 1806 of yacc.c */ 6159 #line 87 4"parser.yy"6158 #line 873 "parser.yy" 6160 6159 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6161 6160 break; … … 6164 6163 6165 6164 /* Line 1806 of yacc.c */ 6166 #line 87 9"parser.yy"6165 #line 878 "parser.yy" 6167 6166 { 6168 6167 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6174 6173 6175 6174 /* Line 1806 of yacc.c */ 6176 #line 89 3"parser.yy"6175 #line 892 "parser.yy" 6177 6176 { 6178 6177 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6184 6183 6185 6184 /* Line 1806 of yacc.c */ 6186 #line 89 8"parser.yy"6185 #line 897 "parser.yy" 6187 6186 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6188 6187 break; … … 6191 6190 6192 6191 /* Line 1806 of yacc.c */ 6193 #line 900"parser.yy"6192 #line 899 "parser.yy" 6194 6193 { 6195 6194 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6201 6200 6202 6201 /* Line 1806 of yacc.c */ 6203 #line 90 9"parser.yy"6202 #line 908 "parser.yy" 6204 6203 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6205 6204 break; … … 6208 6207 6209 6208 /* Line 1806 of yacc.c */ 6210 #line 91 1"parser.yy"6209 #line 910 "parser.yy" 6211 6210 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6212 6211 break; … … 6215 6214 6216 6215 /* Line 1806 of yacc.c */ 6217 #line 91 3"parser.yy"6216 #line 912 "parser.yy" 6218 6217 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6219 6218 break; … … 6222 6221 6223 6222 /* Line 1806 of yacc.c */ 6224 #line 91 5"parser.yy"6223 #line 914 "parser.yy" 6225 6224 { (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) ); } 6226 6225 break; … … 6229 6228 6230 6229 /* Line 1806 of yacc.c */ 6231 #line 91 7"parser.yy"6230 #line 916 "parser.yy" 6232 6231 { (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) ); } 6233 6232 break; … … 6236 6235 6237 6236 /* Line 1806 of yacc.c */ 6238 #line 92 2"parser.yy"6237 #line 921 "parser.yy" 6239 6238 { (yyval.flag) = false; } 6240 6239 break; … … 6243 6242 6244 6243 /* Line 1806 of yacc.c */ 6245 #line 92 4"parser.yy"6244 #line 923 "parser.yy" 6246 6245 { (yyval.flag) = true; } 6247 6246 break; … … 6250 6249 6251 6250 /* Line 1806 of yacc.c */ 6252 #line 92 9"parser.yy"6251 #line 928 "parser.yy" 6253 6252 { (yyval.en) = 0; } 6254 6253 break; … … 6257 6256 6258 6257 /* Line 1806 of yacc.c */ 6259 #line 93 6"parser.yy"6258 #line 935 "parser.yy" 6260 6259 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6261 6260 break; … … 6264 6263 6265 6264 /* Line 1806 of yacc.c */ 6266 #line 94 1"parser.yy"6265 #line 940 "parser.yy" 6267 6266 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6268 6267 break; … … 6271 6270 6272 6271 /* Line 1806 of yacc.c */ 6273 #line 94 3"parser.yy"6272 #line 942 "parser.yy" 6274 6273 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6275 6274 break; … … 6278 6277 6279 6278 /* Line 1806 of yacc.c */ 6280 #line 94 8"parser.yy"6279 #line 947 "parser.yy" 6281 6280 { (yyval.constant) = 0; } 6282 6281 break; … … 6285 6284 6286 6285 /* Line 1806 of yacc.c */ 6287 #line 9 50"parser.yy"6286 #line 949 "parser.yy" 6288 6287 { (yyval.constant) = (yyvsp[(1) - (1)].constant); } 6289 6288 break; … … 6292 6291 6293 6292 /* Line 1806 of yacc.c */ 6294 #line 95 2"parser.yy"6293 #line 951 "parser.yy" 6295 6294 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6296 6295 break; … … 6299 6298 6300 6299 /* Line 1806 of yacc.c */ 6301 #line 95 7"parser.yy"6300 #line 956 "parser.yy" 6302 6301 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6303 6302 break; … … 6306 6305 6307 6306 /* Line 1806 of yacc.c */ 6308 #line 95 9"parser.yy"6307 #line 958 "parser.yy" 6309 6308 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6310 6309 break; … … 6313 6312 6314 6313 /* Line 1806 of yacc.c */ 6315 #line 96 6"parser.yy"6314 #line 965 "parser.yy" 6316 6315 { (yyval.decl) = 0; } 6317 6316 break; … … 6320 6319 6321 6320 /* Line 1806 of yacc.c */ 6322 #line 97 3"parser.yy"6321 #line 972 "parser.yy" 6323 6322 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6324 6323 break; … … 6327 6326 6328 6327 /* Line 1806 of yacc.c */ 6329 #line 97 8"parser.yy"6328 #line 977 "parser.yy" 6330 6329 { (yyval.decl) = 0; } 6331 6330 break; … … 6334 6333 6335 6334 /* Line 1806 of yacc.c */ 6336 #line 98 5"parser.yy"6335 #line 984 "parser.yy" 6337 6336 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6338 6337 break; 6339 6338 6340 6339 case 245: 6340 6341 /* Line 1806 of yacc.c */ 6342 #line 998 "parser.yy" 6343 {} 6344 break; 6345 6346 case 246: 6341 6347 6342 6348 /* Line 1806 of yacc.c */ … … 6345 6351 break; 6346 6352 6347 case 246:6348 6349 /* Line 1806 of yacc.c */6350 #line 1000 "parser.yy"6351 {}6352 break;6353 6354 6353 case 254: 6355 6354 6356 6355 /* Line 1806 of yacc.c */ 6357 #line 102 9"parser.yy"6356 #line 1028 "parser.yy" 6358 6357 { 6359 6358 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6360 (yyval.decl) = (yyvsp[(1) - (2)].decl) ->addInitializer( (yyvsp[(2) - (2)].in) );6359 (yyval.decl) = (yyvsp[(1) - (2)].decl); 6361 6360 } 6362 6361 break; … … 6365 6364 6366 6365 /* Line 1806 of yacc.c */ 6367 #line 103 6"parser.yy"6366 #line 1035 "parser.yy" 6368 6367 { 6369 6368 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6370 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ) ->addInitializer( (yyvsp[(3) - (3)].in) );;6369 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); 6371 6370 } 6372 6371 break; … … 6375 6374 6376 6375 /* Line 1806 of yacc.c */ 6377 #line 104 1"parser.yy"6376 #line 1040 "parser.yy" 6378 6377 { 6379 6378 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); 6380 (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) ->addInitializer( (yyvsp[(6) - (6)].in) ));6379 (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) ); 6381 6380 } 6382 6381 break; … … 6385 6384 6386 6385 /* Line 1806 of yacc.c */ 6387 #line 105 1"parser.yy"6386 #line 1050 "parser.yy" 6388 6387 { 6389 6388 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6395 6394 6396 6395 /* Line 1806 of yacc.c */ 6397 #line 105 6"parser.yy"6396 #line 1055 "parser.yy" 6398 6397 { 6399 6398 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6405 6404 6406 6405 /* Line 1806 of yacc.c */ 6407 #line 106 1"parser.yy"6406 #line 1060 "parser.yy" 6408 6407 { 6409 6408 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6415 6414 6416 6415 /* Line 1806 of yacc.c */ 6417 #line 106 9"parser.yy"6416 #line 1068 "parser.yy" 6418 6417 { 6419 6418 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6425 6424 6426 6425 /* Line 1806 of yacc.c */ 6427 #line 107 4"parser.yy"6426 #line 1073 "parser.yy" 6428 6427 { 6429 6428 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6435 6434 6436 6435 /* Line 1806 of yacc.c */ 6437 #line 107 9"parser.yy"6436 #line 1078 "parser.yy" 6438 6437 { 6439 6438 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6445 6444 6446 6445 /* Line 1806 of yacc.c */ 6447 #line 108 4"parser.yy"6446 #line 1083 "parser.yy" 6448 6447 { 6449 6448 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6455 6454 6456 6455 /* Line 1806 of yacc.c */ 6457 #line 108 9"parser.yy"6456 #line 1088 "parser.yy" 6458 6457 { 6459 6458 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6465 6464 6466 6465 /* Line 1806 of yacc.c */ 6467 #line 109 7"parser.yy"6466 #line 1096 "parser.yy" 6468 6467 { 6469 6468 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6474 6473 6475 6474 /* Line 1806 of yacc.c */ 6476 #line 11 20"parser.yy"6475 #line 1119 "parser.yy" 6477 6476 { 6478 6477 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6483 6482 6484 6483 /* Line 1806 of yacc.c */ 6485 #line 112 4"parser.yy"6484 #line 1123 "parser.yy" 6486 6485 { 6487 6486 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6492 6491 6493 6492 /* Line 1806 of yacc.c */ 6494 #line 113 1"parser.yy"6493 #line 1130 "parser.yy" 6495 6494 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6496 6495 break; … … 6499 6498 6500 6499 /* Line 1806 of yacc.c */ 6501 #line 113 5"parser.yy"6500 #line 1134 "parser.yy" 6502 6501 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6503 6502 break; … … 6506 6505 6507 6506 /* Line 1806 of yacc.c */ 6508 #line 11 40"parser.yy"6507 #line 1139 "parser.yy" 6509 6508 { 6510 6509 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6516 6515 6517 6516 /* Line 1806 of yacc.c */ 6518 #line 114 5"parser.yy"6517 #line 1144 "parser.yy" 6519 6518 { 6520 6519 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6526 6525 6527 6526 /* Line 1806 of yacc.c */ 6528 #line 11 50"parser.yy"6527 #line 1149 "parser.yy" 6529 6528 { 6530 6529 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6536 6535 6537 6536 /* Line 1806 of yacc.c */ 6538 #line 116 1"parser.yy"6537 #line 1160 "parser.yy" 6539 6538 { 6540 6539 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6546 6545 6547 6546 /* Line 1806 of yacc.c */ 6548 #line 116 6"parser.yy"6547 #line 1165 "parser.yy" 6549 6548 { 6550 6549 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6556 6555 6557 6556 /* Line 1806 of yacc.c */ 6558 #line 117 1"parser.yy"6557 #line 1170 "parser.yy" 6559 6558 { 6560 6559 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6566 6565 6567 6566 /* Line 1806 of yacc.c */ 6568 #line 117 6"parser.yy"6567 #line 1175 "parser.yy" 6569 6568 { 6570 6569 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6576 6575 6577 6576 /* Line 1806 of yacc.c */ 6578 #line 118 1"parser.yy"6577 #line 1180 "parser.yy" 6579 6578 { 6580 6579 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6586 6585 6587 6586 /* Line 1806 of yacc.c */ 6588 #line 11 90"parser.yy"6587 #line 1189 "parser.yy" 6589 6588 { 6590 6589 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6596 6595 6597 6596 /* Line 1806 of yacc.c */ 6598 #line 119 5"parser.yy"6597 #line 1194 "parser.yy" 6599 6598 { 6600 6599 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6606 6605 6607 6606 /* Line 1806 of yacc.c */ 6608 #line 121 2"parser.yy"6607 #line 1211 "parser.yy" 6609 6608 { 6610 6609 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6616 6615 6617 6616 /* Line 1806 of yacc.c */ 6618 #line 121 7"parser.yy"6617 #line 1216 "parser.yy" 6619 6618 { 6620 6619 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6626 6625 6627 6626 /* Line 1806 of yacc.c */ 6628 #line 123 9"parser.yy"6627 #line 1238 "parser.yy" 6629 6628 { (yyval.decl) = 0; } 6630 6629 break; … … 6633 6632 6634 6633 /* Line 1806 of yacc.c */ 6635 #line 125 1"parser.yy"6634 #line 1250 "parser.yy" 6636 6635 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6637 6636 break; … … 6640 6639 6641 6640 /* Line 1806 of yacc.c */ 6642 #line 126 2"parser.yy"6641 #line 1261 "parser.yy" 6643 6642 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6644 6643 break; … … 6647 6646 6648 6647 /* Line 1806 of yacc.c */ 6649 #line 126 4"parser.yy"6648 #line 1263 "parser.yy" 6650 6649 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6651 6650 break; … … 6654 6653 6655 6654 /* Line 1806 of yacc.c */ 6656 #line 126 6"parser.yy"6655 #line 1265 "parser.yy" 6657 6656 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6658 6657 break; … … 6661 6660 6662 6661 /* Line 1806 of yacc.c */ 6663 #line 126 8"parser.yy"6662 #line 1267 "parser.yy" 6664 6663 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6665 6664 break; … … 6668 6667 6669 6668 /* Line 1806 of yacc.c */ 6670 #line 12 70"parser.yy"6669 #line 1269 "parser.yy" 6671 6670 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6672 6671 break; … … 6675 6674 6676 6675 /* Line 1806 of yacc.c */ 6677 #line 127 2"parser.yy"6676 #line 1271 "parser.yy" 6678 6677 { 6679 6678 typedefTable.enterScope(); … … 6684 6683 6685 6684 /* Line 1806 of yacc.c */ 6686 #line 127 6"parser.yy"6685 #line 1275 "parser.yy" 6687 6686 { 6688 6687 typedefTable.leaveScope(); … … 6694 6693 6695 6694 /* Line 1806 of yacc.c */ 6696 #line 128 5"parser.yy"6695 #line 1284 "parser.yy" 6697 6696 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6698 6697 break; … … 6701 6700 6702 6701 /* Line 1806 of yacc.c */ 6703 #line 128 7"parser.yy"6702 #line 1286 "parser.yy" 6704 6703 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6705 6704 break; … … 6708 6707 6709 6708 /* Line 1806 of yacc.c */ 6710 #line 129 8"parser.yy"6709 #line 1297 "parser.yy" 6711 6710 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6712 6711 break; … … 6715 6714 6716 6715 /* Line 1806 of yacc.c */ 6717 #line 130 7"parser.yy"6716 #line 1306 "parser.yy" 6718 6717 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6719 6718 break; … … 6722 6721 6723 6722 /* Line 1806 of yacc.c */ 6724 #line 130 9"parser.yy"6723 #line 1308 "parser.yy" 6725 6724 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6726 6725 break; … … 6729 6728 6730 6729 /* Line 1806 of yacc.c */ 6731 #line 131 1"parser.yy"6730 #line 1310 "parser.yy" 6732 6731 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6733 6732 break; … … 6736 6735 6737 6736 /* Line 1806 of yacc.c */ 6738 #line 131 3"parser.yy"6737 #line 1312 "parser.yy" 6739 6738 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6740 6739 break; … … 6743 6742 6744 6743 /* Line 1806 of yacc.c */ 6745 #line 131 5"parser.yy"6744 #line 1314 "parser.yy" 6746 6745 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6747 6746 break; … … 6750 6749 6751 6750 /* Line 1806 of yacc.c */ 6752 #line 131 7"parser.yy"6751 #line 1316 "parser.yy" 6753 6752 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6754 6753 break; … … 6757 6756 6758 6757 /* Line 1806 of yacc.c */ 6759 #line 131 9"parser.yy"6758 #line 1318 "parser.yy" 6760 6759 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6761 6760 break; … … 6764 6763 6765 6764 /* Line 1806 of yacc.c */ 6766 #line 132 1"parser.yy"6765 #line 1320 "parser.yy" 6767 6766 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6768 6767 break; … … 6771 6770 6772 6771 /* Line 1806 of yacc.c */ 6773 #line 132 6"parser.yy"6772 #line 1325 "parser.yy" 6774 6773 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6775 6774 break; … … 6778 6777 6779 6778 /* Line 1806 of yacc.c */ 6780 #line 132 8"parser.yy"6779 #line 1327 "parser.yy" 6781 6780 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6782 6781 break; … … 6785 6784 6786 6785 /* Line 1806 of yacc.c */ 6787 #line 13 30"parser.yy"6786 #line 1329 "parser.yy" 6788 6787 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6789 6788 break; … … 6792 6791 6793 6792 /* Line 1806 of yacc.c */ 6794 #line 133 2"parser.yy"6793 #line 1331 "parser.yy" 6795 6794 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6796 6795 break; … … 6799 6798 6800 6799 /* Line 1806 of yacc.c */ 6801 #line 133 4"parser.yy"6800 #line 1333 "parser.yy" 6802 6801 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6803 6802 break; … … 6806 6805 6807 6806 /* Line 1806 of yacc.c */ 6808 #line 133 6"parser.yy"6807 #line 1335 "parser.yy" 6809 6808 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6810 6809 break; … … 6813 6812 6814 6813 /* Line 1806 of yacc.c */ 6815 #line 133 8"parser.yy"6814 #line 1337 "parser.yy" 6816 6815 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6817 6816 break; … … 6820 6819 6821 6820 /* Line 1806 of yacc.c */ 6822 #line 13 40"parser.yy"6821 #line 1339 "parser.yy" 6823 6822 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6824 6823 break; … … 6827 6826 6828 6827 /* Line 1806 of yacc.c */ 6829 #line 134 2"parser.yy"6828 #line 1341 "parser.yy" 6830 6829 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6831 6830 break; … … 6834 6833 6835 6834 /* Line 1806 of yacc.c */ 6836 #line 134 4"parser.yy"6835 #line 1343 "parser.yy" 6837 6836 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6838 6837 break; … … 6841 6840 6842 6841 /* Line 1806 of yacc.c */ 6843 #line 134 6"parser.yy"6842 #line 1345 "parser.yy" 6844 6843 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6845 6844 break; … … 6848 6847 6849 6848 /* Line 1806 of yacc.c */ 6850 #line 134 8"parser.yy"6849 #line 1347 "parser.yy" 6851 6850 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6852 6851 break; … … 6855 6854 6856 6855 /* Line 1806 of yacc.c */ 6857 #line 13 50"parser.yy"6856 #line 1349 "parser.yy" 6858 6857 { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 6859 6858 break; … … 6862 6861 6863 6862 /* Line 1806 of yacc.c */ 6864 #line 135 7"parser.yy"6863 #line 1356 "parser.yy" 6865 6864 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6866 6865 break; … … 6869 6868 6870 6869 /* Line 1806 of yacc.c */ 6871 #line 135 9"parser.yy"6870 #line 1358 "parser.yy" 6872 6871 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6873 6872 break; … … 6876 6875 6877 6876 /* Line 1806 of yacc.c */ 6878 #line 136 1"parser.yy"6877 #line 1360 "parser.yy" 6879 6878 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6880 6879 break; … … 6883 6882 6884 6883 /* Line 1806 of yacc.c */ 6885 #line 136 3"parser.yy"6884 #line 1362 "parser.yy" 6886 6885 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6887 6886 break; … … 6890 6889 6891 6890 /* Line 1806 of yacc.c */ 6892 #line 136 9"parser.yy"6891 #line 1368 "parser.yy" 6893 6892 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6894 6893 break; … … 6897 6896 6898 6897 /* Line 1806 of yacc.c */ 6899 #line 137 6"parser.yy"6898 #line 1375 "parser.yy" 6900 6899 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6901 6900 break; … … 6904 6903 6905 6904 /* Line 1806 of yacc.c */ 6906 #line 137 8"parser.yy"6905 #line 1377 "parser.yy" 6907 6906 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6908 6907 break; … … 6911 6910 6912 6911 /* Line 1806 of yacc.c */ 6913 #line 13 80"parser.yy"6912 #line 1379 "parser.yy" 6914 6913 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6915 6914 break; … … 6918 6917 6919 6918 /* Line 1806 of yacc.c */ 6920 #line 138 5"parser.yy"6919 #line 1384 "parser.yy" 6921 6920 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6922 6921 break; … … 6925 6924 6926 6925 /* Line 1806 of yacc.c */ 6927 #line 138 7"parser.yy"6926 #line 1386 "parser.yy" 6928 6927 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6929 6928 break; … … 6932 6931 6933 6932 /* Line 1806 of yacc.c */ 6934 #line 138 9"parser.yy"6933 #line 1388 "parser.yy" 6935 6934 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6936 6935 break; … … 6939 6938 6940 6939 /* Line 1806 of yacc.c */ 6941 #line 139 1"parser.yy"6940 #line 1390 "parser.yy" 6942 6941 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6943 6942 break; … … 6946 6945 6947 6946 /* Line 1806 of yacc.c */ 6948 #line 139 7"parser.yy"6947 #line 1396 "parser.yy" 6949 6948 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6950 6949 break; … … 6953 6952 6954 6953 /* Line 1806 of yacc.c */ 6955 #line 139 9"parser.yy"6954 #line 1398 "parser.yy" 6956 6955 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6957 6956 break; … … 6960 6959 6961 6960 /* Line 1806 of yacc.c */ 6962 #line 140 1"parser.yy"6961 #line 1400 "parser.yy" 6963 6962 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6964 6963 break; … … 6967 6966 6968 6967 /* Line 1806 of yacc.c */ 6969 #line 140 7"parser.yy"6968 #line 1406 "parser.yy" 6970 6969 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6971 6970 break; … … 6974 6973 6975 6974 /* Line 1806 of yacc.c */ 6976 #line 140 9"parser.yy"6975 #line 1408 "parser.yy" 6977 6976 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6978 6977 break; … … 6981 6980 6982 6981 /* Line 1806 of yacc.c */ 6983 #line 141 5"parser.yy"6982 #line 1414 "parser.yy" 6984 6983 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6985 6984 break; … … 6988 6987 6989 6988 /* Line 1806 of yacc.c */ 6990 #line 141 7"parser.yy"6989 #line 1416 "parser.yy" 6991 6990 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6992 6991 break; … … 6995 6994 6996 6995 /* Line 1806 of yacc.c */ 6997 #line 141 9"parser.yy"6996 #line 1418 "parser.yy" 6998 6997 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6999 6998 break; … … 7002 7001 7003 7002 /* Line 1806 of yacc.c */ 7004 #line 142 4"parser.yy"7003 #line 1423 "parser.yy" 7005 7004 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 7006 7005 break; … … 7009 7008 7010 7009 /* Line 1806 of yacc.c */ 7011 #line 142 6"parser.yy"7010 #line 1425 "parser.yy" 7012 7011 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7013 7012 break; … … 7016 7015 7017 7016 /* Line 1806 of yacc.c */ 7018 #line 142 8"parser.yy"7017 #line 1427 "parser.yy" 7019 7018 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7020 7019 break; … … 7023 7022 7024 7023 /* Line 1806 of yacc.c */ 7025 #line 143 8"parser.yy"7024 #line 1437 "parser.yy" 7026 7025 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 7027 7026 break; … … 7030 7029 7031 7030 /* Line 1806 of yacc.c */ 7032 #line 14 40"parser.yy"7031 #line 1439 "parser.yy" 7033 7032 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 7034 7033 break; … … 7037 7036 7038 7037 /* Line 1806 of yacc.c */ 7039 #line 144 2"parser.yy"7038 #line 1441 "parser.yy" 7040 7039 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 7041 7040 break; … … 7044 7043 7045 7044 /* Line 1806 of yacc.c */ 7046 #line 144 4"parser.yy"7045 #line 1443 "parser.yy" 7047 7046 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 7048 7047 break; … … 7051 7050 7052 7051 /* Line 1806 of yacc.c */ 7053 #line 144 6"parser.yy"7052 #line 1445 "parser.yy" 7054 7053 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7055 7054 break; … … 7058 7057 7059 7058 /* Line 1806 of yacc.c */ 7060 #line 145 1"parser.yy"7059 #line 1450 "parser.yy" 7061 7060 { (yyval.aggKey) = DeclarationNode::Struct; } 7062 7061 break; … … 7065 7064 7066 7065 /* Line 1806 of yacc.c */ 7067 #line 145 3"parser.yy"7066 #line 1452 "parser.yy" 7068 7067 { (yyval.aggKey) = DeclarationNode::Union; } 7069 7068 break; … … 7072 7071 7073 7072 /* Line 1806 of yacc.c */ 7074 #line 145 8"parser.yy"7073 #line 1457 "parser.yy" 7075 7074 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 7076 7075 break; … … 7079 7078 7080 7079 /* Line 1806 of yacc.c */ 7081 #line 14 60"parser.yy"7080 #line 1459 "parser.yy" 7082 7081 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7083 7082 break; … … 7086 7085 7087 7086 /* Line 1806 of yacc.c */ 7088 #line 146 6"parser.yy"7087 #line 1465 "parser.yy" 7089 7088 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7090 7089 break; … … 7093 7092 7094 7093 /* Line 1806 of yacc.c */ 7095 #line 146 9"parser.yy"7094 #line 1468 "parser.yy" 7096 7095 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7097 7096 break; … … 7100 7099 7101 7100 /* Line 1806 of yacc.c */ 7102 #line 147 5"parser.yy"7101 #line 1474 "parser.yy" 7103 7102 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 7104 7103 break; … … 7107 7106 7108 7107 /* Line 1806 of yacc.c */ 7109 #line 147 7"parser.yy"7108 #line 1476 "parser.yy" 7110 7109 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7111 7110 break; … … 7114 7113 7115 7114 /* Line 1806 of yacc.c */ 7116 #line 147 9"parser.yy"7115 #line 1478 "parser.yy" 7117 7116 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7118 7117 break; … … 7121 7120 7122 7121 /* Line 1806 of yacc.c */ 7123 #line 148 4"parser.yy"7122 #line 1483 "parser.yy" 7124 7123 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7125 7124 break; … … 7128 7127 7129 7128 /* Line 1806 of yacc.c */ 7130 #line 148 6"parser.yy"7129 #line 1485 "parser.yy" 7131 7130 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7132 7131 break; … … 7135 7134 7136 7135 /* Line 1806 of yacc.c */ 7137 #line 149 1"parser.yy"7136 #line 1490 "parser.yy" 7138 7137 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7139 7138 break; … … 7142 7141 7143 7142 /* Line 1806 of yacc.c */ 7144 #line 149 3"parser.yy"7143 #line 1492 "parser.yy" 7145 7144 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7146 7145 break; … … 7149 7148 7150 7149 /* Line 1806 of yacc.c */ 7151 #line 149 6"parser.yy"7150 #line 1495 "parser.yy" 7152 7151 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7153 7152 break; … … 7156 7155 7157 7156 /* Line 1806 of yacc.c */ 7158 #line 149 9"parser.yy"7157 #line 1498 "parser.yy" 7159 7158 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7160 7159 break; … … 7163 7162 7164 7163 /* Line 1806 of yacc.c */ 7165 #line 150 5"parser.yy"7164 #line 1504 "parser.yy" 7166 7165 { (yyval.en) = 0; } 7167 7166 break; … … 7170 7169 7171 7170 /* Line 1806 of yacc.c */ 7172 #line 150 7"parser.yy"7171 #line 1506 "parser.yy" 7173 7172 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7174 7173 break; … … 7177 7176 7178 7177 /* Line 1806 of yacc.c */ 7179 #line 151 2"parser.yy"7178 #line 1511 "parser.yy" 7180 7179 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7181 7180 break; … … 7184 7183 7185 7184 /* Line 1806 of yacc.c */ 7186 #line 152 1"parser.yy"7185 #line 1520 "parser.yy" 7187 7186 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7188 7187 break; … … 7191 7190 7192 7191 /* Line 1806 of yacc.c */ 7193 #line 152 3"parser.yy"7192 #line 1522 "parser.yy" 7194 7193 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7195 7194 break; … … 7198 7197 7199 7198 /* Line 1806 of yacc.c */ 7200 #line 152 5"parser.yy"7199 #line 1524 "parser.yy" 7201 7200 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7202 7201 break; … … 7205 7204 7206 7205 /* Line 1806 of yacc.c */ 7207 #line 15 30"parser.yy"7206 #line 1529 "parser.yy" 7208 7207 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7209 7208 break; … … 7212 7211 7213 7212 /* Line 1806 of yacc.c */ 7214 #line 153 2"parser.yy"7213 #line 1531 "parser.yy" 7215 7214 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7216 7215 break; … … 7219 7218 7220 7219 /* Line 1806 of yacc.c */ 7221 #line 153 7"parser.yy"7220 #line 1536 "parser.yy" 7222 7221 { (yyval.en) = 0; } 7223 7222 break; … … 7226 7225 7227 7226 /* Line 1806 of yacc.c */ 7228 #line 153 9"parser.yy"7227 #line 1538 "parser.yy" 7229 7228 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7230 7229 break; … … 7233 7232 7234 7233 /* Line 1806 of yacc.c */ 7235 #line 154 6"parser.yy"7234 #line 1545 "parser.yy" 7236 7235 { (yyval.decl) = 0; } 7237 7236 break; … … 7240 7239 7241 7240 /* Line 1806 of yacc.c */ 7242 #line 155 4"parser.yy"7241 #line 1553 "parser.yy" 7243 7242 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7244 7243 break; … … 7247 7246 7248 7247 /* Line 1806 of yacc.c */ 7249 #line 155 6"parser.yy"7248 #line 1555 "parser.yy" 7250 7249 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7251 7250 break; … … 7254 7253 7255 7254 /* Line 1806 of yacc.c */ 7256 #line 155 8"parser.yy"7255 #line 1557 "parser.yy" 7257 7256 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7258 7257 break; … … 7261 7260 7262 7261 /* Line 1806 of yacc.c */ 7263 #line 156 6"parser.yy"7262 #line 1565 "parser.yy" 7264 7263 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7265 7264 break; … … 7268 7267 7269 7268 /* Line 1806 of yacc.c */ 7270 #line 156 8"parser.yy"7269 #line 1567 "parser.yy" 7271 7270 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7272 7271 break; … … 7275 7274 7276 7275 /* Line 1806 of yacc.c */ 7277 #line 15 70"parser.yy"7276 #line 1569 "parser.yy" 7278 7277 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7279 7278 break; … … 7282 7281 7283 7282 /* Line 1806 of yacc.c */ 7284 #line 157 6"parser.yy"7283 #line 1575 "parser.yy" 7285 7284 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7286 7285 break; … … 7289 7288 7290 7289 /* Line 1806 of yacc.c */ 7291 #line 158 1"parser.yy"7290 #line 1580 "parser.yy" 7292 7291 { (yyval.decl) = 0; } 7293 7292 break; … … 7296 7295 7297 7296 /* Line 1806 of yacc.c */ 7298 #line 158 8"parser.yy"7297 #line 1587 "parser.yy" 7299 7298 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7300 7299 break; … … 7303 7302 7304 7303 /* Line 1806 of yacc.c */ 7305 #line 159 5"parser.yy"7304 #line 1594 "parser.yy" 7306 7305 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7307 7306 break; … … 7310 7309 7311 7310 /* Line 1806 of yacc.c */ 7312 #line 159 7"parser.yy"7311 #line 1596 "parser.yy" 7313 7312 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7314 7313 break; … … 7317 7316 7318 7317 /* Line 1806 of yacc.c */ 7319 #line 160 6"parser.yy"7318 #line 1605 "parser.yy" 7320 7319 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7321 7320 break; … … 7324 7323 7325 7324 /* Line 1806 of yacc.c */ 7326 #line 160 9"parser.yy"7325 #line 1608 "parser.yy" 7327 7326 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7328 7327 break; … … 7331 7330 7332 7331 /* Line 1806 of yacc.c */ 7333 #line 161 1"parser.yy"7332 #line 1610 "parser.yy" 7334 7333 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7335 7334 break; … … 7338 7337 7339 7338 /* Line 1806 of yacc.c */ 7340 #line 162 1"parser.yy"7339 #line 1620 "parser.yy" 7341 7340 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7342 7341 break; … … 7345 7344 7346 7345 /* Line 1806 of yacc.c */ 7347 #line 162 7"parser.yy"7346 #line 1626 "parser.yy" 7348 7347 { 7349 7348 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7355 7354 7356 7355 /* Line 1806 of yacc.c */ 7357 #line 163 2"parser.yy"7356 #line 1631 "parser.yy" 7358 7357 { 7359 7358 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7365 7364 7366 7365 /* Line 1806 of yacc.c */ 7367 #line 164 1"parser.yy"7366 #line 1640 "parser.yy" 7368 7367 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7369 7368 break; … … 7372 7371 7373 7372 /* Line 1806 of yacc.c */ 7374 #line 16 50"parser.yy"7373 #line 1649 "parser.yy" 7375 7374 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7376 7375 break; … … 7379 7378 7380 7379 /* Line 1806 of yacc.c */ 7381 #line 165 2"parser.yy"7380 #line 1651 "parser.yy" 7382 7381 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7383 7382 break; … … 7386 7385 7387 7386 /* Line 1806 of yacc.c */ 7388 #line 167 7"parser.yy"7387 #line 1676 "parser.yy" 7389 7388 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7390 7389 break; … … 7393 7392 7394 7393 /* Line 1806 of yacc.c */ 7395 #line 168 5"parser.yy"7394 #line 1684 "parser.yy" 7396 7395 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7397 7396 break; … … 7400 7399 7401 7400 /* Line 1806 of yacc.c */ 7402 #line 16 90"parser.yy"7401 #line 1689 "parser.yy" 7403 7402 { (yyval.in) = 0; } 7404 7403 break; … … 7407 7406 7408 7407 /* Line 1806 of yacc.c */ 7409 #line 169 2"parser.yy"7408 #line 1691 "parser.yy" 7410 7409 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7411 7410 break; … … 7414 7413 7415 7414 /* Line 1806 of yacc.c */ 7416 #line 169 4"parser.yy"7415 #line 1693 "parser.yy" 7417 7416 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7418 7417 break; … … 7421 7420 7422 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 */ 7423 7429 #line 1698 "parser.yy" 7424 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }7425 break;7426 7427 case 457:7428 7429 /* Line 1806 of yacc.c */7430 #line 1699 "parser.yy"7431 7430 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7432 7431 break; … … 7435 7434 7436 7435 /* Line 1806 of yacc.c */ 7437 #line 170 4"parser.yy"7436 #line 1703 "parser.yy" 7438 7437 { (yyval.in) = 0; } 7439 7438 break; … … 7442 7441 7443 7442 /* Line 1806 of yacc.c */ 7443 #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 */ 7444 7450 #line 1706 "parser.yy" 7445 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }7446 break;7447 7448 case 461:7449 7450 /* Line 1806 of yacc.c */7451 #line 1707 "parser.yy"7452 7451 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7453 7452 break; … … 7456 7455 7457 7456 /* Line 1806 of yacc.c */ 7458 #line 170 9"parser.yy"7457 #line 1708 "parser.yy" 7459 7458 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7460 7459 break; … … 7463 7462 7464 7463 /* Line 1806 of yacc.c */ 7465 #line 172 5"parser.yy"7464 #line 1724 "parser.yy" 7466 7465 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7467 7466 break; … … 7470 7469 7471 7470 /* Line 1806 of yacc.c */ 7472 #line 173 1"parser.yy"7471 #line 1730 "parser.yy" 7473 7472 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7474 7473 break; … … 7477 7476 7478 7477 /* Line 1806 of yacc.c */ 7479 #line 173 9"parser.yy"7478 #line 1738 "parser.yy" 7480 7479 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7481 7480 break; … … 7484 7483 7485 7484 /* Line 1806 of yacc.c */ 7486 #line 174 1"parser.yy"7485 #line 1740 "parser.yy" 7487 7486 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7488 7487 break; … … 7491 7490 7492 7491 /* Line 1806 of yacc.c */ 7493 #line 174 4"parser.yy"7492 #line 1743 "parser.yy" 7494 7493 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7495 7494 break; … … 7498 7497 7499 7498 /* Line 1806 of yacc.c */ 7500 #line 174 6"parser.yy"7499 #line 1745 "parser.yy" 7501 7500 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7502 7501 break; … … 7505 7504 7506 7505 /* Line 1806 of yacc.c */ 7507 #line 174 8"parser.yy"7506 #line 1747 "parser.yy" 7508 7507 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7509 7508 break; … … 7512 7511 7513 7512 /* Line 1806 of yacc.c */ 7514 #line 17 50"parser.yy"7513 #line 1749 "parser.yy" 7515 7514 { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); } 7516 7515 break; … … 7519 7518 7520 7519 /* Line 1806 of yacc.c */ 7521 #line 177 4"parser.yy"7520 #line 1773 "parser.yy" 7522 7521 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7523 7522 break; … … 7526 7525 7527 7526 /* Line 1806 of yacc.c */ 7528 #line 177 6"parser.yy"7527 #line 1775 "parser.yy" 7529 7528 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7530 7529 break; … … 7533 7532 7534 7533 /* Line 1806 of yacc.c */ 7535 #line 177 8"parser.yy"7534 #line 1777 "parser.yy" 7536 7535 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7537 7536 break; … … 7540 7539 7541 7540 /* Line 1806 of yacc.c */ 7542 #line 178 4"parser.yy"7541 #line 1783 "parser.yy" 7543 7542 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7544 7543 break; … … 7547 7546 7548 7547 /* Line 1806 of yacc.c */ 7549 #line 178 6"parser.yy"7548 #line 1785 "parser.yy" 7550 7549 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7551 7550 break; … … 7554 7553 7555 7554 /* Line 1806 of yacc.c */ 7556 #line 179 1"parser.yy"7555 #line 1790 "parser.yy" 7557 7556 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7558 7557 break; … … 7561 7560 7562 7561 /* Line 1806 of yacc.c */ 7563 #line 179 7"parser.yy"7562 #line 1796 "parser.yy" 7564 7563 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7565 7564 break; … … 7568 7567 7569 7568 /* Line 1806 of yacc.c */ 7570 #line 180 2"parser.yy"7569 #line 1801 "parser.yy" 7571 7570 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7572 7571 break; … … 7575 7574 7576 7575 /* Line 1806 of yacc.c */ 7577 #line 180 4"parser.yy"7576 #line 1803 "parser.yy" 7578 7577 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7579 7578 break; … … 7582 7581 7583 7582 /* Line 1806 of yacc.c */ 7584 #line 18 10"parser.yy"7583 #line 1809 "parser.yy" 7585 7584 { (yyval.tclass) = DeclarationNode::Type; } 7586 7585 break; … … 7589 7588 7590 7589 /* Line 1806 of yacc.c */ 7591 #line 181 2"parser.yy"7590 #line 1811 "parser.yy" 7592 7591 { (yyval.tclass) = DeclarationNode::Ftype; } 7593 7592 break; … … 7596 7595 7597 7596 /* Line 1806 of yacc.c */ 7598 #line 181 4"parser.yy"7597 #line 1813 "parser.yy" 7599 7598 { (yyval.tclass) = DeclarationNode::Dtype; } 7600 7599 break; … … 7603 7602 7604 7603 /* Line 1806 of yacc.c */ 7605 #line 181 9"parser.yy"7604 #line 1818 "parser.yy" 7606 7605 { (yyval.decl) = 0; } 7607 7606 break; … … 7610 7609 7611 7610 /* Line 1806 of yacc.c */ 7612 #line 182 1"parser.yy"7611 #line 1820 "parser.yy" 7613 7612 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7614 7613 break; … … 7617 7616 7618 7617 /* Line 1806 of yacc.c */ 7619 #line 182 6"parser.yy"7618 #line 1825 "parser.yy" 7620 7619 { 7621 7620 typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) ); … … 7627 7626 7628 7627 /* Line 1806 of yacc.c */ 7629 #line 183 1"parser.yy"7628 #line 1830 "parser.yy" 7630 7629 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7631 7630 break; … … 7634 7633 7635 7634 /* Line 1806 of yacc.c */ 7636 #line 183 3"parser.yy"7635 #line 1832 "parser.yy" 7637 7636 { (yyval.decl) = 0; } 7638 7637 break; … … 7641 7640 7642 7641 /* Line 1806 of yacc.c */ 7643 #line 183 8"parser.yy"7642 #line 1837 "parser.yy" 7644 7643 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7645 7644 break; … … 7648 7647 7649 7648 /* Line 1806 of yacc.c */ 7650 #line 184 1"parser.yy"7649 #line 1840 "parser.yy" 7651 7650 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7652 7651 break; … … 7655 7654 7656 7655 /* Line 1806 of yacc.c */ 7657 #line 184 3"parser.yy"7656 #line 1842 "parser.yy" 7658 7657 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7659 7658 break; … … 7662 7661 7663 7662 /* Line 1806 of yacc.c */ 7664 #line 184 8"parser.yy"7663 #line 1847 "parser.yy" 7665 7664 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7666 7665 break; … … 7669 7668 7670 7669 /* Line 1806 of yacc.c */ 7671 #line 18 50"parser.yy"7670 #line 1849 "parser.yy" 7672 7671 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7673 7672 break; … … 7676 7675 7677 7676 /* Line 1806 of yacc.c */ 7678 #line 185 2"parser.yy"7677 #line 1851 "parser.yy" 7679 7678 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7680 7679 break; … … 7683 7682 7684 7683 /* Line 1806 of yacc.c */ 7685 #line 185 7"parser.yy"7684 #line 1856 "parser.yy" 7686 7685 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7687 7686 break; … … 7690 7689 7691 7690 /* Line 1806 of yacc.c */ 7692 #line 185 9"parser.yy"7691 #line 1858 "parser.yy" 7693 7692 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7694 7693 break; … … 7697 7696 7698 7697 /* Line 1806 of yacc.c */ 7699 #line 186 4"parser.yy"7698 #line 1863 "parser.yy" 7700 7699 { 7701 7700 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7707 7706 7708 7707 /* Line 1806 of yacc.c */ 7709 #line 186 9"parser.yy"7708 #line 1868 "parser.yy" 7710 7709 { 7711 7710 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7717 7716 7718 7717 /* Line 1806 of yacc.c */ 7719 #line 187 7"parser.yy"7718 #line 1876 "parser.yy" 7720 7719 { 7721 7720 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7727 7726 7728 7727 /* Line 1806 of yacc.c */ 7729 #line 188 2"parser.yy"7728 #line 1881 "parser.yy" 7730 7729 { 7731 7730 typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) ); … … 7737 7736 7738 7737 /* Line 1806 of yacc.c */ 7739 #line 188 7"parser.yy"7738 #line 1886 "parser.yy" 7740 7739 { 7741 7740 typedefTable.leaveTrait(); … … 7748 7747 7749 7748 /* Line 1806 of yacc.c */ 7750 #line 189 7"parser.yy"7749 #line 1896 "parser.yy" 7751 7750 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7752 7751 break; … … 7755 7754 7756 7755 /* Line 1806 of yacc.c */ 7757 #line 190 7"parser.yy"7756 #line 1906 "parser.yy" 7758 7757 { 7759 7758 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7765 7764 7766 7765 /* Line 1806 of yacc.c */ 7767 #line 191 2"parser.yy"7766 #line 1911 "parser.yy" 7768 7767 { 7769 7768 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7775 7774 7776 7775 /* Line 1806 of yacc.c */ 7777 #line 191 7"parser.yy"7776 #line 1916 "parser.yy" 7778 7777 { 7779 7778 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7785 7784 7786 7785 /* Line 1806 of yacc.c */ 7787 #line 192 5"parser.yy"7786 #line 1924 "parser.yy" 7788 7787 { 7789 7788 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7795 7794 7796 7795 /* Line 1806 of yacc.c */ 7797 #line 19 30"parser.yy"7796 #line 1929 "parser.yy" 7798 7797 { 7799 7798 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7805 7804 7806 7805 /* Line 1806 of yacc.c */ 7807 #line 19 40"parser.yy"7806 #line 1939 "parser.yy" 7808 7807 {} 7809 7808 break; … … 7812 7811 7813 7812 /* Line 1806 of yacc.c */ 7814 #line 194 2"parser.yy"7813 #line 1941 "parser.yy" 7815 7814 { 7816 7815 if ( theTree ) { … … 7825 7824 7826 7825 /* Line 1806 of yacc.c */ 7827 #line 195 4"parser.yy"7826 #line 1953 "parser.yy" 7828 7827 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7829 7828 break; … … 7832 7831 7833 7832 /* Line 1806 of yacc.c */ 7834 #line 195 9"parser.yy"7833 #line 1958 "parser.yy" 7835 7834 { (yyval.decl) = 0; } 7836 7835 break; … … 7839 7838 7840 7839 /* Line 1806 of yacc.c */ 7841 #line 196 7"parser.yy"7840 #line 1966 "parser.yy" 7842 7841 {} 7843 7842 break; … … 7846 7845 7847 7846 /* Line 1806 of yacc.c */ 7848 #line 196 9"parser.yy"7847 #line 1968 "parser.yy" 7849 7848 { 7850 7849 linkageStack.push( linkage ); … … 7856 7855 7857 7856 /* Line 1806 of yacc.c */ 7858 #line 197 4"parser.yy"7857 #line 1973 "parser.yy" 7859 7858 { 7860 7859 linkage = linkageStack.top(); … … 7867 7866 7868 7867 /* Line 1806 of yacc.c */ 7869 #line 19 80"parser.yy"7868 #line 1979 "parser.yy" 7870 7869 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7871 7870 break; … … 7874 7873 7875 7874 /* Line 1806 of yacc.c */ 7876 #line 19 90"parser.yy"7875 #line 1989 "parser.yy" 7877 7876 { 7878 7877 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7885 7884 7886 7885 /* Line 1806 of yacc.c */ 7887 #line 199 6"parser.yy"7886 #line 1995 "parser.yy" 7888 7887 { 7889 7888 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7896 7895 7897 7896 /* Line 1806 of yacc.c */ 7898 #line 200 5"parser.yy"7897 #line 2004 "parser.yy" 7899 7898 { 7900 7899 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7907 7906 7908 7907 /* Line 1806 of yacc.c */ 7909 #line 201 1"parser.yy"7908 #line 2010 "parser.yy" 7910 7909 { 7911 7910 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7918 7917 7919 7918 /* Line 1806 of yacc.c */ 7920 #line 201 7"parser.yy"7919 #line 2016 "parser.yy" 7921 7920 { 7922 7921 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7929 7928 7930 7929 /* Line 1806 of yacc.c */ 7931 #line 202 3"parser.yy"7930 #line 2022 "parser.yy" 7932 7931 { 7933 7932 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7940 7939 7941 7940 /* Line 1806 of yacc.c */ 7942 #line 202 9"parser.yy"7941 #line 2028 "parser.yy" 7943 7942 { 7944 7943 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7951 7950 7952 7951 /* Line 1806 of yacc.c */ 7953 #line 203 7"parser.yy"7952 #line 2036 "parser.yy" 7954 7953 { 7955 7954 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7962 7961 7963 7962 /* Line 1806 of yacc.c */ 7964 #line 204 3"parser.yy"7963 #line 2042 "parser.yy" 7965 7964 { 7966 7965 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7973 7972 7974 7973 /* Line 1806 of yacc.c */ 7975 #line 205 1"parser.yy"7974 #line 2050 "parser.yy" 7976 7975 { 7977 7976 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7984 7983 7985 7984 /* Line 1806 of yacc.c */ 7986 #line 205 7"parser.yy"7985 #line 2056 "parser.yy" 7987 7986 { 7988 7987 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7995 7994 7996 7995 /* Line 1806 of yacc.c */ 7997 #line 207 2"parser.yy"7996 #line 2071 "parser.yy" 7998 7997 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7999 7998 break; … … 8002 8001 8003 8002 /* Line 1806 of yacc.c */ 8004 #line 208 2"parser.yy"8003 #line 2081 "parser.yy" 8005 8004 { (yyval.decl) = 0; } 8006 8005 break; … … 8009 8008 8010 8009 /* Line 1806 of yacc.c */ 8011 #line 208 9"parser.yy"8010 #line 2088 "parser.yy" 8012 8011 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8013 8012 break; … … 8016 8015 8017 8016 /* Line 1806 of yacc.c */ 8018 #line 209 5"parser.yy"8017 #line 2094 "parser.yy" 8019 8018 { (yyval.decl) = 0; } 8020 8019 break; 8021 8020 8022 8021 case 557: 8022 8023 /* Line 1806 of yacc.c */ 8024 #line 2109 "parser.yy" 8025 {} 8026 break; 8027 8028 case 558: 8023 8029 8024 8030 /* Line 1806 of yacc.c */ … … 8027 8033 break; 8028 8034 8029 case 55 8:8035 case 559: 8030 8036 8031 8037 /* Line 1806 of yacc.c */ … … 8034 8040 break; 8035 8041 8036 case 5 59:8042 case 560: 8037 8043 8038 8044 /* Line 1806 of yacc.c */ … … 8041 8047 break; 8042 8048 8043 case 560:8044 8045 /* Line 1806 of yacc.c */8046 #line 2113 "parser.yy"8047 {}8048 break;8049 8050 8049 case 561: 8051 8050 8052 8051 /* Line 1806 of yacc.c */ 8053 #line 214 8"parser.yy"8052 #line 2147 "parser.yy" 8054 8053 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8055 8054 break; … … 8058 8057 8059 8058 /* Line 1806 of yacc.c */ 8060 #line 215 1"parser.yy"8059 #line 2150 "parser.yy" 8061 8060 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8062 8061 break; … … 8065 8064 8066 8065 /* Line 1806 of yacc.c */ 8067 #line 215 3"parser.yy"8066 #line 2152 "parser.yy" 8068 8067 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8069 8068 break; … … 8072 8071 8073 8072 /* Line 1806 of yacc.c */ 8074 #line 215 8"parser.yy"8073 #line 2157 "parser.yy" 8075 8074 { 8076 8075 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8082 8081 8083 8082 /* Line 1806 of yacc.c */ 8084 #line 216 3"parser.yy"8083 #line 2162 "parser.yy" 8085 8084 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8086 8085 break; … … 8089 8088 8090 8089 /* Line 1806 of yacc.c */ 8091 #line 216 8"parser.yy"8090 #line 2167 "parser.yy" 8092 8091 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8093 8092 break; … … 8096 8095 8097 8096 /* Line 1806 of yacc.c */ 8098 #line 21 70"parser.yy"8097 #line 2169 "parser.yy" 8099 8098 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8100 8099 break; … … 8103 8102 8104 8103 /* Line 1806 of yacc.c */ 8105 #line 217 2"parser.yy"8104 #line 2171 "parser.yy" 8106 8105 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8107 8106 break; … … 8110 8109 8111 8110 /* Line 1806 of yacc.c */ 8112 #line 217 7"parser.yy"8111 #line 2176 "parser.yy" 8113 8112 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8114 8113 break; … … 8117 8116 8118 8117 /* Line 1806 of yacc.c */ 8119 #line 217 9"parser.yy"8118 #line 2178 "parser.yy" 8120 8119 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8121 8120 break; … … 8124 8123 8125 8124 /* Line 1806 of yacc.c */ 8126 #line 218 1"parser.yy"8125 #line 2180 "parser.yy" 8127 8126 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8128 8127 break; … … 8131 8130 8132 8131 /* Line 1806 of yacc.c */ 8133 #line 218 3"parser.yy"8132 #line 2182 "parser.yy" 8134 8133 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8135 8134 break; … … 8138 8137 8139 8138 /* Line 1806 of yacc.c */ 8140 #line 218 8"parser.yy"8139 #line 2187 "parser.yy" 8141 8140 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8142 8141 break; … … 8145 8144 8146 8145 /* Line 1806 of yacc.c */ 8147 #line 21 90"parser.yy"8146 #line 2189 "parser.yy" 8148 8147 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8149 8148 break; … … 8152 8151 8153 8152 /* Line 1806 of yacc.c */ 8154 #line 2 200"parser.yy"8153 #line 2199 "parser.yy" 8155 8154 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8156 8155 break; … … 8159 8158 8160 8159 /* Line 1806 of yacc.c */ 8161 #line 220 3"parser.yy"8160 #line 2202 "parser.yy" 8162 8161 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8163 8162 break; … … 8166 8165 8167 8166 /* Line 1806 of yacc.c */ 8168 #line 220 8"parser.yy"8167 #line 2207 "parser.yy" 8169 8168 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8170 8169 break; … … 8173 8172 8174 8173 /* Line 1806 of yacc.c */ 8175 #line 22 10"parser.yy"8174 #line 2209 "parser.yy" 8176 8175 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8177 8176 break; … … 8180 8179 8181 8180 /* Line 1806 of yacc.c */ 8182 #line 221 2"parser.yy"8181 #line 2211 "parser.yy" 8183 8182 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8184 8183 break; … … 8187 8186 8188 8187 /* Line 1806 of yacc.c */ 8189 #line 221 7"parser.yy"8188 #line 2216 "parser.yy" 8190 8189 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8191 8190 break; … … 8194 8193 8195 8194 /* Line 1806 of yacc.c */ 8196 #line 221 9"parser.yy"8195 #line 2218 "parser.yy" 8197 8196 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8198 8197 break; … … 8201 8200 8202 8201 /* Line 1806 of yacc.c */ 8203 #line 222 1"parser.yy"8202 #line 2220 "parser.yy" 8204 8203 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8205 8204 break; … … 8208 8207 8209 8208 /* Line 1806 of yacc.c */ 8210 #line 222 6"parser.yy"8209 #line 2225 "parser.yy" 8211 8210 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8212 8211 break; … … 8215 8214 8216 8215 /* Line 1806 of yacc.c */ 8217 #line 222 8"parser.yy"8216 #line 2227 "parser.yy" 8218 8217 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8219 8218 break; … … 8222 8221 8223 8222 /* Line 1806 of yacc.c */ 8224 #line 22 30"parser.yy"8223 #line 2229 "parser.yy" 8225 8224 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8226 8225 break; … … 8229 8228 8230 8229 /* Line 1806 of yacc.c */ 8231 #line 224 5"parser.yy"8230 #line 2244 "parser.yy" 8232 8231 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8233 8232 break; … … 8236 8235 8237 8236 /* Line 1806 of yacc.c */ 8238 #line 224 7"parser.yy"8237 #line 2246 "parser.yy" 8239 8238 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8240 8239 break; … … 8243 8242 8244 8243 /* Line 1806 of yacc.c */ 8245 #line 224 9"parser.yy"8244 #line 2248 "parser.yy" 8246 8245 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8247 8246 break; … … 8250 8249 8251 8250 /* Line 1806 of yacc.c */ 8252 #line 225 4"parser.yy"8251 #line 2253 "parser.yy" 8253 8252 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8254 8253 break; … … 8257 8256 8258 8257 /* Line 1806 of yacc.c */ 8259 #line 225 6"parser.yy"8258 #line 2255 "parser.yy" 8260 8259 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8261 8260 break; … … 8264 8263 8265 8264 /* Line 1806 of yacc.c */ 8266 #line 225 8"parser.yy"8265 #line 2257 "parser.yy" 8267 8266 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8268 8267 break; … … 8271 8270 8272 8271 /* Line 1806 of yacc.c */ 8273 #line 226 3"parser.yy"8272 #line 2262 "parser.yy" 8274 8273 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8275 8274 break; … … 8278 8277 8279 8278 /* Line 1806 of yacc.c */ 8280 #line 226 5"parser.yy"8279 #line 2264 "parser.yy" 8281 8280 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8282 8281 break; … … 8285 8284 8286 8285 /* Line 1806 of yacc.c */ 8287 #line 226 7"parser.yy"8286 #line 2266 "parser.yy" 8288 8287 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8289 8288 break; … … 8292 8291 8293 8292 /* Line 1806 of yacc.c */ 8294 #line 228 2"parser.yy"8293 #line 2281 "parser.yy" 8295 8294 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8296 8295 break; … … 8299 8298 8300 8299 /* Line 1806 of yacc.c */ 8301 #line 228 5"parser.yy"8300 #line 2284 "parser.yy" 8302 8301 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8303 8302 break; … … 8306 8305 8307 8306 /* Line 1806 of yacc.c */ 8308 #line 228 7"parser.yy"8307 #line 2286 "parser.yy" 8309 8308 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8310 8309 break; … … 8313 8312 8314 8313 /* Line 1806 of yacc.c */ 8315 #line 229 3"parser.yy"8314 #line 2292 "parser.yy" 8316 8315 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8317 8316 break; … … 8320 8319 8321 8320 /* Line 1806 of yacc.c */ 8322 #line 229 8"parser.yy"8321 #line 2297 "parser.yy" 8323 8322 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8324 8323 break; … … 8327 8326 8328 8327 /* Line 1806 of yacc.c */ 8329 #line 2 300"parser.yy"8328 #line 2299 "parser.yy" 8330 8329 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8331 8330 break; … … 8334 8333 8335 8334 /* Line 1806 of yacc.c */ 8336 #line 230 2"parser.yy"8335 #line 2301 "parser.yy" 8337 8336 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8338 8337 break; … … 8341 8340 8342 8341 /* Line 1806 of yacc.c */ 8343 #line 230 7"parser.yy"8342 #line 2306 "parser.yy" 8344 8343 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8345 8344 break; … … 8348 8347 8349 8348 /* Line 1806 of yacc.c */ 8350 #line 230 9"parser.yy"8349 #line 2308 "parser.yy" 8351 8350 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8352 8351 break; … … 8355 8354 8356 8355 /* Line 1806 of yacc.c */ 8357 #line 231 1"parser.yy"8356 #line 2310 "parser.yy" 8358 8357 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8359 8358 break; … … 8362 8361 8363 8362 /* Line 1806 of yacc.c */ 8364 #line 231 3"parser.yy"8363 #line 2312 "parser.yy" 8365 8364 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8366 8365 break; … … 8369 8368 8370 8369 /* Line 1806 of yacc.c */ 8371 #line 231 8"parser.yy"8370 #line 2317 "parser.yy" 8372 8371 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8373 8372 break; … … 8376 8375 8377 8376 /* Line 1806 of yacc.c */ 8378 #line 23 20"parser.yy"8377 #line 2319 "parser.yy" 8379 8378 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8380 8379 break; … … 8383 8382 8384 8383 /* Line 1806 of yacc.c */ 8385 #line 232 2"parser.yy"8384 #line 2321 "parser.yy" 8386 8385 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8387 8386 break; … … 8390 8389 8391 8390 /* Line 1806 of yacc.c */ 8392 #line 233 2"parser.yy"8391 #line 2331 "parser.yy" 8393 8392 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8394 8393 break; … … 8397 8396 8398 8397 /* Line 1806 of yacc.c */ 8399 #line 233 5"parser.yy"8398 #line 2334 "parser.yy" 8400 8399 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8401 8400 break; … … 8404 8403 8405 8404 /* Line 1806 of yacc.c */ 8406 #line 233 7"parser.yy"8405 #line 2336 "parser.yy" 8407 8406 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8408 8407 break; … … 8411 8410 8412 8411 /* Line 1806 of yacc.c */ 8413 #line 234 2"parser.yy"8412 #line 2341 "parser.yy" 8414 8413 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8415 8414 break; … … 8418 8417 8419 8418 /* Line 1806 of yacc.c */ 8420 #line 234 4"parser.yy"8419 #line 2343 "parser.yy" 8421 8420 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8422 8421 break; … … 8425 8424 8426 8425 /* Line 1806 of yacc.c */ 8427 #line 234 6"parser.yy"8426 #line 2345 "parser.yy" 8428 8427 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8429 8428 break; … … 8432 8431 8433 8432 /* Line 1806 of yacc.c */ 8434 #line 235 1"parser.yy"8433 #line 2350 "parser.yy" 8435 8434 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8436 8435 break; … … 8439 8438 8440 8439 /* Line 1806 of yacc.c */ 8441 #line 235 3"parser.yy"8440 #line 2352 "parser.yy" 8442 8441 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8443 8442 break; … … 8446 8445 8447 8446 /* Line 1806 of yacc.c */ 8448 #line 235 5"parser.yy"8447 #line 2354 "parser.yy" 8449 8448 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8450 8449 break; … … 8453 8452 8454 8453 /* Line 1806 of yacc.c */ 8455 #line 235 7"parser.yy"8454 #line 2356 "parser.yy" 8456 8455 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8457 8456 break; … … 8460 8459 8461 8460 /* Line 1806 of yacc.c */ 8462 #line 236 2"parser.yy"8461 #line 2361 "parser.yy" 8463 8462 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8464 8463 break; … … 8467 8466 8468 8467 /* Line 1806 of yacc.c */ 8469 #line 236 4"parser.yy"8468 #line 2363 "parser.yy" 8470 8469 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8471 8470 break; … … 8474 8473 8475 8474 /* Line 1806 of yacc.c */ 8476 #line 236 6"parser.yy"8475 #line 2365 "parser.yy" 8477 8476 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8478 8477 break; … … 8481 8480 8482 8481 /* Line 1806 of yacc.c */ 8483 #line 239 7"parser.yy"8482 #line 2396 "parser.yy" 8484 8483 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8485 8484 break; … … 8488 8487 8489 8488 /* Line 1806 of yacc.c */ 8490 #line 2 400"parser.yy"8489 #line 2399 "parser.yy" 8491 8490 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8492 8491 break; … … 8495 8494 8496 8495 /* Line 1806 of yacc.c */ 8497 #line 240 2"parser.yy"8496 #line 2401 "parser.yy" 8498 8497 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8499 8498 break; … … 8502 8501 8503 8502 /* Line 1806 of yacc.c */ 8504 #line 240 7"parser.yy"8503 #line 2406 "parser.yy" 8505 8504 { 8506 8505 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8512 8511 8513 8512 /* Line 1806 of yacc.c */ 8514 #line 241 2"parser.yy"8513 #line 2411 "parser.yy" 8515 8514 { 8516 8515 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8522 8521 8523 8522 /* Line 1806 of yacc.c */ 8524 #line 24 20"parser.yy"8523 #line 2419 "parser.yy" 8525 8524 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8526 8525 break; … … 8529 8528 8530 8529 /* Line 1806 of yacc.c */ 8531 #line 242 2"parser.yy"8530 #line 2421 "parser.yy" 8532 8531 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8533 8532 break; … … 8536 8535 8537 8536 /* Line 1806 of yacc.c */ 8538 #line 242 4"parser.yy"8537 #line 2423 "parser.yy" 8539 8538 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8540 8539 break; … … 8543 8542 8544 8543 /* Line 1806 of yacc.c */ 8545 #line 242 9"parser.yy"8544 #line 2428 "parser.yy" 8546 8545 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8547 8546 break; … … 8550 8549 8551 8550 /* Line 1806 of yacc.c */ 8552 #line 243 1"parser.yy"8551 #line 2430 "parser.yy" 8553 8552 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8554 8553 break; … … 8557 8556 8558 8557 /* Line 1806 of yacc.c */ 8559 #line 243 6"parser.yy"8558 #line 2435 "parser.yy" 8560 8559 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8561 8560 break; … … 8564 8563 8565 8564 /* Line 1806 of yacc.c */ 8566 #line 243 8"parser.yy"8565 #line 2437 "parser.yy" 8567 8566 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8568 8567 break; … … 8571 8570 8572 8571 /* Line 1806 of yacc.c */ 8573 #line 245 3"parser.yy"8572 #line 2452 "parser.yy" 8574 8573 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8575 8574 break; … … 8578 8577 8579 8578 /* Line 1806 of yacc.c */ 8580 #line 245 5"parser.yy"8579 #line 2454 "parser.yy" 8581 8580 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8582 8581 break; … … 8585 8584 8586 8585 /* Line 1806 of yacc.c */ 8587 #line 24 60"parser.yy"8586 #line 2459 "parser.yy" 8588 8587 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8589 8588 break; … … 8592 8591 8593 8592 /* Line 1806 of yacc.c */ 8594 #line 246 2"parser.yy"8593 #line 2461 "parser.yy" 8595 8594 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8596 8595 break; … … 8599 8598 8600 8599 /* Line 1806 of yacc.c */ 8601 #line 246 4"parser.yy"8600 #line 2463 "parser.yy" 8602 8601 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8603 8602 break; … … 8606 8605 8607 8606 /* Line 1806 of yacc.c */ 8608 #line 246 6"parser.yy"8607 #line 2465 "parser.yy" 8609 8608 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8610 8609 break; … … 8613 8612 8614 8613 /* Line 1806 of yacc.c */ 8615 #line 246 8"parser.yy"8614 #line 2467 "parser.yy" 8616 8615 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8617 8616 break; … … 8620 8619 8621 8620 /* Line 1806 of yacc.c */ 8622 #line 247 4"parser.yy"8621 #line 2473 "parser.yy" 8623 8622 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8624 8623 break; … … 8627 8626 8628 8627 /* Line 1806 of yacc.c */ 8629 #line 247 6"parser.yy"8628 #line 2475 "parser.yy" 8630 8629 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8631 8630 break; … … 8634 8633 8635 8634 /* Line 1806 of yacc.c */ 8636 #line 247 8"parser.yy"8635 #line 2477 "parser.yy" 8637 8636 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8638 8637 break; … … 8641 8640 8642 8641 /* Line 1806 of yacc.c */ 8643 #line 248 3"parser.yy"8642 #line 2482 "parser.yy" 8644 8643 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8645 8644 break; … … 8648 8647 8649 8648 /* Line 1806 of yacc.c */ 8650 #line 248 5"parser.yy"8649 #line 2484 "parser.yy" 8651 8650 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8652 8651 break; … … 8655 8654 8656 8655 /* Line 1806 of yacc.c */ 8657 #line 248 7"parser.yy"8656 #line 2486 "parser.yy" 8658 8657 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8659 8658 break; … … 8662 8661 8663 8662 /* Line 1806 of yacc.c */ 8664 #line 249 3"parser.yy"8663 #line 2492 "parser.yy" 8665 8664 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8666 8665 break; … … 8669 8668 8670 8669 /* Line 1806 of yacc.c */ 8671 #line 249 5"parser.yy"8670 #line 2494 "parser.yy" 8672 8671 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8673 8672 break; … … 8676 8675 8677 8676 /* Line 1806 of yacc.c */ 8678 #line 250 1"parser.yy"8677 #line 2500 "parser.yy" 8679 8678 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8680 8679 break; … … 8683 8682 8684 8683 /* Line 1806 of yacc.c */ 8685 #line 250 3"parser.yy"8684 #line 2502 "parser.yy" 8686 8685 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8687 8686 break; … … 8690 8689 8691 8690 /* Line 1806 of yacc.c */ 8692 #line 250 5"parser.yy"8691 #line 2504 "parser.yy" 8693 8692 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8694 8693 break; … … 8697 8696 8698 8697 /* Line 1806 of yacc.c */ 8699 #line 250 7"parser.yy"8698 #line 2506 "parser.yy" 8700 8699 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8701 8700 break; … … 8704 8703 8705 8704 /* Line 1806 of yacc.c */ 8706 #line 252 2"parser.yy"8705 #line 2521 "parser.yy" 8707 8706 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8708 8707 break; … … 8711 8710 8712 8711 /* Line 1806 of yacc.c */ 8713 #line 252 4"parser.yy"8712 #line 2523 "parser.yy" 8714 8713 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8715 8714 break; … … 8718 8717 8719 8718 /* Line 1806 of yacc.c */ 8720 #line 252 9"parser.yy"8719 #line 2528 "parser.yy" 8721 8720 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8722 8721 break; … … 8725 8724 8726 8725 /* Line 1806 of yacc.c */ 8727 #line 253 1"parser.yy"8726 #line 2530 "parser.yy" 8728 8727 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8729 8728 break; … … 8732 8731 8733 8732 /* Line 1806 of yacc.c */ 8734 #line 253 3"parser.yy"8733 #line 2532 "parser.yy" 8735 8734 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8736 8735 break; … … 8739 8738 8740 8739 /* Line 1806 of yacc.c */ 8741 #line 253 5"parser.yy"8740 #line 2534 "parser.yy" 8742 8741 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8743 8742 break; … … 8746 8745 8747 8746 /* Line 1806 of yacc.c */ 8748 #line 253 7"parser.yy"8747 #line 2536 "parser.yy" 8749 8748 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8750 8749 break; … … 8753 8752 8754 8753 /* Line 1806 of yacc.c */ 8755 #line 254 3"parser.yy"8754 #line 2542 "parser.yy" 8756 8755 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8757 8756 break; … … 8760 8759 8761 8760 /* Line 1806 of yacc.c */ 8762 #line 254 5"parser.yy"8761 #line 2544 "parser.yy" 8763 8762 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8764 8763 break; … … 8767 8766 8768 8767 /* Line 1806 of yacc.c */ 8769 #line 254 7"parser.yy"8768 #line 2546 "parser.yy" 8770 8769 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8771 8770 break; … … 8774 8773 8775 8774 /* Line 1806 of yacc.c */ 8776 #line 255 2"parser.yy"8775 #line 2551 "parser.yy" 8777 8776 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8778 8777 break; … … 8781 8780 8782 8781 /* Line 1806 of yacc.c */ 8783 #line 255 4"parser.yy"8782 #line 2553 "parser.yy" 8784 8783 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8785 8784 break; … … 8788 8787 8789 8788 /* Line 1806 of yacc.c */ 8790 #line 255 6"parser.yy"8789 #line 2555 "parser.yy" 8791 8790 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8792 8791 break; … … 8795 8794 8796 8795 /* Line 1806 of yacc.c */ 8797 #line 256 3"parser.yy"8796 #line 2562 "parser.yy" 8798 8797 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8799 8798 break; … … 8802 8801 8803 8802 /* Line 1806 of yacc.c */ 8804 #line 257 4"parser.yy"8803 #line 2573 "parser.yy" 8805 8804 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8806 8805 break; … … 8809 8808 8810 8809 /* Line 1806 of yacc.c */ 8811 #line 257 7"parser.yy"8810 #line 2576 "parser.yy" 8812 8811 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8813 8812 break; … … 8816 8815 8817 8816 /* Line 1806 of yacc.c */ 8818 #line 257 9"parser.yy"8817 #line 2578 "parser.yy" 8819 8818 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8820 8819 break; … … 8823 8822 8824 8823 /* Line 1806 of yacc.c */ 8825 #line 258 2"parser.yy"8824 #line 2581 "parser.yy" 8826 8825 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8827 8826 break; … … 8830 8829 8831 8830 /* Line 1806 of yacc.c */ 8832 #line 258 4"parser.yy"8831 #line 2583 "parser.yy" 8833 8832 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8834 8833 break; … … 8837 8836 8838 8837 /* Line 1806 of yacc.c */ 8839 #line 258 6"parser.yy"8838 #line 2585 "parser.yy" 8840 8839 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8841 8840 break; … … 8844 8843 8845 8844 /* Line 1806 of yacc.c */ 8846 #line 2 600"parser.yy"8845 #line 2599 "parser.yy" 8847 8846 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8848 8847 break; … … 8851 8850 8852 8851 /* Line 1806 of yacc.c */ 8853 #line 260 2"parser.yy"8852 #line 2601 "parser.yy" 8854 8853 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8855 8854 break; … … 8858 8857 8859 8858 /* Line 1806 of yacc.c */ 8860 #line 260 7"parser.yy"8859 #line 2606 "parser.yy" 8861 8860 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8862 8861 break; … … 8865 8864 8866 8865 /* Line 1806 of yacc.c */ 8867 #line 260 9"parser.yy"8866 #line 2608 "parser.yy" 8868 8867 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8869 8868 break; … … 8872 8871 8873 8872 /* Line 1806 of yacc.c */ 8874 #line 261 1"parser.yy"8873 #line 2610 "parser.yy" 8875 8874 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8876 8875 break; … … 8879 8878 8880 8879 /* Line 1806 of yacc.c */ 8881 #line 261 3"parser.yy"8880 #line 2612 "parser.yy" 8882 8881 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8883 8882 break; … … 8886 8885 8887 8886 /* Line 1806 of yacc.c */ 8888 #line 261 5"parser.yy"8887 #line 2614 "parser.yy" 8889 8888 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8890 8889 break; … … 8893 8892 8894 8893 /* Line 1806 of yacc.c */ 8895 #line 262 1"parser.yy"8894 #line 2620 "parser.yy" 8896 8895 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8897 8896 break; … … 8900 8899 8901 8900 /* Line 1806 of yacc.c */ 8902 #line 262 3"parser.yy"8901 #line 2622 "parser.yy" 8903 8902 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8904 8903 break; … … 8907 8906 8908 8907 /* Line 1806 of yacc.c */ 8909 #line 262 5"parser.yy"8908 #line 2624 "parser.yy" 8910 8909 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8911 8910 break; … … 8914 8913 8915 8914 /* Line 1806 of yacc.c */ 8916 #line 26 30"parser.yy"8915 #line 2629 "parser.yy" 8917 8916 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8918 8917 break; … … 8921 8920 8922 8921 /* Line 1806 of yacc.c */ 8923 #line 263 2"parser.yy"8922 #line 2631 "parser.yy" 8924 8923 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8925 8924 break; … … 8928 8927 8929 8928 /* Line 1806 of yacc.c */ 8930 #line 264 2"parser.yy"8929 #line 2641 "parser.yy" 8931 8930 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8932 8931 break; … … 8935 8934 8936 8935 /* Line 1806 of yacc.c */ 8937 #line 265 2"parser.yy"8936 #line 2651 "parser.yy" 8938 8937 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8939 8938 break; … … 8942 8941 8943 8942 /* Line 1806 of yacc.c */ 8944 #line 265 4"parser.yy"8943 #line 2653 "parser.yy" 8945 8944 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8946 8945 break; … … 8949 8948 8950 8949 /* Line 1806 of yacc.c */ 8951 #line 265 6"parser.yy"8950 #line 2655 "parser.yy" 8952 8951 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8953 8952 break; … … 8956 8955 8957 8956 /* Line 1806 of yacc.c */ 8958 #line 265 8"parser.yy"8957 #line 2657 "parser.yy" 8959 8958 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8960 8959 break; … … 8963 8962 8964 8963 /* Line 1806 of yacc.c */ 8965 #line 26 60"parser.yy"8964 #line 2659 "parser.yy" 8966 8965 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8967 8966 break; … … 8970 8969 8971 8970 /* Line 1806 of yacc.c */ 8972 #line 266 2"parser.yy"8971 #line 2661 "parser.yy" 8973 8972 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8974 8973 break; … … 8977 8976 8978 8977 /* Line 1806 of yacc.c */ 8979 #line 266 9"parser.yy"8978 #line 2668 "parser.yy" 8980 8979 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8981 8980 break; … … 8984 8983 8985 8984 /* Line 1806 of yacc.c */ 8986 #line 267 1"parser.yy"8985 #line 2670 "parser.yy" 8987 8986 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8988 8987 break; … … 8991 8990 8992 8991 /* Line 1806 of yacc.c */ 8993 #line 267 3"parser.yy"8992 #line 2672 "parser.yy" 8994 8993 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8995 8994 break; … … 8998 8997 8999 8998 /* Line 1806 of yacc.c */ 9000 #line 267 5"parser.yy"8999 #line 2674 "parser.yy" 9001 9000 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 9002 9001 break; … … 9005 9004 9006 9005 /* Line 1806 of yacc.c */ 9007 #line 267 7"parser.yy"9006 #line 2676 "parser.yy" 9008 9007 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9009 9008 break; … … 9012 9011 9013 9012 /* Line 1806 of yacc.c */ 9014 #line 267 9"parser.yy"9013 #line 2678 "parser.yy" 9015 9014 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9016 9015 break; … … 9019 9018 9020 9019 /* Line 1806 of yacc.c */ 9021 #line 268 1"parser.yy"9020 #line 2680 "parser.yy" 9022 9021 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9023 9022 break; … … 9026 9025 9027 9026 /* Line 1806 of yacc.c */ 9028 #line 268 3"parser.yy"9027 #line 2682 "parser.yy" 9029 9028 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9030 9029 break; … … 9033 9032 9034 9033 /* Line 1806 of yacc.c */ 9035 #line 268 5"parser.yy"9034 #line 2684 "parser.yy" 9036 9035 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 9037 9036 break; … … 9040 9039 9041 9040 /* Line 1806 of yacc.c */ 9042 #line 268 7"parser.yy"9041 #line 2686 "parser.yy" 9043 9042 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9044 9043 break; … … 9047 9046 9048 9047 /* Line 1806 of yacc.c */ 9049 #line 269 2"parser.yy"9048 #line 2691 "parser.yy" 9050 9049 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 9051 9050 break; … … 9054 9053 9055 9054 /* Line 1806 of yacc.c */ 9056 #line 269 4"parser.yy"9055 #line 2693 "parser.yy" 9057 9056 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 9058 9057 break; … … 9061 9060 9062 9061 /* Line 1806 of yacc.c */ 9063 #line 269 9"parser.yy"9062 #line 2698 "parser.yy" 9064 9063 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9065 9064 break; … … 9068 9067 9069 9068 /* Line 1806 of yacc.c */ 9070 #line 270 1"parser.yy"9069 #line 2700 "parser.yy" 9071 9070 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9072 9071 break; … … 9075 9074 9076 9075 /* Line 1806 of yacc.c */ 9077 #line 272 8"parser.yy"9076 #line 2727 "parser.yy" 9078 9077 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9079 9078 break; … … 9082 9081 9083 9082 /* Line 1806 of yacc.c */ 9084 #line 273 9"parser.yy"9083 #line 2738 "parser.yy" 9085 9084 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9086 9085 break; … … 9089 9088 9090 9089 /* Line 1806 of yacc.c */ 9091 #line 274 1"parser.yy"9090 #line 2740 "parser.yy" 9092 9091 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9093 9092 break; … … 9096 9095 9097 9096 /* Line 1806 of yacc.c */ 9098 #line 274 3"parser.yy"9097 #line 2742 "parser.yy" 9099 9098 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9100 9099 break; … … 9103 9102 9104 9103 /* Line 1806 of yacc.c */ 9105 #line 274 5"parser.yy"9104 #line 2744 "parser.yy" 9106 9105 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9107 9106 break; … … 9110 9109 9111 9110 /* Line 1806 of yacc.c */ 9112 #line 274 7"parser.yy"9111 #line 2746 "parser.yy" 9113 9112 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9114 9113 break; … … 9117 9116 9118 9117 /* Line 1806 of yacc.c */ 9119 #line 274 9"parser.yy"9118 #line 2748 "parser.yy" 9120 9119 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9121 9120 break; … … 9124 9123 9125 9124 /* Line 1806 of yacc.c */ 9126 #line 275 6"parser.yy"9125 #line 2755 "parser.yy" 9127 9126 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9128 9127 break; … … 9131 9130 9132 9131 /* Line 1806 of yacc.c */ 9133 #line 275 8"parser.yy"9132 #line 2757 "parser.yy" 9134 9133 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9135 9134 break; … … 9138 9137 9139 9138 /* Line 1806 of yacc.c */ 9140 #line 27 60"parser.yy"9139 #line 2759 "parser.yy" 9141 9140 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9142 9141 break; … … 9145 9144 9146 9145 /* Line 1806 of yacc.c */ 9147 #line 276 2"parser.yy"9146 #line 2761 "parser.yy" 9148 9147 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9149 9148 break; … … 9152 9151 9153 9152 /* Line 1806 of yacc.c */ 9154 #line 276 4"parser.yy"9153 #line 2763 "parser.yy" 9155 9154 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9156 9155 break; … … 9159 9158 9160 9159 /* Line 1806 of yacc.c */ 9161 #line 276 6"parser.yy"9160 #line 2765 "parser.yy" 9162 9161 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9163 9162 break; … … 9166 9165 9167 9166 /* Line 1806 of yacc.c */ 9168 #line 277 1"parser.yy"9167 #line 2770 "parser.yy" 9169 9168 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9170 9169 break; … … 9173 9172 9174 9173 /* Line 1806 of yacc.c */ 9175 #line 277 6"parser.yy"9174 #line 2775 "parser.yy" 9176 9175 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9177 9176 break; … … 9180 9179 9181 9180 /* Line 1806 of yacc.c */ 9182 #line 277 8"parser.yy"9181 #line 2777 "parser.yy" 9183 9182 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9184 9183 break; … … 9187 9186 9188 9187 /* Line 1806 of yacc.c */ 9189 #line 27 80"parser.yy"9188 #line 2779 "parser.yy" 9190 9189 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9191 9190 break; … … 9194 9193 9195 9194 /* Line 1806 of yacc.c */ 9196 #line 280 4"parser.yy"9195 #line 2803 "parser.yy" 9197 9196 { (yyval.en) = 0; } 9198 9197 break; … … 9201 9200 9202 9201 /* Line 1806 of yacc.c */ 9203 #line 280 6"parser.yy"9202 #line 2805 "parser.yy" 9204 9203 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9205 9204 break; … … 9208 9207 9209 9208 /* Line 1806 of yacc.c */ 9210 #line 921 1"Parser/parser.cc"9209 #line 9210 "Parser/parser.cc" 9211 9210 default: break; 9212 9211 } … … 9439 9438 9440 9439 /* Line 2067 of yacc.c */ 9441 #line 280 9"parser.yy"9440 #line 2808 "parser.yy" 9442 9441 9443 9442 // ----end of grammar---- -
src/Parser/parser.h
rb3f9a0cb r89173242 262 262 263 263 /* Line 2068 of yacc.c */ 264 #line 11 2"parser.yy"264 #line 111 "parser.yy" 265 265 266 266 Token tok; -
src/Parser/parser.yy
rb3f9a0cb r89173242 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 24 16:16:16201613 // Update Count : 149 812 // Last Modified On : Wed Mar 2 17:24:45 2016 13 // Update Count : 1495 14 14 // 15 15 … … 51 51 #include <cstdio> 52 52 #include <stack> 53 #include "TypedefTable.h" 53 54 #include "lex.h" 54 #include "parser.h"55 55 #include "ParseNode.h" 56 #include "TypedefTable.h"57 56 #include "TypeData.h" 58 57 #include "LinkageSpec.h" … … 1029 1028 { 1030 1029 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1031 $$ = $1 ->addInitializer( $2 );1030 $$ = $1; 1032 1031 } 1033 1032 | declaration_qualifier_list new_variable_specifier initializer_opt … … 1036 1035 { 1037 1036 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1038 $$ = $2->addQualifiers( $1 ) ->addInitializer( $3 );;1037 $$ = $2->addQualifiers( $1 ); 1039 1038 } 1040 1039 | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt 1041 1040 { 1042 1041 typedefTable.addToEnclosingScope( *$5, TypedefTable::ID ); 1043 $$ = $1->appendList( $1->cloneType( $5 ) ->addInitializer( $6 ));1042 $$ = $1->appendList( $1->cloneType( $5 ) ); 1044 1043 } 1045 1044 ; -
src/ResolvExpr/Resolver.cc
rb3f9a0cb r89173242 10 10 // Created On : Sun May 17 12:17:01 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Mar 24 16:43:11201613 // Update Count : 1 8112 // Last Modified On : Tue Feb 9 21:57:52 2016 13 // Update Count : 179 14 14 // 15 15 … … 165 165 Type *new_type = resolveTypeof( objectDecl->get_type(), *this ); 166 166 objectDecl->set_type( new_type ); 167 // To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that class-variable168 // initContext is changed multiple time because the LHS is analysed twice. The second analysis changes169 // initContext because of a function type can contain object declarations in the return and parameter types. So170 // each value of initContext is retained, so the type on the first analysis is preserved and used for selecting171 // the RHS.172 Type *temp = initContext;173 167 initContext = new_type; 174 168 SymTab::Indexer::visit( objectDecl ); 175 initContext = temp;176 169 } 177 170 -
src/SymTab/Indexer.cc
rb3f9a0cb r89173242 19 19 #include <typeinfo> 20 20 #include <unordered_map> 21 #include <unordered_set>22 21 #include <utility> 23 22 … … 436 435 437 436 void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const { 438 std::unordered_set< std::string > foundMangleNames; 437 if ( ! tables ) return; 438 439 IdTable::const_iterator decls = tables->idTable.find( id ); 440 if ( decls != tables->idTable.end() ) { 441 const MangleTable &mangleTable = decls->second; 442 for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) { 443 out.push_back( decl->second ); 444 } 445 } 439 446 440 Indexer::Impl *searchTables = tables; 441 while ( searchTables ) { 442 443 IdTable::const_iterator decls = searchTables->idTable.find( id ); 444 if ( decls != searchTables->idTable.end() ) { 445 const MangleTable &mangleTable = decls->second; 446 for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) { 447 // mark the mangled name as found, skipping this insertion if a declaration for that name has already been found 448 if ( foundMangleNames.insert( decl->first ).second == false ) continue; 449 450 out.push_back( decl->second ); 451 } 452 } 453 454 // get declarations from base indexers 455 searchTables = searchTables->base.tables; 456 } 447 // get declarations from base indexers 448 tables->base.lookupId( id, out ); 457 449 } 458 450 … … 506 498 } 507 499 508 bool Indexer::has IncompatibleCDecl( const std::string &id, const std::string &mangleName) const {500 bool Indexer::hasCDeclWithName( const std::string &id ) const { 509 501 if ( ! tables ) return false; 510 502 … … 513 505 const MangleTable &mangleTable = decls->second; 514 506 for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) { 515 // check for C decls with the same name, skipping 516 // those with a compatible type (by mangleName) 517 if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true; 518 } 519 } 520 521 return tables->base.hasIncompatibleCDecl( id, mangleName ); 507 if ( decl->second->get_linkage() == LinkageSpec::C ) return true; 508 } 509 } 510 511 return tables->base.hasCDeclWithName( id ); 522 512 } 523 513 … … 602 592 const std::string &name = decl->get_name(); 603 593 std::string mangleName; 604 if ( LinkageSpec::isOverridable( decl->get_linkage() ) ) { 594 if ( decl->get_linkage() == LinkageSpec::C ) { 595 mangleName = name; 596 } else if ( LinkageSpec::isOverridable( decl->get_linkage() ) ) { 605 597 // mangle the name without including the appropriate suffix, so overridable routines are placed into the 606 598 // same "bucket" as their user defined versions. … … 613 605 if ( ! existing || ! addedIdConflicts( existing, decl ) ) { 614 606 // this ensures that no two declarations with the same unmangled name both have C linkage 615 if ( decl->get_linkage() == LinkageSpec::C && has IncompatibleCDecl( name, mangleName ) ) {607 if ( decl->get_linkage() == LinkageSpec::C && hasCDeclWithName( name ) ) { 616 608 throw SemanticError( "invalid overload of C function ", decl ); 617 } // NOTE this is broken in Richard's original code in such a way that it never triggers (it 618 // doesn't check decls that have the same manglename, and all C-linkage decls are defined to 619 // have their name as their manglename, hence the error can never trigger). 620 // The code here is closer to correct, but name mangling would have to be completely 621 // isomorphic to C type-compatibility, which it may not be. 609 } 622 610 623 611 tables->idTable[ name ][ mangleName ] = decl; -
src/SymTab/Indexer.h
rb3f9a0cb r89173242 97 97 /// looks up a specific mangled ID at the given scope 98 98 DeclarationWithType *lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const; 99 /// returns true if there exists a declaration with C linkage and the given name with a different mangled name100 bool has IncompatibleCDecl( const std::string &id, const std::string &mangleName) const;99 /// returns true if there exists a declaration with C linkage and the given name 100 bool hasCDeclWithName( const std::string &id ) const; 101 101 // equivalents to lookup functions that only look at tables at scope `scope` (which should be >= tables->scope) 102 102 NamedTypeDecl *lookupTypeAtScope( const std::string &id, unsigned long scope ) const; -
src/examples/constants.c
rb3f9a0cb r89173242 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 11 16:27:38201613 // Update Count : 8112 // Last Modified On : Mon Jan 25 23:44:12 2016 13 // Update Count : 76 14 14 // 15 15 … … 44 44 0x_ff_FF_ff_FF_ff_FF_ff_FF; 45 45 9_223_372_036_854_775_807; 46 18_446_744_073_709_551_615 UL;46 18_446_744_073_709_551_615; 47 47 3.141_59f; 48 48 3.14159; … … 53 53 L'\x_ff_ee'; 54 54 L_"\x_ff_ee"; 55 L"a_b\r\ vyc\u_00_40 x_y_z\xff_AA";56 L_"a_b\r\ vyc\u_00_40\55 L"a_b\r\Qyc\u_00_40 x_y_z\xff_AA"; 56 L_"a_b\r\Qyc\u_00_40\ 57 57 x_y_z\xff_AA"; 58 58 "abc" "def" "ghi"; -
src/examples/fstream_test.c
rb3f9a0cb r89173242 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Mar 6 20:58:29201613 // Update Count : 5 412 // Last Modified On : Wed Mar 2 15:12:21 2016 13 // Update Count : 51 14 14 // 15 15 … … 28 28 int i, j, k; 29 29 sin | &i | &j | &k; 30 sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;30 sout | "Vous avez entré" | "i:" | i | "j:" | j | "k:" | k | endl; 31 31 } 32 32 -
src/examples/huge.c
rb3f9a0cb r89173242 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 8 22:16:32 201613 // Update Count : 212 // Last Modified On : Wed May 27 18:15:34 2015 13 // Update Count : 1 14 14 // 15 15 16 int huge( int n, forall( otype T ) T (*f)( T ) ) {16 int huge( int n, forall( type T ) T (*f)( T ) ) { 17 17 if ( n <= 0 ) 18 18 return f( 0 ); -
src/examples/identity.c
rb3f9a0cb r89173242 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 8 22:15:08201613 // Update Count : 1 312 // Last Modified On : Mon Feb 29 23:40:45 2016 13 // Update Count : 12 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( otype T )18 forall( type T ) 19 19 T identity( T t ) { 20 20 return t; -
src/examples/includes.c
rb3f9a0cb r89173242 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 23:28:02 201613 // Update Count : 32 812 // Last Modified On : Mon Dec 21 13:54:09 2015 13 // Update Count : 322 14 14 // 15 15 … … 43 43 #include <ctype.h> 44 44 #include <curses.h> 45 #include <demangle.h> 46 #include <dialog.h> 45 #include <demangle.h> // enum / contains "type" 46 #include <dialog.h> // enum / contains "type" 47 47 #include <dirent.h> 48 48 #include <dis-asm.h> … … 56 56 #include <err.h> 57 57 #include <errno.h> 58 #include <error.h> 58 59 #if 0 59 #include <error.h>60 #endif61 60 #include <eti.h> 62 #include <evdns.h> 61 #include <evdns.h> // subdirectory event2 contains "type" 63 62 #include <event.h> 64 #include <evhttp.h> 65 #if 0 63 #include <evhttp.h> // enum / subdirectory event2 contains "type" 66 64 #include <evrpc.h> 67 65 #include <evutil.h> 68 66 #include <execinfo.h> 69 #include <expat.h> 67 #include <expat.h> // enum / contains "type" and "context" 70 68 #include <expat_config.h> 71 69 #include <expat_external.h> … … 76 74 #include <fmtmsg.h> 77 75 #include <fnmatch.h> 78 #include <form.h> 76 #include <form.h> // contains "type" 79 77 #include <fpu_control.h> 80 78 #include <fstab.h> … … 83 81 #include <ftw.h> 84 82 #include <gconv.h> 85 //#include <gcrypt.h> 83 //#include <gcrypt.h> // enum / contains "type" 86 84 //#include <gcrypt-module.h> 87 85 #include <getopt.h> … … 109 107 #include <limits.h> 110 108 #include <locale.h> 111 #include <math.h> 109 #include <math.h> // contains "type" 112 110 #include <ncurses.h> 113 111 #include <setjmp.h> -
src/examples/it_out.c
rb3f9a0cb r89173242 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 8 22:14:39201613 // Update Count : 812 // Last Modified On : Wed Mar 2 18:11:00 2016 13 // Update Count : 5 14 14 // 15 15 … … 21 21 }; 22 22 23 trait writeable( otype T ) {23 trait writeable( type T ) { 24 24 forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T ); 25 25 }; … … 36 36 }; 37 37 38 trait readable( otype T ) {38 trait readable( type T ) { 39 39 forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T ); 40 40 }; … … 43 43 forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, int* ); 44 44 45 trait iterator( otype iterator_type, otype elt_type ) {45 trait iterator( type iterator_type, type elt_type ) { 46 46 iterator_type ?++( iterator_type* ); 47 47 iterator_type ++?( iterator_type* ); … … 52 52 }; 53 53 54 forall( otype elt_type | writeable( elt_type ),55 otype iterator_type | iterator( iterator_type, elt_type ),54 forall( type elt_type | writeable( elt_type ), 55 type iterator_type | iterator( iterator_type, elt_type ), 56 56 dtype os_type | ostream( os_type ) ) 57 57 void write_all( iterator_type begin, iterator_type end, os_type *os ); 58 58 59 forall( otype elt_type | writeable( elt_type ),60 otype iterator_type | iterator( iterator_type, elt_type ),59 forall( type elt_type | writeable( elt_type ), 60 type iterator_type | iterator( iterator_type, elt_type ), 61 61 dtype os_type | ostream( os_type ) ) 62 62 void write_all( elt_type begin, iterator_type end, os_type *os ) { -
src/examples/limits.c
rb3f9a0cb r89173242 98 98 // Local Variables: // 99 99 // tab-width: 4 // 100 // compile-command: "cfa limits.c" //100 // compile-command: "cfa min.c" // 101 101 // End: // -
src/examples/new.c
rb3f9a0cb r89173242 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 8 22:13:20201613 // Update Count : 412 // Last Modified On : Mon Jan 25 23:33:55 2016 13 // Update Count : 2 14 14 // 15 15 16 forall( otype T )16 forall( type T ) 17 17 void f( T *t ) { 18 18 t--; -
src/examples/prolog.c
rb3f9a0cb r89173242 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 8 22:09:39201613 // Update Count : 512 // Last Modified On : Wed Mar 2 18:11:18 2016 13 // Update Count : 2 14 14 // 15 15 16 #include <fstream> 16 extern "C" { extern int printf( const char *fmt, ... ); } 17 17 18 void printResult( int x ) { sout | "int" | endl; }19 void printResult( double x ) { sout | "double" | endl; }20 void printResult( char * x ) { sout | "char*" | endl; }18 void printResult( int x ) { printf( "int\n" ); } 19 void printResult( double x ) { printf( "double\n" ); } 20 void printResult( char * x ) { printf( "char*\n" ); } 21 21 22 22 void is_arithmetic( int x ) {} … … 25 25 void is_integer( int x ) {} 26 26 27 trait ArithmeticType( otype T ) {27 trait ArithmeticType( type T ) { 28 28 void is_arithmetic( T ); 29 29 }; 30 30 31 trait IntegralType( otype T | ArithmeticType( T ) ) {31 trait IntegralType( type T | ArithmeticType( T ) ) { 32 32 void is_integer( T ); 33 33 }; 34 34 35 forall( otype T | IntegralType( T ) | { void printResult( T ); } )35 forall( type T | IntegralType( T ) | { void printResult( T ); } ) 36 36 void hornclause( T param ) { 37 37 printResult( param ); -
src/examples/quad.c
rb3f9a0cb r89173242 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 8 22:07:02201613 // Update Count : 812 // Last Modified On : Tue Mar 1 08:24:56 2016 13 // Update Count : 7 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( otype T | { T ?*?( T, T ); } )18 forall( type T | { T ?*?( T, T ); } ) 19 19 T square( T t ) { 20 20 return t * t; 21 21 } 22 22 23 forall( otype U | { U square( U ); } )23 forall( type U | { U square( U ); } ) 24 24 U quad( U u ) { 25 25 return square( square( u ) ); -
src/examples/random.c
rb3f9a0cb r89173242 7 7 8 8 int main() { 9 rand 48seed( getpid() ); // set random seed9 randseed( getpid() ); // set random seed 10 10 11 11 // test polymorphic calls to random and stream 12 char c = rand 48();12 char c = random(); 13 13 sout | c | endl; 14 int i = rand 48();14 int i = random(); 15 15 sout | i | endl; 16 unsigned int ui = rand 48();16 unsigned int ui = random(); 17 17 sout | ui | endl; 18 long int li = rand 48();18 long int li = random(); 19 19 sout | li | endl; 20 unsigned long int uli = rand 48();20 unsigned long int uli = random(); 21 21 sout | uli | endl; 22 float f = rand 48();22 float f = random(); 23 23 sout | f | endl; 24 double d = rand 48();24 double d = random(); 25 25 sout | d | endl; 26 float _Complex fc = rand 48();26 float _Complex fc = random(); 27 27 sout | fc | endl; 28 double _Complex dc = rand 48();28 double _Complex dc = random(); 29 29 sout | dc | endl; 30 long double _Complex ldc = rand 48();30 long double _Complex ldc = random(); 31 31 sout | ldc | endl; 32 32 } // main -
src/examples/searchsort.c
rb3f9a0cb r89173242 11 11 // Created On : Thu Feb 4 18:17:50 2016 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Tue Mar 22 22:16:46201614 // Update Count : 5513 // Last Modified On : Wed Feb 17 12:21:04 2016 14 // Update Count : 46 15 15 // 16 16 … … 36 36 sout | *v | ", "; 37 37 } // for 38 sout | endl | endl;39 40 // descending sort/search by changing < to >41 for ( unsigned int i = 0; i < size; i += 1 ) {42 iarr[i] = i + 1;43 sout | iarr[i] | ", ";44 } // for45 sout | endl;46 {47 int ?<?( int x, int y ) { return x > y; }48 qsort( iarr, size );49 for ( unsigned int i = 0; i < size; i += 1 ) {50 sout | iarr[i] | ", ";51 } // for52 sout | endl;53 for ( unsigned int i = 0; i < size; i += 1 ) {54 int *v = bsearch( size - i, iarr, size );55 sout | *v | ", ";56 } // for57 }58 38 sout | endl | endl; 59 39 -
src/examples/simplePoly.c
rb3f9a0cb r89173242 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 8 22:06:41 201613 // Update Count : 312 // Last Modified On : Wed May 27 18:31:17 2015 13 // Update Count : 2 14 14 // 15 15 16 forall( otype T, otype U | { T f( T, U ); } )16 forall( type T, type U | { T f( T, U ); } ) 17 17 T q( T t, U u ) { 18 18 return f( t, u ); -
src/examples/simpler.c
rb3f9a0cb r89173242 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 8 22:06:30 201613 // Update Count : 212 // Last Modified On : Wed May 27 18:31:48 2015 13 // Update Count : 1 14 14 // 15 15 16 forall( otype T ) T id( T, T );16 forall( type T ) T id( T, T ); 17 17 18 18 int main() { -
src/examples/specialize.c
rb3f9a0cb r89173242 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 8 22:06:17 201613 // Update Count : 312 // Last Modified On : Wed May 27 18:32:26 2015 13 // Update Count : 2 14 14 // 15 15 … … 39 39 } 40 40 41 forall( otype T ) T f( T t )41 forall( type T ) T f( T t ) 42 42 { 43 43 printf( "in f; sizeof T is %d\n", sizeof( T ) ); -
src/examples/square.c
rb3f9a0cb r89173242 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 8 22:05:48 201613 // Update Count : 2 712 // Last Modified On : Wed Feb 17 12:21:58 2016 13 // Update Count : 26 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( otype T | { T ?*?( T, T ); } )18 forall( type T | { T ?*?( T, T ); } ) 19 19 T square( T t ) { 20 20 return t * t; -
src/examples/sum.c
rb3f9a0cb r89173242 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 4 15:06:47201613 // Update Count : 19 612 // Last Modified On : Wed Mar 2 18:12:01 2016 13 // Update Count : 194 14 14 // 15 15 16 16 #include <fstream> 17 17 18 trait sumable( otype T ) {18 trait sumable( type T ) { 19 19 const T 0; 20 20 T ?+?( T, T ); … … 24 24 }; // sumable 25 25 26 forall( otype T | sumable( T ) )26 forall( type T | sumable( T ) ) 27 27 T sum( unsigned int n, T a[] ) { 28 28 T total = 0; // instantiate T, select 0 -
src/examples/twice.c
rb3f9a0cb r89173242 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 8 22:04:58201613 // Update Count : 1 612 // Last Modified On : Wed Feb 17 12:23:25 2016 13 // Update Count : 13 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( otype T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )18 forall( type T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } ) 19 19 T twice( const T t ) { 20 20 return t + t; … … 27 27 char ?++( char *op ) { char temp = *op; *op += 1; return temp; } 28 28 29 sout | twice( 'a' ) | ' ' | twice( 1 ) | twice( 3.2 ) | endl;29 sout | twice( 'a' ) | ' ' | twice( 1 ) | ' ' | twice( 3.2 ) | endl; 30 30 } 31 31 -
src/libcfa/Makefile.am
rb3f9a0cb r89173242 11 11 ## Created On : Sun May 31 08:54:01 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Wed Mar 2 22:59:23201614 ## Update Count : 11 913 ## Last Modified On : Wed Feb 3 11:19:35 2016 14 ## Update Count : 117 15 15 ############################################################################### 16 16 … … 63 63 libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c} 64 64 65 cheaders = # expat65 cheaders = bfd bfdlink demangle dialog evdns evhttp evrpc expat fcntl form gcrypt math 66 66 cfaheaders = limits 67 67 include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders} -
src/libcfa/Makefile.in
rb3f9a0cb r89173242 215 215 libs = stdlib iostream fstream iterator 216 216 libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c} 217 cheaders = # expat217 cheaders = bfd bfdlink demangle dialog evdns evhttp evrpc expat fcntl form gcrypt math 218 218 cfaheaders = limits 219 219 include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders} -
src/libcfa/builtins.cf
rb3f9a0cb r89173242 584 584 int __builtin_LINE(); 585 585 extern const char *__PRETTY_FUNCTION__; 586 typedef int wchar_t; -
src/libcfa/iostream.c
rb3f9a0cb r89173242 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 7 13:51:23201613 // Update Count : 2 2712 // Last Modified On : Wed Mar 2 18:06:35 2016 13 // Update Count : 208 14 14 // 15 15 … … 133 133 forall( dtype ostype | ostream( ostype ) ) 134 134 ostype * ?|?( ostype *os, const char *cp ) { 135 enum { Open = 1, Close, OpenClose };136 static const char mask[256] = {137 // opening delimiters138 ['('] : Open, ['['] : Open, ['{'] : Open,139 ['$'] : Open, [L'£'] : Open, [L'¥'] : Open, [L'¢'] : Open, [L'¿'] : Open, [L'«'] : Open,140 // closing delimiters141 [','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,142 [')'] : Close, [']'] : Close, ['}'] : Close,143 ['%'] : Close, [L'»'] : Close,144 // opening-closing delimiters145 ['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose,146 }; // mask147 148 135 int len = strlen( cp ); 149 136 // null string => no separator 150 137 if ( len == 0 ) { sepOff( os ); return os; } 151 // first character NOT spacing or closingpunctuation => add left separator152 if ( sepPrt( os ) && isspace( cp[0] ) == 0 && mask[ cp[0] ] != Close && mask[ cp[0] ] != OpenClose) {138 // first character NOT spacing or special punctuation => add left separator 139 if ( sepPrt( os ) && isspace( cp[0] ) == 0 && cp[0] != '.' && cp[0] != ',' ) { 153 140 prtfmt( os, "%s", sepGet( os ) ); 154 141 } // if 155 // last character IS spacing or openingpunctuation => turn off separator for next item142 // last character is spacing or special punctuation => turn off separator for next item 156 143 unsigned int posn = len - 1; 157 if ( isspace( cp[posn] ) || mask[ cp[posn] ] == Open || mask[ cp[posn] ] == OpenClose) {144 if ( isspace( cp[posn] ) || cp[posn] == ':' || cp[posn] == '$' ) { 158 145 sepOff( os ); 159 146 } else { -
src/libcfa/stdlib
rb3f9a0cb r89173242 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Mar 22 22:34:24201613 // Update Count : 6 912 // Last Modified On : Wed Mar 2 17:38:21 2016 13 // Update Count : 64 14 14 // 15 15 … … 19 19 #include <stddef.h> // size_t 20 20 } // extern "C" 21 22 forall( otype T ) T * memset( T * ptr, unsigned char fill ); // use default value '\0' for fill 23 forall( otype T ) T * memset( T * ptr ); // remove when default value available 21 24 22 25 forall( otype T ) T * malloc( void ); … … 31 34 forall( otype T ) T * memalign( size_t alignment ); // deprecated 32 35 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ); 33 34 forall( otype T ) T * memset( T * ptr, unsigned char fill ); // use default value '\0' for fill35 forall( otype T ) T * memset( T * ptr ); // remove when default value available36 36 37 37 //--------------------------------------- … … 93 93 //--------------------------------------- 94 94 95 void rand 48seed( long int s );96 char rand 48();97 int rand 48();98 unsigned int rand 48();99 long int rand 48();100 unsigned long int rand 48();101 float rand 48();102 double rand 48();103 float _Complex rand 48();104 double _Complex rand 48();105 long double _Complex rand 48();95 void randseed( long int s ); 96 char random(); 97 int random(); 98 unsigned int random(); 99 long int random(); 100 unsigned long int random(); 101 float random(); 102 double random(); 103 float _Complex random(); 104 double _Complex random(); 105 long double _Complex random(); 106 106 107 107 //--------------------------------------- -
src/libcfa/stdlib.c
rb3f9a0cb r89173242 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 23 13:26:42201613 // Update Count : 14 612 // Last Modified On : Wed Mar 2 17:38:47 2016 13 // Update Count : 143 14 14 // 15 15 … … 26 26 #include <complex.h> // _Complex_I, cabsf, cabs, cabsl 27 27 } // extern "C" 28 29 forall( otype T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill 30 printf( "memset1\n" ); 31 return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) ); 32 } // memset 33 forall( otype T ) T * memset( T * ptr ) { // remove when default value available 34 printf( "memset2\n" ); 35 return (T *)memset( ptr, 0, malloc_usable_size( ptr ) ); 36 } // memset 28 37 29 38 forall( otype T ) T * malloc( void ) { … … 82 91 } // posix_memalign 83 92 84 forall( otype T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill85 printf( "memset1\n" );86 return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) );87 } // memset88 forall( otype T ) T * memset( T * ptr ) { // remove when default value available89 printf( "memset2\n" );90 return (T *)memset( ptr, 0, malloc_usable_size( ptr ) );91 } // memset92 93 93 //--------------------------------------- 94 94 … … 243 243 //--------------------------------------- 244 244 245 void rand 48seed( long int s ) { srand48( s ); }246 char rand 48() { return mrand48(); }247 int rand 48() { return mrand48(); }248 unsigned int rand 48() { return lrand48(); }249 long int rand 48() { return mrand48(); }250 unsigned long int rand 48() { return lrand48(); }251 float rand 48() { return (float)drand48(); } // otherwise float uses lrand48252 double rand 48() { return drand48(); }253 float _Complex rand 48() { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); }254 double _Complex rand 48() { return drand48() + (double _Complex)(drand48() * _Complex_I); }255 long double _Complex rand 48() { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); }245 void randseed( long int s ) { srand48( s ); } 246 char random() { return lrand48(); } 247 int random() { return mrand48(); } 248 unsigned int random() { return lrand48(); } 249 long int random() { return mrand48(); } 250 unsigned long int random() { return lrand48(); } 251 float random() { return (float)drand48(); } // otherwise float uses lrand48 252 double random() { return drand48(); } 253 float _Complex random() { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); } 254 double _Complex random() { return drand48() + (double _Complex)(drand48() * _Complex_I); } 255 long double _Complex random() { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); } 256 256 257 257 //---------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.