Changeset 80722d0
- Timestamp:
- Aug 20, 2016, 7:06:26 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- ab57786, d30790f
- Parents:
- e6955b1 (diff), 4a7d895 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/aaron_comp_II/comp_II.tex
re6955b1 r80722d0 91 91 \CFA\footnote{Pronounced ``C-for-all'', and written \CFA or \CFL.} is an evolutionary modernization of the C programming language currently being designed and built at the University of Waterloo by a team led by Peter Buhr. 92 92 \CFA both fixes existing design problems and adds multiple new features to C, including name overloading, user-defined operators, parametric-polymorphic routines, and type constructors and destructors, among others. 93 The new features make \CFA significantly more powerful and expressive than C, but impose a significant compile-time cost, particularly in the expression resolver, which must evaluate the typing rules of a muchmore complex type-system.93 The new features make \CFA more powerful and expressive than C, but impose a compile-time cost, particularly in the expression resolver, which must evaluate the typing rules of a significantly more complex type-system. 94 94 95 95 The primary goal of this research project is to develop a sufficiently performant expression resolution algorithm, experimentally validate its performance, and integrate it into CFA, the \CFA reference compiler. … … 104 104 105 105 It is important to note that \CFA is not an object-oriented language. 106 \CFA does have a system of (possibly implicit) type conversions derived from C's type conversions; while these conversions may be thought of as something like an inheritance hierarchy the underlying semantics are significantly different and such an analogy is loose at best.106 \CFA does have a system of (possibly implicit) type conversions derived from C's type conversions; while these conversions may be thought of as something like an inheritance hierarchy, the underlying semantics are significantly different and such an analogy is loose at best. 107 107 Particularly, \CFA has no concept of ``subclass'', and thus no need to integrate an inheritance-based form of polymorphism with its parametric and overloading-based polymorphism. 108 108 The graph structure of the \CFA type conversions is also markedly different than an inheritance graph; it has neither a top nor a bottom type, and does not satisfy the lattice properties typical of inheritance graphs. … … 120 120 \end{lstlisting} 121 121 The ©identity© function above can be applied to any complete object type (or ``©otype©''). 122 The type variable ©T© is transformed into a set of additional implicit parameters to ©identity© which encode sufficient information about ©T© to create and return a variable of that type.122 The type variable ©T© is transformed into a set of additional implicit parameters to ©identity©, which encode sufficient information about ©T© to create and return a variable of that type. 123 123 The current \CFA implementation passes the size and alignment of the type represented by an ©otype© parameter, as well as an assignment operator, constructor, copy constructor and destructor. 124 124 Here, the runtime cost of polymorphism is spread over each polymorphic call, due to passing more arguments to polymorphic functions; preliminary experiments have shown this overhead to be similar to \CC virtual function calls. 125 125 Determining if packaging all polymorphic arguments to a function into a virtual function table would reduce the runtime overhead of polymorphic calls is an open research question. 126 126 127 Since bare polymorphic types do not provide a great range of available operations, \CFA alsoprovides a \emph{type assertion} mechanism to provide further information about a type:127 Since bare polymorphic types do not provide a great range of available operations, \CFA provides a \emph{type assertion} mechanism to provide further information about a type: 128 128 \begin{lstlisting} 129 129 forall(otype T ®| { T twice(T); }®) … … 137 137 \end{lstlisting} 138 138 These type assertions may be either variable or function declarations that depend on a polymorphic type variable. 139 ©four_times© can only be called with an argument for which there exists a function named ©twice© that can take that argument and return another value of the same type; a pointer to the appropriate ©twice© function is passed as an additional implicit parameter to the call to©four_times©.139 ©four_times© can only be called with an argument for which there exists a function named ©twice© that can take that argument and return another value of the same type; a pointer to the appropriate ©twice© function is passed as an additional implicit parameter to the call of ©four_times©. 140 140 141 141 Monomorphic specializations of polymorphic functions can themselves be used to satisfy type assertions. … … 148 148 The compiler accomplishes this by creating a wrapper function calling ©twice // (2)© with ©S© bound to ©double©, then providing this wrapper function to ©four_times©\footnote{©twice // (2)© could also have had a type parameter named ©T©; \CFA specifies renaming of the type parameters, which would avoid the name conflict with the type variable ©T© of ©four_times©.}. 149 149 150 Finding appropriate functions to satisfy type assertions is essentially a recursive case of expression resolution, as it takes a name (that of the type assertion) and attempts to match it to a suitable declaration in the current scope.150 Finding appropriate functions to satisfy type assertions is essentially a recursive case of expression resolution, as it takes a name (that of the type assertion) and attempts to match it to a suitable declaration \emph{in the current scope}. 151 151 If a polymorphic function can be used to satisfy one of its own type assertions, this recursion may not terminate, as it is possible that function is examined as a candidate for its own type assertion unboundedly repeatedly. 152 152 To avoid infinite loops, the current CFA compiler imposes a fixed limit on the possible depth of recursion, similar to that employed by most \CC compilers for template expansion; this restriction means that there are some semantically well-typed expressions that cannot be resolved by CFA. … … 170 170 forall(otype M | has_magnitude(M)) 171 171 M max_magnitude( M a, M b ) { 172 M aa = abs(a), ab = abs(b); 173 return aa < ab ? b : a; 172 return abs(a) < abs(b) ? b : a; 174 173 } 175 174 \end{lstlisting} 176 175 177 176 Semantically, traits are simply a named lists of type assertions, but they may be used for many of the same purposes that interfaces in Java or abstract base classes in \CC are used for. 178 Unlike Java interfaces or \CC base classes, \CFA types do not explicitly state any inheritance relationship to traits they satisfy; this can be considered a form of structural inheritance, similar to i nterface implementationin Go, as opposed to the nominal inheritance model of Java and \CC.177 Unlike Java interfaces or \CC base classes, \CFA types do not explicitly state any inheritance relationship to traits they satisfy; this can be considered a form of structural inheritance, similar to implementation of an interface in Go, as opposed to the nominal inheritance model of Java and \CC. 179 178 Nominal inheritance can be simulated with traits using marker variables or functions: 180 179 \begin{lstlisting} … … 190 189 \end{lstlisting} 191 190 192 Traits, however, are significantly more powerful than nominal-inheritance interfaces; firstly, due to the scoping rules of the declarations whichsatisfy a trait's type assertions, a type may not satisfy a trait everywhere that the type is declared, as with ©char© and the ©nominal© trait above.193 Secondly, traits may be used to declare a relationship between multiple types, a property whichmay be difficult or impossible to represent in nominal-inheritance type systems:191 Traits, however, are significantly more powerful than nominal-inheritance interfaces; firstly, due to the scoping rules of the declarations that satisfy a trait's type assertions, a type may not satisfy a trait everywhere that the type is declared, as with ©char© and the ©nominal© trait above. 192 Secondly, traits may be used to declare a relationship among multiple types, a property that may be difficult or impossible to represent in nominal-inheritance type systems: 194 193 \begin{lstlisting} 195 194 trait pointer_like(®otype Ptr, otype El®) { … … 202 201 }; 203 202 204 typedef list *list_iterator;203 typedef list *list_iterator; 205 204 206 205 lvalue int *?( list_iterator it ) { … … 209 208 \end{lstlisting} 210 209 211 In the example above, ©(list_iterator, int)© satisfies ©pointer_like© by the given function, and ©(list_iterator, list)© also satisfies ©pointer_like© by the built-in pointer dereference operator. 210 In the example above, ©(list_iterator, int)© satisfies ©pointer_like© by the user-defined dereference function, and ©(list_iterator, list)© also satisfies ©pointer_like© by the built-in dereference operator for pointers. 211 Given a declaration ©list_iterator it©, ©*it© can be either an ©int© or a ©list©, with the meaning disambiguated by context (\eg ©int x = *it;© interprets ©*it© as an ©int©, while ©(*it).value = 42;© interprets ©*it© as a ©list©). 212 212 While a nominal-inheritance system with associated types could model one of those two relationships by making ©El© an associated type of ©Ptr© in the ©pointer_like© implementation, few such systems could model both relationships simultaneously. 213 213 214 The flexibility of \CFA's implicit trait 215 The ability of types to begin to or cease to satisfy traits when declarations go into or out of scope makes caching of trait satisfaction judgements difficult, and the ability of traits to take multiple type parameters c ouldlead to a combinatorial explosion of work in any attempt to pre-compute trait satisfaction relationships.214 The flexibility of \CFA's implicit trait-satisfaction mechanism provides programmers with a great deal of power, but also blocks some optimization approaches for expression resolution. 215 The ability of types to begin to or cease to satisfy traits when declarations go into or out of scope makes caching of trait satisfaction judgements difficult, and the ability of traits to take multiple type parameters can lead to a combinatorial explosion of work in any attempt to pre-compute trait satisfaction relationships. 216 216 On the other hand, the addition of a nominal inheritance mechanism to \CFA's type system or replacement of \CFA's trait satisfaction system with a more object-oriented inheritance model and investigation of possible expression resolution optimizations for such a system may be an interesting avenue of further research. 217 217 218 218 \subsection{Name Overloading} 219 219 In C, no more than one variable or function in the same scope may share the same name\footnote{Technically, C has multiple separated namespaces, one holding ©struct©, ©union©, and ©enum© tags, one holding labels, one holding typedef names, variable, function, and enumerator identifiers, and one for each ©struct© or ©union© type holding the field names.}, and variable or function declarations in inner scopes with the same name as a declaration in an outer scope hide the outer declaration. 220 This makes finding the proper declaration to match to a variable expression or function application a simple matter of symboltable lookup, which can be easily and efficiently implemented.220 This restriction makes finding the proper declaration to match to a variable expression or function application a simple matter of symbol-table lookup, which can be easily and efficiently implemented. 221 221 \CFA, on the other hand, allows overloading of variable and function names, so long as the overloaded declarations do not have the same type, avoiding the multiplication of variable and function names for different types common in the C standard library, as in the following example: 222 222 \begin{lstlisting} … … 229 229 double max = DBL_MAX; // (4) 230 230 231 max(7, -max); // uses (1) and (3), by matching int type of 7232 max(max, 3.14); // uses (2) and (4), by matching double type of 3.14231 max(7, -max); // uses (1) and (3), by matching int type of the constant 7 232 max(max, 3.14); // uses (2) and (4), by matching double type of the constant 3.14 233 233 234 234 max(max, -max); // ERROR: ambiguous 235 int m = max(max, -max); // uses (1) and (3) twice, byreturn type235 int m = max(max, -max); // uses (1) once and (3) twice, by matching return type 236 236 \end{lstlisting} 237 237 … … 239 239 240 240 \subsection{Implicit Conversions} 241 In addition to the multiple interpretations of an expression produced by name overloading, \CFA also supports all of the implicit conversions present in C, producing further candidate interpretations for expressions.242 C does not have a traditionally-definedinheritance hierarchy of types, but the C standard's rules for the ``usual arithmetic conversions'' define which of the built-in types are implicitly convertable to which other types, and the relative cost of any pair of such conversions from a single source type.243 \CFA adds to the usual arithmetic conversions rules for determining the cost of binding a polymorphic type variable in a function call; such bindings are cheaper than any \emph{unsafe} (narrowing) conversion, \eg ©int© to ©char©, but more expensive than any \emph{safe} (widening) conversion, \eg ©int© to ©double©.244 245 The expression resolution problem, then, is to find the unique minimal-cost interpretation of each expression in the program, where all identifiers must be matched to a declaration and implicit conversions or polymorphic bindings of the result of an expression may increase the cost of the expression.241 In addition to the multiple interpretations of an expression produced by name overloading, \CFA must support all of the implicit conversions present in C for backward compatibility, producing further candidate interpretations for expressions. 242 C does not have a inheritance hierarchy of types, but the C standard's rules for the ``usual arithmetic conversions'' define which of the built-in types are implicitly convertable to which other types, and the relative cost of any pair of such conversions from a single source type. 243 \CFA adds to the usual arithmetic conversions rules defining the cost of binding a polymorphic type variable in a function call; such bindings are cheaper than any \emph{unsafe} (narrowing) conversion, \eg ©int© to ©char©, but more expensive than any \emph{safe} (widening) conversion, \eg ©int© to ©double©. 244 245 The expression resolution problem, then, is to find the unique minimal-cost interpretation of each expression in the program, where all identifiers must be matched to a declaration, and implicit conversions or polymorphic bindings of the result of an expression may increase the cost of the expression. 246 246 Note that which subexpression interpretation is minimal-cost may require contextual information to disambiguate. 247 For instance, in the example in the previous subsection, ©max(max, -max)© cannot be unambiguously resolved, but ©int m = max(max, -max) ;© has a single minimal-cost resolution.248 ©int m = (int)max((double)max, -(double)max)© is also be a valid interpretation, but is not minimal-cost due to the unsafe cast from the ©double© result of ©max© to ©int© (the two ©double© casts function as type ascriptions selecting ©double max© rather than casts from ©int max© to ©double©, and as such are zero-cost).247 For instance, in the example in the previous subsection, ©max(max, -max)© cannot be unambiguously resolved, but ©int m = max(max, -max)© has a single minimal-cost resolution. 248 While the interpretation ©int m = (int)max((double)max, -(double)max)© is also a valid interpretation, it is not minimal-cost due to the unsafe cast from the ©double© result of ©max© to ©int© (the two ©double© casts function as type ascriptions selecting ©double max© rather than casts from ©int max© to ©double©, and as such are zero-cost). 249 249 250 250 \subsubsection{User-generated Implicit Conversions} … … 252 252 Such a conversion system should be simple for programmers to utilize, and fit naturally with the existing design of implicit conversions in C; ideally it would also be sufficiently powerful to encode C's usual arithmetic conversions itself, so that \CFA only has one set of rules for conversions. 253 253 254 Ditchfield~\cite{Ditchfield:conversions} haslaid out a framework for using polymorphic-conversion-constructor functions to create a directed acyclic graph (DAG) of conversions.254 Ditchfield~\cite{Ditchfield:conversions} laid out a framework for using polymorphic-conversion-constructor functions to create a directed acyclic graph (DAG) of conversions. 255 255 A monomorphic variant of these functions can be used to mark a conversion arc in the DAG as only usable as the final step in a conversion. 256 With these two types of conversion arcs, separate DAGs can be created for the safe and the unsafe conversions, and conversion cost can be represented as path length through the DAG.256 With these two types of conversion arcs, separate DAGs can be created for the safe and the unsafe conversions, and conversion cost can be represented the length of the shortest path through the DAG from one type to another. 257 257 \begin{figure}[h] 258 258 \centering 259 259 \includegraphics{conversion_dag} 260 \caption{A portion of the implicit conversion DAG for built-in types.} 260 \caption{A portion of the implicit conversion DAG for built-in types.}\label{fig:conv_dag} 261 261 \end{figure} 262 As can be seen in the example DAG above, there are either safe or unsafe paths between each of the arithmetic types listed; the ``final'' arcs are important both to avoid creating cycles in the signed-unsigned conversions, and to disambiguate potential diamond conversions (\eg, if the ©int© to ©unsigned int© conversion was not marked final there would be two length-two paths from ©int© to ©unsigned long©, and it would beimpossible to choose which one; however, since the ©unsigned int© to ©unsigned long© arc can not be traversed after the final ©int© to ©unsigned int© arc, there is a single unambiguous conversion path from ©int© to ©unsigned long©).262 As can be seen in Figure~\ref{fig:conv_dag}, there are either safe or unsafe paths between each of the arithmetic types listed; the ``final'' arcs are important both to avoid creating cycles in the signed-unsigned conversions, and to disambiguate potential diamond conversions (\eg, if the ©int© to ©unsigned int© conversion was not marked final there would be two length-two paths from ©int© to ©unsigned long©, making it impossible to choose which one; however, since the ©unsigned int© to ©unsigned long© arc can not be traversed after the final ©int© to ©unsigned int© arc, there is a single unambiguous conversion path from ©int© to ©unsigned long©). 263 263 264 264 Open research questions on this topic include: 265 265 \begin{itemize} 266 266 \item Can a conversion graph be generated that represents each allowable conversion in C with a unique minimal-length path such that the path lengths accurately represent the relative costs of the conversions? 267 \item Can such a graph representation canbe usefully augmented to include user-defined types as well as built-in types?268 \item Can the graph canbe efficiently represented and used in the expression resolver?267 \item Can such a graph representation be usefully augmented to include user-defined types as well as built-in types? 268 \item Can the graph be efficiently represented and used in the expression resolver? 269 269 \end{itemize} 270 270 271 271 \subsection{Constructors and Destructors} 272 272 Rob Shluntz, a current member of the \CFA research team, has added constructors and destructors to \CFA. 273 Each type has an overridable default-generated zero-argument constructor, copy constructor, assignment operator, and destructor; for ©struct© types these functions each call their equivalents on each field of the ©struct©. 274 This affects expression resolution because an ©otype© type variable ©T© implicitly adds four type assertions, one for each of these four functions, so assertion resolution is pervasive in \CFA polymorphic functions, even those without any explicit type assertions. 273 Each type has an overridable default-generated zero-argument constructor, copy constructor, assignment operator, and destructor. 274 For ©struct© types these functions each call their equivalents on each field of the ©struct©. 275 This feature affects expression resolution because an ©otype© type variable ©T© implicitly adds four type assertions, one for each of these four functions, so assertion resolution is pervasive in \CFA polymorphic functions, even those without any explicit type assertions. 275 276 The following example shows the implicitly-generated code in green: 276 277 \begin{lstlisting} … … 280 281 }; 281 282 282 ¢void ?{}(kv *this) { 283 ?{}(& this->key);284 ?{}(& this->value);285 } 286 void ?{}(kv *this, kv that) { 287 ?{}(& this->key, that.key);288 ?{}(& this->value, that.value);289 } 290 kv ?=?(kv *this, kv that) { 291 ?=?(& this->key, that.key);292 ?=?(& this->value, that.value);283 ¢void ?{}(kv *this) { // default constructor 284 ?{}(&(this->key)); // call recursively on members 285 ?{}(&(this->value)); 286 } 287 void ?{}(kv *this, kv that) { // copy constructor 288 ?{}(&(this->key), that.key); 289 ?{}(&(this->value), that.value); 290 } 291 kv ?=?(kv *this, kv that) { // assignment operator 292 ?=?(&(this->key), that.key); 293 ?=?(&(this->value), that.value); 293 294 return *this; 294 295 } 295 void ^?{}(kv *this) { 296 ^?{}(& this->key);297 ^?{}(& this->value);296 void ^?{}(kv *this) { // destructor 297 ^?{}(&(this->key)); 298 ^?{}(&(this->value)); 298 299 }¢ 299 300 … … 335 336 \begin{itemize} 336 337 \item Since there is an implicit conversion from ©void*© to any pointer type, the highlighted expression can be interpreted as either a ©void*©, matching ©f // (1)©, or a ©box(S)*© for some type ©S©, matching ©f // (2)©. 337 \item To determine the cost of the ©box(S)© interpretation, a type must be found for ©S© whichsatisfies the ©otype© implicit type assertions (assignment operator, default and copy constructors, and destructor); one option is ©box(S2)© for some type ©S2©.338 \item To determine the cost of the ©box(S)© interpretation, a type must be found for ©S© that satisfies the ©otype© implicit type assertions (assignment operator, default and copy constructors, and destructor); one option is ©box(S2)© for some type ©S2©. 338 339 \item The assignment operator, default and copy constructors, and destructor of ©box(T)© are also polymorphic functions, each of which require the type parameter ©T© to have an assignment operator, default and copy constructors, and destructor. When choosing an interpretation for ©S2©, one option is ©box(S3)©, for some type ©S3©. 339 340 \item The previous step repeats until stopped, with four times as much work performed at each step. 340 341 \end{itemize} 341 This problem can occur in any resolution context where a polymorphic function that can satisfy its own type assertions is required for a possible interpretation of an expression with no constraints on its type, and is thus not limited to combinations of generic types with ©void*© conversions, though constructors for generic types often satisfy their own assertions and a polymorphic conversion such as the ©void*© conversion to a polymorphic variable can create an expression with no constraints on its type. 342 This problem can occur in any resolution context where a polymorphic function can satisfy its own type assertions is required for a possible interpretation of an expression with no constraints on its type, and is thus not limited to combinations of generic types with ©void*© conversions. 343 However, constructors for generic types often satisfy their own assertions and a polymorphic conversion such as the ©void*© conversion to a polymorphic variable is a common way to create an expression with no constraints on its type. 342 344 As discussed above, the \CFA expression resolver must handle this possible infinite recursion somehow, and it occurs fairly naturally in code like the above that uses generic types. 343 345 … … 345 347 \CFA adds \emph{tuple types} to C, a syntactic facility for referring to lists of values anonymously or with a single identifier. 346 348 An identifier may name a tuple, and a function may return one. 347 Particularly relevantly for resolution, a tuple may be implicitly \emph{destructured} into a list of values, as in the call to ©swap© below:348 \begin{lstlisting} 349 [char, char] x = [ '!', '?' ]; 350 int x = 42; 351 352 forall(otype T) [T, T] swap( T a, T b ) { return [b, a]; } 349 Particularly relevantly for resolution, a tuple may be implicitly \emph{destructured} into a list of values, as in the call to ©swap©: 350 \begin{lstlisting} 351 [char, char] x = [ '!', '?' ]; // (1) 352 int x = 42; // (2) 353 354 forall(otype T) [T, T] swap( T a, T b ) { return [b, a]; } // (3) 353 355 354 356 x = swap( x ); // destructure [char, char] x into two elements of parameter list 355 357 // cannot use int x for parameter, not enough arguments to swap 356 \end{lstlisting} 357 Tuple destructuring means that the mapping from the position of a subexpression in the argument list to the position of a paramter in the function declaration is not straightforward, as some arguments may be expandable to different numbers of parameters, like ©x© above. 358 359 void swap( int, char, char ); // (4) 360 361 swap( x, x ); // resolved as (4) on (2) and (1) 362 // (3) on (2) and (2) is close, but the polymorphic binding makes it not minimal-cost 363 \end{lstlisting} 364 Tuple destructuring means that the mapping from the position of a subexpression in the argument list to the position of a paramter in the function declaration is not straightforward, as some arguments may be expandable to different numbers of parameters, like ©x© above. 365 In the second example, the second ©x© argument can be resolved starting at the second or third parameter of ©swap©, depending which interpretation of ©x© was chosen for the first argument. 358 366 359 367 \subsection{Reference Types} 360 368 I have been designing \emph{reference types} for \CFA, in collaboration with the rest of the \CFA research team. 361 369 Given some type ©T©, a ©T&© (``reference to ©T©'') is essentially an automatically dereferenced pointer; with these semantics most of the C standard's discussions of lvalues can be expressed in terms of references instead, with the benefit of being able to express the difference between the reference and non-reference version of a type in user code. 362 References preserve C's existing qualifier-dropping lvalue-to-rvalue conversion (\eg a ©const volatile int&© can be implicitly converted to a bare ©int©); the reference proposal also adds a rvalue-to-lvalue conversion to \CFA, implemented by storing the value in a new compiler-generated temporary and passing a reference to the temporary. 363 These two conversions can chain, producing a qualifier-dropping conversion for references, for instance converting a reference to a ©const int© into a reference to a non-©const int© by copying the originally refered to value into a fresh temporary and taking a reference to this temporary, as below: 370 References preserve C's existing qualifier-dropping lvalue-to-rvalue conversion (\eg a ©const volatile int&© can be implicitly converted to a bare ©int©). 371 The reference proposal also adds a rvalue-to-lvalue conversion to \CFA, implemented by storing the value in a new compiler-generated temporary and passing a reference to the temporary. 372 These two conversions can chain, producing a qualifier-dropping conversion for references, for instance converting a reference to a ©const int© into a reference to a non-©const int© by copying the originally refered to value into a fresh temporary and taking a reference to this temporary, as in: 364 373 \begin{lstlisting} 365 374 const int magic = 42; … … 369 378 print_inc( magic ); // legal; implicitly generated code in green below: 370 379 371 ¢int tmp = magic;¢ // copiesto safely strip const-qualifier380 ¢int tmp = magic;¢ // to safely strip const-qualifier 372 381 ¢print_inc( tmp );¢ // tmp is incremented, magic is unchanged 373 382 \end{lstlisting} 374 These reference conversions may also chain with the other implicit type 375 The main implication of th is for expression resolution is the multiplication of available implicit conversions, though in a restricted context that may be able to be treated efficiently as a special case.383 These reference conversions may also chain with the other implicit type-conversions. 384 The main implication of the reference conversions for expression resolution is the multiplication of available implicit conversions, though given the restricted context reference conversions may be able to be treated efficiently as a special case of implicit conversions. 376 385 377 386 \subsection{Special Literal Types} 378 387 Another proposal currently under consideration for the \CFA type-system is assigning special types to the literal values ©0© and ©1©. 379 Implicit conversions from these types allow ©0© and ©1© to be considered as values of many different types, depending on context, allowing expression desugarings like ©if ( x ) {}© $\Rightarrow$ ©if ( x != 0 ) {}© to be implemented efficiently and preci cely.388 Implicit conversions from these types allow ©0© and ©1© to be considered as values of many different types, depending on context, allowing expression desugarings like ©if ( x ) {}© $\Rightarrow$ ©if ( x != 0 ) {}© to be implemented efficiently and precisely. 380 389 This approach is a generalization of C's existing behaviour of treating ©0© as either an integer zero or a null pointer constant, and treating either of those values as boolean false. 381 390 The main implication for expression resolution is that the frequently encountered expressions ©0© and ©1© may have a large number of valid interpretations. … … 386 395 int somefn(char) = delete; 387 396 \end{lstlisting} 388 This feature is typically used in \CCeleven to make a type non-copyable by deleting its copy constructor and assignment operator , or forbidding some interpretations of a polymorphic function by specifically deleting the forbidden overloads.389 To add a similar feature to \CFA would involve including the deleted function declarations in expression resolution along with the normal declarations, but producing a compiler error if the deleted function was the best resolution.397 This feature is typically used in \CCeleven to make a type non-copyable by deleting its copy constructor and assignment operator\footnote{In previous versions of \CC a type could be made non-copyable by declaring a private copy constructor and assignment operator, but not defining either. This idiom is well-known, but depends on some rather subtle and \CC-specific rules about private members and implicitly-generated functions; the deleted-function form is both clearer and less verbose.}, or forbidding some interpretations of a polymorphic function by specifically deleting the forbidden overloads\footnote{Specific polymorphic function overloads can also be forbidden in previous \CC versions through use of template metaprogramming techniques, though this advanced usage is beyond the skills of many programmers. A similar effect can be produced on an ad-hoc basis at the appropriate call sites through use of casts to determine the function type. In both cases, the deleted-function form is clearer and more concise.}. 398 To add a similar feature to \CFA involves including the deleted function declarations in expression resolution along with the normal declarations, but producing a compiler error if the deleted function is the best resolution. 390 399 How conflicts should be handled between resolution of an expression to both a deleted and a non-deleted function is a small but open research question. 391 400 … … 404 413 %TODO: look up and lit review 405 414 The second area of investigation is minimizing dependencies between argument-parameter matches; the current CFA compiler attempts to match entire argument combinations against functions at once, potentially attempting to match the same argument against the same parameter multiple times. 406 Whether the feature set of \CFA admits an expression resolution algorithm where arguments can be matched to parameters independently of other arguments in the same function application is an area of open research; polymorphic type paramters produce enough of a cross-argument dependencythat the problem is not trivial.415 Whether the feature set of \CFA admits an expression resolution algorithm where arguments can be matched to parameters independently of other arguments in the same function application is an area of open research; polymorphic type paramters produce enough cross-argument dependencies that the problem is not trivial. 407 416 If cross-argument resolution dependencies cannot be completely eliminated, effective caching strategies to reduce duplicated work between equivalent argument-parameter matches in different combinations may mitigate the asymptotic defecits of the whole-combination matching approach. 408 417 The final area of investigation is heuristics and algorithmic approaches to reduce the number of argument interpretations considered in the common case; if argument-parameter matches cannot be made independent, even small reductions in $i$ should yield significant reductions in the $i^{p+1}$ resolver runtime factor. … … 412 421 413 422 \subsection{Argument-Parameter Matching} 414 The first axis for consideration is argument-parameter matching direction --- whether the type matching for a candidate function to a set of candidate arguments is directed by the argument types or the parameter types.423 The first axis for consideration is the argument-parameter matching direction --- whether the type matching for a candidate function to a set of candidate arguments is directed by the argument types or the parameter types. 415 424 For programming languages without implicit conversions, argument-parameter matching is essentially the entirety of the expression resolution problem, and is generally referred to as ``overload resolution'' in the literature. 416 All expression resolution algorithms form a DAG of interpretations, some explicitly, some implicitly; in this DAG, arcs point from function-call interpretations to argument interpretations, as below:425 All expression-resolution algorithms form a DAG of interpretations, some explicitly, some implicitly; in this DAG, arcs point from function-call interpretations to argument interpretations, as in Figure~\ref{fig:res_dag}: 417 426 \begin{figure}[h] 418 427 \centering … … 433 442 \end{figure} 434 443 435 Note that some interpretations may be part of more than one super-interpretation, as with $p_i$ in the bottom row, while some valid subexpression interpretations, like $f_d$ in the middle row, are not used in any interpretation of their containingexpression.444 Note that some interpretations may be part of more than one super-interpretation, as with the second $p_i$ in the bottom row, while some valid subexpression interpretations, like $f_d$ in the middle row, are not used in any interpretation of their superexpression. 436 445 437 446 \subsubsection{Argument-directed (Bottom-up)} … … 451 460 A reasonable hybrid approach might take a top-down approach when the expression to be matched has a fixed type, and a bottom-up approach in untyped contexts. 452 461 This approach may involve switching from one type to another at different levels of the expression tree. 453 For instance :462 For instance, in: 454 463 \begin{lstlisting} 455 464 forall(otype T) … … 460 469 int x = f( f( '!' ) ); 461 470 \end{lstlisting} 462 The outer call to ©f© must have a return type that is (implicitly convertable to) ©int©, so a top-down approach is used to select \textit{(1)} as the proper interpretation of ©f©. \textit{(1)}'s parameter ©x©, however, is an unbound type variable, and can thus take a value of any complete type, providing no guidance for the choice of candidate for the inner call to ©f©. The leaf expression ©'!'©, however, determines a zero-cost interpretation of the inner ©f© as \textit{(2)}, providing a minimal-cost expression resolution where ©T© is bound to ©void*©. 463 464 Deciding when to switch between bottom-up and top-down resolution to minimize wasted work in a hybrid algorithm is a necessarily heuristic process, and though finding good heuristics for which subexpressions to swich matching strategies on is an open question, one reasonable approach might be to set a threshold $t$ for the number of candidate functions, and to use top-down resolution for any subexpression with fewer than $t$ candidate functions, to minimize the number of unmatchable argument interpretations computed, but to use bottom-up resolution for any subexpression with at least $t$ candidate functions, to reduce duplication in argument interpretation computation between the different candidate functions. 471 the outer call to ©f© must have a return type that is (implicitly convertable to) ©int©, so a top-down approach is used to select \textit{(1)} as the proper interpretation of ©f©. \textit{(1)}'s parameter ©x©, however, is an unbound type variable, and can thus take a value of any complete type, providing no guidance for the choice of candidate for the inner call to ©f©. The leaf expression ©'!'©, however, determines a zero-cost interpretation of the inner ©f© as \textit{(2)}, providing a minimal-cost expression resolution where ©T© is bound to ©void*©. 472 473 Deciding when to switch between bottom-up and top-down resolution to minimize wasted work in a hybrid algorithm is a necessarily heuristic process, and finding good heuristics for which subexpressions to swich matching strategies on is an open question. 474 One reasonable approach might be to set a threshold $t$ for the number of candidate functions, and to use top-down resolution for any subexpression with fewer than $t$ candidate functions, to minimize the number of unmatchable argument interpretations computed, but to use bottom-up resolution for any subexpression with at least $t$ candidate functions, to reduce duplication in argument interpretation computation between the different candidate functions. 465 475 466 476 Ganzinger and Ripken~\cite{Ganzinger80} propose an approach (later refined by Pennello~\etal~\cite{Pennello80}) that uses a top-down filtering pass followed by a bottom-up filtering pass to reduce the number of candidate interpretations; they prove that for the Ada programming language a small number of such iterations is sufficient to converge to a solution for the expression resolution problem. 467 477 Persch~\etal~\cite{PW:overload} developed a similar two-pass approach where the bottom-up pass is followed by the top-down pass. 468 These algorithms differ from the hybrid approach under investigation in that they take multiple passes over the expression tree to yield a solution, and also in that theyapply both filtering heuristics to all expression nodes; \CFA's polymorphic functions and implicit conversions make the approach of filtering out invalid types taken by all of these algorithms infeasible.478 These algorithms differ from the hybrid approach under investigation in that they take multiple passes over the expression tree to yield a solution, and that they also apply both filtering heuristics to all expression nodes; \CFA's polymorphic functions and implicit conversions make the approach of filtering out invalid types taken by all of these algorithms infeasible. 469 479 470 480 \subsubsection{Common Subexpression Caching} … … 480 490 \CC~\cite{ANSI98:C++} includes both name overloading and implicit conversions in its expression resolution specification, though unlike \CFA it does complete type-checking on a generated monomorphization of template functions, where \CFA simply checks a list of type constraints. 481 491 The upcoming Concepts standard~\cite{C++concepts} defines a system of type constraints similar in principle to \CFA's. 482 Cormack and Wright~\cite{Cormack90} present an algorithm whichintegrates overload resolution with a polymorphic type inference approach very similar to \CFA's.492 Cormack and Wright~\cite{Cormack90} present an algorithm that integrates overload resolution with a polymorphic type inference approach very similar to \CFA's. 483 493 However, their algorithm does not account for implicit conversions other than polymorphic type binding and their discussion of their overload resolution algorithm is not sufficiently detailed to classify it with the other argument-parameter matching approaches\footnote{Their overload resolution algorithm is possibly a variant of Ganzinger and Ripken~\cite{Ganzinger80} or Pennello~\etal~\cite{Pennello80}, modified to allow for polymorphic type binding.}. 484 494 … … 486 496 Bilson does account for implicit conversions in his algorithm, but it is unclear if the approach is optimal. 487 497 His algorithm integrates checking for valid implicit conversions into the argument-parameter-matching step, essentially trading more expensive matching for a smaller number of argument interpretations. 488 This approach may result in the same subexpression being checked for a type match with the same type multiple times, though again memoization may mitigate this cost, and this approach does not generate implicit conversions that are not useful to match the containing function. 489 Calculating implicit conversions on parameters pairs naturally with a top-down approach to expression resolution, though it can also be used in a bottom-up approach, as Bilson demonstrates. 498 This approach may result in the same subexpression being checked for a type match with the same type multiple times, though again memoization may mitigate this cost; however, this approach does not generate implicit conversions that are not useful to match the containing function. 490 499 491 500 \subsubsection{On Arguments} 492 501 Another approach is to generate a set of possible implicit conversions for each set of interpretations of a given argument. 493 502 This approach has the benefit of detecting ambiguous interpretations of arguments at the level of the argument rather than its containing call, never finds more than one interpretation of the argument with a given type, and re-uses calculation of implicit conversions between function candidates. 494 On the other hand, this approach may unncessarily generate argument interpretations that never match any parameter, wasting work. 495 Further, in the presence of tuple types this approach may lead to a combinatorial explosion of argument interpretations considered, unless the tuple can be considered as a sequence of elements rather than a unified whole. 496 Calculating implicit conversions on arguments is a viable approach for bottom-up expression resolution, though it may be difficult to apply in a top-down approach due to the presence of a target type for the expression interpretation. 503 On the other hand, this approach may unnecessarily generate argument interpretations that never match any parameter, wasting work. 504 Furthermore, in the presence of tuple types, this approach may lead to a combinatorial explosion of argument interpretations considered, unless the tuple can be considered as a sequence of elements rather than a unified whole. 497 505 498 506 \subsection{Candidate Set Generation} 499 All the algorithms discussed to this point generate the complete set of candidate argument interpretations before attempting to match the containing function 500 However, given that the top-level expression interpretation that is ultimately chosen is the minimal-cost valid interpretation, any consideration of non-minimal-cost interpretations is in some sensewasted work.501 Under the assumption that thatprogrammers generally write function calls with relatively low-cost interpretations, a possible work-saving heuristic is to generate only the lowest-cost argument interpretations first, attempt to find a valid top-level interpretation using them, and only if that fails generate the next higher-cost argument interpretations.507 All the algorithms discussed to this point generate the complete set of candidate argument interpretations before attempting to match the containing function-call expression. 508 However, given that the top-level expression interpretation that is ultimately chosen is the minimal-cost valid interpretation, any consideration of non-minimal-cost interpretations is wasted work. 509 Under the assumption that programmers generally write function calls with relatively low-cost interpretations, a possible work-saving heuristic is to generate only the lowest-cost argument interpretations first, attempt to find a valid top-level interpretation using them, and only if that fails generate the next higher-cost argument interpretations. 502 510 503 511 \subsubsection{Eager} … … 563 571 This comparison closes Baker's open research question, as well as potentially improving Bilson's \CFA compiler. 564 572 565 Rather than testing all of these algorithms in-place in the \CFA compiler, a resolver prototype is being developed whichacts on a simplified input language encapsulating the essential details of the \CFA type-system\footnote{Note this simplified input language is not a usable programming language.}.573 Rather than testing all of these algorithms in-place in the \CFA compiler, a resolver prototype is being developed that acts on a simplified input language encapsulating the essential details of the \CFA type-system\footnote{Note this simplified input language is not a usable programming language.}. 566 574 Multiple variants of this resolver prototype will be implemented, each encapsulating a different expression resolution variant, sharing as much code as feasible. 567 575 These variants will be instrumented to test runtime performance, and run on a variety of input files; the input files may be generated programmatically or from exisiting code in \CFA or similar languages. … … 571 579 As an example, there are currently multiple open proposals for how implicit conversions should interact with polymorphic type binding in \CFA, each with distinct levels of expressive power; if the resolver prototype is modified to support each proposal, the optimal algorithm for each proposal can be compared, providing an empirical demonstration of the trade-off between expressive power and compiler runtime. 572 580 573 This proposed project should provide valuable data on how to implement a performant compiler for modernprogramming languages such as \CFA with powerful static type-systems, specifically targeting the feature interaction between name overloading and implicit conversions.581 This proposed project should provide valuable data on how to implement a performant compiler for programming languages such as \CFA with powerful static type-systems, specifically targeting the feature interaction between name overloading and implicit conversions. 574 582 This work is not limited in applicability to \CFA, but may also be useful for supporting efficient compilation of the upcoming Concepts standard~\cite{C++concepts} for \CC template constraints, for instance. 575 583 -
src/Parser/DeclarationNode.cc
re6955b1 r80722d0 300 300 newnode->type->array->dimension = size; 301 301 newnode->type->array->isStatic = isStatic; 302 if ( newnode->type->array->dimension == 0 || dynamic_cast< ConstantExpr * >( newnode->type->array->dimension->build()) ) {302 if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) { 303 303 newnode->type->array->isVarLen = false; 304 304 } else { … … 776 776 } // if 777 777 } // if 778 delete o; 778 779 return o; 779 780 } -
src/Parser/ExpressionNode.cc
re6955b1 r80722d0 57 57 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; } 58 58 59 Expression *build_constantInteger( std::string & str ) {59 Expression *build_constantInteger( const std::string & str ) { 60 60 static const BasicType::Kind kind[2][3] = { 61 61 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt }, … … 123 123 } // build_constantInteger 124 124 125 Expression *build_constantFloat( std::string & str ) {125 Expression *build_constantFloat( const std::string & str ) { 126 126 static const BasicType::Kind kind[2][3] = { 127 127 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, … … 153 153 } // build_constantFloat 154 154 155 Expression *build_constantChar( std::string & str ) {155 Expression *build_constantChar( const std::string & str ) { 156 156 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ); 157 157 } // build_constantChar 158 158 159 ConstantExpr *build_constantStr( std::string & str ) {159 ConstantExpr *build_constantStr( const std::string & str ) { 160 160 // string should probably be a primitive type 161 161 ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ), … … 213 213 } 214 214 Expression *build_sizeOftype( DeclarationNode *decl_node ) { 215 return new SizeofExpr( decl_node->buildType() ); 215 Expression* ret = new SizeofExpr( decl_node->buildType() ); 216 delete decl_node; 217 return ret; 216 218 } 217 219 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { … … 222 224 } 223 225 Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) { 224 return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() ); 226 Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() ); 227 delete decl_node; 228 delete member; 229 return ret; 225 230 } 226 231 -
src/Parser/ParseNode.h
re6955b1 r80722d0 103 103 //############################################################################## 104 104 105 class ExpressionNode : public ParseNode {105 class ExpressionNode final : public ParseNode { 106 106 public: 107 107 ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {} … … 114 114 ExpressionNode *set_extension( bool exten ) { extension = exten; return this; } 115 115 116 virtual void print( std::ostream &os, int indent = 0 ) const {} 117 virtual void printOneLine( std::ostream &os, int indent = 0 ) const {} 118 119 virtual Expression *build() const { return expr; } 116 void print( std::ostream &os, int indent = 0 ) const {} 117 void printOneLine( std::ostream &os, int indent = 0 ) const {} 118 119 template<typename T> 120 bool isExpressionType() const { 121 return nullptr != dynamic_cast<T>(expr.get()); 122 } 123 124 Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); } 120 125 private: 121 126 bool extension = false; 122 Expression *expr;127 std::unique_ptr<Expression> expr; 123 128 }; 124 129 … … 151 156 }; 152 157 153 Expression *build_constantInteger( std::string &str );154 Expression *build_constantFloat( std::string &str );155 Expression *build_constantChar( std::string &str );156 ConstantExpr *build_constantStr( std::string &str );158 Expression *build_constantInteger( const std::string &str ); 159 Expression *build_constantFloat( const std::string &str ); 160 Expression *build_constantChar( const std::string &str ); 161 ConstantExpr *build_constantStr( const std::string &str ); 157 162 158 163 NameExpr *build_varref( const std::string *name, bool labelp = false ); … … 304 309 //############################################################################## 305 310 306 class StatementNode : public ParseNode {311 class StatementNode final : public ParseNode { 307 312 public: 308 313 StatementNode() { stmt = nullptr; } … … 311 316 virtual ~StatementNode() {} 312 317 313 virtual StatementNode *clone() const { assert( false ); return nullptr; }314 virtual Statement *build() const { return stmt; }318 virtual StatementNode *clone() const final { assert( false ); return nullptr; } 319 Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); } 315 320 316 321 virtual StatementNode *add_label( const std::string * name ) { 317 322 stmt->get_labels().emplace_back( *name ); 323 delete name; 318 324 return this; 319 325 } … … 324 330 virtual void printList( std::ostream &os, int indent = 0 ) {} 325 331 private: 326 Statement *stmt;332 std::unique_ptr<Statement> stmt; 327 333 }; // StatementNode 328 334 -
src/Parser/StatementNode.cc
re6955b1 r80722d0 44 44 agg = decl; 45 45 } // if 46 stmt = new DeclStmt( noLabels, maybeBuild< Declaration >(agg) );46 stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) ); 47 47 } else { 48 48 assert( false ); … … 56 56 StatementNode *node = dynamic_cast< StatementNode * >(curr); 57 57 assert( node ); 58 assert( dynamic_cast< CaseStmt * >(node->stmt ) );58 assert( dynamic_cast< CaseStmt * >(node->stmt.get()) ); 59 59 prev = curr; 60 60 } // for … … 64 64 buildMoveList( stmt, stmts ); 65 65 // splice any new Statements to end of current Statements 66 CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt );66 CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get()); 67 67 caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts ); 68 68 return this; … … 153 153 std::list< Expression * > exps; 154 154 buildMoveList( ctl, exps ); 155 return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true ); 155 assertf( exps.size() < 2, "This means we are leaking memory"); 156 return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true ); 156 157 } 157 158 -
src/Parser/parser.cc
re6955b1 r80722d0 1 /* A Bison parser, made by GNU Bison 2.5. */1 /* A Bison parser, made by GNU Bison 3.0.2. */ 2 2 3 3 /* Bison implementation for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2011Free Software Foundation, Inc.6 4 5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. 6 7 7 This program is free software: you can redistribute it and/or modify 8 8 it under the terms of the GNU General Public License as published by 9 9 the Free Software Foundation, either version 3 of the License, or 10 10 (at your option) any later version. 11 11 12 12 This program is distributed in the hope that it will be useful, 13 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 GNU General Public License for more details. 16 16 17 17 You should have received a copy of the GNU General Public License 18 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ … … 27 27 Bison output files to be licensed under the GNU General Public 28 28 License without this special exception. 29 29 30 30 This special exception was added by the Free Software Foundation in 31 31 version 2.2 of Bison. */ … … 45 45 46 46 /* Bison version. */ 47 #define YYBISON_VERSION " 2.5"47 #define YYBISON_VERSION "3.0.2" 48 48 49 49 /* Skeleton name. */ … … 59 59 #define YYPULL 1 60 60 61 /* Using locations. */62 #define YYLSP_NEEDED 063 61 64 62 65 63 66 64 /* Copy the first part of user declarations. */ 67 68 /* Line 268 of yacc.c */ 69 #line 42 "parser.yy" 65 #line 42 "parser.yy" /* yacc.c:339 */ 70 66 71 67 #define YYDEBUG_LEXER_TEXT (yylval) // lexer loads this up each time … … 94 90 } // appendStr 95 91 96 97 /* Line 268 of yacc.c */ 98 #line 99 "Parser/parser.cc" 99 100 /* Enabling traces. */ 101 #ifndef YYDEBUG 102 # define YYDEBUG 1 103 #endif 92 #line 93 "Parser/parser.cc" /* yacc.c:339 */ 93 94 # ifndef YY_NULLPTR 95 # if defined __cplusplus && 201103L <= __cplusplus 96 # define YY_NULLPTR nullptr 97 # else 98 # define YY_NULLPTR 0 99 # endif 100 # endif 104 101 105 102 /* Enabling verbose error messages. */ … … 111 108 #endif 112 109 113 /* Enabling the token table. */ 114 #ifndef YYTOKEN_TABLE 115 # define YYTOKEN_TABLE 0 110 /* In a future release of Bison, this section will be replaced 111 by #include "y.tab.h". */ 112 #ifndef YY_YY_Y_TAB_H_INCLUDED 113 # define YY_YY_Y_TAB_H_INCLUDED 114 /* Debug traces. */ 115 #ifndef YYDEBUG 116 # define YYDEBUG 1 116 117 #endif 117 118 119 /* Tokens. */ 118 #if YYDEBUG 119 extern int yydebug; 120 #endif 121 122 /* Token type. */ 120 123 #ifndef YYTOKENTYPE 121 124 # define YYTOKENTYPE 122 /* Put the tokens into the symbol table, so that GDB and other debuggers 123 know about them. */ 124 enum yytokentype { 125 TYPEDEF = 258, 126 AUTO = 259, 127 EXTERN = 260, 128 REGISTER = 261, 129 STATIC = 262, 130 INLINE = 263, 131 FORTRAN = 264, 132 CONST = 265, 133 VOLATILE = 266, 134 RESTRICT = 267, 135 FORALL = 268, 136 LVALUE = 269, 137 VOID = 270, 138 CHAR = 271, 139 SHORT = 272, 140 INT = 273, 141 LONG = 274, 142 FLOAT = 275, 143 DOUBLE = 276, 144 SIGNED = 277, 145 UNSIGNED = 278, 146 VALIST = 279, 147 BOOL = 280, 148 COMPLEX = 281, 149 IMAGINARY = 282, 150 TYPEOF = 283, 151 LABEL = 284, 152 ENUM = 285, 153 STRUCT = 286, 154 UNION = 287, 155 OTYPE = 288, 156 FTYPE = 289, 157 DTYPE = 290, 158 TRAIT = 291, 159 SIZEOF = 292, 160 OFFSETOF = 293, 161 ATTRIBUTE = 294, 162 EXTENSION = 295, 163 IF = 296, 164 ELSE = 297, 165 SWITCH = 298, 166 CASE = 299, 167 DEFAULT = 300, 168 DO = 301, 169 WHILE = 302, 170 FOR = 303, 171 BREAK = 304, 172 CONTINUE = 305, 173 GOTO = 306, 174 RETURN = 307, 175 CHOOSE = 308, 176 DISABLE = 309, 177 ENABLE = 310, 178 FALLTHRU = 311, 179 TRY = 312, 180 CATCH = 313, 181 CATCHRESUME = 314, 182 FINALLY = 315, 183 THROW = 316, 184 THROWRESUME = 317, 185 AT = 318, 186 ASM = 319, 187 ALIGNAS = 320, 188 ALIGNOF = 321, 189 ATOMIC = 322, 190 GENERIC = 323, 191 NORETURN = 324, 192 STATICASSERT = 325, 193 THREADLOCAL = 326, 194 IDENTIFIER = 327, 195 QUOTED_IDENTIFIER = 328, 196 TYPEDEFname = 329, 197 TYPEGENname = 330, 198 ATTR_IDENTIFIER = 331, 199 ATTR_TYPEDEFname = 332, 200 ATTR_TYPEGENname = 333, 201 INTEGERconstant = 334, 202 FLOATINGconstant = 335, 203 CHARACTERconstant = 336, 204 STRINGliteral = 337, 205 ZERO = 338, 206 ONE = 339, 207 ARROW = 340, 208 ICR = 341, 209 DECR = 342, 210 LS = 343, 211 RS = 344, 212 LE = 345, 213 GE = 346, 214 EQ = 347, 215 NE = 348, 216 ANDAND = 349, 217 OROR = 350, 218 ELLIPSIS = 351, 219 MULTassign = 352, 220 DIVassign = 353, 221 MODassign = 354, 222 PLUSassign = 355, 223 MINUSassign = 356, 224 LSassign = 357, 225 RSassign = 358, 226 ANDassign = 359, 227 ERassign = 360, 228 ORassign = 361, 229 ATassign = 362, 230 THEN = 363 231 }; 125 enum yytokentype 126 { 127 TYPEDEF = 258, 128 AUTO = 259, 129 EXTERN = 260, 130 REGISTER = 261, 131 STATIC = 262, 132 INLINE = 263, 133 FORTRAN = 264, 134 CONST = 265, 135 VOLATILE = 266, 136 RESTRICT = 267, 137 FORALL = 268, 138 LVALUE = 269, 139 VOID = 270, 140 CHAR = 271, 141 SHORT = 272, 142 INT = 273, 143 LONG = 274, 144 FLOAT = 275, 145 DOUBLE = 276, 146 SIGNED = 277, 147 UNSIGNED = 278, 148 VALIST = 279, 149 BOOL = 280, 150 COMPLEX = 281, 151 IMAGINARY = 282, 152 TYPEOF = 283, 153 LABEL = 284, 154 ENUM = 285, 155 STRUCT = 286, 156 UNION = 287, 157 OTYPE = 288, 158 FTYPE = 289, 159 DTYPE = 290, 160 TRAIT = 291, 161 SIZEOF = 292, 162 OFFSETOF = 293, 163 ATTRIBUTE = 294, 164 EXTENSION = 295, 165 IF = 296, 166 ELSE = 297, 167 SWITCH = 298, 168 CASE = 299, 169 DEFAULT = 300, 170 DO = 301, 171 WHILE = 302, 172 FOR = 303, 173 BREAK = 304, 174 CONTINUE = 305, 175 GOTO = 306, 176 RETURN = 307, 177 CHOOSE = 308, 178 DISABLE = 309, 179 ENABLE = 310, 180 FALLTHRU = 311, 181 TRY = 312, 182 CATCH = 313, 183 CATCHRESUME = 314, 184 FINALLY = 315, 185 THROW = 316, 186 THROWRESUME = 317, 187 AT = 318, 188 ASM = 319, 189 ALIGNAS = 320, 190 ALIGNOF = 321, 191 ATOMIC = 322, 192 GENERIC = 323, 193 NORETURN = 324, 194 STATICASSERT = 325, 195 THREADLOCAL = 326, 196 IDENTIFIER = 327, 197 QUOTED_IDENTIFIER = 328, 198 TYPEDEFname = 329, 199 TYPEGENname = 330, 200 ATTR_IDENTIFIER = 331, 201 ATTR_TYPEDEFname = 332, 202 ATTR_TYPEGENname = 333, 203 INTEGERconstant = 334, 204 FLOATINGconstant = 335, 205 CHARACTERconstant = 336, 206 STRINGliteral = 337, 207 ZERO = 338, 208 ONE = 339, 209 ARROW = 340, 210 ICR = 341, 211 DECR = 342, 212 LS = 343, 213 RS = 344, 214 LE = 345, 215 GE = 346, 216 EQ = 347, 217 NE = 348, 218 ANDAND = 349, 219 OROR = 350, 220 ELLIPSIS = 351, 221 MULTassign = 352, 222 DIVassign = 353, 223 MODassign = 354, 224 PLUSassign = 355, 225 MINUSassign = 356, 226 LSassign = 357, 227 RSassign = 358, 228 ANDassign = 359, 229 ERassign = 360, 230 ORassign = 361, 231 ATassign = 362, 232 THEN = 363 233 }; 232 234 #endif 233 235 /* Tokens. */ … … 339 341 #define THEN 363 340 342 341 342 343 343 /* Value type. */ 344 344 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 345 typedef union YYSTYPE 345 typedef union YYSTYPE YYSTYPE; 346 union YYSTYPE 346 347 { 347 348 /* Line 293 of yacc.c */ 349 #line 115 "parser.yy" 348 #line 115 "parser.yy" /* yacc.c:355 */ 350 349 351 350 Token tok; … … 363 362 bool flag; 364 363 365 366 367 /* Line 293 of yacc.c */ 368 #line 369 "Parser/parser.cc" 369 } YYSTYPE; 364 #line 365 "Parser/parser.cc" /* yacc.c:355 */ 365 }; 370 366 # define YYSTYPE_IS_TRIVIAL 1 371 # define yystype YYSTYPE /* obsolescent; will be withdrawn */372 367 # define YYSTYPE_IS_DECLARED 1 373 368 #endif 374 369 375 370 371 extern YYSTYPE yylval; 372 373 int yyparse (void); 374 375 #endif /* !YY_YY_Y_TAB_H_INCLUDED */ 376 376 377 /* Copy the second part of user declarations. */ 377 378 378 379 /* Line 343 of yacc.c */ 380 #line 381 "Parser/parser.cc" 379 #line 380 "Parser/parser.cc" /* yacc.c:358 */ 381 380 382 381 #ifdef short … … 392 391 #ifdef YYTYPE_INT8 393 392 typedef YYTYPE_INT8 yytype_int8; 394 #elif (defined __STDC__ || defined __C99__FUNC__ \ 395 || defined __cplusplus || defined _MSC_VER) 393 #else 396 394 typedef signed char yytype_int8; 397 #else398 typedef short int yytype_int8;399 395 #endif 400 396 … … 416 412 # elif defined size_t 417 413 # define YYSIZE_T size_t 418 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 419 || defined __cplusplus || defined _MSC_VER) 414 # elif ! defined YYSIZE_T 420 415 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 421 416 # define YYSIZE_T size_t … … 431 426 # if ENABLE_NLS 432 427 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 433 # define YY_( msgid) dgettext ("bison-runtime", msgid)428 # define YY_(Msgid) dgettext ("bison-runtime", Msgid) 434 429 # endif 435 430 # endif 436 431 # ifndef YY_ 437 # define YY_( msgid) msgid432 # define YY_(Msgid) Msgid 438 433 # endif 439 434 #endif 440 435 436 #ifndef YY_ATTRIBUTE 437 # if (defined __GNUC__ \ 438 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ 439 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C 440 # define YY_ATTRIBUTE(Spec) __attribute__(Spec) 441 # else 442 # define YY_ATTRIBUTE(Spec) /* empty */ 443 # endif 444 #endif 445 446 #ifndef YY_ATTRIBUTE_PURE 447 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) 448 #endif 449 450 #ifndef YY_ATTRIBUTE_UNUSED 451 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) 452 #endif 453 454 #if !defined _Noreturn \ 455 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) 456 # if defined _MSC_VER && 1200 <= _MSC_VER 457 # define _Noreturn __declspec (noreturn) 458 # else 459 # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) 460 # endif 461 #endif 462 441 463 /* Suppress unused-variable warnings by "using" E. */ 442 464 #if ! defined lint || defined __GNUC__ 443 # define YYUSE( e) ((void) (e))465 # define YYUSE(E) ((void) (E)) 444 466 #else 445 # define YYUSE( e) /* empty */467 # define YYUSE(E) /* empty */ 446 468 #endif 447 469 448 /* Identity function, used to suppress warnings about constant conditions. */ 449 #ifndef lint 450 # define YYID(n) (n) 470 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 471 /* Suppress an incorrect diagnostic about yylval being uninitialized. */ 472 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 473 _Pragma ("GCC diagnostic push") \ 474 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 475 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 476 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 477 _Pragma ("GCC diagnostic pop") 451 478 #else 452 #if (defined __STDC__ || defined __C99__FUNC__ \ 453 || defined __cplusplus || defined _MSC_VER) 454 static int 455 YYID (int yyi) 456 #else 457 static int 458 YYID (yyi) 459 int yyi; 479 # define YY_INITIAL_VALUE(Value) Value 460 480 #endif 461 { 462 return yyi; 463 } 481 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 482 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 483 # define YY_IGNORE_MAYBE_UNINITIALIZED_END 464 484 #endif 485 #ifndef YY_INITIAL_VALUE 486 # define YY_INITIAL_VALUE(Value) /* Nothing. */ 487 #endif 488 465 489 466 490 #if ! defined yyoverflow || YYERROR_VERBOSE … … 481 505 # else 482 506 # define YYSTACK_ALLOC alloca 483 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 484 || defined __cplusplus || defined _MSC_VER) 507 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 485 508 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 509 /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 486 510 # ifndef EXIT_SUCCESS 487 511 # define EXIT_SUCCESS 0 … … 493 517 494 518 # ifdef YYSTACK_ALLOC 495 /* Pacify GCC's `empty if-body' warning. */496 # define YYSTACK_FREE(Ptr) do { /* empty */; } while ( YYID (0))519 /* Pacify GCC's 'empty if-body' warning. */ 520 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 497 521 # ifndef YYSTACK_ALLOC_MAXIMUM 498 522 /* The OS might guarantee only one guard page at the bottom of the stack, … … 510 534 # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 511 535 && ! ((defined YYMALLOC || defined malloc) \ 512 536 && (defined YYFREE || defined free))) 513 537 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 514 538 # ifndef EXIT_SUCCESS … … 518 542 # ifndef YYMALLOC 519 543 # define YYMALLOC malloc 520 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 521 || defined __cplusplus || defined _MSC_VER) 544 # if ! defined malloc && ! defined EXIT_SUCCESS 522 545 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 523 546 # endif … … 525 548 # ifndef YYFREE 526 549 # define YYFREE free 527 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 528 || defined __cplusplus || defined _MSC_VER) 550 # if ! defined free && ! defined EXIT_SUCCESS 529 551 void free (void *); /* INFRINGES ON USER NAME SPACE */ 530 552 # endif … … 536 558 #if (! defined yyoverflow \ 537 559 && (! defined __cplusplus \ 538 560 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 539 561 540 562 /* A type that is properly aligned for any stack member. */ … … 561 583 stack. Advance YYPTR to a properly aligned location for the next 562 584 stack. */ 563 # define YYSTACK_RELOCATE(Stack_alloc, Stack) 564 do 565 { 566 YYSIZE_T yynewbytes;\567 YYCOPY (&yyptr->Stack_alloc, Stack, yysize);\568 Stack = &yyptr->Stack_alloc;\569 570 yyptr += yynewbytes / sizeof (*yyptr);\571 } 572 while ( YYID (0))585 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 586 do \ 587 { \ 588 YYSIZE_T yynewbytes; \ 589 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 590 Stack = &yyptr->Stack_alloc; \ 591 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 592 yyptr += yynewbytes / sizeof (*yyptr); \ 593 } \ 594 while (0) 573 595 574 596 #endif 575 597 576 598 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 577 /* Copy COUNT objects from FROM to TO. The source and destination do599 /* Copy COUNT objects from SRC to DST. The source and destination do 578 600 not overlap. */ 579 601 # ifndef YYCOPY 580 602 # if defined __GNUC__ && 1 < __GNUC__ 581 # define YYCOPY( To, From, Count) \582 __builtin_memcpy ( To, From, (Count) * sizeof (*(From)))603 # define YYCOPY(Dst, Src, Count) \ 604 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 583 605 # else 584 # define YYCOPY( To, From, Count)\585 do 586 {\587 YYSIZE_T yyi;\588 for (yyi = 0; yyi < (Count); yyi++)\589 (To)[yyi] = (From)[yyi];\590 }\591 while ( YYID (0))606 # define YYCOPY(Dst, Src, Count) \ 607 do \ 608 { \ 609 YYSIZE_T yyi; \ 610 for (yyi = 0; yyi < (Count); yyi++) \ 611 (Dst)[yyi] = (Src)[yyi]; \ 612 } \ 613 while (0) 592 614 # endif 593 615 # endif … … 605 627 /* YYNRULES -- Number of rules. */ 606 628 #define YYNRULES 749 607 /* YYN RULES -- Number of states. */629 /* YYNSTATES -- Number of states. */ 608 630 #define YYNSTATES 1553 609 631 610 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 632 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned 633 by yylex, with out-of-bounds checking. */ 611 634 #define YYUNDEFTOK 2 612 635 #define YYMAXUTOK 363 613 636 614 #define YYTRANSLATE(YYX) 637 #define YYTRANSLATE(YYX) \ 615 638 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 616 639 617 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 640 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 641 as returned by yylex, without out-of-bounds checking. */ 618 642 static const yytype_uint8 yytranslate[] = 619 643 { … … 658 682 659 683 #if YYDEBUG 660 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 661 YYRHS. */ 662 static const yytype_uint16 yyprhs[] = 663 { 664 0, 0, 3, 4, 5, 7, 9, 11, 13, 15, 665 17, 19, 21, 23, 25, 27, 29, 31, 34, 36, 666 38, 42, 46, 48, 55, 60, 64, 72, 76, 84, 667 87, 90, 98, 103, 105, 109, 110, 112, 114, 118, 668 120, 124, 132, 136, 144, 146, 148, 150, 153, 156, 669 159, 162, 165, 168, 173, 176, 181, 188, 190, 195, 670 200, 202, 204, 206, 208, 210, 212, 214, 219, 224, 671 226, 230, 234, 238, 240, 244, 248, 250, 254, 258, 672 260, 264, 268, 272, 276, 278, 282, 286, 288, 292, 673 294, 298, 300, 304, 306, 310, 312, 316, 318, 324, 674 329, 335, 337, 339, 343, 346, 347, 349, 351, 353, 675 355, 357, 359, 361, 363, 365, 367, 369, 371, 374, 676 380, 387, 395, 397, 401, 403, 407, 408, 410, 412, 677 414, 416, 418, 420, 422, 424, 426, 433, 438, 441, 678 449, 451, 455, 457, 460, 462, 465, 467, 470, 473, 679 479, 487, 493, 503, 509, 519, 521, 525, 527, 529, 680 533, 537, 540, 542, 545, 548, 549, 551, 554, 558, 681 559, 561, 564, 568, 572, 577, 578, 580, 582, 585, 682 591, 599, 606, 613, 618, 622, 627, 630, 634, 637, 683 641, 645, 649, 653, 659, 663, 667, 672, 674, 680, 684 687, 693, 700, 710, 721, 731, 742, 745, 747, 750, 685 753, 756, 758, 765, 774, 785, 798, 813, 814, 816, 686 817, 819, 821, 825, 830, 838, 839, 841, 845, 847, 687 851, 853, 855, 857, 861, 863, 865, 867, 871, 872, 688 874, 878, 883, 885, 889, 891, 893, 897, 901, 905, 689 909, 913, 916, 920, 927, 931, 935, 940, 942, 945, 690 948, 952, 958, 967, 975, 983, 989, 999, 1002, 1005, 691 1011, 1015, 1021, 1026, 1030, 1035, 1040, 1048, 1052, 1056, 692 1060, 1064, 1069, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 693 1090, 1092, 1093, 1095, 1097, 1100, 1102, 1104, 1106, 1108, 694 1110, 1112, 1114, 1115, 1121, 1123, 1126, 1130, 1132, 1135, 695 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 696 1157, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 697 1177, 1179, 1182, 1185, 1189, 1193, 1195, 1199, 1201, 1204, 698 1207, 1210, 1215, 1220, 1225, 1230, 1232, 1235, 1238, 1242, 699 1244, 1247, 1250, 1252, 1255, 1258, 1262, 1264, 1267, 1270, 700 1272, 1274, 1279, 1282, 1283, 1290, 1298, 1301, 1304, 1307, 701 1308, 1311, 1314, 1318, 1321, 1325, 1327, 1330, 1334, 1337, 702 1340, 1345, 1346, 1348, 1351, 1354, 1356, 1357, 1359, 1362, 703 1365, 1371, 1374, 1375, 1383, 1386, 1391, 1392, 1395, 1396, 704 1398, 1400, 1402, 1408, 1414, 1420, 1422, 1428, 1434, 1444, 705 1446, 1452, 1453, 1455, 1457, 1463, 1465, 1467, 1473, 1479, 706 1481, 1485, 1489, 1494, 1496, 1498, 1500, 1502, 1505, 1507, 707 1511, 1515, 1517, 1520, 1522, 1526, 1528, 1530, 1532, 1534, 708 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1551, 1553, 1555, 709 1557, 1560, 1561, 1564, 1567, 1569, 1574, 1575, 1577, 1580, 710 1584, 1589, 1592, 1595, 1597, 1600, 1603, 1609, 1615, 1623, 711 1630, 1632, 1635, 1638, 1642, 1644, 1647, 1650, 1655, 1658, 712 1663, 1664, 1669, 1672, 1674, 1676, 1678, 1679, 1682, 1688, 713 1694, 1708, 1710, 1712, 1716, 1720, 1723, 1727, 1731, 1734, 714 1739, 1741, 1748, 1758, 1759, 1771, 1773, 1777, 1781, 1785, 715 1787, 1789, 1795, 1798, 1804, 1805, 1807, 1809, 1813, 1814, 716 1816, 1818, 1820, 1822, 1823, 1830, 1833, 1835, 1838, 1843, 717 1846, 1850, 1854, 1858, 1863, 1869, 1875, 1881, 1888, 1890, 718 1892, 1894, 1898, 1899, 1905, 1906, 1908, 1910, 1913, 1920, 719 1922, 1926, 1927, 1929, 1934, 1936, 1938, 1940, 1942, 1945, 720 1947, 1950, 1953, 1955, 1959, 1962, 1966, 1970, 1973, 1978, 721 1983, 1987, 1996, 2000, 2003, 2005, 2008, 2015, 2024, 2028, 722 2031, 2035, 2039, 2044, 2049, 2053, 2055, 2057, 2059, 2064, 723 2071, 2075, 2078, 2082, 2086, 2091, 2096, 2100, 2103, 2105, 724 2108, 2111, 2113, 2117, 2120, 2124, 2128, 2131, 2136, 2141, 725 2145, 2152, 2161, 2165, 2168, 2170, 2173, 2176, 2179, 2183, 726 2187, 2190, 2195, 2200, 2204, 2211, 2220, 2224, 2227, 2229, 727 2232, 2235, 2237, 2239, 2242, 2246, 2250, 2253, 2258, 2265, 728 2274, 2276, 2279, 2282, 2284, 2287, 2290, 2294, 2298, 2300, 729 2305, 2310, 2314, 2320, 2329, 2333, 2336, 2340, 2342, 2348, 730 2354, 2361, 2368, 2370, 2373, 2376, 2378, 2381, 2384, 2388, 731 2392, 2394, 2399, 2404, 2408, 2414, 2423, 2427, 2429, 2432, 732 2434, 2437, 2444, 2450, 2457, 2465, 2473, 2475, 2478, 2481, 733 2483, 2486, 2489, 2493, 2497, 2499, 2504, 2509, 2513, 2522, 734 2526, 2528, 2530, 2533, 2535, 2537, 2540, 2544, 2547, 2551, 735 2554, 2558, 2562, 2565, 2570, 2574, 2577, 2581, 2584, 2589, 736 2593, 2596, 2603, 2610, 2617, 2625, 2627, 2630, 2632, 2634, 737 2636, 2639, 2643, 2646, 2650, 2653, 2657, 2661, 2666, 2669, 738 2673, 2678, 2681, 2687, 2693, 2700, 2707, 2708, 2710, 2711 739 }; 740 741 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 742 static const yytype_int16 yyrhs[] = 743 { 744 301, 0, -1, -1, -1, 79, -1, 80, -1, 81, 745 -1, 72, -1, 76, -1, 140, -1, 72, -1, 76, 746 -1, 72, -1, 140, -1, 83, -1, 84, -1, 82, 747 -1, 141, 82, -1, 72, -1, 140, -1, 109, 169, 748 110, -1, 109, 173, 110, -1, 142, -1, 143, 111, 749 134, 164, 135, 112, -1, 143, 109, 144, 110, -1, 750 143, 113, 139, -1, 143, 113, 111, 134, 146, 135, 751 112, -1, 143, 85, 139, -1, 143, 85, 111, 134, 752 146, 135, 112, -1, 143, 86, -1, 143, 87, -1, 753 109, 274, 110, 114, 278, 371, 115, -1, 143, 114, 754 144, 115, -1, 145, -1, 144, 116, 145, -1, -1, 755 164, -1, 147, -1, 146, 116, 147, -1, 139, -1, 756 139, 113, 147, -1, 139, 113, 111, 134, 146, 135, 757 112, -1, 139, 85, 147, -1, 139, 85, 111, 134, 758 146, 135, 112, -1, 143, -1, 136, -1, 141, -1, 759 40, 151, -1, 149, 151, -1, 150, 151, -1, 86, 760 148, -1, 87, 148, -1, 37, 148, -1, 37, 109, 761 274, 110, -1, 66, 148, -1, 66, 109, 274, 110, 762 -1, 38, 109, 274, 116, 139, 110, -1, 76, -1, 763 76, 109, 145, 110, -1, 76, 109, 275, 110, -1, 764 117, -1, 118, -1, 119, -1, 120, -1, 121, -1, 765 122, -1, 148, -1, 109, 274, 110, 151, -1, 109, 766 274, 110, 167, -1, 151, -1, 152, 117, 151, -1, 767 152, 123, 151, -1, 152, 124, 151, -1, 152, -1, 768 153, 119, 152, -1, 153, 120, 152, -1, 153, -1, 769 154, 88, 153, -1, 154, 89, 153, -1, 154, -1, 770 155, 125, 154, -1, 155, 126, 154, -1, 155, 90, 771 154, -1, 155, 91, 154, -1, 155, -1, 156, 92, 772 155, -1, 156, 93, 155, -1, 156, -1, 157, 118, 773 156, -1, 157, -1, 158, 127, 157, -1, 158, -1, 774 159, 128, 158, -1, 159, -1, 160, 94, 159, -1, 775 160, -1, 161, 95, 160, -1, 161, -1, 161, 129, 776 169, 130, 162, -1, 161, 129, 130, 162, -1, 161, 777 129, 169, 130, 167, -1, 162, -1, 162, -1, 148, 778 166, 164, -1, 167, 372, -1, -1, 164, -1, 131, 779 -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, 780 -1, 102, -1, 103, -1, 104, -1, 105, -1, 106, 781 -1, 111, 112, -1, 111, 134, 164, 135, 112, -1, 782 111, 134, 116, 168, 135, 112, -1, 111, 134, 164, 783 116, 168, 135, 112, -1, 165, -1, 168, 116, 165, 784 -1, 164, -1, 169, 116, 164, -1, -1, 169, -1, 785 172, -1, 173, -1, 177, -1, 178, -1, 190, -1, 786 192, -1, 193, -1, 198, -1, 127, 143, 114, 144, 787 115, 132, -1, 72, 130, 311, 171, -1, 114, 115, 788 -1, 114, 134, 134, 209, 174, 135, 115, -1, 175, 789 -1, 174, 134, 175, -1, 212, -1, 40, 212, -1, 790 307, -1, 171, 135, -1, 171, -1, 176, 171, -1, 791 170, 132, -1, 41, 109, 169, 110, 171, -1, 41, 792 109, 169, 110, 171, 42, 171, -1, 43, 109, 169, 793 110, 183, -1, 43, 109, 169, 110, 114, 134, 205, 794 184, 115, -1, 53, 109, 169, 110, 183, -1, 53, 795 109, 169, 110, 114, 134, 205, 186, 115, -1, 163, 796 -1, 163, 96, 163, -1, 309, -1, 179, -1, 180, 797 116, 179, -1, 44, 180, 130, -1, 45, 130, -1, 798 181, -1, 182, 181, -1, 182, 171, -1, -1, 185, 799 -1, 182, 176, -1, 185, 182, 176, -1, -1, 187, 800 -1, 182, 189, -1, 182, 176, 188, -1, 187, 182, 801 189, -1, 187, 182, 176, 188, -1, -1, 189, -1, 802 56, -1, 56, 132, -1, 47, 109, 169, 110, 171, 803 -1, 46, 171, 47, 109, 169, 110, 132, -1, 48, 804 109, 134, 191, 110, 171, -1, 170, 135, 132, 170, 805 132, 170, -1, 212, 170, 132, 170, -1, 51, 72, 806 132, -1, 51, 117, 169, 132, -1, 50, 132, -1, 807 50, 72, 132, -1, 49, 132, -1, 49, 72, 132, 808 -1, 52, 170, 132, -1, 61, 165, 132, -1, 62, 809 165, 132, -1, 62, 165, 63, 164, 132, -1, 57, 810 173, 194, -1, 57, 173, 196, -1, 57, 173, 194, 811 196, -1, 195, -1, 58, 109, 96, 110, 173, -1, 812 195, 58, 109, 96, 110, 173, -1, 59, 109, 96, 813 110, 173, -1, 195, 59, 109, 96, 110, 173, -1, 814 58, 109, 134, 134, 197, 135, 110, 173, 135, -1, 815 195, 58, 109, 134, 134, 197, 135, 110, 173, 135, 816 -1, 59, 109, 134, 134, 197, 135, 110, 173, 135, 817 -1, 195, 59, 109, 134, 134, 197, 135, 110, 173, 818 135, -1, 60, 173, -1, 225, -1, 225, 308, -1, 819 225, 356, -1, 365, 139, -1, 365, -1, 64, 199, 820 109, 141, 110, 132, -1, 64, 199, 109, 141, 130, 821 200, 110, 132, -1, 64, 199, 109, 141, 130, 200, 822 130, 200, 110, 132, -1, 64, 199, 109, 141, 130, 823 200, 130, 200, 130, 203, 110, 132, -1, 64, 199, 824 51, 109, 141, 130, 130, 200, 130, 203, 130, 204, 825 110, 132, -1, -1, 11, -1, -1, 201, -1, 202, 826 -1, 201, 116, 202, -1, 141, 109, 163, 110, -1, 827 111, 163, 112, 141, 109, 163, 110, -1, -1, 141, 828 -1, 203, 116, 141, -1, 139, -1, 204, 116, 139, 829 -1, 135, -1, 206, -1, 212, -1, 206, 134, 212, 830 -1, 135, -1, 208, -1, 222, -1, 208, 134, 222, 831 -1, -1, 210, -1, 29, 211, 132, -1, 210, 29, 832 211, 132, -1, 273, -1, 211, 116, 273, -1, 213, 833 -1, 222, -1, 214, 135, 132, -1, 219, 135, 132, 834 -1, 216, 135, 132, -1, 292, 135, 132, -1, 295, 835 135, 132, -1, 215, 276, -1, 231, 215, 276, -1, 836 214, 135, 116, 134, 271, 276, -1, 366, 271, 310, 837 -1, 369, 271, 310, -1, 227, 369, 271, 310, -1, 838 217, -1, 227, 217, -1, 231, 217, -1, 231, 227, 839 217, -1, 216, 135, 116, 134, 271, -1, 111, 112, 840 271, 109, 134, 259, 135, 110, -1, 369, 271, 109, 841 134, 259, 135, 110, -1, 218, 271, 109, 134, 259, 842 135, 110, -1, 111, 134, 261, 135, 112, -1, 111, 843 134, 261, 135, 116, 134, 262, 135, 112, -1, 3, 844 215, -1, 3, 217, -1, 219, 135, 116, 134, 139, 845 -1, 3, 225, 308, -1, 220, 135, 116, 134, 308, 846 -1, 227, 3, 225, 308, -1, 225, 3, 308, -1, 847 225, 3, 227, 308, -1, 3, 139, 131, 164, -1, 848 221, 135, 116, 134, 139, 131, 164, -1, 223, 135, 849 132, -1, 220, 135, 132, -1, 221, 135, 132, -1, 850 239, 135, 132, -1, 224, 308, 310, 276, -1, 223, 851 116, 311, 308, 310, 276, -1, 235, -1, 239, -1, 852 241, -1, 282, -1, 236, -1, 240, -1, 242, -1, 853 283, -1, -1, 227, -1, 228, -1, 227, 228, -1, 854 229, -1, 313, -1, 10, -1, 12, -1, 11, -1, 855 14, -1, 67, -1, -1, 13, 109, 230, 285, 110, 856 -1, 232, -1, 227, 232, -1, 231, 227, 232, -1, 857 233, -1, 232, 233, -1, 5, -1, 7, -1, 4, 858 -1, 6, -1, 8, -1, 9, -1, 69, -1, 71, 859 -1, 16, -1, 21, -1, 20, -1, 18, -1, 19, 860 -1, 17, -1, 22, -1, 23, -1, 15, -1, 25, 861 -1, 26, -1, 27, -1, 24, -1, 236, -1, 231, 862 236, -1, 235, 233, -1, 235, 233, 227, -1, 235, 863 233, 236, -1, 237, -1, 226, 238, 226, -1, 234, 864 -1, 227, 234, -1, 237, 228, -1, 237, 234, -1, 865 28, 109, 275, 110, -1, 28, 109, 169, 110, -1, 866 78, 109, 275, 110, -1, 78, 109, 169, 110, -1, 867 240, -1, 231, 240, -1, 239, 233, -1, 239, 233, 868 227, -1, 243, -1, 227, 243, -1, 240, 228, -1, 869 242, -1, 231, 242, -1, 241, 233, -1, 241, 233, 870 227, -1, 74, -1, 227, 74, -1, 242, 228, -1, 871 244, -1, 255, -1, 246, 114, 247, 115, -1, 246, 872 273, -1, -1, 246, 273, 245, 114, 247, 115, -1, 873 246, 109, 291, 110, 114, 247, 115, -1, 246, 284, 874 -1, 31, 311, -1, 32, 311, -1, -1, 247, 248, 875 -1, 249, 132, -1, 40, 249, 132, -1, 250, 132, 876 -1, 40, 250, 132, -1, 365, -1, 365, 273, -1, 877 249, 116, 273, -1, 249, 116, -1, 225, 251, -1, 878 250, 116, 311, 251, -1, -1, 253, -1, 317, 252, 879 -1, 330, 252, -1, 356, -1, -1, 253, -1, 130, 880 163, -1, 30, 311, -1, 254, 114, 257, 371, 115, 881 -1, 254, 273, -1, -1, 254, 273, 256, 114, 257, 882 371, 115, -1, 273, 258, -1, 257, 116, 273, 258, 883 -1, -1, 131, 163, -1, -1, 260, -1, 262, -1, 884 261, -1, 261, 135, 116, 134, 262, -1, 262, 135, 885 116, 134, 96, -1, 261, 135, 116, 134, 96, -1, 886 266, -1, 262, 135, 116, 134, 266, -1, 261, 135, 887 116, 134, 266, -1, 261, 135, 116, 134, 262, 135, 888 116, 134, 266, -1, 267, -1, 262, 135, 116, 134, 889 267, -1, -1, 264, -1, 265, -1, 265, 135, 116, 890 134, 96, -1, 269, -1, 268, -1, 265, 135, 116, 891 134, 269, -1, 265, 135, 116, 134, 268, -1, 268, 892 -1, 361, 271, 372, -1, 369, 271, 372, -1, 227, 893 369, 271, 372, -1, 217, -1, 269, -1, 361, -1, 894 369, -1, 227, 369, -1, 370, -1, 224, 335, 372, 895 -1, 224, 339, 372, -1, 224, -1, 224, 350, -1, 896 139, -1, 270, 116, 139, -1, 137, -1, 74, -1, 897 75, -1, 138, -1, 74, -1, 75, -1, 139, -1, 898 74, -1, 75, -1, 365, -1, 225, -1, 225, 356, 899 -1, 365, -1, 370, -1, 225, -1, 225, 344, -1, 900 -1, 131, 277, -1, 107, 277, -1, 164, -1, 114, 901 278, 371, 115, -1, -1, 277, -1, 279, 277, -1, 902 278, 116, 277, -1, 278, 116, 279, 277, -1, 280, 903 130, -1, 273, 130, -1, 281, -1, 280, 281, -1, 904 113, 273, -1, 111, 134, 164, 135, 112, -1, 111, 905 134, 309, 135, 112, -1, 111, 134, 163, 96, 163, 906 135, 112, -1, 113, 111, 134, 146, 135, 112, -1, 907 283, -1, 231, 283, -1, 282, 233, -1, 282, 233, 908 227, -1, 284, -1, 227, 284, -1, 283, 228, -1, 909 75, 109, 291, 110, -1, 286, 372, -1, 285, 116, 910 286, 372, -1, -1, 288, 273, 287, 289, -1, 225, 911 335, -1, 33, -1, 35, -1, 34, -1, -1, 289, 912 290, -1, 128, 273, 109, 291, 110, -1, 128, 114, 913 134, 297, 115, -1, 128, 109, 134, 285, 135, 110, 914 114, 134, 297, 115, 109, 291, 110, -1, 275, -1, 915 164, -1, 291, 116, 275, -1, 291, 116, 164, -1, 916 33, 293, -1, 232, 33, 293, -1, 292, 116, 293, 917 -1, 294, 289, -1, 294, 289, 131, 275, -1, 273, 918 -1, 272, 109, 134, 285, 135, 110, -1, 36, 273, 919 109, 134, 285, 135, 110, 114, 115, -1, -1, 36, 920 273, 109, 134, 285, 135, 110, 114, 296, 297, 115, 921 -1, 298, -1, 297, 134, 298, -1, 299, 135, 132, 922 -1, 300, 135, 132, -1, 215, -1, 217, -1, 299, 923 135, 116, 134, 271, -1, 225, 308, -1, 300, 135, 924 116, 134, 308, -1, -1, 302, -1, 304, -1, 302, 925 134, 304, -1, -1, 302, -1, 212, -1, 306, -1, 926 198, -1, -1, 5, 82, 305, 114, 303, 115, -1, 927 40, 304, -1, 307, -1, 322, 173, -1, 326, 134, 928 207, 173, -1, 216, 173, -1, 224, 322, 173, -1, 929 227, 322, 173, -1, 231, 322, 173, -1, 231, 227, 930 322, 173, -1, 224, 326, 134, 207, 173, -1, 227, 931 326, 134, 207, 173, -1, 231, 326, 134, 207, 173, 932 -1, 231, 227, 326, 134, 207, 173, -1, 317, -1, 933 330, -1, 322, -1, 163, 122, 163, -1, -1, 64, 934 109, 141, 110, 311, -1, -1, 312, -1, 313, -1, 935 312, 313, -1, 39, 109, 109, 314, 110, 110, -1, 936 315, -1, 314, 116, 315, -1, -1, 316, -1, 316, 937 109, 170, 110, -1, 271, -1, 233, -1, 234, -1, 938 228, -1, 318, 311, -1, 319, -1, 320, 311, -1, 939 321, 311, -1, 137, -1, 109, 318, 110, -1, 149, 940 317, -1, 149, 227, 317, -1, 109, 319, 110, -1, 941 318, 348, -1, 109, 319, 110, 348, -1, 109, 320, 942 110, 349, -1, 109, 320, 110, -1, 109, 319, 110, 943 109, 134, 263, 135, 110, -1, 109, 321, 110, -1, 944 323, 311, -1, 324, -1, 325, 311, -1, 318, 109, 945 134, 263, 135, 110, -1, 109, 324, 110, 109, 134, 946 263, 135, 110, -1, 109, 323, 110, -1, 149, 322, 947 -1, 149, 227, 322, -1, 109, 324, 110, -1, 109, 948 324, 110, 348, -1, 109, 325, 110, 349, -1, 109, 949 325, 110, -1, 327, -1, 328, -1, 329, -1, 318, 950 109, 270, 110, -1, 109, 328, 110, 109, 270, 110, 951 -1, 109, 327, 110, -1, 149, 326, -1, 149, 227, 952 326, -1, 109, 328, 110, -1, 109, 328, 110, 348, 953 -1, 109, 329, 110, 349, -1, 109, 329, 110, -1, 954 331, 311, -1, 332, -1, 333, 311, -1, 334, 311, 955 -1, 340, -1, 109, 331, 110, -1, 149, 330, -1, 956 149, 227, 330, -1, 109, 332, 110, -1, 331, 348, 957 -1, 109, 332, 110, 348, -1, 109, 333, 110, 349, 958 -1, 109, 333, 110, -1, 331, 109, 134, 263, 135, 959 110, -1, 109, 332, 110, 109, 134, 263, 135, 110, 960 -1, 109, 334, 110, -1, 318, 311, -1, 336, -1, 961 337, 311, -1, 338, 311, -1, 149, 335, -1, 149, 962 227, 335, -1, 109, 336, 110, -1, 318, 354, -1, 963 109, 336, 110, 348, -1, 109, 337, 110, 349, -1, 964 109, 337, 110, -1, 318, 109, 134, 263, 135, 110, 965 -1, 109, 336, 110, 109, 134, 263, 135, 110, -1, 966 109, 338, 110, -1, 340, 311, -1, 341, -1, 342, 967 311, -1, 343, 311, -1, 74, -1, 75, -1, 149, 968 339, -1, 149, 227, 339, -1, 109, 341, 110, -1, 969 340, 354, -1, 109, 341, 110, 354, -1, 340, 109, 970 134, 263, 135, 110, -1, 109, 341, 110, 109, 134, 971 263, 135, 110, -1, 345, -1, 346, 311, -1, 347, 972 311, -1, 149, -1, 149, 227, -1, 149, 344, -1, 973 149, 227, 344, -1, 109, 345, 110, -1, 348, -1, 974 109, 345, 110, 348, -1, 109, 346, 110, 349, -1, 975 109, 346, 110, -1, 109, 134, 263, 135, 110, -1, 976 109, 345, 110, 109, 134, 263, 135, 110, -1, 109, 977 347, 110, -1, 111, 112, -1, 111, 112, 349, -1, 978 349, -1, 111, 134, 164, 135, 112, -1, 111, 134, 979 117, 135, 112, -1, 349, 111, 134, 164, 135, 112, 980 -1, 349, 111, 134, 117, 135, 112, -1, 351, -1, 981 352, 311, -1, 353, 311, -1, 149, -1, 149, 227, 982 -1, 149, 350, -1, 149, 227, 350, -1, 109, 351, 983 110, -1, 354, -1, 109, 351, 110, 354, -1, 109, 984 352, 110, 349, -1, 109, 352, 110, -1, 109, 134, 985 263, 135, 110, -1, 109, 351, 110, 109, 134, 263, 986 135, 110, -1, 109, 353, 110, -1, 355, -1, 355, 987 349, -1, 349, -1, 111, 112, -1, 111, 134, 227, 988 117, 135, 112, -1, 111, 134, 227, 135, 112, -1, 989 111, 134, 227, 164, 135, 112, -1, 111, 134, 7, 990 226, 164, 135, 112, -1, 111, 134, 227, 7, 164, 991 135, 112, -1, 357, -1, 358, 311, -1, 359, 311, 992 -1, 149, -1, 149, 227, -1, 149, 356, -1, 149, 993 227, 356, -1, 109, 357, 110, -1, 348, -1, 109, 994 357, 110, 348, -1, 109, 358, 110, 349, -1, 109, 995 358, 110, -1, 109, 357, 110, 109, 134, 263, 135, 996 110, -1, 109, 359, 110, -1, 361, -1, 369, -1, 997 227, 369, -1, 362, -1, 363, -1, 149, 225, -1, 998 227, 149, 225, -1, 149, 370, -1, 227, 149, 370, 999 -1, 149, 360, -1, 227, 149, 360, -1, 111, 112, 1000 225, -1, 364, 225, -1, 111, 112, 349, 225, -1, 1001 364, 349, 225, -1, 349, 225, -1, 111, 112, 362, 1002 -1, 364, 362, -1, 111, 112, 349, 362, -1, 364, 1003 349, 362, -1, 349, 362, -1, 111, 134, 227, 117, 1004 135, 112, -1, 111, 134, 227, 164, 135, 112, -1, 1005 111, 134, 231, 164, 135, 112, -1, 111, 134, 231, 1006 227, 164, 135, 112, -1, 369, -1, 227, 369, -1, 1007 366, -1, 367, -1, 368, -1, 149, 225, -1, 227, 1008 149, 225, -1, 149, 370, -1, 227, 149, 370, -1, 1009 149, 365, -1, 227, 149, 365, -1, 111, 112, 225, 1010 -1, 111, 112, 349, 225, -1, 349, 225, -1, 111, 1011 112, 367, -1, 111, 112, 349, 367, -1, 349, 367, 1012 -1, 111, 134, 262, 135, 112, -1, 111, 112, 109, 1013 259, 110, -1, 369, 109, 134, 259, 135, 110, -1, 1014 218, 109, 134, 259, 135, 110, -1, -1, 116, -1, 1015 -1, 131, 164, -1 1016 }; 1017 1018 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 684 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 1019 685 static const yytype_uint16 yyrline[] = 1020 686 { … … 1097 763 #endif 1098 764 1099 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE765 #if YYDEBUG || YYERROR_VERBOSE || 0 1100 766 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 1101 767 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ … … 1205 871 "new_abstract_declarator_no_tuple", "new_abstract_ptr", 1206 872 "new_abstract_array", "new_abstract_tuple", "new_abstract_function", 1207 "comma_opt", "assignment_opt", 0873 "comma_opt", "assignment_opt", YY_NULLPTR 1208 874 }; 1209 875 #endif 1210 876 1211 877 # ifdef YYPRINT 1212 /* YYTOKNUM[ YYLEX-NUM] -- Internal token number corresponding to1213 token YYLEX-NUM. */878 /* YYTOKNUM[NUM] -- (External) token number corresponding to the 879 (internal) symbol number NUM (which must be that of a token). */ 1214 880 static const yytype_uint16 yytoknum[] = 1215 881 { … … 1231 897 # endif 1232 898 1233 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1234 static const yytype_uint16 yyr1[] = 899 #define YYPACT_NINF -1317 900 901 #define yypact_value_is_default(Yystate) \ 902 (!!((Yystate) == (-1317))) 903 904 #define YYTABLE_NINF -520 905 906 #define yytable_value_is_error(Yytable_value) \ 907 0 908 909 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 910 STATE-NUM. */ 911 static const yytype_int16 yypact[] = 1235 912 { 1236 0, 133, 134, 135, 136, 136, 136, 137, 137, 137, 1237 138, 138, 139, 139, 140, 140, 141, 141, 142, 142, 1238 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 1239 143, 143, 143, 144, 144, 145, 145, 146, 146, 147, 1240 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 1241 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 1242 149, 149, 150, 150, 150, 150, 151, 151, 151, 152, 1243 152, 152, 152, 153, 153, 153, 154, 154, 154, 155, 1244 155, 155, 155, 155, 156, 156, 156, 157, 157, 158, 1245 158, 159, 159, 160, 160, 161, 161, 162, 162, 162, 1246 162, 163, 164, 164, 164, 165, 165, 166, 166, 166, 1247 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 1248 167, 167, 168, 168, 169, 169, 170, 170, 171, 171, 1249 171, 171, 171, 171, 171, 171, 171, 172, 173, 173, 1250 174, 174, 175, 175, 175, 175, 176, 176, 177, 178, 1251 178, 178, 178, 178, 178, 179, 179, 179, 180, 180, 1252 181, 181, 182, 182, 183, 184, 184, 185, 185, 186, 1253 186, 187, 187, 187, 187, 188, 188, 189, 189, 190, 1254 190, 190, 191, 191, 192, 192, 192, 192, 192, 192, 1255 192, 192, 192, 192, 193, 193, 193, 194, 194, 194, 1256 194, 194, 195, 195, 195, 195, 196, 197, 197, 197, 1257 197, 197, 198, 198, 198, 198, 198, 199, 199, 200, 1258 200, 201, 201, 202, 202, 203, 203, 203, 204, 204, 1259 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, 1260 210, 210, 211, 211, 212, 212, 213, 213, 213, 213, 1261 213, 214, 214, 214, 215, 215, 215, 216, 216, 216, 1262 216, 216, 217, 217, 217, 218, 218, 219, 219, 219, 1263 220, 220, 220, 220, 220, 221, 221, 222, 222, 222, 1264 222, 223, 223, 224, 224, 224, 224, 225, 225, 225, 1265 225, 226, 226, 227, 227, 228, 228, 229, 229, 229, 1266 229, 229, 230, 229, 231, 231, 231, 232, 232, 233, 1267 233, 233, 233, 233, 233, 233, 233, 234, 234, 234, 1268 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 1269 235, 235, 235, 235, 235, 236, 236, 237, 237, 237, 1270 237, 238, 238, 238, 238, 239, 239, 239, 239, 240, 1271 240, 240, 241, 241, 241, 241, 242, 242, 242, 243, 1272 243, 244, 244, 245, 244, 244, 244, 246, 246, 247, 1273 247, 248, 248, 248, 248, 249, 249, 249, 249, 250, 1274 250, 251, 251, 251, 251, 251, 252, 252, 253, 254, 1275 255, 255, 256, 255, 257, 257, 258, 258, 259, 259, 1276 260, 260, 260, 260, 260, 261, 261, 261, 261, 262, 1277 262, 263, 263, 264, 264, 265, 265, 265, 265, 266, 1278 266, 266, 266, 266, 267, 267, 267, 267, 267, 268, 1279 268, 269, 269, 270, 270, 271, 271, 271, 272, 272, 1280 272, 273, 273, 273, 274, 274, 274, 275, 275, 275, 1281 275, 276, 276, 276, 277, 277, 278, 278, 278, 278, 1282 278, 279, 279, 280, 280, 281, 281, 281, 281, 281, 1283 282, 282, 282, 282, 283, 283, 283, 284, 285, 285, 1284 287, 286, 286, 288, 288, 288, 289, 289, 290, 290, 1285 290, 291, 291, 291, 291, 292, 292, 292, 293, 293, 1286 294, 294, 295, 296, 295, 297, 297, 298, 298, 299, 1287 299, 299, 300, 300, 301, 301, 302, 302, 303, 303, 1288 304, 304, 304, 305, 304, 304, 306, 306, 306, 307, 1289 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 1290 308, 309, 310, 310, 311, 311, 312, 312, 313, 314, 1291 314, 315, 315, 315, 316, 316, 316, 316, 317, 317, 1292 317, 317, 318, 318, 319, 319, 319, 320, 320, 320, 1293 320, 321, 321, 322, 322, 322, 323, 323, 323, 324, 1294 324, 324, 325, 325, 325, 326, 326, 326, 327, 327, 1295 327, 328, 328, 328, 329, 329, 329, 330, 330, 330, 1296 330, 331, 331, 332, 332, 332, 333, 333, 333, 333, 1297 334, 334, 334, 335, 335, 335, 335, 336, 336, 336, 1298 337, 337, 337, 337, 338, 338, 338, 339, 339, 339, 1299 339, 340, 340, 341, 341, 341, 342, 342, 343, 343, 1300 344, 344, 344, 345, 345, 345, 345, 345, 346, 346, 1301 346, 346, 347, 347, 347, 348, 348, 348, 349, 349, 1302 349, 349, 350, 350, 350, 351, 351, 351, 351, 351, 1303 352, 352, 352, 352, 353, 353, 353, 354, 354, 354, 1304 355, 355, 355, 355, 355, 355, 356, 356, 356, 357, 1305 357, 357, 357, 357, 358, 358, 358, 358, 359, 359, 1306 360, 360, 360, 361, 361, 362, 362, 362, 362, 362, 1307 362, 363, 363, 363, 363, 363, 363, 363, 363, 363, 1308 363, 364, 364, 364, 364, 365, 365, 365, 366, 366, 1309 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 1310 368, 368, 369, 370, 370, 370, 371, 371, 372, 372 913 7252, 8635, -1317, -3, -1317, -1317, -1317, -1317, -1317, -1317, 914 -1317, 23, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 915 -1317, -1317, -1317, -1317, -1317, -1317, 81, 81, 81, 1277, 916 970, 104, 7368, 277, -1317, -1317, -1317, -1317, -1317, 201, 917 -1317, -1317, -1317, 1047, 187, -1317, -1317, -1317, -1317, 5370, 918 -1317, -1317, -1317, -1317, 35, 48, -1317, 1328, -1317, -1317, 919 -1317, -1317, 235, 1663, 343, 98, 7484, -1317, -1317, 6174, 920 1066, -1317, -1317, 536, 376, 5540, 978, 1631, 536, 1775, 921 -1317, -1317, 477, 683, -1317, 536, 1892, -1317, 295, -1317, 922 422, 489, -1317, -1317, -1317, -1317, 346, 48, 81, -1317, 923 81, -1317, -1317, -1317, -1317, 9392, 1328, -1317, -1317, 1328, 924 -1317, 321, -1317, 9431, -1317, -1317, 2250, 9501, -1317, 668, 925 668, 668, -1317, -1317, -1317, 81, -1317, -1317, -1317, 373, 926 399, 410, -1317, -1317, -1317, 420, -1317, -1317, -1317, -1317, 927 -1317, 428, 450, -1317, -1317, 59, 8604, 2904, 144, 440, 928 493, 498, 531, 544, 560, 8522, 6772, 510, 580, -1317, 929 9114, -1317, -1317, -1317, -1317, 584, -1317, 153, 4280, 4280, 930 -1317, 570, 283, -1317, -1317, -1317, -1317, 596, 288, 303, 931 332, 81, 583, -1317, -1317, 1663, 2232, 648, -1317, 73, 932 -1317, 81, 81, 48, -1317, -1317, 80, -1317, 81, 81, 933 -1317, 3694, 599, 613, 668, 6565, -1317, -1317, 661, 5370, 934 -1317, -1317, 536, -1317, -1317, -1317, 48, -1317, 1328, 35, 935 -1317, 7675, -1317, 668, 668, 668, 48, -1317, 1277, -1317, 936 5446, -1317, -1317, 620, 668, -1317, 668, -1317, 201, 8604, 937 -1317, 673, -1317, 970, 692, 668, -1317, 1277, 697, 707, 938 -1317, 7368, 576, -1317, -1317, -1317, 4822, -1317, -1317, 9720, 939 -1317, 648, 165, 10347, 9501, 2250, 3694, -1317, 109, -1317, 940 -1317, 9431, 1328, 743, 7515, -1317, -1317, 306, -1317, 10675, 941 770, 800, 2676, 801, 10480, 10499, -1317, 813, -1317, -1317, 942 -1317, -1317, 10556, 10556, 8378, 795, -1317, -1317, -1317, -1317, 943 -1317, -1317, 842, -1317, 685, 1919, 8717, 10480, -1317, 652, 944 325, 507, 317, 581, 826, 820, 823, 861, 111, -1317, 945 -1317, 827, 703, -1317, 452, -1317, -1317, 2904, -1317, -1317, 946 278, 856, -1317, 636, 856, 866, 201, -1317, -1317, 872, 947 9392, -1317, 876, 887, 8830, -1317, -1317, 1020, 2049, 8093, 948 6565, 536, -1317, 536, 668, 668, -1317, -1317, -1317, -1317, 949 -1317, -1317, 668, 9392, 1328, -1317, -1317, 9540, 1233, -1317, 950 7824, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 891, 4627, 951 10480, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 952 -1317, -1317, -1317, -1317, -1317, 2250, -1317, 552, 901, 904, 953 912, 862, 920, 922, 924, 2232, -1317, -1317, 932, 35, 954 936, -1317, -1317, 939, -1317, -1317, -1317, 4822, -1317, -1317, 955 -1317, -1317, -1317, 3694, -1317, 8604, 8604, -1317, 668, 2250, 956 6684, 1328, 8166, -1317, -1317, -1317, -1317, 4822, 165, -1317, 957 -1317, 536, 48, -1317, -1317, 4822, -1317, 6449, -1317, -1317, 958 668, 668, 484, 8011, 938, 941, 931, 952, 668, -1317, 959 -1317, -1317, -1317, 9797, -1317, 578, 6327, -1317, 48, 955, 960 -1317, 2250, 10757, 10404, -1317, -1317, -1317, -1317, 881, 3694, 961 -1317, 8239, 648, 3545, -1317, -1317, -1317, 1641, 586, 827, 962 970, 7515, 592, 9431, -1317, 7515, -1317, -1317, -1317, -1317, 963 603, -1317, 967, 800, 215, 8378, -1317, 9570, -1317, -1317, 964 8378, -1317, 8491, 8378, -1317, -1317, 966, -1317, 617, 973, 965 839, 983, -1317, -1317, 9253, 6415, -1317, 247, -1317, -1317, 966 10347, -1317, 330, 10347, -1317, -1317, -1317, -1317, -1317, -1317, 967 -1317, -1317, -1317, -1317, -1317, 10347, -1317, -1317, 10480, 10480, 968 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 969 10480, 10480, 10480, 10480, 10480, 10480, 4526, 10347, -1317, 703, 970 751, -1317, -1317, 81, 81, -1317, -1317, 8604, -1317, -1317, 971 939, 576, -1317, 939, 10423, -1317, -1317, -1317, 8975, 6415, 972 968, 976, -1317, 9501, -1317, -1317, 584, -1317, 990, 769, 973 999, 3014, 124, 827, -1317, 81, 81, 827, 125, -1317, 974 81, 81, 939, -1317, -1317, 81, 81, -1317, 856, 9652, 975 1328, 10902, 151, 358, 9652, -1317, 9720, -1317, 827, -1317, 976 9392, -1317, 147, 7790, 7790, 7790, 1328, -1317, 5708, 982, 977 891, 1167, 995, 996, -1317, 1011, 4280, 230, -1317, 1103, 978 1328, 7790, 576, 2250, 576, 648, 671, 856, -1317, -1317, 979 694, 856, -1317, -1317, -1317, 800, -1317, 856, 48, 9797, 980 -1317, 621, 1024, 640, 1026, -1317, 1030, 48, -1317, -1317, 981 4822, 48, 1032, 9570, 1037, -1317, 1585, -1317, 335, 390, 982 970, -1317, 970, 1023, 10480, -1317, 970, 10902, -1317, -1317, 983 1034, -1317, -1317, -1317, 576, -1317, 10830, 887, -1317, 7790, 984 859, 8093, -1317, -1317, 584, 1025, 1036, 1641, 3247, -1317, 985 -1317, 7515, -1317, -1317, 1039, -1317, -1317, 1043, -1317, 1039, 986 1048, 10675, 10347, 67, 1027, 133, 1053, 1061, 1068, 1069, 987 -1317, 1072, 1074, 9362, 6534, -1317, 10347, -1317, 839, 2140, 988 -1317, -1317, -1317, 81, 81, 10290, 10347, 1070, -1317, -1317, 989 675, -1317, 10347, -1317, -1317, 644, -1317, -1317, -1317, -1317, 990 652, 652, 325, 325, 507, 507, 507, 507, 317, 317, 991 581, 826, 820, 823, 861, 10480, 333, -1317, 9797, 1079, 992 1080, 1081, 751, -1317, -1317, -1317, -1317, -1317, 9797, 700, 993 7790, -1317, 9392, -1317, 6891, 8943, -1317, 7824, 6772, -1317, 994 -1317, 769, 9797, 917, 1082, 1083, 1084, 1087, 1088, 1089, 995 1091, -1317, 4955, 3014, -1317, -1317, -1317, -1317, -1317, -1317, 996 -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 997 -1317, 939, -1317, -1317, -1317, 827, -1317, -1317, -1317, -1317, 998 -1317, -1317, -1317, -1317, 1098, -1317, 1099, 1101, -1317, -1317, 999 35, 1070, 5708, -1317, -1317, -1317, 4627, 1102, -1317, -1317, 1000 -1317, -1317, 970, 5944, 1191, -1317, -1317, -1317, -1317, 1094, 1001 35, -1317, -1317, 939, -1317, -1317, 939, 24, 939, -1317, 1002 -1317, -1317, -1317, -1317, -1317, 9223, -1317, 48, -1317, -1317, 1003 432, 441, 9540, 7010, 2348, 10480, 3377, -1317, -1317, 1092, 1004 94, 1092, -1317, 970, -1317, 81, -1317, -1317, 8748, 931, 1005 -1317, -1317, -1317, 941, 1116, 1111, -1317, -1317, 1118, 1119, 1006 -1317, 859, 2430, -1317, 455, -1317, 3247, 827, -1317, 1122, 1007 7515, 9682, 8604, 1125, -1317, -1317, 1130, 1135, 1124, -1317, 1008 10480, 166, 222, 1132, -1317, 1138, 576, 1138, -1317, -1317, 1009 1138, 1137, -1317, 1145, 1147, 1148, 2140, -1317, -1317, -1317, 1010 4627, -1317, -1317, -1317, -1317, 1143, 10347, 1149, 576, -1317, 1011 10347, -1317, 576, -1317, -1317, 10347, -1317, 721, 856, -1317, 1012 -1317, -1317, -1317, -1317, -1317, -1317, 891, 887, 8830, -1317, 1013 -1317, 7129, 1152, -1317, 731, 856, -1317, 745, 763, 856, 1014 -1317, 668, 5561, -1317, -1317, -1317, 9797, 9797, -1317, 8166, 1015 8166, -1317, 1154, 1156, 1153, 1155, -1317, 1168, 460, 196, 1016 1070, -1317, 576, -1317, 4280, -1317, 10347, 474, -1317, 6296, 1017 1159, 1170, 10233, 1172, 1175, -14, 3, 11, 10347, 1179, 1018 48, 10347, 10347, 1160, 1177, 282, 1161, -1317, -1317, -1317, 1019 1180, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1020 970, 1184, 10347, -1317, 9797, 9797, 81, 1188, -1317, 8861, 1021 -1317, -1317, 809, -1317, 3377, -1317, -1317, -1317, -1317, 1585, 1022 -1317, -1317, 1185, -1317, -1317, -1317, -1317, 1193, 2430, -1317, 1023 -1317, 1176, -1317, 1039, -1317, -1317, 2250, 1196, -1317, -1317, 1024 -1317, 709, 1198, -1317, 133, 1202, 10480, 1186, 133, 133, 1025 1211, 9253, 789, 856, -1317, -1317, 1011, 10347, 1214, 1143, 1026 505, 224, 1217, -1317, -1317, 1218, 1217, -1317, -1317, 1226, 1027 -1317, -1317, 939, 1228, 1230, 6653, 1231, 1232, 1243, -1317, 1028 -1317, 1246, -1317, -1317, 939, -1317, -1317, -1317, -1317, 939, 1029 10347, 10347, 887, 1245, -1317, -1317, -1317, -1317, -1317, -1317, 1030 -1317, -1317, -1317, -1317, -1317, -1317, 10480, 10480, 1247, 1251, 1031 1217, -1317, -1317, 970, -1317, -1317, -1317, 4468, 9682, 10347, 1032 10347, 1311, 10347, -1317, 1234, -1317, 1237, -1317, 1239, 10347, 1033 1241, 10347, 1049, 1244, 26, 81, 9084, 750, -1317, -1317, 1034 5944, 1267, 481, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1035 -1317, -1317, 10053, -1317, 8239, 1274, -1317, -1317, 9682, 482, 1036 512, -1317, 1272, 1259, 800, 1280, -1317, 245, -1317, -1317, 1037 -1317, -1317, 939, 1279, -1317, -1317, 1287, 385, 444, 576, 1038 1293, -1317, 1294, -1317, 9797, -1317, -1317, -1317, -1317, -1317, 1039 1295, -1317, 9797, 9797, 9797, -1317, -1317, 1297, -1317, 1298, 1040 1282, 1305, 511, 7863, 7978, -1317, -1317, 348, -1317, 1304, 1041 1310, -1317, 8312, 712, 734, 1308, 739, 6143, -1317, -1317, 1042 -1317, 515, -1317, 765, 1318, 1320, 48, 1371, 879, -1317, 1043 -1317, 10347, -1317, 10233, 10347, -1317, -1317, -1317, 1322, 1329, 1044 -1317, -1317, -1317, 1324, -1317, -1317, -1317, -1317, -1317, -1317, 1045 9682, 800, 265, -1317, 1309, 800, 9797, -1317, -1317, -1317, 1046 -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1047 -1317, 1330, 1331, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1048 1334, -1317, 1333, -1317, -1317, 10233, 143, 10347, 10233, -1317, 1049 1338, 10347, -1317, 259, 1354, 1356, -1317, -1317, 1346, 1347, 1050 1326, -1317, 880, -1317, -1317, -1317, 1328, 2250, 1345, 842, 1051 364, 10480, -1317, 774, -1317, 576, 576, 1352, 1355, 1357, 1052 1360, -1317, -1317, 8166, 1358, -1317, 1436, 10480, 1349, -1317, 1053 -1317, 10145, -1317, 783, -1317, 1350, 10233, 1359, -1317, -1317, 1054 1378, -1317, 1379, -1317, 1394, 1396, -1317, 1361, 9682, -1317, 1055 -1317, -1317, 800, 576, 1386, 1367, 1392, 1217, 1217, -1317, 1056 -1317, -1317, -1317, -1317, 10233, 275, -1317, 384, -1317, -1317, 1057 7600, -1317, -1317, 1375, 10347, -1317, 10347, 7600, 48, 9570, 1058 48, 9570, 1393, -1317, 1398, -1317, -1317, 1395, 842, -1317, 1059 798, -1317, -1317, -1317, 1399, 1401, -1317, 10480, 10480, -1317, 1060 -1317, 964, 167, -1317, -1317, 1388, -1317, 964, -1317, -1317, 1061 2461, 576, -1317, -1317, 48, 9570, 48, 9570, 1409, 1390, 1062 576, -1317, -1317, -1317, -1317, 10145, 1410, 964, 5861, 10347, 1063 10057, 1412, 964, 1414, 2461, 3613, -1317, -1317, -1317, 1420, 1064 -1317, -1317, -1317, -1317, 8604, -1317, -1317, -1317, 9924, -1317, 1065 10145, -1317, -1317, 1402, 9836, -1317, -1317, 10057, 48, 3613, 1066 48, 1421, 1429, 817, -1317, 9924, -1317, -1317, -1317, 9836, 1067 -1317, -1317, -1317, 48, 48, -1317, -1317, -1317, -1317, -1317, 1068 -1317, -1317, -1317 1311 1069 }; 1312 1070 1313 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 1314 static const yytype_uint8 yyr2[] = 1315 { 1316 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1317 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1318 3, 3, 1, 6, 4, 3, 7, 3, 7, 2, 1319 2, 7, 4, 1, 3, 0, 1, 1, 3, 1, 1320 3, 7, 3, 7, 1, 1, 1, 2, 2, 2, 1321 2, 2, 2, 4, 2, 4, 6, 1, 4, 4, 1322 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1323 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1324 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1325 3, 1, 3, 1, 3, 1, 3, 1, 5, 4, 1326 5, 1, 1, 3, 2, 0, 1, 1, 1, 1, 1327 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 1328 6, 7, 1, 3, 1, 3, 0, 1, 1, 1, 1329 1, 1, 1, 1, 1, 1, 6, 4, 2, 7, 1330 1, 3, 1, 2, 1, 2, 1, 2, 2, 5, 1331 7, 5, 9, 5, 9, 1, 3, 1, 1, 3, 1332 3, 2, 1, 2, 2, 0, 1, 2, 3, 0, 1333 1, 2, 3, 3, 4, 0, 1, 1, 2, 5, 1334 7, 6, 6, 4, 3, 4, 2, 3, 2, 3, 1335 3, 3, 3, 5, 3, 3, 4, 1, 5, 6, 1336 5, 6, 9, 10, 9, 10, 2, 1, 2, 2, 1337 2, 1, 6, 8, 10, 12, 14, 0, 1, 0, 1338 1, 1, 3, 4, 7, 0, 1, 3, 1, 3, 1339 1, 1, 1, 3, 1, 1, 1, 3, 0, 1, 1340 3, 4, 1, 3, 1, 1, 3, 3, 3, 3, 1341 3, 2, 3, 6, 3, 3, 4, 1, 2, 2, 1342 3, 5, 8, 7, 7, 5, 9, 2, 2, 5, 1343 3, 5, 4, 3, 4, 4, 7, 3, 3, 3, 1344 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1345 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1346 1, 1, 0, 5, 1, 2, 3, 1, 2, 1, 1347 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1348 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1349 1, 2, 2, 3, 3, 1, 3, 1, 2, 2, 1350 2, 4, 4, 4, 4, 1, 2, 2, 3, 1, 1351 2, 2, 1, 2, 2, 3, 1, 2, 2, 1, 1352 1, 4, 2, 0, 6, 7, 2, 2, 2, 0, 1353 2, 2, 3, 2, 3, 1, 2, 3, 2, 2, 1354 4, 0, 1, 2, 2, 1, 0, 1, 2, 2, 1355 5, 2, 0, 7, 2, 4, 0, 2, 0, 1, 1356 1, 1, 5, 5, 5, 1, 5, 5, 9, 1, 1357 5, 0, 1, 1, 5, 1, 1, 5, 5, 1, 1358 3, 3, 4, 1, 1, 1, 1, 2, 1, 3, 1359 3, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1360 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1361 2, 0, 2, 2, 1, 4, 0, 1, 2, 3, 1362 4, 2, 2, 1, 2, 2, 5, 5, 7, 6, 1363 1, 2, 2, 3, 1, 2, 2, 4, 2, 4, 1364 0, 4, 2, 1, 1, 1, 0, 2, 5, 5, 1365 13, 1, 1, 3, 3, 2, 3, 3, 2, 4, 1366 1, 6, 9, 0, 11, 1, 3, 3, 3, 1, 1367 1, 5, 2, 5, 0, 1, 1, 3, 0, 1, 1368 1, 1, 1, 0, 6, 2, 1, 2, 4, 2, 1369 3, 3, 3, 4, 5, 5, 5, 6, 1, 1, 1370 1, 3, 0, 5, 0, 1, 1, 2, 6, 1, 1371 3, 0, 1, 4, 1, 1, 1, 1, 2, 1, 1372 2, 2, 1, 3, 2, 3, 3, 2, 4, 4, 1373 3, 8, 3, 2, 1, 2, 6, 8, 3, 2, 1374 3, 3, 4, 4, 3, 1, 1, 1, 4, 6, 1375 3, 2, 3, 3, 4, 4, 3, 2, 1, 2, 1376 2, 1, 3, 2, 3, 3, 2, 4, 4, 3, 1377 6, 8, 3, 2, 1, 2, 2, 2, 3, 3, 1378 2, 4, 4, 3, 6, 8, 3, 2, 1, 2, 1379 2, 1, 1, 2, 3, 3, 2, 4, 6, 8, 1380 1, 2, 2, 1, 2, 2, 3, 3, 1, 4, 1381 4, 3, 5, 8, 3, 2, 3, 1, 5, 5, 1382 6, 6, 1, 2, 2, 1, 2, 2, 3, 3, 1383 1, 4, 4, 3, 5, 8, 3, 1, 2, 1, 1384 2, 6, 5, 6, 7, 7, 1, 2, 2, 1, 1385 2, 2, 3, 3, 1, 4, 4, 3, 8, 3, 1386 1, 1, 2, 1, 1, 2, 3, 2, 3, 2, 1387 3, 3, 2, 4, 3, 2, 3, 2, 4, 3, 1388 2, 6, 6, 6, 7, 1, 2, 1, 1, 1, 1389 2, 3, 2, 3, 2, 3, 3, 4, 2, 3, 1390 4, 2, 5, 5, 6, 6, 0, 1, 0, 2 1391 }; 1392 1393 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. 1394 Performed when YYTABLE doesn't specify something else to do. Zero 1395 means the default is an error. */ 1071 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 1072 Performed when YYTABLE does not specify something else to do. Zero 1073 means the default is an error. */ 1396 1074 static const yytype_uint16 yydefact[] = 1397 1075 { … … 1554 1232 }; 1555 1233 1556 /* YYDEFGOTO[NTERM-NUM]. */ 1234 /* YYPGOTO[NTERM-NUM]. */ 1235 static const yytype_int16 yypgoto[] = 1236 { 1237 -1317, 4344, 3244, -1317, 633, -1317, 172, 896, -203, -1317, 1238 487, -518, -482, -910, -211, 1511, 0, -1317, 1129, 534, 1239 537, 615, 556, 984, 981, 988, 980, 989, -1317, 4, 1240 -451, 4784, -913, -1317, -702, 571, 13, -706, 419, -1317, 1241 190, -1317, 345, -964, -1317, -1317, 85, -1317, -1099, -1138, 1242 197, -1317, -1317, -1317, -1317, 20, -1281, -1317, -1317, -1317, 1243 -1317, -1317, -1317, 266, -1095, 50, -1317, -472, -1317, 443, 1244 239, -1317, 118, -1317, -294, -1317, -1317, -1317, 496, -829, 1245 -1317, -1317, 8, -952, 28, 2894, -1317, -1317, -1317, -214, 1246 -1317, 121, 1028, -198, 1848, 3592, -1317, -1317, 127, 296, 1247 1545, 1505, -1317, 1929, -1317, -1317, 137, 2139, -1317, 2574, 1248 804, -1317, -1317, -1317, -637, -1317, 886, 889, 490, 670, 1249 52, -1317, -1317, -1317, 893, 666, -510, -1317, -116, 40, 1250 1073, -1317, -1317, -889, -983, 933, 1377, 1006, -11, -1317, 1251 1351, 508, -322, -183, -145, 623, 724, -1317, 944, -1317, 1252 2701, 574, -443, 875, -1317, -1317, 659, -1317, -228, -1317, 1253 -45, -1317, -1317, -1317, -1253, 370, -1317, -1317, -1317, 1120, 1254 -1317, 33, -1317, -1317, -828, -100, -1316, -170, 2264, -1317, 1255 1914, -1317, 868, -1317, -155, 129, -181, -180, -175, 7, 1256 -41, -40, -35, 1507, 37, 53, 57, -29, -172, -163, 1257 -158, -150, -293, -500, -490, -485, -542, -284, -525, -1317, 1258 -1317, -499, 1035, 1038, 1040, 1486, 4616, -563, -531, -513, 1259 -491, -561, -1317, -506, -730, -727, -723, -562, -311, -227, 1260 -1317, -1317, 378, 19, -93, -1317, 3633, 159, -611, -428 1261 }; 1262 1263 /* YYDEFGOTO[NTERM-NUM]. */ 1557 1264 static const yytype_int16 yydefgoto[] = 1558 1265 { … … 1583 1290 }; 1584 1291 1585 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1586 STATE-NUM. */ 1587 #define YYPACT_NINF -1317 1588 static const yytype_int16 yypact[] = 1589 { 1590 7252, 8635, -1317, -3, -1317, -1317, -1317, -1317, -1317, -1317, 1591 -1317, 23, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1592 -1317, -1317, -1317, -1317, -1317, -1317, 81, 81, 81, 1277, 1593 970, 104, 7368, 277, -1317, -1317, -1317, -1317, -1317, 201, 1594 -1317, -1317, -1317, 1047, 187, -1317, -1317, -1317, -1317, 5370, 1595 -1317, -1317, -1317, -1317, 35, 48, -1317, 1328, -1317, -1317, 1596 -1317, -1317, 235, 1663, 343, 98, 7484, -1317, -1317, 6174, 1597 1066, -1317, -1317, 536, 376, 5540, 978, 1631, 536, 1775, 1598 -1317, -1317, 477, 683, -1317, 536, 1892, -1317, 295, -1317, 1599 422, 489, -1317, -1317, -1317, -1317, 346, 48, 81, -1317, 1600 81, -1317, -1317, -1317, -1317, 9392, 1328, -1317, -1317, 1328, 1601 -1317, 321, -1317, 9431, -1317, -1317, 2250, 9501, -1317, 668, 1602 668, 668, -1317, -1317, -1317, 81, -1317, -1317, -1317, 373, 1603 399, 410, -1317, -1317, -1317, 420, -1317, -1317, -1317, -1317, 1604 -1317, 428, 450, -1317, -1317, 59, 8604, 2904, 144, 440, 1605 493, 498, 531, 544, 560, 8522, 6772, 510, 580, -1317, 1606 9114, -1317, -1317, -1317, -1317, 584, -1317, 153, 4280, 4280, 1607 -1317, 570, 283, -1317, -1317, -1317, -1317, 596, 288, 303, 1608 332, 81, 583, -1317, -1317, 1663, 2232, 648, -1317, 73, 1609 -1317, 81, 81, 48, -1317, -1317, 80, -1317, 81, 81, 1610 -1317, 3694, 599, 613, 668, 6565, -1317, -1317, 661, 5370, 1611 -1317, -1317, 536, -1317, -1317, -1317, 48, -1317, 1328, 35, 1612 -1317, 7675, -1317, 668, 668, 668, 48, -1317, 1277, -1317, 1613 5446, -1317, -1317, 620, 668, -1317, 668, -1317, 201, 8604, 1614 -1317, 673, -1317, 970, 692, 668, -1317, 1277, 697, 707, 1615 -1317, 7368, 576, -1317, -1317, -1317, 4822, -1317, -1317, 9720, 1616 -1317, 648, 165, 10347, 9501, 2250, 3694, -1317, 109, -1317, 1617 -1317, 9431, 1328, 743, 7515, -1317, -1317, 306, -1317, 10675, 1618 770, 800, 2676, 801, 10480, 10499, -1317, 813, -1317, -1317, 1619 -1317, -1317, 10556, 10556, 8378, 795, -1317, -1317, -1317, -1317, 1620 -1317, -1317, 842, -1317, 685, 1919, 8717, 10480, -1317, 652, 1621 325, 507, 317, 581, 826, 820, 823, 861, 111, -1317, 1622 -1317, 827, 703, -1317, 452, -1317, -1317, 2904, -1317, -1317, 1623 278, 856, -1317, 636, 856, 866, 201, -1317, -1317, 872, 1624 9392, -1317, 876, 887, 8830, -1317, -1317, 1020, 2049, 8093, 1625 6565, 536, -1317, 536, 668, 668, -1317, -1317, -1317, -1317, 1626 -1317, -1317, 668, 9392, 1328, -1317, -1317, 9540, 1233, -1317, 1627 7824, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 891, 4627, 1628 10480, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1629 -1317, -1317, -1317, -1317, -1317, 2250, -1317, 552, 901, 904, 1630 912, 862, 920, 922, 924, 2232, -1317, -1317, 932, 35, 1631 936, -1317, -1317, 939, -1317, -1317, -1317, 4822, -1317, -1317, 1632 -1317, -1317, -1317, 3694, -1317, 8604, 8604, -1317, 668, 2250, 1633 6684, 1328, 8166, -1317, -1317, -1317, -1317, 4822, 165, -1317, 1634 -1317, 536, 48, -1317, -1317, 4822, -1317, 6449, -1317, -1317, 1635 668, 668, 484, 8011, 938, 941, 931, 952, 668, -1317, 1636 -1317, -1317, -1317, 9797, -1317, 578, 6327, -1317, 48, 955, 1637 -1317, 2250, 10757, 10404, -1317, -1317, -1317, -1317, 881, 3694, 1638 -1317, 8239, 648, 3545, -1317, -1317, -1317, 1641, 586, 827, 1639 970, 7515, 592, 9431, -1317, 7515, -1317, -1317, -1317, -1317, 1640 603, -1317, 967, 800, 215, 8378, -1317, 9570, -1317, -1317, 1641 8378, -1317, 8491, 8378, -1317, -1317, 966, -1317, 617, 973, 1642 839, 983, -1317, -1317, 9253, 6415, -1317, 247, -1317, -1317, 1643 10347, -1317, 330, 10347, -1317, -1317, -1317, -1317, -1317, -1317, 1644 -1317, -1317, -1317, -1317, -1317, 10347, -1317, -1317, 10480, 10480, 1645 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 1646 10480, 10480, 10480, 10480, 10480, 10480, 4526, 10347, -1317, 703, 1647 751, -1317, -1317, 81, 81, -1317, -1317, 8604, -1317, -1317, 1648 939, 576, -1317, 939, 10423, -1317, -1317, -1317, 8975, 6415, 1649 968, 976, -1317, 9501, -1317, -1317, 584, -1317, 990, 769, 1650 999, 3014, 124, 827, -1317, 81, 81, 827, 125, -1317, 1651 81, 81, 939, -1317, -1317, 81, 81, -1317, 856, 9652, 1652 1328, 10902, 151, 358, 9652, -1317, 9720, -1317, 827, -1317, 1653 9392, -1317, 147, 7790, 7790, 7790, 1328, -1317, 5708, 982, 1654 891, 1167, 995, 996, -1317, 1011, 4280, 230, -1317, 1103, 1655 1328, 7790, 576, 2250, 576, 648, 671, 856, -1317, -1317, 1656 694, 856, -1317, -1317, -1317, 800, -1317, 856, 48, 9797, 1657 -1317, 621, 1024, 640, 1026, -1317, 1030, 48, -1317, -1317, 1658 4822, 48, 1032, 9570, 1037, -1317, 1585, -1317, 335, 390, 1659 970, -1317, 970, 1023, 10480, -1317, 970, 10902, -1317, -1317, 1660 1034, -1317, -1317, -1317, 576, -1317, 10830, 887, -1317, 7790, 1661 859, 8093, -1317, -1317, 584, 1025, 1036, 1641, 3247, -1317, 1662 -1317, 7515, -1317, -1317, 1039, -1317, -1317, 1043, -1317, 1039, 1663 1048, 10675, 10347, 67, 1027, 133, 1053, 1061, 1068, 1069, 1664 -1317, 1072, 1074, 9362, 6534, -1317, 10347, -1317, 839, 2140, 1665 -1317, -1317, -1317, 81, 81, 10290, 10347, 1070, -1317, -1317, 1666 675, -1317, 10347, -1317, -1317, 644, -1317, -1317, -1317, -1317, 1667 652, 652, 325, 325, 507, 507, 507, 507, 317, 317, 1668 581, 826, 820, 823, 861, 10480, 333, -1317, 9797, 1079, 1669 1080, 1081, 751, -1317, -1317, -1317, -1317, -1317, 9797, 700, 1670 7790, -1317, 9392, -1317, 6891, 8943, -1317, 7824, 6772, -1317, 1671 -1317, 769, 9797, 917, 1082, 1083, 1084, 1087, 1088, 1089, 1672 1091, -1317, 4955, 3014, -1317, -1317, -1317, -1317, -1317, -1317, 1673 -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1674 -1317, 939, -1317, -1317, -1317, 827, -1317, -1317, -1317, -1317, 1675 -1317, -1317, -1317, -1317, 1098, -1317, 1099, 1101, -1317, -1317, 1676 35, 1070, 5708, -1317, -1317, -1317, 4627, 1102, -1317, -1317, 1677 -1317, -1317, 970, 5944, 1191, -1317, -1317, -1317, -1317, 1094, 1678 35, -1317, -1317, 939, -1317, -1317, 939, 24, 939, -1317, 1679 -1317, -1317, -1317, -1317, -1317, 9223, -1317, 48, -1317, -1317, 1680 432, 441, 9540, 7010, 2348, 10480, 3377, -1317, -1317, 1092, 1681 94, 1092, -1317, 970, -1317, 81, -1317, -1317, 8748, 931, 1682 -1317, -1317, -1317, 941, 1116, 1111, -1317, -1317, 1118, 1119, 1683 -1317, 859, 2430, -1317, 455, -1317, 3247, 827, -1317, 1122, 1684 7515, 9682, 8604, 1125, -1317, -1317, 1130, 1135, 1124, -1317, 1685 10480, 166, 222, 1132, -1317, 1138, 576, 1138, -1317, -1317, 1686 1138, 1137, -1317, 1145, 1147, 1148, 2140, -1317, -1317, -1317, 1687 4627, -1317, -1317, -1317, -1317, 1143, 10347, 1149, 576, -1317, 1688 10347, -1317, 576, -1317, -1317, 10347, -1317, 721, 856, -1317, 1689 -1317, -1317, -1317, -1317, -1317, -1317, 891, 887, 8830, -1317, 1690 -1317, 7129, 1152, -1317, 731, 856, -1317, 745, 763, 856, 1691 -1317, 668, 5561, -1317, -1317, -1317, 9797, 9797, -1317, 8166, 1692 8166, -1317, 1154, 1156, 1153, 1155, -1317, 1168, 460, 196, 1693 1070, -1317, 576, -1317, 4280, -1317, 10347, 474, -1317, 6296, 1694 1159, 1170, 10233, 1172, 1175, -14, 3, 11, 10347, 1179, 1695 48, 10347, 10347, 1160, 1177, 282, 1161, -1317, -1317, -1317, 1696 1180, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1697 970, 1184, 10347, -1317, 9797, 9797, 81, 1188, -1317, 8861, 1698 -1317, -1317, 809, -1317, 3377, -1317, -1317, -1317, -1317, 1585, 1699 -1317, -1317, 1185, -1317, -1317, -1317, -1317, 1193, 2430, -1317, 1700 -1317, 1176, -1317, 1039, -1317, -1317, 2250, 1196, -1317, -1317, 1701 -1317, 709, 1198, -1317, 133, 1202, 10480, 1186, 133, 133, 1702 1211, 9253, 789, 856, -1317, -1317, 1011, 10347, 1214, 1143, 1703 505, 224, 1217, -1317, -1317, 1218, 1217, -1317, -1317, 1226, 1704 -1317, -1317, 939, 1228, 1230, 6653, 1231, 1232, 1243, -1317, 1705 -1317, 1246, -1317, -1317, 939, -1317, -1317, -1317, -1317, 939, 1706 10347, 10347, 887, 1245, -1317, -1317, -1317, -1317, -1317, -1317, 1707 -1317, -1317, -1317, -1317, -1317, -1317, 10480, 10480, 1247, 1251, 1708 1217, -1317, -1317, 970, -1317, -1317, -1317, 4468, 9682, 10347, 1709 10347, 1311, 10347, -1317, 1234, -1317, 1237, -1317, 1239, 10347, 1710 1241, 10347, 1049, 1244, 26, 81, 9084, 750, -1317, -1317, 1711 5944, 1267, 481, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1712 -1317, -1317, 10053, -1317, 8239, 1274, -1317, -1317, 9682, 482, 1713 512, -1317, 1272, 1259, 800, 1280, -1317, 245, -1317, -1317, 1714 -1317, -1317, 939, 1279, -1317, -1317, 1287, 385, 444, 576, 1715 1293, -1317, 1294, -1317, 9797, -1317, -1317, -1317, -1317, -1317, 1716 1295, -1317, 9797, 9797, 9797, -1317, -1317, 1297, -1317, 1298, 1717 1282, 1305, 511, 7863, 7978, -1317, -1317, 348, -1317, 1304, 1718 1310, -1317, 8312, 712, 734, 1308, 739, 6143, -1317, -1317, 1719 -1317, 515, -1317, 765, 1318, 1320, 48, 1371, 879, -1317, 1720 -1317, 10347, -1317, 10233, 10347, -1317, -1317, -1317, 1322, 1329, 1721 -1317, -1317, -1317, 1324, -1317, -1317, -1317, -1317, -1317, -1317, 1722 9682, 800, 265, -1317, 1309, 800, 9797, -1317, -1317, -1317, 1723 -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1724 -1317, 1330, 1331, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1725 1334, -1317, 1333, -1317, -1317, 10233, 143, 10347, 10233, -1317, 1726 1338, 10347, -1317, 259, 1354, 1356, -1317, -1317, 1346, 1347, 1727 1326, -1317, 880, -1317, -1317, -1317, 1328, 2250, 1345, 842, 1728 364, 10480, -1317, 774, -1317, 576, 576, 1352, 1355, 1357, 1729 1360, -1317, -1317, 8166, 1358, -1317, 1436, 10480, 1349, -1317, 1730 -1317, 10145, -1317, 783, -1317, 1350, 10233, 1359, -1317, -1317, 1731 1378, -1317, 1379, -1317, 1394, 1396, -1317, 1361, 9682, -1317, 1732 -1317, -1317, 800, 576, 1386, 1367, 1392, 1217, 1217, -1317, 1733 -1317, -1317, -1317, -1317, 10233, 275, -1317, 384, -1317, -1317, 1734 7600, -1317, -1317, 1375, 10347, -1317, 10347, 7600, 48, 9570, 1735 48, 9570, 1393, -1317, 1398, -1317, -1317, 1395, 842, -1317, 1736 798, -1317, -1317, -1317, 1399, 1401, -1317, 10480, 10480, -1317, 1737 -1317, 964, 167, -1317, -1317, 1388, -1317, 964, -1317, -1317, 1738 2461, 576, -1317, -1317, 48, 9570, 48, 9570, 1409, 1390, 1739 576, -1317, -1317, -1317, -1317, 10145, 1410, 964, 5861, 10347, 1740 10057, 1412, 964, 1414, 2461, 3613, -1317, -1317, -1317, 1420, 1741 -1317, -1317, -1317, -1317, 8604, -1317, -1317, -1317, 9924, -1317, 1742 10145, -1317, -1317, 1402, 9836, -1317, -1317, 10057, 48, 3613, 1743 48, 1421, 1429, 817, -1317, 9924, -1317, -1317, -1317, 9836, 1744 -1317, -1317, -1317, 48, 48, -1317, -1317, -1317, -1317, -1317, 1745 -1317, -1317, -1317 1746 }; 1747 1748 /* YYPGOTO[NTERM-NUM]. */ 1749 static const yytype_int16 yypgoto[] = 1750 { 1751 -1317, 4344, 3244, -1317, 633, -1317, 172, 896, -203, -1317, 1752 487, -518, -482, -910, -211, 1511, 0, -1317, 1129, 534, 1753 537, 615, 556, 984, 981, 988, 980, 989, -1317, 4, 1754 -451, 4784, -913, -1317, -702, 571, 13, -706, 419, -1317, 1755 190, -1317, 345, -964, -1317, -1317, 85, -1317, -1099, -1138, 1756 197, -1317, -1317, -1317, -1317, 20, -1281, -1317, -1317, -1317, 1757 -1317, -1317, -1317, 266, -1095, 50, -1317, -472, -1317, 443, 1758 239, -1317, 118, -1317, -294, -1317, -1317, -1317, 496, -829, 1759 -1317, -1317, 8, -952, 28, 2894, -1317, -1317, -1317, -214, 1760 -1317, 121, 1028, -198, 1848, 3592, -1317, -1317, 127, 296, 1761 1545, 1505, -1317, 1929, -1317, -1317, 137, 2139, -1317, 2574, 1762 804, -1317, -1317, -1317, -637, -1317, 886, 889, 490, 670, 1763 52, -1317, -1317, -1317, 893, 666, -510, -1317, -116, 40, 1764 1073, -1317, -1317, -889, -983, 933, 1377, 1006, -11, -1317, 1765 1351, 508, -322, -183, -145, 623, 724, -1317, 944, -1317, 1766 2701, 574, -443, 875, -1317, -1317, 659, -1317, -228, -1317, 1767 -45, -1317, -1317, -1317, -1253, 370, -1317, -1317, -1317, 1120, 1768 -1317, 33, -1317, -1317, -828, -100, -1316, -170, 2264, -1317, 1769 1914, -1317, 868, -1317, -155, 129, -181, -180, -175, 7, 1770 -41, -40, -35, 1507, 37, 53, 57, -29, -172, -163, 1771 -158, -150, -293, -500, -490, -485, -542, -284, -525, -1317, 1772 -1317, -499, 1035, 1038, 1040, 1486, 4616, -563, -531, -513, 1773 -491, -561, -1317, -506, -730, -727, -723, -562, -311, -227, 1774 -1317, -1317, 378, 19, -93, -1317, 3633, 159, -611, -428 1775 }; 1776 1777 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 1778 positive, shift that token. If negative, reduce the rule which 1779 number is the opposite. If YYTABLE_NINF, syntax error. */ 1780 #define YYTABLE_NINF -520 1292 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 1293 positive, shift that token. If negative, reduce the rule whose 1294 number is the opposite. If YYTABLE_NINF, syntax error. */ 1781 1295 static const yytype_int16 yytable[] = 1782 1296 { … … 2881 2395 }; 2882 2396 2883 #define yypact_value_is_default(yystate) \2884 ((yystate) == (-1317))2885 2886 #define yytable_value_is_error(yytable_value) \2887 YYID (0)2888 2889 2397 static const yytype_int16 yycheck[] = 2890 2398 { … … 3989 3497 }; 3990 3498 3991 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing3992 symbol of state STATE-NUM. */3499 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 3500 symbol of state STATE-NUM. */ 3993 3501 static const yytype_uint16 yystos[] = 3994 3502 { … … 4151 3659 }; 4152 3660 4153 #define yyerrok (yyerrstatus = 0) 4154 #define yyclearin (yychar = YYEMPTY) 4155 #define YYEMPTY (-2) 4156 #define YYEOF 0 4157 4158 #define YYACCEPT goto yyacceptlab 4159 #define YYABORT goto yyabortlab 4160 #define YYERROR goto yyerrorlab 4161 4162 4163 /* Like YYERROR except do call yyerror. This remains here temporarily 4164 to ease the transition to the new meaning of YYERROR, for GCC. 4165 Once GCC version 2 has supplanted version 1, this can go. However, 4166 YYFAIL appears to be in use. Nevertheless, it is formally deprecated 4167 in Bison 2.4.2's NEWS entry, where a plan to phase it out is 4168 discussed. */ 4169 4170 #define YYFAIL goto yyerrlab 4171 #if defined YYFAIL 4172 /* This is here to suppress warnings from the GCC cpp's 4173 -Wunused-macros. Normally we don't worry about that warning, but 4174 some users do, and we want to make it easy for users to remove 4175 YYFAIL uses, which will produce warnings from Bison 2.5. */ 4176 #endif 3661 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 3662 static const yytype_uint16 yyr1[] = 3663 { 3664 0, 133, 134, 135, 136, 136, 136, 137, 137, 137, 3665 138, 138, 139, 139, 140, 140, 141, 141, 142, 142, 3666 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 3667 143, 143, 143, 144, 144, 145, 145, 146, 146, 147, 3668 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 3669 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 3670 149, 149, 150, 150, 150, 150, 151, 151, 151, 152, 3671 152, 152, 152, 153, 153, 153, 154, 154, 154, 155, 3672 155, 155, 155, 155, 156, 156, 156, 157, 157, 158, 3673 158, 159, 159, 160, 160, 161, 161, 162, 162, 162, 3674 162, 163, 164, 164, 164, 165, 165, 166, 166, 166, 3675 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 3676 167, 167, 168, 168, 169, 169, 170, 170, 171, 171, 3677 171, 171, 171, 171, 171, 171, 171, 172, 173, 173, 3678 174, 174, 175, 175, 175, 175, 176, 176, 177, 178, 3679 178, 178, 178, 178, 178, 179, 179, 179, 180, 180, 3680 181, 181, 182, 182, 183, 184, 184, 185, 185, 186, 3681 186, 187, 187, 187, 187, 188, 188, 189, 189, 190, 3682 190, 190, 191, 191, 192, 192, 192, 192, 192, 192, 3683 192, 192, 192, 192, 193, 193, 193, 194, 194, 194, 3684 194, 194, 195, 195, 195, 195, 196, 197, 197, 197, 3685 197, 197, 198, 198, 198, 198, 198, 199, 199, 200, 3686 200, 201, 201, 202, 202, 203, 203, 203, 204, 204, 3687 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, 3688 210, 210, 211, 211, 212, 212, 213, 213, 213, 213, 3689 213, 214, 214, 214, 215, 215, 215, 216, 216, 216, 3690 216, 216, 217, 217, 217, 218, 218, 219, 219, 219, 3691 220, 220, 220, 220, 220, 221, 221, 222, 222, 222, 3692 222, 223, 223, 224, 224, 224, 224, 225, 225, 225, 3693 225, 226, 226, 227, 227, 228, 228, 229, 229, 229, 3694 229, 229, 230, 229, 231, 231, 231, 232, 232, 233, 3695 233, 233, 233, 233, 233, 233, 233, 234, 234, 234, 3696 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 3697 235, 235, 235, 235, 235, 236, 236, 237, 237, 237, 3698 237, 238, 238, 238, 238, 239, 239, 239, 239, 240, 3699 240, 240, 241, 241, 241, 241, 242, 242, 242, 243, 3700 243, 244, 244, 245, 244, 244, 244, 246, 246, 247, 3701 247, 248, 248, 248, 248, 249, 249, 249, 249, 250, 3702 250, 251, 251, 251, 251, 251, 252, 252, 253, 254, 3703 255, 255, 256, 255, 257, 257, 258, 258, 259, 259, 3704 260, 260, 260, 260, 260, 261, 261, 261, 261, 262, 3705 262, 263, 263, 264, 264, 265, 265, 265, 265, 266, 3706 266, 266, 266, 266, 267, 267, 267, 267, 267, 268, 3707 268, 269, 269, 270, 270, 271, 271, 271, 272, 272, 3708 272, 273, 273, 273, 274, 274, 274, 275, 275, 275, 3709 275, 276, 276, 276, 277, 277, 278, 278, 278, 278, 3710 278, 279, 279, 280, 280, 281, 281, 281, 281, 281, 3711 282, 282, 282, 282, 283, 283, 283, 284, 285, 285, 3712 287, 286, 286, 288, 288, 288, 289, 289, 290, 290, 3713 290, 291, 291, 291, 291, 292, 292, 292, 293, 293, 3714 294, 294, 295, 296, 295, 297, 297, 298, 298, 299, 3715 299, 299, 300, 300, 301, 301, 302, 302, 303, 303, 3716 304, 304, 304, 305, 304, 304, 306, 306, 306, 307, 3717 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 3718 308, 309, 310, 310, 311, 311, 312, 312, 313, 314, 3719 314, 315, 315, 315, 316, 316, 316, 316, 317, 317, 3720 317, 317, 318, 318, 319, 319, 319, 320, 320, 320, 3721 320, 321, 321, 322, 322, 322, 323, 323, 323, 324, 3722 324, 324, 325, 325, 325, 326, 326, 326, 327, 327, 3723 327, 328, 328, 328, 329, 329, 329, 330, 330, 330, 3724 330, 331, 331, 332, 332, 332, 333, 333, 333, 333, 3725 334, 334, 334, 335, 335, 335, 335, 336, 336, 336, 3726 337, 337, 337, 337, 338, 338, 338, 339, 339, 339, 3727 339, 340, 340, 341, 341, 341, 342, 342, 343, 343, 3728 344, 344, 344, 345, 345, 345, 345, 345, 346, 346, 3729 346, 346, 347, 347, 347, 348, 348, 348, 349, 349, 3730 349, 349, 350, 350, 350, 351, 351, 351, 351, 351, 3731 352, 352, 352, 352, 353, 353, 353, 354, 354, 354, 3732 355, 355, 355, 355, 355, 355, 356, 356, 356, 357, 3733 357, 357, 357, 357, 358, 358, 358, 358, 359, 359, 3734 360, 360, 360, 361, 361, 362, 362, 362, 362, 362, 3735 362, 363, 363, 363, 363, 363, 363, 363, 363, 363, 3736 363, 364, 364, 364, 364, 365, 365, 365, 366, 366, 3737 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 3738 368, 368, 369, 370, 370, 370, 371, 371, 372, 372 3739 }; 3740 3741 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ 3742 static const yytype_uint8 yyr2[] = 3743 { 3744 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 3745 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3746 3, 3, 1, 6, 4, 3, 7, 3, 7, 2, 3747 2, 7, 4, 1, 3, 0, 1, 1, 3, 1, 3748 3, 7, 3, 7, 1, 1, 1, 2, 2, 2, 3749 2, 2, 2, 4, 2, 4, 6, 1, 4, 4, 3750 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 3751 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3752 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3753 3, 1, 3, 1, 3, 1, 3, 1, 5, 4, 3754 5, 1, 1, 3, 2, 0, 1, 1, 1, 1, 3755 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 3756 6, 7, 1, 3, 1, 3, 0, 1, 1, 1, 3757 1, 1, 1, 1, 1, 1, 6, 4, 2, 7, 3758 1, 3, 1, 2, 1, 2, 1, 2, 2, 5, 3759 7, 5, 9, 5, 9, 1, 3, 1, 1, 3, 3760 3, 2, 1, 2, 2, 0, 1, 2, 3, 0, 3761 1, 2, 3, 3, 4, 0, 1, 1, 2, 5, 3762 7, 6, 6, 4, 3, 4, 2, 3, 2, 3, 3763 3, 3, 3, 5, 3, 3, 4, 1, 5, 6, 3764 5, 6, 9, 10, 9, 10, 2, 1, 2, 2, 3765 2, 1, 6, 8, 10, 12, 14, 0, 1, 0, 3766 1, 1, 3, 4, 7, 0, 1, 3, 1, 3, 3767 1, 1, 1, 3, 1, 1, 1, 3, 0, 1, 3768 3, 4, 1, 3, 1, 1, 3, 3, 3, 3, 3769 3, 2, 3, 6, 3, 3, 4, 1, 2, 2, 3770 3, 5, 8, 7, 7, 5, 9, 2, 2, 5, 3771 3, 5, 4, 3, 4, 4, 7, 3, 3, 3, 3772 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 3773 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 3774 1, 1, 0, 5, 1, 2, 3, 1, 2, 1, 3775 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3776 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3777 1, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3778 2, 4, 4, 4, 4, 1, 2, 2, 3, 1, 3779 2, 2, 1, 2, 2, 3, 1, 2, 2, 1, 3780 1, 4, 2, 0, 6, 7, 2, 2, 2, 0, 3781 2, 2, 3, 2, 3, 1, 2, 3, 2, 2, 3782 4, 0, 1, 2, 2, 1, 0, 1, 2, 2, 3783 5, 2, 0, 7, 2, 4, 0, 2, 0, 1, 3784 1, 1, 5, 5, 5, 1, 5, 5, 9, 1, 3785 5, 0, 1, 1, 5, 1, 1, 5, 5, 1, 3786 3, 3, 4, 1, 1, 1, 1, 2, 1, 3, 3787 3, 1, 2, 1, 3, 1, 1, 1, 1, 1, 3788 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3789 2, 0, 2, 2, 1, 4, 0, 1, 2, 3, 3790 4, 2, 2, 1, 2, 2, 5, 5, 7, 6, 3791 1, 2, 2, 3, 1, 2, 2, 4, 2, 4, 3792 0, 4, 2, 1, 1, 1, 0, 2, 5, 5, 3793 13, 1, 1, 3, 3, 2, 3, 3, 2, 4, 3794 1, 6, 9, 0, 11, 1, 3, 3, 3, 1, 3795 1, 5, 2, 5, 0, 1, 1, 3, 0, 1, 3796 1, 1, 1, 0, 6, 2, 1, 2, 4, 2, 3797 3, 3, 3, 4, 5, 5, 5, 6, 1, 1, 3798 1, 3, 0, 5, 0, 1, 1, 2, 6, 1, 3799 3, 0, 1, 4, 1, 1, 1, 1, 2, 1, 3800 2, 2, 1, 3, 2, 3, 3, 2, 4, 4, 3801 3, 8, 3, 2, 1, 2, 6, 8, 3, 2, 3802 3, 3, 4, 4, 3, 1, 1, 1, 4, 6, 3803 3, 2, 3, 3, 4, 4, 3, 2, 1, 2, 3804 2, 1, 3, 2, 3, 3, 2, 4, 4, 3, 3805 6, 8, 3, 2, 1, 2, 2, 2, 3, 3, 3806 2, 4, 4, 3, 6, 8, 3, 2, 1, 2, 3807 2, 1, 1, 2, 3, 3, 2, 4, 6, 8, 3808 1, 2, 2, 1, 2, 2, 3, 3, 1, 4, 3809 4, 3, 5, 8, 3, 2, 3, 1, 5, 5, 3810 6, 6, 1, 2, 2, 1, 2, 2, 3, 3, 3811 1, 4, 4, 3, 5, 8, 3, 1, 2, 1, 3812 2, 6, 5, 6, 7, 7, 1, 2, 2, 1, 3813 2, 2, 3, 3, 1, 4, 4, 3, 8, 3, 3814 1, 1, 2, 1, 1, 2, 3, 2, 3, 2, 3815 3, 3, 2, 4, 3, 2, 3, 2, 4, 3, 3816 2, 6, 6, 6, 7, 1, 2, 1, 1, 1, 3817 2, 3, 2, 3, 2, 3, 3, 4, 2, 3, 3818 4, 2, 5, 5, 6, 6, 0, 1, 0, 2 3819 }; 3820 3821 3822 #define yyerrok (yyerrstatus = 0) 3823 #define yyclearin (yychar = YYEMPTY) 3824 #define YYEMPTY (-2) 3825 #define YYEOF 0 3826 3827 #define YYACCEPT goto yyacceptlab 3828 #define YYABORT goto yyabortlab 3829 #define YYERROR goto yyerrorlab 3830 4177 3831 4178 3832 #define YYRECOVERING() (!!yyerrstatus) 4179 3833 4180 #define YYBACKUP(Token, Value) \ 4181 do \ 4182 if (yychar == YYEMPTY && yylen == 1) \ 4183 { \ 4184 yychar = (Token); \ 4185 yylval = (Value); \ 4186 YYPOPSTACK (1); \ 4187 goto yybackup; \ 4188 } \ 4189 else \ 4190 { \ 3834 #define YYBACKUP(Token, Value) \ 3835 do \ 3836 if (yychar == YYEMPTY) \ 3837 { \ 3838 yychar = (Token); \ 3839 yylval = (Value); \ 3840 YYPOPSTACK (yylen); \ 3841 yystate = *yyssp; \ 3842 goto yybackup; \ 3843 } \ 3844 else \ 3845 { \ 4191 3846 yyerror (YY_("syntax error: cannot back up")); \ 4192 YYERROR; \ 4193 } \ 4194 while (YYID (0)) 4195 4196 4197 #define YYTERROR 1 4198 #define YYERRCODE 256 4199 4200 4201 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 4202 If N is 0, then set CURRENT to the empty location which ends 4203 the previous symbol: RHS[0] (always defined). */ 4204 4205 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 4206 #ifndef YYLLOC_DEFAULT 4207 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 4208 do \ 4209 if (YYID (N)) \ 4210 { \ 4211 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 4212 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 4213 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 4214 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 4215 } \ 4216 else \ 4217 { \ 4218 (Current).first_line = (Current).last_line = \ 4219 YYRHSLOC (Rhs, 0).last_line; \ 4220 (Current).first_column = (Current).last_column = \ 4221 YYRHSLOC (Rhs, 0).last_column; \ 4222 } \ 4223 while (YYID (0)) 4224 #endif 4225 4226 4227 /* This macro is provided for backward compatibility. */ 4228 4229 #ifndef YY_LOCATION_PRINT 4230 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 4231 #endif 4232 4233 4234 /* YYLEX -- calling `yylex' with the right arguments. */ 4235 4236 #ifdef YYLEX_PARAM 4237 # define YYLEX yylex (YYLEX_PARAM) 4238 #else 4239 # define YYLEX yylex () 4240 #endif 3847 YYERROR; \ 3848 } \ 3849 while (0) 3850 3851 /* Error token number */ 3852 #define YYTERROR 1 3853 #define YYERRCODE 256 3854 3855 4241 3856 4242 3857 /* Enable debugging if requested. */ … … 4248 3863 # endif 4249 3864 4250 # define YYDPRINTF(Args) \ 4251 do { \ 4252 if (yydebug) \ 4253 YYFPRINTF Args; \ 4254 } while (YYID (0)) 4255 4256 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 4257 do { \ 4258 if (yydebug) \ 4259 { \ 4260 YYFPRINTF (stderr, "%s ", Title); \ 4261 yy_symbol_print (stderr, \ 4262 Type, Value); \ 4263 YYFPRINTF (stderr, "\n"); \ 4264 } \ 4265 } while (YYID (0)) 4266 4267 4268 /*--------------------------------. 4269 | Print this symbol on YYOUTPUT. | 4270 `--------------------------------*/ 4271 4272 /*ARGSUSED*/ 4273 #if (defined __STDC__ || defined __C99__FUNC__ \ 4274 || defined __cplusplus || defined _MSC_VER) 3865 # define YYDPRINTF(Args) \ 3866 do { \ 3867 if (yydebug) \ 3868 YYFPRINTF Args; \ 3869 } while (0) 3870 3871 /* This macro is provided for backward compatibility. */ 3872 #ifndef YY_LOCATION_PRINT 3873 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 3874 #endif 3875 3876 3877 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 3878 do { \ 3879 if (yydebug) \ 3880 { \ 3881 YYFPRINTF (stderr, "%s ", Title); \ 3882 yy_symbol_print (stderr, \ 3883 Type, Value); \ 3884 YYFPRINTF (stderr, "\n"); \ 3885 } \ 3886 } while (0) 3887 3888 3889 /*----------------------------------------. 3890 | Print this symbol's value on YYOUTPUT. | 3891 `----------------------------------------*/ 3892 4275 3893 static void 4276 3894 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 4277 #else4278 static void4279 yy_symbol_value_print (yyoutput, yytype, yyvaluep)4280 FILE *yyoutput;4281 int yytype;4282 YYSTYPE const * const yyvaluep;4283 #endif4284 3895 { 3896 FILE *yyo = yyoutput; 3897 YYUSE (yyo); 4285 3898 if (!yyvaluep) 4286 3899 return; … … 4288 3901 if (yytype < YYNTOKENS) 4289 3902 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 4290 # else4291 YYUSE (yyoutput);4292 3903 # endif 4293 switch (yytype) 4294 { 4295 default: 4296 break; 4297 } 3904 YYUSE (yytype); 4298 3905 } 4299 3906 … … 4303 3910 `--------------------------------*/ 4304 3911 4305 #if (defined __STDC__ || defined __C99__FUNC__ \4306 || defined __cplusplus || defined _MSC_VER)4307 3912 static void 4308 3913 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 4309 #else4310 static void4311 yy_symbol_print (yyoutput, yytype, yyvaluep)4312 FILE *yyoutput;4313 int yytype;4314 YYSTYPE const * const yyvaluep;4315 #endif4316 3914 { 4317 if (yytype < YYNTOKENS) 4318 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 4319 else 4320 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 3915 YYFPRINTF (yyoutput, "%s %s (", 3916 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); 4321 3917 4322 3918 yy_symbol_value_print (yyoutput, yytype, yyvaluep); … … 4329 3925 `------------------------------------------------------------------*/ 4330 3926 4331 #if (defined __STDC__ || defined __C99__FUNC__ \4332 || defined __cplusplus || defined _MSC_VER)4333 3927 static void 4334 3928 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 4335 #else4336 static void4337 yy_stack_print (yybottom, yytop)4338 yytype_int16 *yybottom;4339 yytype_int16 *yytop;4340 #endif4341 3929 { 4342 3930 YYFPRINTF (stderr, "Stack now"); … … 4349 3937 } 4350 3938 4351 # define YY_STACK_PRINT(Bottom, Top) 4352 do { 4353 if (yydebug) 4354 yy_stack_print ((Bottom), (Top)); 4355 } while ( YYID (0))3939 # define YY_STACK_PRINT(Bottom, Top) \ 3940 do { \ 3941 if (yydebug) \ 3942 yy_stack_print ((Bottom), (Top)); \ 3943 } while (0) 4356 3944 4357 3945 … … 4360 3948 `------------------------------------------------*/ 4361 3949 4362 #if (defined __STDC__ || defined __C99__FUNC__ \4363 || defined __cplusplus || defined _MSC_VER)4364 3950 static void 4365 yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 4366 #else 4367 static void 4368 yy_reduce_print (yyvsp, yyrule) 4369 YYSTYPE *yyvsp; 4370 int yyrule; 4371 #endif 3951 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) 4372 3952 { 3953 unsigned long int yylno = yyrline[yyrule]; 4373 3954 int yynrhs = yyr2[yyrule]; 4374 3955 int yyi; 4375 unsigned long int yylno = yyrline[yyrule];4376 3956 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 4377 3957 yyrule - 1, yylno); 4378 3958 /* The symbols being reduced. */ 4379 3959 for (yyi = 0; yyi < yynrhs; yyi++) 4380 3960 { 4381 3961 YYFPRINTF (stderr, " $%d = ", yyi + 1); 4382 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 4383 &(yyvsp[(yyi + 1) - (yynrhs)]) 4384 ); 3962 yy_symbol_print (stderr, 3963 yystos[yyssp[yyi + 1 - yynrhs]], 3964 &(yyvsp[(yyi + 1) - (yynrhs)]) 3965 ); 4385 3966 YYFPRINTF (stderr, "\n"); 4386 3967 } 4387 3968 } 4388 3969 4389 # define YY_REDUCE_PRINT(Rule) 4390 do { 4391 if (yydebug) 4392 yy_reduce_print (yy vsp, Rule); \4393 } while ( YYID (0))3970 # define YY_REDUCE_PRINT(Rule) \ 3971 do { \ 3972 if (yydebug) \ 3973 yy_reduce_print (yyssp, yyvsp, Rule); \ 3974 } while (0) 4394 3975 4395 3976 /* Nonzero means print parse trace. It is left uninitialized so that … … 4405 3986 4406 3987 /* YYINITDEPTH -- initial size of the parser's stacks. */ 4407 #ifndef 3988 #ifndef YYINITDEPTH 4408 3989 # define YYINITDEPTH 200 4409 3990 #endif … … 4428 4009 # else 4429 4010 /* Return the length of YYSTR. */ 4430 #if (defined __STDC__ || defined __C99__FUNC__ \4431 || defined __cplusplus || defined _MSC_VER)4432 4011 static YYSIZE_T 4433 4012 yystrlen (const char *yystr) 4434 #else4435 static YYSIZE_T4436 yystrlen (yystr)4437 const char *yystr;4438 #endif4439 4013 { 4440 4014 YYSIZE_T yylen; … … 4452 4026 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 4453 4027 YYDEST. */ 4454 #if (defined __STDC__ || defined __C99__FUNC__ \4455 || defined __cplusplus || defined _MSC_VER)4456 4028 static char * 4457 4029 yystpcpy (char *yydest, const char *yysrc) 4458 #else4459 static char *4460 yystpcpy (yydest, yysrc)4461 char *yydest;4462 const char *yysrc;4463 #endif4464 4030 { 4465 4031 char *yyd = yydest; … … 4491 4057 4492 4058 for (;;) 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4059 switch (*++yyp) 4060 { 4061 case '\'': 4062 case ',': 4063 goto do_not_strip_quotes; 4064 4065 case '\\': 4066 if (*++yyp != '\\') 4067 goto do_not_strip_quotes; 4068 /* Fall through. */ 4069 default: 4070 if (yyres) 4071 yyres[yyn] = *yyp; 4072 yyn++; 4073 break; 4074 4075 case '"': 4076 if (yyres) 4077 yyres[yyn] = '\0'; 4078 return yyn; 4079 } 4514 4080 do_not_strip_quotes: ; 4515 4081 } … … 4534 4100 yytype_int16 *yyssp, int yytoken) 4535 4101 { 4536 YYSIZE_T yysize0 = yytnamerr ( 0, yytname[yytoken]);4102 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); 4537 4103 YYSIZE_T yysize = yysize0; 4538 YYSIZE_T yysize1;4539 4104 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 4540 4105 /* Internationalized format string. */ 4541 const char *yyformat = 0;4106 const char *yyformat = YY_NULLPTR; 4542 4107 /* Arguments of yyformat. */ 4543 4108 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; … … 4547 4112 4548 4113 /* There are many possibilities here to consider: 4549 - Assume YYFAIL is not used. It's too flawed to consider. See4550 <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>4551 for details. YYERROR is fine as it does not invoke this4552 function.4553 4114 - If this state is a consistent state with a default action, then 4554 4115 the only way this function was invoked is if the default action … … 4599 4160 } 4600 4161 yyarg[yycount++] = yytname[yyx]; 4601 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 4602 if (! (yysize <= yysize1 4603 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 4604 return 2; 4605 yysize = yysize1; 4162 { 4163 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); 4164 if (! (yysize <= yysize1 4165 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 4166 return 2; 4167 yysize = yysize1; 4168 } 4606 4169 } 4607 4170 } … … 4623 4186 } 4624 4187 4625 yysize1 = yysize + yystrlen (yyformat); 4626 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 4627 return 2; 4628 yysize = yysize1; 4188 { 4189 YYSIZE_T yysize1 = yysize + yystrlen (yyformat); 4190 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 4191 return 2; 4192 yysize = yysize1; 4193 } 4629 4194 4630 4195 if (*yymsg_alloc < yysize) … … 4663 4228 `-----------------------------------------------*/ 4664 4229 4665 /*ARGSUSED*/4666 #if (defined __STDC__ || defined __C99__FUNC__ \4667 || defined __cplusplus || defined _MSC_VER)4668 4230 static void 4669 4231 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 4670 #else4671 static void4672 yydestruct (yymsg, yytype, yyvaluep)4673 const char *yymsg;4674 int yytype;4675 YYSTYPE *yyvaluep;4676 #endif4677 4232 { 4678 4233 YYUSE (yyvaluep); 4679 4680 4234 if (!yymsg) 4681 4235 yymsg = "Deleting"; 4682 4236 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 4683 4237 4684 switch (yytype) 4685 { 4686 4687 default: 4688 break; 4689 } 4238 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 4239 YYUSE (yytype); 4240 YY_IGNORE_MAYBE_UNINITIALIZED_END 4690 4241 } 4691 4242 4692 4243 4693 /* Prevent warnings from -Wmissing-prototypes. */4694 #ifdef YYPARSE_PARAM4695 #if defined __STDC__ || defined __cplusplus4696 int yyparse (void *YYPARSE_PARAM);4697 #else4698 int yyparse ();4699 #endif4700 #else /* ! YYPARSE_PARAM */4701 #if defined __STDC__ || defined __cplusplus4702 int yyparse (void);4703 #else4704 int yyparse ();4705 #endif4706 #endif /* ! YYPARSE_PARAM */4707 4244 4708 4245 … … 4712 4249 /* The semantic value of the lookahead symbol. */ 4713 4250 YYSTYPE yylval; 4714 4715 4251 /* Number of syntax errors so far. */ 4716 4252 int yynerrs; … … 4721 4257 `----------*/ 4722 4258 4723 #ifdef YYPARSE_PARAM4724 #if (defined __STDC__ || defined __C99__FUNC__ \4725 || defined __cplusplus || defined _MSC_VER)4726 int4727 yyparse (void *YYPARSE_PARAM)4728 #else4729 int4730 yyparse (YYPARSE_PARAM)4731 void *YYPARSE_PARAM;4732 #endif4733 #else /* ! YYPARSE_PARAM */4734 #if (defined __STDC__ || defined __C99__FUNC__ \4735 || defined __cplusplus || defined _MSC_VER)4736 4259 int 4737 4260 yyparse (void) 4738 #else4739 int4740 yyparse ()4741 4742 #endif4743 #endif4744 4261 { 4745 4262 int yystate; … … 4748 4265 4749 4266 /* The stacks and their tools: 4750 `yyss': related to states.4751 `yyvs': related to semantic values.4752 4753 Refer to the stacks thr useparate pointers, to allow yyoverflow4267 'yyss': related to states. 4268 'yyvs': related to semantic values. 4269 4270 Refer to the stacks through separate pointers, to allow yyoverflow 4754 4271 to reallocate them elsewhere. */ 4755 4272 … … 4769 4286 int yyresult; 4770 4287 /* Lookahead token as an internal (translated) token number. */ 4771 int yytoken ;4288 int yytoken = 0; 4772 4289 /* The variables used to return semantic value and location from the 4773 4290 action routines. */ … … 4787 4304 int yylen = 0; 4788 4305 4789 yytoken = 0; 4790 yyss = yyssa; 4791 yyvs = yyvsa; 4306 yyssp = yyss = yyssa; 4307 yyvsp = yyvs = yyvsa; 4792 4308 yystacksize = YYINITDEPTH; 4793 4309 … … 4798 4314 yynerrs = 0; 4799 4315 yychar = YYEMPTY; /* Cause a token to be read. */ 4800 4801 /* Initialize stack pointers.4802 Waste one element of value and location stack4803 so that they stay on the same level as the state stack.4804 The wasted elements are never initialized. */4805 yyssp = yyss;4806 yyvsp = yyvs;4807 4808 4316 goto yysetstate; 4809 4317 … … 4826 4334 #ifdef yyoverflow 4827 4335 { 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4336 /* Give user a chance to reallocate the stack. Use copies of 4337 these so that the &'s don't force the real ones into 4338 memory. */ 4339 YYSTYPE *yyvs1 = yyvs; 4340 yytype_int16 *yyss1 = yyss; 4341 4342 /* Each stack pointer address is followed by the size of the 4343 data in use in that stack, in bytes. This used to be a 4344 conditional around just the two extra args, but that might 4345 be undefined if yyoverflow is a macro. */ 4346 yyoverflow (YY_("memory exhausted"), 4347 &yyss1, yysize * sizeof (*yyssp), 4348 &yyvs1, yysize * sizeof (*yyvsp), 4349 &yystacksize); 4350 4351 yyss = yyss1; 4352 yyvs = yyvs1; 4845 4353 } 4846 4354 #else /* no yyoverflow */ … … 4850 4358 /* Extend the stack our own way. */ 4851 4359 if (YYMAXDEPTH <= yystacksize) 4852 4360 goto yyexhaustedlab; 4853 4361 yystacksize *= 2; 4854 4362 if (YYMAXDEPTH < yystacksize) 4855 4363 yystacksize = YYMAXDEPTH; 4856 4364 4857 4365 { 4858 4859 4860 4861 4862 4863 4864 4366 yytype_int16 *yyss1 = yyss; 4367 union yyalloc *yyptr = 4368 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 4369 if (! yyptr) 4370 goto yyexhaustedlab; 4371 YYSTACK_RELOCATE (yyss_alloc, yyss); 4372 YYSTACK_RELOCATE (yyvs_alloc, yyvs); 4865 4373 # undef YYSTACK_RELOCATE 4866 4867 4374 if (yyss1 != yyssa) 4375 YYSTACK_FREE (yyss1); 4868 4376 } 4869 4377 # endif … … 4874 4382 4875 4383 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 4876 4384 (unsigned long int) yystacksize)); 4877 4385 4878 4386 if (yyss + yystacksize - 1 <= yyssp) 4879 4387 YYABORT; 4880 4388 } 4881 4389 … … 4906 4414 { 4907 4415 YYDPRINTF ((stderr, "Reading a token: ")); 4908 yychar = YYLEX;4416 yychar = yylex (); 4909 4417 } 4910 4418 … … 4946 4454 4947 4455 yystate = yyn; 4456 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 4948 4457 *++yyvsp = yylval; 4458 YY_IGNORE_MAYBE_UNINITIALIZED_END 4949 4459 4950 4460 goto yynewstate; … … 4969 4479 4970 4480 /* If YYLEN is nonzero, implement the default value of the action: 4971 `$$ = $1'.4481 '$$ = $1'. 4972 4482 4973 4483 Otherwise, the following line sets YYVAL to garbage. … … 4983 4493 { 4984 4494 case 2: 4985 4986 /* Line 1806 of yacc.c */ 4987 #line 298 "parser.yy" 4495 #line 298 "parser.yy" /* yacc.c:1646 */ 4988 4496 { 4989 4497 typedefTable.enterScope(); 4990 4498 } 4499 #line 4500 "Parser/parser.cc" /* yacc.c:1646 */ 4991 4500 break; 4992 4501 4993 4502 case 3: 4994 4995 /* Line 1806 of yacc.c */ 4996 #line 304 "parser.yy" 4503 #line 304 "parser.yy" /* yacc.c:1646 */ 4997 4504 { 4998 4505 typedefTable.leaveScope(); 4999 4506 } 4507 #line 4508 "Parser/parser.cc" /* yacc.c:1646 */ 5000 4508 break; 5001 4509 5002 4510 case 4: 5003 5004 /* Line 1806 of yacc.c */ 5005 #line 313 "parser.yy" 5006 { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); } 4511 #line 313 "parser.yy" /* yacc.c:1646 */ 4512 { (yyval.en) = new ExpressionNode( build_constantInteger( assign_strptr((yyvsp[0].tok)) ) ); } 4513 #line 4514 "Parser/parser.cc" /* yacc.c:1646 */ 5007 4514 break; 5008 4515 5009 4516 case 5: 5010 5011 /* Line 1806 of yacc.c */ 5012 #line 314 "parser.yy" 5013 { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); } 4517 #line 314 "parser.yy" /* yacc.c:1646 */ 4518 { (yyval.en) = new ExpressionNode( build_constantFloat( assign_strptr((yyvsp[0].tok)) ) ); } 4519 #line 4520 "Parser/parser.cc" /* yacc.c:1646 */ 5014 4520 break; 5015 4521 5016 4522 case 6: 5017 5018 /* Line 1806 of yacc.c */ 5019 #line 315 "parser.yy" 5020 { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); } 4523 #line 315 "parser.yy" /* yacc.c:1646 */ 4524 { (yyval.en) = new ExpressionNode( build_constantChar( assign_strptr((yyvsp[0].tok)) ) ); } 4525 #line 4526 "Parser/parser.cc" /* yacc.c:1646 */ 5021 4526 break; 5022 4527 5023 4528 case 16: 5024 5025 /* Line 1806 of yacc.c */ 5026 #line 340 "parser.yy" 5027 { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); } 4529 #line 340 "parser.yy" /* yacc.c:1646 */ 4530 { (yyval.constant) = build_constantStr( assign_strptr((yyvsp[0].tok)) ); } 4531 #line 4532 "Parser/parser.cc" /* yacc.c:1646 */ 5028 4532 break; 5029 4533 5030 4534 case 17: 5031 5032 /* Line 1806 of yacc.c */ 5033 #line 342 "parser.yy" 5034 { 5035 appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) ); 5036 delete (yyvsp[(2) - (2)].tok); // allocated by lexer 5037 (yyval.constant) = (yyvsp[(1) - (2)].constant); 4535 #line 342 "parser.yy" /* yacc.c:1646 */ 4536 { 4537 appendStr( (yyvsp[-1].constant)->get_constant()->get_value(), (yyvsp[0].tok) ); 4538 delete (yyvsp[0].tok); // allocated by lexer 4539 (yyval.constant) = (yyvsp[-1].constant); 5038 4540 } 4541 #line 4542 "Parser/parser.cc" /* yacc.c:1646 */ 5039 4542 break; 5040 4543 5041 4544 case 18: 5042 5043 /* Line 1806 of yacc.c */ 5044 #line 353 "parser.yy" 5045 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 4545 #line 353 "parser.yy" /* yacc.c:1646 */ 4546 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); } 4547 #line 4548 "Parser/parser.cc" /* yacc.c:1646 */ 5046 4548 break; 5047 4549 5048 4550 case 19: 5049 5050 /* Line 1806 of yacc.c */ 5051 #line 355 "parser.yy" 5052 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 4551 #line 355 "parser.yy" /* yacc.c:1646 */ 4552 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); } 4553 #line 4554 "Parser/parser.cc" /* yacc.c:1646 */ 5053 4554 break; 5054 4555 5055 4556 case 20: 5056 5057 /* Line 1806 of yacc.c */ 5058 #line 357 "parser.yy" 5059 { (yyval.en) = (yyvsp[(2) - (3)].en); } 4557 #line 357 "parser.yy" /* yacc.c:1646 */ 4558 { (yyval.en) = (yyvsp[-1].en); } 4559 #line 4560 "Parser/parser.cc" /* yacc.c:1646 */ 5060 4560 break; 5061 4561 5062 4562 case 21: 5063 5064 /* Line 1806 of yacc.c */ 5065 #line 359 "parser.yy" 5066 { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); } 4563 #line 359 "parser.yy" /* yacc.c:1646 */ 4564 { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); } 4565 #line 4566 "Parser/parser.cc" /* yacc.c:1646 */ 5067 4566 break; 5068 4567 5069 4568 case 23: 5070 5071 /* Line 1806 of yacc.c */ 5072 #line 369 "parser.yy" 5073 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); } 4569 #line 369 "parser.yy" /* yacc.c:1646 */ 4570 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); } 4571 #line 4572 "Parser/parser.cc" /* yacc.c:1646 */ 5074 4572 break; 5075 4573 5076 4574 case 24: 5077 5078 /* Line 1806 of yacc.c */ 5079 #line 371 "parser.yy" 5080 { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); } 4575 #line 371 "parser.yy" /* yacc.c:1646 */ 4576 { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); } 4577 #line 4578 "Parser/parser.cc" /* yacc.c:1646 */ 5081 4578 break; 5082 4579 5083 4580 case 25: 5084 5085 /* Line 1806 of yacc.c */ 5086 #line 375 "parser.yy" 5087 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 4581 #line 375 "parser.yy" /* yacc.c:1646 */ 4582 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); } 4583 #line 4584 "Parser/parser.cc" /* yacc.c:1646 */ 5088 4584 break; 5089 4585 5090 4586 case 27: 5091 5092 /* Line 1806 of yacc.c */ 5093 #line 378 "parser.yy" 5094 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 4587 #line 378 "parser.yy" /* yacc.c:1646 */ 4588 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); } 4589 #line 4590 "Parser/parser.cc" /* yacc.c:1646 */ 5095 4590 break; 5096 4591 5097 4592 case 29: 5098 5099 /* Line 1806 of yacc.c */ 5100 #line 381 "parser.yy" 5101 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); } 4593 #line 381 "parser.yy" /* yacc.c:1646 */ 4594 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); } 4595 #line 4596 "Parser/parser.cc" /* yacc.c:1646 */ 5102 4596 break; 5103 4597 5104 4598 case 30: 5105 5106 /* Line 1806 of yacc.c */ 5107 #line 383 "parser.yy" 5108 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); } 4599 #line 383 "parser.yy" /* yacc.c:1646 */ 4600 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); } 4601 #line 4602 "Parser/parser.cc" /* yacc.c:1646 */ 5109 4602 break; 5110 4603 5111 4604 case 31: 5112 5113 /* Line 1806 of yacc.c */ 5114 #line 385 "parser.yy" 5115 { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); } 4605 #line 385 "parser.yy" /* yacc.c:1646 */ 4606 { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); } 4607 #line 4608 "Parser/parser.cc" /* yacc.c:1646 */ 5116 4608 break; 5117 4609 5118 4610 case 32: 5119 5120 /* Line 1806 of yacc.c */ 5121 #line 387 "parser.yy" 4611 #line 387 "parser.yy" /* yacc.c:1646 */ 5122 4612 { 5123 4613 Token fn; 5124 4614 fn.str = new std::string( "?{}" ); // location undefined 5125 (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[ (1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) );4615 (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) ); 5126 4616 } 4617 #line 4618 "Parser/parser.cc" /* yacc.c:1646 */ 5127 4618 break; 5128 4619 5129 4620 case 34: 5130 5131 /* Line 1806 of yacc.c */ 5132 #line 397 "parser.yy" 5133 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 4621 #line 397 "parser.yy" /* yacc.c:1646 */ 4622 { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); } 4623 #line 4624 "Parser/parser.cc" /* yacc.c:1646 */ 5134 4624 break; 5135 4625 5136 4626 case 35: 5137 5138 /* Line 1806 of yacc.c */ 5139 #line 402 "parser.yy" 4627 #line 402 "parser.yy" /* yacc.c:1646 */ 5140 4628 { (yyval.en) = 0; } 4629 #line 4630 "Parser/parser.cc" /* yacc.c:1646 */ 5141 4630 break; 5142 4631 5143 4632 case 38: 5144 5145 /* Line 1806 of yacc.c */ 5146 #line 408 "parser.yy" 5147 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 4633 #line 408 "parser.yy" /* yacc.c:1646 */ 4634 { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); } 4635 #line 4636 "Parser/parser.cc" /* yacc.c:1646 */ 5148 4636 break; 5149 4637 5150 4638 case 39: 5151 5152 /* Line 1806 of yacc.c */ 5153 #line 413 "parser.yy" 5154 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 4639 #line 413 "parser.yy" /* yacc.c:1646 */ 4640 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); } 4641 #line 4642 "Parser/parser.cc" /* yacc.c:1646 */ 5155 4642 break; 5156 4643 5157 4644 case 40: 5158 5159 /* Line 1806 of yacc.c */ 5160 #line 417 "parser.yy" 5161 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 4645 #line 417 "parser.yy" /* yacc.c:1646 */ 4646 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); } 4647 #line 4648 "Parser/parser.cc" /* yacc.c:1646 */ 5162 4648 break; 5163 4649 5164 4650 case 41: 5165 5166 /* Line 1806 of yacc.c */ 5167 #line 419 "parser.yy" 5168 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 4651 #line 419 "parser.yy" /* yacc.c:1646 */ 4652 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); } 4653 #line 4654 "Parser/parser.cc" /* yacc.c:1646 */ 5169 4654 break; 5170 4655 5171 4656 case 42: 5172 5173 /* Line 1806 of yacc.c */ 5174 #line 421 "parser.yy" 5175 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 4657 #line 421 "parser.yy" /* yacc.c:1646 */ 4658 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); } 4659 #line 4660 "Parser/parser.cc" /* yacc.c:1646 */ 5176 4660 break; 5177 4661 5178 4662 case 43: 5179 5180 /* Line 1806 of yacc.c */ 5181 #line 423 "parser.yy" 5182 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 4663 #line 423 "parser.yy" /* yacc.c:1646 */ 4664 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); } 4665 #line 4666 "Parser/parser.cc" /* yacc.c:1646 */ 5183 4666 break; 5184 4667 5185 4668 case 45: 5186 5187 /* Line 1806 of yacc.c */ 5188 #line 431 "parser.yy" 5189 { (yyval.en) = (yyvsp[(1) - (1)].en); } 4669 #line 431 "parser.yy" /* yacc.c:1646 */ 4670 { (yyval.en) = (yyvsp[0].en); } 4671 #line 4672 "Parser/parser.cc" /* yacc.c:1646 */ 5190 4672 break; 5191 4673 5192 4674 case 46: 5193 5194 /* Line 1806 of yacc.c */ 5195 #line 433 "parser.yy" 5196 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 4675 #line 433 "parser.yy" /* yacc.c:1646 */ 4676 { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); } 4677 #line 4678 "Parser/parser.cc" /* yacc.c:1646 */ 5197 4678 break; 5198 4679 5199 4680 case 47: 5200 5201 /* Line 1806 of yacc.c */ 5202 #line 435 "parser.yy" 5203 { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); } 4681 #line 435 "parser.yy" /* yacc.c:1646 */ 4682 { (yyval.en) = (yyvsp[0].en)->set_extension( true ); } 4683 #line 4684 "Parser/parser.cc" /* yacc.c:1646 */ 5204 4684 break; 5205 4685 5206 4686 case 48: 5207 5208 /* Line 1806 of yacc.c */ 5209 #line 440 "parser.yy" 5210 { 5211 switch ( (yyvsp[(1) - (2)].op) ) { 4687 #line 440 "parser.yy" /* yacc.c:1646 */ 4688 { 4689 switch ( (yyvsp[-1].op) ) { 5212 4690 case OperKinds::AddressOf: 5213 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[ (2) - (2)].en) ) );4691 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) ); 5214 4692 break; 5215 4693 case OperKinds::PointTo: 5216 (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[ (1) - (2)].op), (yyvsp[(2) - (2)].en) ) );4694 (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); 5217 4695 break; 5218 4696 default: … … 5220 4698 } 5221 4699 } 4700 #line 4701 "Parser/parser.cc" /* yacc.c:1646 */ 5222 4701 break; 5223 4702 5224 4703 case 49: 5225 5226 /* Line 1806 of yacc.c */ 5227 #line 453 "parser.yy" 5228 { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); } 4704 #line 453 "parser.yy" /* yacc.c:1646 */ 4705 { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); } 4706 #line 4707 "Parser/parser.cc" /* yacc.c:1646 */ 5229 4707 break; 5230 4708 5231 4709 case 50: 5232 5233 /* Line 1806 of yacc.c */ 5234 #line 455 "parser.yy" 5235 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); } 4710 #line 455 "parser.yy" /* yacc.c:1646 */ 4711 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); } 4712 #line 4713 "Parser/parser.cc" /* yacc.c:1646 */ 5236 4713 break; 5237 4714 5238 4715 case 51: 5239 5240 /* Line 1806 of yacc.c */ 5241 #line 457 "parser.yy" 5242 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); } 4716 #line 457 "parser.yy" /* yacc.c:1646 */ 4717 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); } 4718 #line 4719 "Parser/parser.cc" /* yacc.c:1646 */ 5243 4719 break; 5244 4720 5245 4721 case 52: 5246 5247 /* Line 1806 of yacc.c */ 5248 #line 459 "parser.yy" 5249 { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); } 4722 #line 459 "parser.yy" /* yacc.c:1646 */ 4723 { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); } 4724 #line 4725 "Parser/parser.cc" /* yacc.c:1646 */ 5250 4725 break; 5251 4726 5252 4727 case 53: 5253 5254 /* Line 1806 of yacc.c */ 5255 #line 461 "parser.yy" 5256 { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); } 4728 #line 461 "parser.yy" /* yacc.c:1646 */ 4729 { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); } 4730 #line 4731 "Parser/parser.cc" /* yacc.c:1646 */ 5257 4731 break; 5258 4732 5259 4733 case 54: 5260 5261 /* Line 1806 of yacc.c */ 5262 #line 463 "parser.yy" 5263 { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); } 4734 #line 463 "parser.yy" /* yacc.c:1646 */ 4735 { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); } 4736 #line 4737 "Parser/parser.cc" /* yacc.c:1646 */ 5264 4737 break; 5265 4738 5266 4739 case 55: 5267 5268 /* Line 1806 of yacc.c */ 5269 #line 465 "parser.yy" 5270 { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); } 4740 #line 465 "parser.yy" /* yacc.c:1646 */ 4741 { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); } 4742 #line 4743 "Parser/parser.cc" /* yacc.c:1646 */ 5271 4743 break; 5272 4744 5273 4745 case 56: 5274 5275 /* Line 1806 of yacc.c */ 5276 #line 467 "parser.yy" 5277 { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); } 4746 #line 467 "parser.yy" /* yacc.c:1646 */ 4747 { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); } 4748 #line 4749 "Parser/parser.cc" /* yacc.c:1646 */ 5278 4749 break; 5279 4750 5280 4751 case 57: 5281 5282 /* Line 1806 of yacc.c */ 5283 #line 469 "parser.yy" 5284 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); } 4752 #line 469 "parser.yy" /* yacc.c:1646 */ 4753 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); } 4754 #line 4755 "Parser/parser.cc" /* yacc.c:1646 */ 5285 4755 break; 5286 4756 5287 4757 case 58: 5288 5289 /* Line 1806 of yacc.c */ 5290 #line 471 "parser.yy" 5291 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); } 4758 #line 471 "parser.yy" /* yacc.c:1646 */ 4759 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); } 4760 #line 4761 "Parser/parser.cc" /* yacc.c:1646 */ 5292 4761 break; 5293 4762 5294 4763 case 59: 5295 5296 /* Line 1806 of yacc.c */ 5297 #line 473 "parser.yy" 5298 { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); } 4764 #line 473 "parser.yy" /* yacc.c:1646 */ 4765 { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); } 4766 #line 4767 "Parser/parser.cc" /* yacc.c:1646 */ 5299 4767 break; 5300 4768 5301 4769 case 60: 5302 5303 /* Line 1806 of yacc.c */ 5304 #line 479 "parser.yy" 4770 #line 479 "parser.yy" /* yacc.c:1646 */ 5305 4771 { (yyval.op) = OperKinds::PointTo; } 4772 #line 4773 "Parser/parser.cc" /* yacc.c:1646 */ 5306 4773 break; 5307 4774 5308 4775 case 61: 5309 5310 /* Line 1806 of yacc.c */ 5311 #line 480 "parser.yy" 4776 #line 480 "parser.yy" /* yacc.c:1646 */ 5312 4777 { (yyval.op) = OperKinds::AddressOf; } 4778 #line 4779 "Parser/parser.cc" /* yacc.c:1646 */ 5313 4779 break; 5314 4780 5315 4781 case 62: 5316 5317 /* Line 1806 of yacc.c */ 5318 #line 486 "parser.yy" 4782 #line 486 "parser.yy" /* yacc.c:1646 */ 5319 4783 { (yyval.op) = OperKinds::UnPlus; } 4784 #line 4785 "Parser/parser.cc" /* yacc.c:1646 */ 5320 4785 break; 5321 4786 5322 4787 case 63: 5323 5324 /* Line 1806 of yacc.c */ 5325 #line 487 "parser.yy" 4788 #line 487 "parser.yy" /* yacc.c:1646 */ 5326 4789 { (yyval.op) = OperKinds::UnMinus; } 4790 #line 4791 "Parser/parser.cc" /* yacc.c:1646 */ 5327 4791 break; 5328 4792 5329 4793 case 64: 5330 5331 /* Line 1806 of yacc.c */ 5332 #line 488 "parser.yy" 4794 #line 488 "parser.yy" /* yacc.c:1646 */ 5333 4795 { (yyval.op) = OperKinds::Neg; } 4796 #line 4797 "Parser/parser.cc" /* yacc.c:1646 */ 5334 4797 break; 5335 4798 5336 4799 case 65: 5337 5338 /* Line 1806 of yacc.c */ 5339 #line 489 "parser.yy" 4800 #line 489 "parser.yy" /* yacc.c:1646 */ 5340 4801 { (yyval.op) = OperKinds::BitNeg; } 4802 #line 4803 "Parser/parser.cc" /* yacc.c:1646 */ 5341 4803 break; 5342 4804 5343 4805 case 67: 5344 5345 /* Line 1806 of yacc.c */ 5346 #line 495 "parser.yy" 5347 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 4806 #line 495 "parser.yy" /* yacc.c:1646 */ 4807 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); } 4808 #line 4809 "Parser/parser.cc" /* yacc.c:1646 */ 5348 4809 break; 5349 4810 5350 4811 case 68: 5351 5352 /* Line 1806 of yacc.c */ 5353 #line 497 "parser.yy" 5354 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 4812 #line 497 "parser.yy" /* yacc.c:1646 */ 4813 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); } 4814 #line 4815 "Parser/parser.cc" /* yacc.c:1646 */ 5355 4815 break; 5356 4816 5357 4817 case 70: 5358 5359 /* Line 1806 of yacc.c */ 5360 #line 503 "parser.yy" 5361 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4818 #line 503 "parser.yy" /* yacc.c:1646 */ 4819 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4820 #line 4821 "Parser/parser.cc" /* yacc.c:1646 */ 5362 4821 break; 5363 4822 5364 4823 case 71: 5365 5366 /* Line 1806 of yacc.c */ 5367 #line 505 "parser.yy" 5368 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4824 #line 505 "parser.yy" /* yacc.c:1646 */ 4825 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4826 #line 4827 "Parser/parser.cc" /* yacc.c:1646 */ 5369 4827 break; 5370 4828 5371 4829 case 72: 5372 5373 /* Line 1806 of yacc.c */ 5374 #line 507 "parser.yy" 5375 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4830 #line 507 "parser.yy" /* yacc.c:1646 */ 4831 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4832 #line 4833 "Parser/parser.cc" /* yacc.c:1646 */ 5376 4833 break; 5377 4834 5378 4835 case 74: 5379 5380 /* Line 1806 of yacc.c */ 5381 #line 513 "parser.yy" 5382 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4836 #line 513 "parser.yy" /* yacc.c:1646 */ 4837 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4838 #line 4839 "Parser/parser.cc" /* yacc.c:1646 */ 5383 4839 break; 5384 4840 5385 4841 case 75: 5386 5387 /* Line 1806 of yacc.c */ 5388 #line 515 "parser.yy" 5389 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4842 #line 515 "parser.yy" /* yacc.c:1646 */ 4843 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4844 #line 4845 "Parser/parser.cc" /* yacc.c:1646 */ 5390 4845 break; 5391 4846 5392 4847 case 77: 5393 5394 /* Line 1806 of yacc.c */ 5395 #line 521 "parser.yy" 5396 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4848 #line 521 "parser.yy" /* yacc.c:1646 */ 4849 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4850 #line 4851 "Parser/parser.cc" /* yacc.c:1646 */ 5397 4851 break; 5398 4852 5399 4853 case 78: 5400 5401 /* Line 1806 of yacc.c */ 5402 #line 523 "parser.yy" 5403 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4854 #line 523 "parser.yy" /* yacc.c:1646 */ 4855 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4856 #line 4857 "Parser/parser.cc" /* yacc.c:1646 */ 5404 4857 break; 5405 4858 5406 4859 case 80: 5407 5408 /* Line 1806 of yacc.c */ 5409 #line 529 "parser.yy" 5410 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4860 #line 529 "parser.yy" /* yacc.c:1646 */ 4861 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4862 #line 4863 "Parser/parser.cc" /* yacc.c:1646 */ 5411 4863 break; 5412 4864 5413 4865 case 81: 5414 5415 /* Line 1806 of yacc.c */ 5416 #line 531 "parser.yy" 5417 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4866 #line 531 "parser.yy" /* yacc.c:1646 */ 4867 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4868 #line 4869 "Parser/parser.cc" /* yacc.c:1646 */ 5418 4869 break; 5419 4870 5420 4871 case 82: 5421 5422 /* Line 1806 of yacc.c */ 5423 #line 533 "parser.yy" 5424 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4872 #line 533 "parser.yy" /* yacc.c:1646 */ 4873 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4874 #line 4875 "Parser/parser.cc" /* yacc.c:1646 */ 5425 4875 break; 5426 4876 5427 4877 case 83: 5428 5429 /* Line 1806 of yacc.c */ 5430 #line 535 "parser.yy" 5431 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4878 #line 535 "parser.yy" /* yacc.c:1646 */ 4879 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4880 #line 4881 "Parser/parser.cc" /* yacc.c:1646 */ 5432 4881 break; 5433 4882 5434 4883 case 85: 5435 5436 /* Line 1806 of yacc.c */ 5437 #line 541 "parser.yy" 5438 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4884 #line 541 "parser.yy" /* yacc.c:1646 */ 4885 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4886 #line 4887 "Parser/parser.cc" /* yacc.c:1646 */ 5439 4887 break; 5440 4888 5441 4889 case 86: 5442 5443 /* Line 1806 of yacc.c */ 5444 #line 543 "parser.yy" 5445 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4890 #line 543 "parser.yy" /* yacc.c:1646 */ 4891 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4892 #line 4893 "Parser/parser.cc" /* yacc.c:1646 */ 5446 4893 break; 5447 4894 5448 4895 case 88: 5449 5450 /* Line 1806 of yacc.c */ 5451 #line 549 "parser.yy" 5452 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4896 #line 549 "parser.yy" /* yacc.c:1646 */ 4897 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4898 #line 4899 "Parser/parser.cc" /* yacc.c:1646 */ 5453 4899 break; 5454 4900 5455 4901 case 90: 5456 5457 /* Line 1806 of yacc.c */ 5458 #line 555 "parser.yy" 5459 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4902 #line 555 "parser.yy" /* yacc.c:1646 */ 4903 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4904 #line 4905 "Parser/parser.cc" /* yacc.c:1646 */ 5460 4905 break; 5461 4906 5462 4907 case 92: 5463 5464 /* Line 1806 of yacc.c */ 5465 #line 561 "parser.yy" 5466 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4908 #line 561 "parser.yy" /* yacc.c:1646 */ 4909 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4910 #line 4911 "Parser/parser.cc" /* yacc.c:1646 */ 5467 4911 break; 5468 4912 5469 4913 case 94: 5470 5471 /* Line 1806 of yacc.c */ 5472 #line 567 "parser.yy" 5473 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); } 4914 #line 567 "parser.yy" /* yacc.c:1646 */ 4915 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); } 4916 #line 4917 "Parser/parser.cc" /* yacc.c:1646 */ 5474 4917 break; 5475 4918 5476 4919 case 96: 5477 5478 /* Line 1806 of yacc.c */ 5479 #line 573 "parser.yy" 5480 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); } 4920 #line 573 "parser.yy" /* yacc.c:1646 */ 4921 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); } 4922 #line 4923 "Parser/parser.cc" /* yacc.c:1646 */ 5481 4923 break; 5482 4924 5483 4925 case 98: 5484 5485 /* Line 1806 of yacc.c */ 5486 #line 579 "parser.yy" 5487 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 4926 #line 579 "parser.yy" /* yacc.c:1646 */ 4927 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4928 #line 4929 "Parser/parser.cc" /* yacc.c:1646 */ 5488 4929 break; 5489 4930 5490 4931 case 99: 5491 5492 /* Line 1806 of yacc.c */ 5493 #line 582 "parser.yy" 5494 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); } 4932 #line 582 "parser.yy" /* yacc.c:1646 */ 4933 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); } 4934 #line 4935 "Parser/parser.cc" /* yacc.c:1646 */ 5495 4935 break; 5496 4936 5497 4937 case 100: 5498 5499 /* Line 1806 of yacc.c */ 5500 #line 584 "parser.yy" 5501 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 4938 #line 584 "parser.yy" /* yacc.c:1646 */ 4939 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4940 #line 4941 "Parser/parser.cc" /* yacc.c:1646 */ 5502 4941 break; 5503 4942 5504 4943 case 103: 5505 5506 /* Line 1806 of yacc.c */ 5507 #line 595 "parser.yy" 5508 { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 4944 #line 595 "parser.yy" /* yacc.c:1646 */ 4945 { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); } 4946 #line 4947 "Parser/parser.cc" /* yacc.c:1646 */ 5509 4947 break; 5510 4948 5511 4949 case 104: 5512 5513 /* Line 1806 of yacc.c */ 5514 #line 597 "parser.yy" 5515 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); } 4950 #line 597 "parser.yy" /* yacc.c:1646 */ 4951 { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); } 4952 #line 4953 "Parser/parser.cc" /* yacc.c:1646 */ 5516 4953 break; 5517 4954 5518 4955 case 105: 5519 5520 /* Line 1806 of yacc.c */ 5521 #line 602 "parser.yy" 4956 #line 602 "parser.yy" /* yacc.c:1646 */ 5522 4957 { (yyval.en) = nullptr; } 4958 #line 4959 "Parser/parser.cc" /* yacc.c:1646 */ 5523 4959 break; 5524 4960 5525 4961 case 107: 5526 5527 /* Line 1806 of yacc.c */ 5528 #line 607 "parser.yy" 4962 #line 607 "parser.yy" /* yacc.c:1646 */ 5529 4963 { (yyval.op) = OperKinds::Assign; } 4964 #line 4965 "Parser/parser.cc" /* yacc.c:1646 */ 5530 4965 break; 5531 4966 5532 4967 case 108: 5533 5534 /* Line 1806 of yacc.c */ 5535 #line 608 "parser.yy" 4968 #line 608 "parser.yy" /* yacc.c:1646 */ 5536 4969 { (yyval.op) = OperKinds::MulAssn; } 4970 #line 4971 "Parser/parser.cc" /* yacc.c:1646 */ 5537 4971 break; 5538 4972 5539 4973 case 109: 5540 5541 /* Line 1806 of yacc.c */ 5542 #line 609 "parser.yy" 4974 #line 609 "parser.yy" /* yacc.c:1646 */ 5543 4975 { (yyval.op) = OperKinds::DivAssn; } 4976 #line 4977 "Parser/parser.cc" /* yacc.c:1646 */ 5544 4977 break; 5545 4978 5546 4979 case 110: 5547 5548 /* Line 1806 of yacc.c */ 5549 #line 610 "parser.yy" 4980 #line 610 "parser.yy" /* yacc.c:1646 */ 5550 4981 { (yyval.op) = OperKinds::ModAssn; } 4982 #line 4983 "Parser/parser.cc" /* yacc.c:1646 */ 5551 4983 break; 5552 4984 5553 4985 case 111: 5554 5555 /* Line 1806 of yacc.c */ 5556 #line 611 "parser.yy" 4986 #line 611 "parser.yy" /* yacc.c:1646 */ 5557 4987 { (yyval.op) = OperKinds::PlusAssn; } 4988 #line 4989 "Parser/parser.cc" /* yacc.c:1646 */ 5558 4989 break; 5559 4990 5560 4991 case 112: 5561 5562 /* Line 1806 of yacc.c */ 5563 #line 612 "parser.yy" 4992 #line 612 "parser.yy" /* yacc.c:1646 */ 5564 4993 { (yyval.op) = OperKinds::MinusAssn; } 4994 #line 4995 "Parser/parser.cc" /* yacc.c:1646 */ 5565 4995 break; 5566 4996 5567 4997 case 113: 5568 5569 /* Line 1806 of yacc.c */ 5570 #line 613 "parser.yy" 4998 #line 613 "parser.yy" /* yacc.c:1646 */ 5571 4999 { (yyval.op) = OperKinds::LSAssn; } 5000 #line 5001 "Parser/parser.cc" /* yacc.c:1646 */ 5572 5001 break; 5573 5002 5574 5003 case 114: 5575 5576 /* Line 1806 of yacc.c */ 5577 #line 614 "parser.yy" 5004 #line 614 "parser.yy" /* yacc.c:1646 */ 5578 5005 { (yyval.op) = OperKinds::RSAssn; } 5006 #line 5007 "Parser/parser.cc" /* yacc.c:1646 */ 5579 5007 break; 5580 5008 5581 5009 case 115: 5582 5583 /* Line 1806 of yacc.c */ 5584 #line 615 "parser.yy" 5010 #line 615 "parser.yy" /* yacc.c:1646 */ 5585 5011 { (yyval.op) = OperKinds::AndAssn; } 5012 #line 5013 "Parser/parser.cc" /* yacc.c:1646 */ 5586 5013 break; 5587 5014 5588 5015 case 116: 5589 5590 /* Line 1806 of yacc.c */ 5591 #line 616 "parser.yy" 5016 #line 616 "parser.yy" /* yacc.c:1646 */ 5592 5017 { (yyval.op) = OperKinds::ERAssn; } 5018 #line 5019 "Parser/parser.cc" /* yacc.c:1646 */ 5593 5019 break; 5594 5020 5595 5021 case 117: 5596 5597 /* Line 1806 of yacc.c */ 5598 #line 617 "parser.yy" 5022 #line 617 "parser.yy" /* yacc.c:1646 */ 5599 5023 { (yyval.op) = OperKinds::OrAssn; } 5024 #line 5025 "Parser/parser.cc" /* yacc.c:1646 */ 5600 5025 break; 5601 5026 5602 5027 case 118: 5603 5604 /* Line 1806 of yacc.c */ 5605 #line 624 "parser.yy" 5028 #line 624 "parser.yy" /* yacc.c:1646 */ 5606 5029 { (yyval.en) = new ExpressionNode( build_tuple() ); } 5030 #line 5031 "Parser/parser.cc" /* yacc.c:1646 */ 5607 5031 break; 5608 5032 5609 5033 case 119: 5610 5611 /* Line 1806 of yacc.c */ 5612 #line 626 "parser.yy" 5613 { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); } 5034 #line 626 "parser.yy" /* yacc.c:1646 */ 5035 { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); } 5036 #line 5037 "Parser/parser.cc" /* yacc.c:1646 */ 5614 5037 break; 5615 5038 5616 5039 case 120: 5617 5618 /* Line 1806 of yacc.c */ 5619 #line 628 "parser.yy" 5620 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); } 5040 #line 628 "parser.yy" /* yacc.c:1646 */ 5041 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); } 5042 #line 5043 "Parser/parser.cc" /* yacc.c:1646 */ 5621 5043 break; 5622 5044 5623 5045 case 121: 5624 5625 /* Line 1806 of yacc.c */ 5626 #line 630 "parser.yy" 5627 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); } 5046 #line 630 "parser.yy" /* yacc.c:1646 */ 5047 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); } 5048 #line 5049 "Parser/parser.cc" /* yacc.c:1646 */ 5628 5049 break; 5629 5050 5630 5051 case 123: 5631 5632 /* Line 1806 of yacc.c */ 5633 #line 636 "parser.yy" 5634 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5052 #line 636 "parser.yy" /* yacc.c:1646 */ 5053 { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); } 5054 #line 5055 "Parser/parser.cc" /* yacc.c:1646 */ 5635 5055 break; 5636 5056 5637 5057 case 125: 5638 5639 /* Line 1806 of yacc.c */ 5640 #line 642 "parser.yy" 5641 { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5058 #line 642 "parser.yy" /* yacc.c:1646 */ 5059 { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); } 5060 #line 5061 "Parser/parser.cc" /* yacc.c:1646 */ 5642 5061 break; 5643 5062 5644 5063 case 126: 5645 5646 /* Line 1806 of yacc.c */ 5647 #line 647 "parser.yy" 5064 #line 647 "parser.yy" /* yacc.c:1646 */ 5648 5065 { (yyval.en) = 0; } 5066 #line 5067 "Parser/parser.cc" /* yacc.c:1646 */ 5649 5067 break; 5650 5068 5651 5069 case 130: 5652 5653 /* Line 1806 of yacc.c */ 5654 #line 656 "parser.yy" 5655 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5070 #line 656 "parser.yy" /* yacc.c:1646 */ 5071 { (yyval.sn) = (yyvsp[0].sn); } 5072 #line 5073 "Parser/parser.cc" /* yacc.c:1646 */ 5656 5073 break; 5657 5074 5658 5075 case 136: 5659 5660 /* Line 1806 of yacc.c */ 5661 #line 663 "parser.yy" 5076 #line 663 "parser.yy" /* yacc.c:1646 */ 5662 5077 { 5663 5078 Token fn; 5664 5079 fn.str = new std::string( "^?{}" ); // location undefined 5665 (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[ (2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );5080 (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) ); 5666 5081 } 5082 #line 5083 "Parser/parser.cc" /* yacc.c:1646 */ 5667 5083 break; 5668 5084 5669 5085 case 137: 5670 5671 /* Line 1806 of yacc.c */ 5672 #line 673 "parser.yy" 5673 { 5674 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); 5086 #line 673 "parser.yy" /* yacc.c:1646 */ 5087 { 5088 (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) ); 5675 5089 } 5090 #line 5091 "Parser/parser.cc" /* yacc.c:1646 */ 5676 5091 break; 5677 5092 5678 5093 case 138: 5679 5680 /* Line 1806 of yacc.c */ 5681 #line 680 "parser.yy" 5094 #line 680 "parser.yy" /* yacc.c:1646 */ 5682 5095 { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); } 5096 #line 5097 "Parser/parser.cc" /* yacc.c:1646 */ 5683 5097 break; 5684 5098 5685 5099 case 139: 5686 5687 /* Line 1806 of yacc.c */ 5688 #line 687 "parser.yy" 5689 { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); } 5100 #line 687 "parser.yy" /* yacc.c:1646 */ 5101 { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); } 5102 #line 5103 "Parser/parser.cc" /* yacc.c:1646 */ 5690 5103 break; 5691 5104 5692 5105 case 141: 5693 5694 /* Line 1806 of yacc.c */ 5695 #line 693 "parser.yy" 5696 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5106 #line 693 "parser.yy" /* yacc.c:1646 */ 5107 { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } } 5108 #line 5109 "Parser/parser.cc" /* yacc.c:1646 */ 5697 5109 break; 5698 5110 5699 5111 case 142: 5700 5701 /* Line 1806 of yacc.c */ 5702 #line 698 "parser.yy" 5703 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5112 #line 698 "parser.yy" /* yacc.c:1646 */ 5113 { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); } 5114 #line 5115 "Parser/parser.cc" /* yacc.c:1646 */ 5704 5115 break; 5705 5116 5706 5117 case 143: 5707 5708 /* Line 1806 of yacc.c */ 5709 #line 700 "parser.yy" 5118 #line 700 "parser.yy" /* yacc.c:1646 */ 5710 5119 { // mark all fields in list 5711 for ( DeclarationNode *iter = (yyvsp[ (2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )5120 for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 5712 5121 iter->set_extension( true ); 5713 (yyval.sn) = new StatementNode( (yyvsp[ (2) - (2)].decl) );5122 (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); 5714 5123 } 5124 #line 5125 "Parser/parser.cc" /* yacc.c:1646 */ 5715 5125 break; 5716 5126 5717 5127 case 144: 5718 5719 /* Line 1806 of yacc.c */ 5720 #line 706 "parser.yy" 5721 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5128 #line 706 "parser.yy" /* yacc.c:1646 */ 5129 { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); } 5130 #line 5131 "Parser/parser.cc" /* yacc.c:1646 */ 5722 5131 break; 5723 5132 5724 5133 case 147: 5725 5726 /* Line 1806 of yacc.c */ 5727 #line 713 "parser.yy" 5728 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5134 #line 713 "parser.yy" /* yacc.c:1646 */ 5135 { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } } 5136 #line 5137 "Parser/parser.cc" /* yacc.c:1646 */ 5729 5137 break; 5730 5138 5731 5139 case 148: 5732 5733 /* Line 1806 of yacc.c */ 5734 #line 718 "parser.yy" 5735 { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); } 5140 #line 718 "parser.yy" /* yacc.c:1646 */ 5141 { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); } 5142 #line 5143 "Parser/parser.cc" /* yacc.c:1646 */ 5736 5143 break; 5737 5144 5738 5145 case 149: 5739 5740 /* Line 1806 of yacc.c */ 5741 #line 724 "parser.yy" 5742 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); } 5146 #line 724 "parser.yy" /* yacc.c:1646 */ 5147 { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); } 5148 #line 5149 "Parser/parser.cc" /* yacc.c:1646 */ 5743 5149 break; 5744 5150 5745 5151 case 150: 5746 5747 /* Line 1806 of yacc.c */ 5748 #line 726 "parser.yy" 5749 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); } 5152 #line 726 "parser.yy" /* yacc.c:1646 */ 5153 { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); } 5154 #line 5155 "Parser/parser.cc" /* yacc.c:1646 */ 5750 5155 break; 5751 5156 5752 5157 case 151: 5753 5754 /* Line 1806 of yacc.c */ 5755 #line 728 "parser.yy" 5756 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5158 #line 728 "parser.yy" /* yacc.c:1646 */ 5159 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); } 5160 #line 5161 "Parser/parser.cc" /* yacc.c:1646 */ 5757 5161 break; 5758 5162 5759 5163 case 152: 5760 5761 /* Line 1806 of yacc.c */ 5762 #line 730 "parser.yy" 5763 { 5764 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); 5164 #line 730 "parser.yy" /* yacc.c:1646 */ 5165 { 5166 StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) ); 5765 5167 // The semantics of the declaration list is changed to include associated initialization, which is performed 5766 5168 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 5768 5170 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 5769 5171 // statement. 5770 (yyval.sn) = (yyvsp[ (7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;5172 (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw; 5771 5173 } 5174 #line 5175 "Parser/parser.cc" /* yacc.c:1646 */ 5772 5175 break; 5773 5176 5774 5177 case 153: 5775 5776 /* Line 1806 of yacc.c */ 5777 #line 740 "parser.yy" 5778 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5178 #line 740 "parser.yy" /* yacc.c:1646 */ 5179 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); } 5180 #line 5181 "Parser/parser.cc" /* yacc.c:1646 */ 5779 5181 break; 5780 5182 5781 5183 case 154: 5782 5783 /* Line 1806 of yacc.c */ 5784 #line 742 "parser.yy" 5785 { 5786 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); 5787 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw; 5184 #line 742 "parser.yy" /* yacc.c:1646 */ 5185 { 5186 StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) ); 5187 (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw; 5788 5188 } 5189 #line 5190 "Parser/parser.cc" /* yacc.c:1646 */ 5789 5190 break; 5790 5191 5791 5192 case 155: 5792 5793 /* Line 1806 of yacc.c */ 5794 #line 752 "parser.yy" 5795 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5193 #line 752 "parser.yy" /* yacc.c:1646 */ 5194 { (yyval.en) = (yyvsp[0].en); } 5195 #line 5196 "Parser/parser.cc" /* yacc.c:1646 */ 5796 5196 break; 5797 5197 5798 5198 case 156: 5799 5800 /* Line 1806 of yacc.c */ 5801 #line 754 "parser.yy" 5802 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5199 #line 754 "parser.yy" /* yacc.c:1646 */ 5200 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); } 5201 #line 5202 "Parser/parser.cc" /* yacc.c:1646 */ 5803 5202 break; 5804 5203 5805 5204 case 158: 5806 5807 /* Line 1806 of yacc.c */ 5808 #line 759 "parser.yy" 5809 { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); } 5205 #line 759 "parser.yy" /* yacc.c:1646 */ 5206 { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); } 5207 #line 5208 "Parser/parser.cc" /* yacc.c:1646 */ 5810 5208 break; 5811 5209 5812 5210 case 159: 5813 5814 /* Line 1806 of yacc.c */ 5815 #line 761 "parser.yy" 5816 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); } 5211 #line 761 "parser.yy" /* yacc.c:1646 */ 5212 { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); } 5213 #line 5214 "Parser/parser.cc" /* yacc.c:1646 */ 5817 5214 break; 5818 5215 5819 5216 case 160: 5820 5821 /* Line 1806 of yacc.c */ 5822 #line 765 "parser.yy" 5823 { (yyval.sn) = (yyvsp[(2) - (3)].sn); } 5217 #line 765 "parser.yy" /* yacc.c:1646 */ 5218 { (yyval.sn) = (yyvsp[-1].sn); } 5219 #line 5220 "Parser/parser.cc" /* yacc.c:1646 */ 5824 5220 break; 5825 5221 5826 5222 case 161: 5827 5828 /* Line 1806 of yacc.c */ 5829 #line 766 "parser.yy" 5223 #line 766 "parser.yy" /* yacc.c:1646 */ 5830 5224 { (yyval.sn) = new StatementNode( build_default() ); } 5225 #line 5226 "Parser/parser.cc" /* yacc.c:1646 */ 5831 5226 break; 5832 5227 5833 5228 case 163: 5834 5835 /* Line 1806 of yacc.c */ 5836 #line 772 "parser.yy" 5837 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); } 5229 #line 772 "parser.yy" /* yacc.c:1646 */ 5230 { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); } 5231 #line 5232 "Parser/parser.cc" /* yacc.c:1646 */ 5838 5232 break; 5839 5233 5840 5234 case 164: 5841 5842 /* Line 1806 of yacc.c */ 5843 #line 776 "parser.yy" 5844 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5235 #line 776 "parser.yy" /* yacc.c:1646 */ 5236 { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); } 5237 #line 5238 "Parser/parser.cc" /* yacc.c:1646 */ 5845 5238 break; 5846 5239 5847 5240 case 165: 5848 5849 /* Line 1806 of yacc.c */ 5850 #line 781 "parser.yy" 5241 #line 781 "parser.yy" /* yacc.c:1646 */ 5851 5242 { (yyval.sn) = 0; } 5243 #line 5244 "Parser/parser.cc" /* yacc.c:1646 */ 5852 5244 break; 5853 5245 5854 5246 case 167: 5855 5856 /* Line 1806 of yacc.c */ 5857 #line 787 "parser.yy" 5858 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5247 #line 787 "parser.yy" /* yacc.c:1646 */ 5248 { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); } 5249 #line 5250 "Parser/parser.cc" /* yacc.c:1646 */ 5859 5250 break; 5860 5251 5861 5252 case 168: 5862 5863 /* Line 1806 of yacc.c */ 5864 #line 789 "parser.yy" 5865 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); } 5253 #line 789 "parser.yy" /* yacc.c:1646 */ 5254 { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); } 5255 #line 5256 "Parser/parser.cc" /* yacc.c:1646 */ 5866 5256 break; 5867 5257 5868 5258 case 169: 5869 5870 /* Line 1806 of yacc.c */ 5871 #line 794 "parser.yy" 5259 #line 794 "parser.yy" /* yacc.c:1646 */ 5872 5260 { (yyval.sn) = 0; } 5261 #line 5262 "Parser/parser.cc" /* yacc.c:1646 */ 5873 5262 break; 5874 5263 5875 5264 case 171: 5876 5877 /* Line 1806 of yacc.c */ 5878 #line 800 "parser.yy" 5879 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5265 #line 800 "parser.yy" /* yacc.c:1646 */ 5266 { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); } 5267 #line 5268 "Parser/parser.cc" /* yacc.c:1646 */ 5880 5268 break; 5881 5269 5882 5270 case 172: 5883 5884 /* Line 1806 of yacc.c */ 5885 #line 802 "parser.yy" 5886 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); } 5271 #line 802 "parser.yy" /* yacc.c:1646 */ 5272 { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); } 5273 #line 5274 "Parser/parser.cc" /* yacc.c:1646 */ 5887 5274 break; 5888 5275 5889 5276 case 173: 5890 5891 /* Line 1806 of yacc.c */ 5892 #line 804 "parser.yy" 5893 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5277 #line 804 "parser.yy" /* yacc.c:1646 */ 5278 { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); } 5279 #line 5280 "Parser/parser.cc" /* yacc.c:1646 */ 5894 5280 break; 5895 5281 5896 5282 case 174: 5897 5898 /* Line 1806 of yacc.c */ 5899 #line 806 "parser.yy" 5900 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); } 5283 #line 806 "parser.yy" /* yacc.c:1646 */ 5284 { (yyval.sn) = (StatementNode *)( (yyvsp[-3].sn)->set_last( (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ) ) ); } 5285 #line 5286 "Parser/parser.cc" /* yacc.c:1646 */ 5901 5286 break; 5902 5287 5903 5288 case 175: 5904 5905 /* Line 1806 of yacc.c */ 5906 #line 811 "parser.yy" 5289 #line 811 "parser.yy" /* yacc.c:1646 */ 5907 5290 { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); } 5291 #line 5292 "Parser/parser.cc" /* yacc.c:1646 */ 5908 5292 break; 5909 5293 5910 5294 case 177: 5911 5912 /* Line 1806 of yacc.c */ 5913 #line 817 "parser.yy" 5295 #line 817 "parser.yy" /* yacc.c:1646 */ 5914 5296 { (yyval.sn) = 0; } 5297 #line 5298 "Parser/parser.cc" /* yacc.c:1646 */ 5915 5298 break; 5916 5299 5917 5300 case 178: 5918 5919 /* Line 1806 of yacc.c */ 5920 #line 819 "parser.yy" 5301 #line 819 "parser.yy" /* yacc.c:1646 */ 5921 5302 { (yyval.sn) = 0; } 5303 #line 5304 "Parser/parser.cc" /* yacc.c:1646 */ 5922 5304 break; 5923 5305 5924 5306 case 179: 5925 5926 /* Line 1806 of yacc.c */ 5927 #line 824 "parser.yy" 5928 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5307 #line 824 "parser.yy" /* yacc.c:1646 */ 5308 { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); } 5309 #line 5310 "Parser/parser.cc" /* yacc.c:1646 */ 5929 5310 break; 5930 5311 5931 5312 case 180: 5932 5933 /* Line 1806 of yacc.c */ 5934 #line 826 "parser.yy" 5935 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); } 5313 #line 826 "parser.yy" /* yacc.c:1646 */ 5314 { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn) ) ); } 5315 #line 5316 "Parser/parser.cc" /* yacc.c:1646 */ 5936 5316 break; 5937 5317 5938 5318 case 181: 5939 5940 /* Line 1806 of yacc.c */ 5941 #line 828 "parser.yy" 5942 { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); } 5319 #line 828 "parser.yy" /* yacc.c:1646 */ 5320 { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); } 5321 #line 5322 "Parser/parser.cc" /* yacc.c:1646 */ 5943 5322 break; 5944 5323 5945 5324 case 182: 5946 5947 /* Line 1806 of yacc.c */ 5948 #line 833 "parser.yy" 5949 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5325 #line 833 "parser.yy" /* yacc.c:1646 */ 5326 { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); } 5327 #line 5328 "Parser/parser.cc" /* yacc.c:1646 */ 5950 5328 break; 5951 5329 5952 5330 case 183: 5953 5954 /* Line 1806 of yacc.c */ 5955 #line 835 "parser.yy" 5956 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5331 #line 835 "parser.yy" /* yacc.c:1646 */ 5332 { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); } 5333 #line 5334 "Parser/parser.cc" /* yacc.c:1646 */ 5957 5334 break; 5958 5335 5959 5336 case 184: 5960 5961 /* Line 1806 of yacc.c */ 5962 #line 840 "parser.yy" 5963 { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); } 5337 #line 840 "parser.yy" /* yacc.c:1646 */ 5338 { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Goto ) ); } 5339 #line 5340 "Parser/parser.cc" /* yacc.c:1646 */ 5964 5340 break; 5965 5341 5966 5342 case 185: 5967 5968 /* Line 1806 of yacc.c */ 5969 #line 844 "parser.yy" 5970 { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); } 5343 #line 844 "parser.yy" /* yacc.c:1646 */ 5344 { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); } 5345 #line 5346 "Parser/parser.cc" /* yacc.c:1646 */ 5971 5346 break; 5972 5347 5973 5348 case 186: 5974 5975 /* Line 1806 of yacc.c */ 5976 #line 847 "parser.yy" 5349 #line 847 "parser.yy" /* yacc.c:1646 */ 5977 5350 { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Continue ) ); } 5351 #line 5352 "Parser/parser.cc" /* yacc.c:1646 */ 5978 5352 break; 5979 5353 5980 5354 case 187: 5981 5982 /* Line 1806 of yacc.c */ 5983 #line 851 "parser.yy" 5984 { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); } 5355 #line 851 "parser.yy" /* yacc.c:1646 */ 5356 { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Continue ) ); } 5357 #line 5358 "Parser/parser.cc" /* yacc.c:1646 */ 5985 5358 break; 5986 5359 5987 5360 case 188: 5988 5989 /* Line 1806 of yacc.c */ 5990 #line 854 "parser.yy" 5361 #line 854 "parser.yy" /* yacc.c:1646 */ 5991 5362 { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); } 5363 #line 5364 "Parser/parser.cc" /* yacc.c:1646 */ 5992 5364 break; 5993 5365 5994 5366 case 189: 5995 5996 /* Line 1806 of yacc.c */ 5997 #line 858 "parser.yy" 5998 { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); } 5367 #line 858 "parser.yy" /* yacc.c:1646 */ 5368 { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Break ) ); } 5369 #line 5370 "Parser/parser.cc" /* yacc.c:1646 */ 5999 5370 break; 6000 5371 6001 5372 case 190: 6002 6003 /* Line 1806 of yacc.c */ 6004 #line 860 "parser.yy" 6005 { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); } 5373 #line 860 "parser.yy" /* yacc.c:1646 */ 5374 { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); } 5375 #line 5376 "Parser/parser.cc" /* yacc.c:1646 */ 6006 5376 break; 6007 5377 6008 5378 case 191: 6009 6010 /* Line 1806 of yacc.c */ 6011 #line 862 "parser.yy" 6012 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 5379 #line 862 "parser.yy" /* yacc.c:1646 */ 5380 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); } 5381 #line 5382 "Parser/parser.cc" /* yacc.c:1646 */ 6013 5382 break; 6014 5383 6015 5384 case 192: 6016 6017 /* Line 1806 of yacc.c */ 6018 #line 864 "parser.yy" 6019 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 5385 #line 864 "parser.yy" /* yacc.c:1646 */ 5386 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); } 5387 #line 5388 "Parser/parser.cc" /* yacc.c:1646 */ 6020 5388 break; 6021 5389 6022 5390 case 193: 6023 6024 /* Line 1806 of yacc.c */ 6025 #line 866 "parser.yy" 6026 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); } 5391 #line 866 "parser.yy" /* yacc.c:1646 */ 5392 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); } 5393 #line 5394 "Parser/parser.cc" /* yacc.c:1646 */ 6027 5394 break; 6028 5395 6029 5396 case 194: 6030 6031 /* Line 1806 of yacc.c */ 6032 #line 871 "parser.yy" 6033 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); } 5397 #line 871 "parser.yy" /* yacc.c:1646 */ 5398 { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); } 5399 #line 5400 "Parser/parser.cc" /* yacc.c:1646 */ 6034 5400 break; 6035 5401 6036 5402 case 195: 6037 6038 /* Line 1806 of yacc.c */ 6039 #line 873 "parser.yy" 6040 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); } 5403 #line 873 "parser.yy" /* yacc.c:1646 */ 5404 { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); } 5405 #line 5406 "Parser/parser.cc" /* yacc.c:1646 */ 6041 5406 break; 6042 5407 6043 5408 case 196: 6044 6045 /* Line 1806 of yacc.c */ 6046 #line 875 "parser.yy" 6047 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); } 5409 #line 875 "parser.yy" /* yacc.c:1646 */ 5410 { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); } 5411 #line 5412 "Parser/parser.cc" /* yacc.c:1646 */ 6048 5412 break; 6049 5413 6050 5414 case 198: 6051 6052 /* Line 1806 of yacc.c */ 6053 #line 882 "parser.yy" 6054 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 5415 #line 882 "parser.yy" /* yacc.c:1646 */ 5416 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); } 5417 #line 5418 "Parser/parser.cc" /* yacc.c:1646 */ 6055 5418 break; 6056 5419 6057 5420 case 199: 6058 6059 /* Line 1806 of yacc.c */ 6060 #line 884 "parser.yy" 6061 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 5421 #line 884 "parser.yy" /* yacc.c:1646 */ 5422 { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); } 5423 #line 5424 "Parser/parser.cc" /* yacc.c:1646 */ 6062 5424 break; 6063 5425 6064 5426 case 200: 6065 6066 /* Line 1806 of yacc.c */ 6067 #line 886 "parser.yy" 6068 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 5427 #line 886 "parser.yy" /* yacc.c:1646 */ 5428 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); } 5429 #line 5430 "Parser/parser.cc" /* yacc.c:1646 */ 6069 5430 break; 6070 5431 6071 5432 case 201: 6072 6073 /* Line 1806 of yacc.c */ 6074 #line 888 "parser.yy" 6075 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 5433 #line 888 "parser.yy" /* yacc.c:1646 */ 5434 { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); } 5435 #line 5436 "Parser/parser.cc" /* yacc.c:1646 */ 6076 5436 break; 6077 5437 6078 5438 case 202: 6079 6080 /* Line 1806 of yacc.c */ 6081 #line 893 "parser.yy" 6082 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 5439 #line 893 "parser.yy" /* yacc.c:1646 */ 5440 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); } 5441 #line 5442 "Parser/parser.cc" /* yacc.c:1646 */ 6083 5442 break; 6084 5443 6085 5444 case 203: 6086 6087 /* Line 1806 of yacc.c */ 6088 #line 895 "parser.yy" 6089 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 5445 #line 895 "parser.yy" /* yacc.c:1646 */ 5446 { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); } 5447 #line 5448 "Parser/parser.cc" /* yacc.c:1646 */ 6090 5448 break; 6091 5449 6092 5450 case 204: 6093 6094 /* Line 1806 of yacc.c */ 6095 #line 897 "parser.yy" 6096 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 5451 #line 897 "parser.yy" /* yacc.c:1646 */ 5452 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); } 5453 #line 5454 "Parser/parser.cc" /* yacc.c:1646 */ 6097 5454 break; 6098 5455 6099 5456 case 205: 6100 6101 /* Line 1806 of yacc.c */ 6102 #line 899 "parser.yy" 6103 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 5457 #line 899 "parser.yy" /* yacc.c:1646 */ 5458 { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); } 5459 #line 5460 "Parser/parser.cc" /* yacc.c:1646 */ 6104 5460 break; 6105 5461 6106 5462 case 206: 6107 6108 /* Line 1806 of yacc.c */ 6109 #line 904 "parser.yy" 6110 { 6111 (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) ); 5463 #line 904 "parser.yy" /* yacc.c:1646 */ 5464 { 5465 (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) ); 6112 5466 } 5467 #line 5468 "Parser/parser.cc" /* yacc.c:1646 */ 6113 5468 break; 6114 5469 6115 5470 case 208: 6116 6117 /* Line 1806 of yacc.c */ 6118 #line 917 "parser.yy" 5471 #line 917 "parser.yy" /* yacc.c:1646 */ 6119 5472 { 6120 5473 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6121 (yyval.decl) = (yyvsp[ (2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );5474 (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); 6122 5475 } 5476 #line 5477 "Parser/parser.cc" /* yacc.c:1646 */ 6123 5477 break; 6124 5478 6125 5479 case 209: 6126 6127 /* Line 1806 of yacc.c */ 6128 #line 922 "parser.yy" 6129 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 5480 #line 922 "parser.yy" /* yacc.c:1646 */ 5481 { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); } 5482 #line 5483 "Parser/parser.cc" /* yacc.c:1646 */ 6130 5483 break; 6131 5484 6132 5485 case 210: 6133 6134 /* Line 1806 of yacc.c */ 6135 #line 924 "parser.yy" 5486 #line 924 "parser.yy" /* yacc.c:1646 */ 6136 5487 { 6137 5488 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6138 (yyval.decl) = (yyvsp[ (1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );5489 (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); 6139 5490 } 5491 #line 5492 "Parser/parser.cc" /* yacc.c:1646 */ 6140 5492 break; 6141 5493 6142 5494 case 212: 6143 6144 /* Line 1806 of yacc.c */ 6145 #line 933 "parser.yy" 6146 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); } 5495 #line 933 "parser.yy" /* yacc.c:1646 */ 5496 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); } 5497 #line 5498 "Parser/parser.cc" /* yacc.c:1646 */ 6147 5498 break; 6148 5499 6149 5500 case 213: 6150 6151 /* Line 1806 of yacc.c */ 6152 #line 935 "parser.yy" 6153 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); } 5501 #line 935 "parser.yy" /* yacc.c:1646 */ 5502 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); } 5503 #line 5504 "Parser/parser.cc" /* yacc.c:1646 */ 6154 5504 break; 6155 5505 6156 5506 case 214: 6157 6158 /* Line 1806 of yacc.c */ 6159 #line 937 "parser.yy" 6160 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); } 5507 #line 937 "parser.yy" /* yacc.c:1646 */ 5508 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); } 5509 #line 5510 "Parser/parser.cc" /* yacc.c:1646 */ 6161 5510 break; 6162 5511 6163 5512 case 215: 6164 6165 /* Line 1806 of yacc.c */ 6166 #line 939 "parser.yy" 6167 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); } 5513 #line 939 "parser.yy" /* yacc.c:1646 */ 5514 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); } 5515 #line 5516 "Parser/parser.cc" /* yacc.c:1646 */ 6168 5516 break; 6169 5517 6170 5518 case 216: 6171 6172 /* Line 1806 of yacc.c */ 6173 #line 941 "parser.yy" 6174 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); } 5519 #line 941 "parser.yy" /* yacc.c:1646 */ 5520 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); } 5521 #line 5522 "Parser/parser.cc" /* yacc.c:1646 */ 6175 5522 break; 6176 5523 6177 5524 case 217: 6178 6179 /* Line 1806 of yacc.c */ 6180 #line 946 "parser.yy" 5525 #line 946 "parser.yy" /* yacc.c:1646 */ 6181 5526 { (yyval.flag) = false; } 5527 #line 5528 "Parser/parser.cc" /* yacc.c:1646 */ 6182 5528 break; 6183 5529 6184 5530 case 218: 6185 6186 /* Line 1806 of yacc.c */ 6187 #line 948 "parser.yy" 5531 #line 948 "parser.yy" /* yacc.c:1646 */ 6188 5532 { (yyval.flag) = true; } 5533 #line 5534 "Parser/parser.cc" /* yacc.c:1646 */ 6189 5534 break; 6190 5535 6191 5536 case 219: 6192 6193 /* Line 1806 of yacc.c */ 6194 #line 953 "parser.yy" 5537 #line 953 "parser.yy" /* yacc.c:1646 */ 6195 5538 { (yyval.en) = 0; } 5539 #line 5540 "Parser/parser.cc" /* yacc.c:1646 */ 6196 5540 break; 6197 5541 6198 5542 case 222: 6199 6200 /* Line 1806 of yacc.c */ 6201 #line 960 "parser.yy" 6202 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5543 #line 960 "parser.yy" /* yacc.c:1646 */ 5544 { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); } 5545 #line 5546 "Parser/parser.cc" /* yacc.c:1646 */ 6203 5546 break; 6204 5547 6205 5548 case 223: 6206 6207 /* Line 1806 of yacc.c */ 6208 #line 965 "parser.yy" 6209 { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); } 5549 #line 965 "parser.yy" /* yacc.c:1646 */ 5550 { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); } 5551 #line 5552 "Parser/parser.cc" /* yacc.c:1646 */ 6210 5552 break; 6211 5553 6212 5554 case 224: 6213 6214 /* Line 1806 of yacc.c */ 6215 #line 967 "parser.yy" 6216 { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); } 5555 #line 967 "parser.yy" /* yacc.c:1646 */ 5556 { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); } 5557 #line 5558 "Parser/parser.cc" /* yacc.c:1646 */ 6217 5558 break; 6218 5559 6219 5560 case 225: 6220 6221 /* Line 1806 of yacc.c */ 6222 #line 972 "parser.yy" 5561 #line 972 "parser.yy" /* yacc.c:1646 */ 6223 5562 { (yyval.en) = 0; } 5563 #line 5564 "Parser/parser.cc" /* yacc.c:1646 */ 6224 5564 break; 6225 5565 6226 5566 case 226: 6227 6228 /* Line 1806 of yacc.c */ 6229 #line 974 "parser.yy" 6230 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 5567 #line 974 "parser.yy" /* yacc.c:1646 */ 5568 { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); } 5569 #line 5570 "Parser/parser.cc" /* yacc.c:1646 */ 6231 5570 break; 6232 5571 6233 5572 case 227: 6234 6235 /* Line 1806 of yacc.c */ 6236 #line 976 "parser.yy" 6237 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); } 5573 #line 976 "parser.yy" /* yacc.c:1646 */ 5574 { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); } 5575 #line 5576 "Parser/parser.cc" /* yacc.c:1646 */ 6238 5576 break; 6239 5577 6240 5578 case 228: 6241 6242 /* Line 1806 of yacc.c */ 6243 #line 981 "parser.yy" 6244 { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) ); } 5579 #line 981 "parser.yy" /* yacc.c:1646 */ 5580 { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); } 5581 #line 5582 "Parser/parser.cc" /* yacc.c:1646 */ 6245 5582 break; 6246 5583 6247 5584 case 229: 6248 6249 /* Line 1806 of yacc.c */ 6250 #line 983 "parser.yy" 6251 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) ); } 5585 #line 983 "parser.yy" /* yacc.c:1646 */ 5586 { (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); } 5587 #line 5588 "Parser/parser.cc" /* yacc.c:1646 */ 6252 5588 break; 6253 5589 6254 5590 case 230: 6255 6256 /* Line 1806 of yacc.c */ 6257 #line 990 "parser.yy" 5591 #line 990 "parser.yy" /* yacc.c:1646 */ 6258 5592 { (yyval.decl) = 0; } 5593 #line 5594 "Parser/parser.cc" /* yacc.c:1646 */ 6259 5594 break; 6260 5595 6261 5596 case 233: 6262 6263 /* Line 1806 of yacc.c */ 6264 #line 997 "parser.yy" 6265 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 5597 #line 997 "parser.yy" /* yacc.c:1646 */ 5598 { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); } 5599 #line 5600 "Parser/parser.cc" /* yacc.c:1646 */ 6266 5600 break; 6267 5601 6268 5602 case 234: 6269 6270 /* Line 1806 of yacc.c */ 6271 #line 1002 "parser.yy" 5603 #line 1002 "parser.yy" /* yacc.c:1646 */ 6272 5604 { (yyval.decl) = 0; } 5605 #line 5606 "Parser/parser.cc" /* yacc.c:1646 */ 6273 5606 break; 6274 5607 6275 5608 case 237: 6276 6277 /* Line 1806 of yacc.c */ 6278 #line 1009 "parser.yy" 6279 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 5609 #line 1009 "parser.yy" /* yacc.c:1646 */ 5610 { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); } 5611 #line 5612 "Parser/parser.cc" /* yacc.c:1646 */ 6280 5612 break; 6281 5613 6282 5614 case 242: 6283 6284 /* Line 1806 of yacc.c */ 6285 #line 1023 "parser.yy" 5615 #line 1023 "parser.yy" /* yacc.c:1646 */ 6286 5616 {} 5617 #line 5618 "Parser/parser.cc" /* yacc.c:1646 */ 6287 5618 break; 6288 5619 6289 5620 case 243: 6290 6291 /* Line 1806 of yacc.c */ 6292 #line 1024 "parser.yy" 5621 #line 1024 "parser.yy" /* yacc.c:1646 */ 6293 5622 {} 5623 #line 5624 "Parser/parser.cc" /* yacc.c:1646 */ 6294 5624 break; 6295 5625 6296 5626 case 251: 6297 6298 /* Line 1806 of yacc.c */ 6299 #line 1053 "parser.yy" 5627 #line 1053 "parser.yy" /* yacc.c:1646 */ 6300 5628 { 6301 5629 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6302 (yyval.decl) = (yyvsp[ (1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );5630 (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) ); 6303 5631 } 5632 #line 5633 "Parser/parser.cc" /* yacc.c:1646 */ 6304 5633 break; 6305 5634 6306 5635 case 252: 6307 6308 /* Line 1806 of yacc.c */ 6309 #line 1060 "parser.yy" 5636 #line 1060 "parser.yy" /* yacc.c:1646 */ 6310 5637 { 6311 5638 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6312 (yyval.decl) = (yyvsp[ (2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;5639 (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );; 6313 5640 } 5641 #line 5642 "Parser/parser.cc" /* yacc.c:1646 */ 6314 5642 break; 6315 5643 6316 5644 case 253: 6317 6318 /* Line 1806 of yacc.c */ 6319 #line 1065 "parser.yy" 6320 { 6321 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); 6322 (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) ); 5645 #line 1065 "parser.yy" /* yacc.c:1646 */ 5646 { 5647 typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID ); 5648 (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) ); 6323 5649 } 5650 #line 5651 "Parser/parser.cc" /* yacc.c:1646 */ 6324 5651 break; 6325 5652 6326 5653 case 254: 6327 6328 /* Line 1806 of yacc.c */ 6329 #line 1075 "parser.yy" 6330 { 6331 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); 6332 (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); 5654 #line 1075 "parser.yy" /* yacc.c:1646 */ 5655 { 5656 typedefTable.setNextIdentifier( *(yyvsp[-1].tok) ); 5657 (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); 6333 5658 } 5659 #line 5660 "Parser/parser.cc" /* yacc.c:1646 */ 6334 5660 break; 6335 5661 6336 5662 case 255: 6337 6338 /* Line 1806 of yacc.c */ 6339 #line 1080 "parser.yy" 6340 { 6341 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); 6342 (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); 5663 #line 1080 "parser.yy" /* yacc.c:1646 */ 5664 { 5665 typedefTable.setNextIdentifier( *(yyvsp[-1].tok) ); 5666 (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); 6343 5667 } 5668 #line 5669 "Parser/parser.cc" /* yacc.c:1646 */ 6344 5669 break; 6345 5670 6346 5671 case 256: 6347 6348 /* Line 1806 of yacc.c */ 6349 #line 1085 "parser.yy" 6350 { 6351 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); 6352 (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) ); 5672 #line 1085 "parser.yy" /* yacc.c:1646 */ 5673 { 5674 typedefTable.setNextIdentifier( *(yyvsp[-1].tok) ); 5675 (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) ); 6353 5676 } 5677 #line 5678 "Parser/parser.cc" /* yacc.c:1646 */ 6354 5678 break; 6355 5679 6356 5680 case 257: 6357 6358 /* Line 1806 of yacc.c */ 6359 #line 1093 "parser.yy" 5681 #line 1093 "parser.yy" /* yacc.c:1646 */ 6360 5682 { 6361 5683 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6362 (yyval.decl) = (yyvsp[ (1) - (1)].decl);5684 (yyval.decl) = (yyvsp[0].decl); 6363 5685 } 5686 #line 5687 "Parser/parser.cc" /* yacc.c:1646 */ 6364 5687 break; 6365 5688 6366 5689 case 258: 6367 6368 /* Line 1806 of yacc.c */ 6369 #line 1098 "parser.yy" 5690 #line 1098 "parser.yy" /* yacc.c:1646 */ 6370 5691 { 6371 5692 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6372 (yyval.decl) = (yyvsp[ (2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );5693 (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); 6373 5694 } 5695 #line 5696 "Parser/parser.cc" /* yacc.c:1646 */ 6374 5696 break; 6375 5697 6376 5698 case 259: 6377 6378 /* Line 1806 of yacc.c */ 6379 #line 1103 "parser.yy" 5699 #line 1103 "parser.yy" /* yacc.c:1646 */ 6380 5700 { 6381 5701 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6382 (yyval.decl) = (yyvsp[ (2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );